Skip to content

Releases: AutomateThePlanet/Spectra

SPECTRA v1.52.0

30 Apr 21:14

Choose a tag to compare

Spec 040 lifecycle: Test Lifecycle & Process Control

Four day-to-day Copilot Chat workflow gaps closed. Git is the undo; cancellation is cooperative-first; test IDs are now globally unique under concurrent generation.

New CLI commands

  • spectra delete <test-id>... — atomic test deletion with automation and depends_on cascade cleanup. Refuses by default if the test has automated_by (use --force); --dry-run previews without touching disk.
  • spectra suite list|rename|delete — atomic suite management with rollback. Updates _index.json suite field, saved selections, and per-suite config block. Test IDs are unchanged by renames.
  • spectra cancel [--force] — three-layer cancellation: CancellationToken.spectra/.cancel sentinel polled at batch boundaries → Process.Kill(entireProcessTree) after a 5 s grace window.
  • spectra doctor ids [--fix] — audit and repair test ID uniqueness. Reads frontmatter directly (defends against stale _index.json), reports duplicates, mismatches, HWM, and next ID. Exit 9 (DUPLICATES_FOUND) under --no-interaction without --fix.

Cross-process ID-collision fix (the silent-correctness bug)

  • New Spectra.Core.IdAllocation.PersistentTestIdAllocator wraps the existing in-memory allocator with a FileShare.None lock at .spectra/id-allocator.lock and a monotonic high-water-mark in .spectra/id-allocator.json. Concurrent generation runs can no longer allocate overlapping ID ranges.
  • Removed the duplicate Spectra.CLI.Agent.Copilot.TestIdAllocator class — the actual root cause of the bug.

Cancellation infrastructure

  • CancellationManager singleton owns the process CancellationTokenSource, watches the sentinel, and writes/cleans .spectra/.pid. Wired into ai generate, ai update, ai analyze --coverage, dashboard, docs index. Cancelled commands exit 130 and write status: cancelled to .spectra-result.json.
  • ProgressPageWriter extended with a terminal Cancelled phase (striped/yellow CSS, auto-refresh stops).

SKILLs

  • New: spectra-delete, spectra-suite (count: 12 → 14).
  • Six existing long-running SKILLs gain a 'Cancel the current run' recipe; spectra-quickstart adds a 'Stop a running operation' workflow; spectra-help adds a 'Diagnose test ID issues' recipe; spectra-generation.agent.md delegation table extended with the four new routes.

Migration

After upgrading:

  1. First run rebuilds the ID allocator state automatically — info-level log line Initialized ID allocator: high water mark = TC-NNN.
  2. Audit existing duplicates (no automatic renumbering on upgrade — preserves IDs that may be referenced externally):
    spectra doctor ids
    
  3. Repair duplicates if and only if you've decided to change the IDs:
    spectra doctor ids --fix
    
    This may invalidate references in external trackers (Jira/ADO), CI configs that hardcode IDs, and [TestCase("TC-NNN")] automation attributes. In-source automation refs are reported under unfixable_references for manual review.
  4. spectra update-skills to install spectra-delete and spectra-suite into your project.
  5. .gitignore auto-extended on next spectra init to include .spectra/.pid, .spectra/.cancel, .spectra/id-allocator.lock, .spectra/id-allocator.json.

Status string additions

CommandResult.Status (free-form string) gains two stable values: cancelled and no_active_run.

Tests

1,886 passing total — 28 new in IdAllocation/, ~70 new across cancellation/delete/suite/doctor handlers and the integration fixtures.

Full Changelog: v1.50.0...v1.52.0

Full Changelog: v1.50.0...v1.52.0

SPECTRA v1.50.0

14 Apr 06:25

Choose a tag to compare

SPECTRA v1.49.0

12 Apr 12:54

Choose a tag to compare

What's Changed

Breaking Change

  • Default output directory renamed: tests/test-cases/ — clearly distinguishes SPECTRA test case documents from automated test code. Users with custom tests.dir in their config are unaffected.

