Skip to content

v1.7.0

Latest

Choose a tag to compare

@renzrollon renzrollon released this 21 Oct 09:58
· 5 commits to main since this release

Added

  • A checkpoint advisor. After a clean artifact review, /interlock:spec spawns the read-only interlock:advisor agent once on a brief the CLI assembles (interlock advisor <change> --brief). The draft is validated and rendered by code (--check, exit 0 once the change resolves) to openspec/changes/<change>/advisor.md, and a consult that did not run is written down the same way. Nothing gates on the file and the advisor never writes decisions.md. interlock advisor --verdict --labels <dir> tallies the ten Spec Range eval cases' human labels against caps in interlock limits. The spec meter shows the advisor result, its questions, the consult spawn and a waiting on you line.
  • Compound notes. A review finding may carry an optional specGap: true; the domain and technical-lead reviewers set it for a requirement no spec stated. interlock note derive|add|match keep a table at docs/notes/compound.md, both adjudicators append to it (a failure is spoken as COMPOUND NOTES NOT WRITTEN, never an exit code), and the next spec's brief is shown the rows that name a file its tasks touch.
  • interlock evals triage --eval-dir <dir> joins grader types from the case definitions so the first judged graders are classified correctly.

Fixed

  • Two writers to docs/notes/compound.md no longer lose each other's rows. A ship review's adjudication and interlock note add on the same checkout each read the whole table and rewrote it, so a concurrent append was lost and an id could be handed out twice (12 concurrent note add processes landed 9 rows). Each append now reads, numbers and writes under an exclusive lock file, staging the table and renaming it into place. A lock still held past a short wait is spoken as COMPOUND NOTES NOT WRITTEN, never an exit code; a lock left by a writer that died is broken.
  • Eval triage no longer counts a grader the harness left out of the score. A trial grader written scored: false (a with-only indicator under --ablation with-without) is excluded, as the harness itself excludes it.
  • The CI eval jobs can run their cases. Both jobs now pass --trust-plugin, because without a terminal claude plugin eval refuses an untrusted directory before any case runs. They also grant the operator-gated tools their cases list (--allow-tools Bash for smoke, Bash Edit Write for the full job). Without the grant the harness withholds those tools, and no Spec Range case could pass check-ran or advisor-written. test/evals.test.mjs derives the grant from the cases and pins it.

Changed

  • The interlock advisor and interlock note handlers moved from bin/interlock to lib/advisor-cli.mjs (no behaviour change), and a test now fails any shipped file within 16 KiB of the plugin directory's 256 KiB per-file limit.