Releases: AutomateThePlanet/Spectra
SPECTRA v1.52.0
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 anddepends_oncascade cleanup. Refuses by default if the test hasautomated_by(use--force);--dry-runpreviews without touching disk.spectra suite list|rename|delete— atomic suite management with rollback. Updates_index.jsonsuite field, saved selections, and per-suite config block. Test IDs are unchanged by renames.spectra cancel [--force]— three-layer cancellation:CancellationToken→.spectra/.cancelsentinel 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. Exit9(DUPLICATES_FOUND) under--no-interactionwithout--fix.
Cross-process ID-collision fix (the silent-correctness bug)
- New
Spectra.Core.IdAllocation.PersistentTestIdAllocatorwraps the existing in-memory allocator with aFileShare.Nonelock at.spectra/id-allocator.lockand 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.TestIdAllocatorclass — the actual root cause of the bug.
Cancellation infrastructure
CancellationManagersingleton owns the processCancellationTokenSource, watches the sentinel, and writes/cleans.spectra/.pid. Wired intoai generate,ai update,ai analyze --coverage,dashboard,docs index. Cancelled commands exit130and writestatus: cancelledto.spectra-result.json.ProgressPageWriterextended with a terminalCancelledphase (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-quickstartadds a 'Stop a running operation' workflow;spectra-helpadds a 'Diagnose test ID issues' recipe;spectra-generation.agent.mddelegation table extended with the four new routes.
Migration
After upgrading:
- First run rebuilds the ID allocator state automatically — info-level log line
Initialized ID allocator: high water mark = TC-NNN. - Audit existing duplicates (no automatic renumbering on upgrade — preserves IDs that may be referenced externally):
spectra doctor ids - Repair duplicates if and only if you've decided to change the IDs:
This may invalidate references in external trackers (Jira/ADO), CI configs that hardcode IDs, and
spectra doctor ids --fix[TestCase("TC-NNN")]automation attributes. In-source automation refs are reported underunfixable_referencesfor manual review. spectra update-skillsto installspectra-deleteandspectra-suiteinto your project..gitignoreauto-extended on nextspectra initto 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
Full Changelog: v1.49.0...v1.50.0
SPECTRA v1.49.0
What's Changed
Breaking Change
- Default output directory renamed:
tests/→test-cases/— clearly distinguishes SPECTRA test case documents from automated test code. Users with customtests.dirin 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
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 flowconfiguration.md: addedanalysis,testimize,ai.fallback_strategy,coverage.criteria_importsectionscustomization.md: expanded coverage settingsREADME.md+PROJECT-KNOWLEDGE.md: updated Testimize references
Breaking changes
testimize.mcp.commandandtestimize.mcp.argsconfig fields are removed (ignored if present in existing configs — no parse error, just no effect)dotnet tool install --global Testimize.MCP.Serveris 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.6Full Changelog: v1.37.0...v1.48.6
SPECTRA v1.37.0
What's Changed
- Bump GitHub.Copilot.SDK from 0.2.0 to 0.2.1 by @dependabot[bot] in #11
- Bump Spectre.Console from 0.54.0 to 0.55.0 by @dependabot[bot] in #12
- Bump Markdig from 1.1.1 to 1.1.2 by @dependabot[bot] in #10
Full Changelog: v1.32.7...v1.37.0
v1.32.7
What's Changed
Progress page reliability
- Auto-refresh fix: Replaced
<meta http-equiv="refresh">with JavaScriptsetInterval(1.5s) for reliablefile://URL support - File links clickable: VS Code
vscode://file/links now work fromfile://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
--countrespected: When--countis 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
What's New
Bug Fixes
- Criteria folder renamed
docs/requirements/→docs/criteria/with auto-migration on first run - Index exclusion —
_index.mdand metadata files are now excluded from criteria extraction (prevents duplicate criteria) - Dashboard coverage fix — Acceptance criteria section now correctly reads per-document
.criteria.yamlfiles instead of legacy parser; reads bothRequirementsandCriteriafields from test index - Progress file fix —
extractProgress.Fail()added to error paths so.spectra-progress.htmlno longer gets stuck on "Extracting" if an error occurs - Bundled template sync —
dashboard-site/source files are now properly synced toDashboard/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
titleandtextfields) - Toggle button shows item count: "Show details (753)"
- Unit label fixed from
acceptance_criteriatocriteria - 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
runInTerminalusage
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.CLI1.32.5Spectra.MCP1.32.5
v1.31.1 — Fix execution agent dashboard/coverage commands
Fixes
- Execution agent now uses
runInTerminalwith 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.1v1.31.0 — Universal Progress/Result for SKILL-Wrapped Commands
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.Requirements→AcceptanceCriteria(JSON:acceptanceCriteria) - New
UpdateResultmodel 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.0Or update:
dotnet tool update --global Spectra.CLI --version 1.31.0
dotnet tool update --global Spectra.MCP --version 1.31.0SPECTRA v1.29.0
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-criteriaCLI commands- New
spectra-criteriaSKILL (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.htmlauto-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/openBrowserPageadded to all tool lists--no-interaction --output-format jsonon all generation commands--focusflag for filtered generation (negative, security, edge cases)- Dashboard:
show preview site/index.htmlinstead of external browser - Execution: auto-opens HTML report after finalize via MCP instruction
- BehaviorAnalyzer retry on failure
MCP Changes
finalize_execution_runreturns instruction to open HTML reportadvance_test_casedirects toget_test_case_details(not skip)get_execution_statusinstruction updated
Stats
- 114 files changed, +15,758 lines
- 38+ new tests (1279 total passing)
- 30+ new source files