Terminology Standardization

  • All documentation, SKILLs, and agents now consistently use "test case" when referring to SPECTRA's markdown output
  • Clear distinction: "test cases" (SPECTRA output), "automated tests" (code), "test data" (Testimize), "test runs" (MCP execution)
  • Config keys and CLI commands unchanged

Landing Page Rewrite

  • New value proposition with manual-vs-SPECTRA comparison table
  • Chat-first workflow: "just say it in Copilot Chat"
  • Quick-install section

CLI-vs-Chat Page Simplified

  • Replaced 4,800-word analysis with 146-word page
  • Chat positioned as recommended interface, CLI as the engine
  • No competitive framing

Files Changed

  • 85 files changed, 1086 insertions, 855 deletions
  • All 1,706 tests pass (514 Core + 841 CLI + 351 MCP)

Full Changelog: v1.48.6...v1.49.0

SPECTRA v1.48.6

12 Apr 10:54

Choose a tag to compare

SPECTRA v1.48.6

Major release covering specs 037–043 and the Testimize in-process migration.

Highlights

In-process Testimize integration (v1.48.3–1.48.6) — Replaced the MCP child-process Testimize integration with a direct NuGet reference to Testimize 1.1.10. The library runs in-process during test generation: behavior analysis extracts field constraints, TestimizeRunner maps them to Testimize parameters, and pre-computed BVA boundaries + security-focused invalid patterns are embedded in the generation prompt as authoritative facts. The model uses exact values verbatim — no tool calling, no MCP handshake race condition.

  • Single-field path (v1.48.4): for suites with only 1 constrained field, bypasses generators entirely and reads pre-computed parameter.TestValues (BVA + EP at construction time)
  • Trimmed EP to BVA + security invalids (v1.48.5): disabled generic valid EP classes (AI picks better context-aware values); kept security patterns (XSS, SQLi, SSTI, format abuse)
  • New log lines: TESTIMIZE OK strategy=… fields=… test_data_sets=… elapsed=…s, TESTIMIZE SKIP reason=…, TESTIMIZE FALLBACK source=regex fields=…

Parallel critic verification (spec 043)ai.critic.max_concurrent (default 1, max 20) runs critic verification in parallel. With max_concurrent: 5, the critic phase completes ~5x faster on large suites. Dedicated .spectra-errors.log for error/rate-limit tracking.

Live progress bars (spec 041) — Spectre.Console two-task progress display for generation + verification phases. Token usage tracking with provider-reported counts and fallback estimation.

ISTQB test design techniques (spec 037) — Behavior analysis prompt embeds EP, BVA, Decision Table, State Transition, Error Guessing, and Use Case techniques with distribution guidelines.

Unified critic providers (spec 039) — All five provider names (github-models, azure-openai, azure-anthropic, openai, anthropic) work for both generator and critic.

Documentation (spec 040)

  • testimize-integration.md: full rewrite for in-process NuGet flow
  • configuration.md: added analysis, testimize, ai.fallback_strategy, coverage.criteria_import sections
  • customization.md: expanded coverage settings
  • README.md + PROJECT-KNOWLEDGE.md: updated Testimize references

Breaking changes

  • testimize.mcp.command and testimize.mcp.args config fields are removed (ignored if present in existing configs — no parse error, just no effect)
  • dotnet tool install --global Testimize.MCP.Server is no longer needed — the library ships bundled

Stats

  • 1706 tests passing (514 Core + 351 MCP + 841 CLI)
  • 31 files changed in the Testimize migration alone (+1377 / -622)

Install

# CLI tool
dotnet tool install --global Spectra.CLI --version 1.48.6

# MCP execution server
dotnet tool install --global Spectra.MCP --version 1.48.6

Full Changelog: v1.37.0...v1.48.6

SPECTRA v1.37.0

10 Apr 13:34

Choose a tag to compare

What's Changed

Full Changelog: v1.32.7...v1.37.0

v1.32.7

09 Apr 11:56

Choose a tag to compare

What's Changed

