Skip to content

0.5.0

Choose a tag to compare

@SanderMuller SanderMuller released this 18 Jul 15:20
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 --json contract — one machine contract, two surfaces. Both tools also advertise an outputSchema, 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 --json contract always has.
  • richter:benchmark:add <fix-commit> scaffolds a richter.benchmark_cases fixture from a historical fix commit: it validates the commit, dry-runs it through the exact replay richter:benchmark uses, reports what the case would score today, and prints a ready-to-paste config stanza. --control derives the max_risk cap from the replayed risk; --key overrides 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 fail richter:benchmark today.

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