Skip to content

Releases: SuperMarioYL/diffgate

diffgate v0.3.0

20 Jun 03:30

Choose a tag to compare

CLI/MCP parity, multi-file edits, three more languages, and three silent-lie fixes.

Added

  • Structured --claim-file mode (and - for stdin): feed structured claimed_actions straight into the verifier for full CLI/MCP parity. See examples/claim_file_schema.json.
  • Multi-file verify: a claim file may carry per-action before/after paths, so one run gates an edit spanning several files and aggregates every mismatch into a single verdict.
  • Three new languages: Java, C++, and Ruby (grammars already shipped in tree-sitter-language-pack, no new dependency).

Fixed

  • Bench no longer drops un-parseable/erroring trace rows from the headline catch-rate denominator — error rows are counted and attributed to their label.
  • move of a duplicate-named symbol is no longer a false pass: a move now requires the symbol to genuinely leave one scope and land in a new one.
  • TS/JS arrow / function-expression assignments (const handler = (req) => {}) are now emitted as symbols, so truthful edits to the dominant TS/JS idiom are no longer over-flagged.

Full Changelog: v0.2.0...v0.3.0

v0.2.0

19 Jun 03:23

Choose a tag to compare

First real feature iteration — scope-aware structural verification.

Added

  • Scope-aware claim matching. Every claim kind (add, delete, rename, signature_change, move) now honours the scope field. Claiming add MyClass.helper only passes when the method really lands inside MyClass — adding a free-standing helper() no longer satisfies it. An empty scope stays a wildcard, so existing name-only claims behave exactly as before.
  • diffgate mcp-server --stdio and diffgate bench <traces.jsonl> are now real CLI subcommands. They were documented in the README and the mcp.json snippet but were previously only reachable via python -m diffgate.…; copying the documented config now works as written.
  • 8 new fixtures plus focused unit tests covering scope lies, scope truths, and the unscoped wildcard path.

Fixed

  • Silent-lie false negatives from scope confusion. The verifier matched claimed symbols by name only, so an agent that claimed it edited a method on a class but actually touched a same-named module-level function (or vice versa) slipped through as a pass. The structural gate now distinguishes the two.
  • Pinned tree-sitter <0.25 / tree-sitter-language-pack <0.8 — tree-sitter 0.25 changed Parser.parse() to reject bytes, breaking the parser on a fresh resolve.

Full Changelog: v0.1.1...v0.2.0

v0.1.1

19 Jun 01:35

Choose a tag to compare