Progress page reliability

  • Auto-refresh fix: Replaced <meta http-equiv="refresh"> with JavaScript setInterval (1.5s) for reliable file:// URL support
  • File links clickable: VS Code vscode://file/ links now work from file:// pages via JavaScript click handler with proper URL encoding

Generation result tracking

  • Status always updates: All code paths (0 gaps, all rejected by critic, analysis-only, interactive mode) now write final status to .spectra-result.json — progress page no longer gets stuck at "Generating"
  • Critic verification progress: New "verifying" phase in progress stepper; per-test verdicts (grounded/partial/hallucinated) shown live on progress page with color-coded cards
  • Rejected tests section: Final result includes rejected test IDs, titles, and rejection reasons

Focus filter fix

  • Multi-term focus matching: --focus "security, high priority" now splits on commas and matches each term independently (was matching the entire phrase as one literal string)
  • Explicit --count respected: When --count is provided with --focus, gap analyzer no longer blocks generation — the user's explicit request is honored even if document-level coverage appears complete

Full Changelog: v1.32.5...v1.32.7

v1.32.5 — Criteria Folder Rename, Coverage Fix & Dashboard Improvements

08 Apr 21:50

Choose a tag to compare

What's New

Bug Fixes

  • Criteria folder renamed docs/requirements/docs/criteria/ with auto-migration on first run
  • Index exclusion_index.md and metadata files are now excluded from criteria extraction (prevents duplicate criteria)
  • Dashboard coverage fix — Acceptance criteria section now correctly reads per-document .criteria.yaml files instead of legacy parser; reads both Requirements and Criteria fields from test index
  • Progress file fixextractProgress.Fail() added to error paths so .spectra-progress.html no longer gets stuck on "Extracting" if an error occurs
  • Bundled template syncdashboard-site/ source files are now properly synced to Dashboard/Templates/ embedded resources

Dashboard Improvements

  • Scrollable detail lists (max-height 400px with overflow-y auto) for all three coverage sections
  • Search/filter input for lists with >20 items (criteria, docs, automation)
  • Criteria text displayed alongside IDs (reads both title and text fields)
  • Toggle button shows item count: "Show details (753)"
  • Unit label fixed from acceptance_criteria to criteria
  • Empty-state message updated to guide users to spectra ai analyze --extract-criteria

Agent Prompt

  • Execution agent prompt updated to match generation agent's **Step N** — toolName: format for CLI commands (fixes GPT-4o loop reading terminal instead of executing)
  • Added CRITICAL header enforcing runInTerminal usage

Other

  • Updated all documentation references (CLAUDE.md, PROJECT-KNOWLEDGE.md, cli-reference.md, coverage.md, getting-started.md, configuration.md)
  • 29 new tests (1344 total passing)
  • Version 1.32.5

NuGet Packages

  • Spectra.CLI 1.32.5
  • Spectra.MCP 1.32.5

v1.31.1 — Fix execution agent dashboard/coverage commands

08 Apr 16:32

Choose a tag to compare

Fixes

  • Execution agent now uses runInTerminal with CLI commands for dashboard generation, coverage analysis, docs indexing, and validation — previously it could fall back to web search or MCP tools instead of the CLI
  • Execution agent updated with universal progress flow pattern (show progress page, run with --no-interaction --output-format json --verbosity quiet, read .spectra-result.json)
  • Added explicit "NEVER search the web" instruction to prevent agent from using browser search for known CLI commands
  • Added docs index section to execution agent CLI commands

Install

dotnet tool update --global Spectra.CLI --version 1.31.1
dotnet tool update --global Spectra.MCP --version 1.31.1

v1.31.0 — Universal Progress/Result for SKILL-Wrapped Commands

08 Apr 16:12

Choose a tag to compare

What's New

Universal Progress/Result for All SKILL-Wrapped Commands

All 9 SKILL-wrapped CLI commands now write .spectra-result.json with structured results on completion. 6 long-running commands also write .spectra-progress.html with live-updating phase steppers.

