0.5.0
Immutable
release. Only release title and notes can be modified.
Added
- Structured MCP output. Both MCP tools (
impact,detect-changes) now return MCP structured content alongside the prose text block, in exactly the shape of the CLI--jsoncontract — one machine contract, two surfaces. Both tools also advertise anoutputSchema, so agents can branch on fields (risk,entryPoints,entryPointPaths, …) instead of parsing prose. Error paths are unchanged. Note for strict schema validators: the map-shaped fields (changed,coverage,entryPointPaths) serialize as[]when empty, exactly as the--jsoncontract always has. richter:benchmark:add <fix-commit>scaffolds arichter.benchmark_casesfixture from a historical fix commit: it validates the commit, dry-runs it through the exact replayrichter:benchmarkuses, reports what the case would score today, and prints a ready-to-paste config stanza.--controlderives themax_riskcap from the replayed risk;--keyoverrides the derived case key (ticket id found in the commit subject, else the short SHA). Read-only by design — it never edits the config file — and the exit code is honest: non-zero when the scaffolded case would failrichter:benchmarktoday.
Internal
CodeGraph::nodesContaining()now narrows candidates through a lazily-built token index before running the boundary regex, cutting each seed lookup from a full-graph regex scan to just the nodes sharing an identifier token with the needle. Matching semantics are preserved exactly — the regex remains the final filter — and a wide diff against a large host graph no longer pays O(changed-members × total-nodes) regex executions on top of the cached build.- Suite grows from 343 to 357 tests: the token-index boundary semantics pinned directly, the structured MCP responses and advertised schemas covered end-to-end, and the scaffolder's guard, replay, derivation and refusal paths all exercised.
Full Changelog: v0.4.0...v0.5.0