New shared ProgressManager service extracts duplicated progress/result file logic from GenerateHandler and DocsIndexHandler into a reusable service, making it trivial to add progress support to any command.

Changes

  • ProgressManager (src/Spectra.CLI/Progress/ProgressManager.cs): Shared service with Reset/Update/Complete/Fail/WriteResultOnly lifecycle
  • ProgressPhases: Static phase definitions for 6 command types (generate, update, docs-index, coverage, extract-criteria, dashboard)
  • ProgressPageWriter extended: 12 new status labels, dynamic title support ("SPECTRA — Coverage Analysis", etc.), summary cards for coverage percentages, update counts, criteria stats, dashboard data
  • Handlers updated: ValidateHandler, DashboardHandler, UpdateHandler, AnalyzeHandler (coverage, extract-criteria, import-criteria, list-criteria)
  • Renamed AnalyzeCoverageResult.RequirementsAcceptanceCriteria (JSON: acceptanceCriteria)
  • New UpdateResult model with classification counts
  • SKILL files updated: spectra-coverage, spectra-criteria, spectra-dashboard, spectra-validate — all follow universal 5-step progress flow
  • Generation agent prompt updated with progress/result instructions for all commands

Commands with .spectra-result.json

Command Result File Progress Page
spectra ai generate
spectra ai update ✅ NEW ✅ NEW
spectra docs index
spectra ai analyze --coverage ✅ NEW ✅ NEW
spectra ai analyze --extract-criteria ✅ NEW ✅ NEW
spectra ai analyze --import-criteria ✅ NEW
spectra ai analyze --list-criteria ✅ NEW
spectra dashboard ✅ NEW ✅ NEW
spectra validate ✅ NEW

Tests

  • 36 new tests (19 ProgressManager, 9 ProgressPageWriter, 5 SKILL flag verification, 3 terminology audit)
  • 1315 total tests passing (462 Core + 502 CLI + 351 MCP)

Install

dotnet tool install --global Spectra.CLI --version 1.31.0
dotnet tool install --global Spectra.MCP --version 1.31.0

Or update:

dotnet tool update --global Spectra.CLI --version 1.31.0
dotnet tool update --global Spectra.MCP --version 1.31.0

SPECTRA v1.29.0

08 Apr 14:21

Choose a tag to compare

Acceptance Criteria Extraction Overhaul + Live Progress Page

Acceptance Criteria System (spec 023)

  • Renamed "requirements" to "acceptance criteria" across entire codebase
  • Per-document iterative extraction (eliminates truncation on large doc sets)
  • SHA-256 incremental extraction — only re-extracts changed documents
  • Import from YAML/CSV/JSON with auto-column-detection (Jira/ADO exports)
  • AI splitting of compound criteria + RFC 2119 normalization
  • --extract-criteria, --import-criteria, --list-criteria CLI commands
  • New spectra-criteria SKILL (8th bundled SKILL)
  • Generation auto-loads related criteria as prompt context
  • Update flow detects criteria changes (OUTDATED/ORPHANED classification)
  • Dashboard shows per-source-type coverage breakdown

Live Progress Page

  • .spectra-progress.html auto-generated during test generation
  • Phase stepper: Analyzing → Analyzed → Generating → Completed
  • Auto-refresh via meta refresh tag
  • Summary cards, category breakdown, file links (vscode://file/)
  • Stale results cleared on command start

SKILL/Agent Improvements

  • All skill names standardized to lowercase-hyphenated format
  • browser/openBrowserPage added to all tool lists
  • --no-interaction --output-format json on all generation commands
  • --focus flag for filtered generation (negative, security, edge cases)
  • Dashboard: show preview site/index.html instead of external browser
  • Execution: auto-opens HTML report after finalize via MCP instruction
  • BehaviorAnalyzer retry on failure

MCP Changes

  • finalize_execution_run returns instruction to open HTML report
  • advance_test_case directs to get_test_case_details (not skip)
  • get_execution_status instruction updated

Stats

  • 114 files changed, +15,758 lines
  • 38+ new tests (1279 total passing)
  • 30+ new source files