Repository navigation
v0.1.69 ships the 2 PRs merged on main since v0.1.68, both merge commits: #556 and #559.
What ships
One bad ledger entry no longer disables every stance (#559, fixes #557)
Before, a single malformed taste-ledger entry (for example a non-string concept) made the matcher throw. The failure was silent, and every stance stopped enforcing. That happened in both the hook and the server-side present_* gate. Now:
- A bad concept is ignored or coerced:
concept: {name: "…"}is read as its name. A non-string concept is treated as absent. - The entry still enforces: it matches through its description, with an ask by default and a deny under strict-stop.
- A truly unusable entry is skipped and recorded, while every other valid stance keeps enforcing.
- Valid ledgers behave byte-identically to before.
Preflight failures are classified and visible in doctor (#556, refs #546)
This is observability only; hook decisions are unchanged. The hook's stdout, stderr and exit status are byte-identical to main in every characterized case.
- A failure taxonomy:
input_malformed,ledger_unreadable,ledger_corrupt,matcher_import_failed,evaluator_threw,session_store_unreadableandledger_entry_invalid, written as a bounded, redacted record. - Doctor reports recent failures and the gate mode as visible to doctor. It labels settings env versus shell env, and never claims the hook's effective environment.
docs/preflight-modes.mdsays explicitly that strict-stop is not fail-closed protection.
Known limits (no fail-closed claim)
- File-level corrupt or unreadable ledgers still fail open, as before. These changes are observability plus restored intended behavior.
- #546 stays open for the remaining items, and #553 (worker subagent denies don't reach the parent) is open.
Not in this release: the delegate slices S1–S6, #430 and #434.
Review provenance
Each is from the PR's comments.
- #556: Opus adversarial review requested changes at
04b5ae8b(the only blocker was a rebase onto #552). An Opus delta review approved42fcf2b7, and the refresh onto v0.1.68 (74d6cf7b) was re-checked side by side (108 rows). Merged as2beecf0eby Opus under Mitch's authorization. - #559: Opus adversarial review approved
48880c3e. After a LOW fix (a bad concept no longer skips the entry), an Opus delta re-review approved92dd5bed. Merged asc87f9187by Opus under Mitch's authorization; GitGuardian was skipped on the merge. A GitGuardian alert (incident 38341052) on #559 was checked and is a false positive:const SECRET = "sk-ant-api03-MCP-BAD-ENTRY";atpreflight-bad-entry-mcp.test.ts:18is a made-up redaction canary in a test. This is recorded on #559 and #560.
Verification
Measured on a fresh native clone, branch release/v0.1.69 off main c87f9187:
- Version sources: all four read 0.1.69.
- Diff vs
main: 7 files, 7 insertions and 7 deletions (the four version sources plus thedaemon.js,standalone.jsanddoctor.mjsstamps). - Cold build:
pnpm install --frozen-lockfile, thenpnpm build:clean; the regenerated stamps are committed. - Typecheck: 3 of 3 tasks clean.
- Lint: 0 errors; mcp-server 219 warnings (cap 240), shared 3.
- Tests: full
FORCE_COLOR=0 NO_COLOR=1 pnpm testpasses on the first run, in the foreground: mcp-server 403 files and 6,115 tests (108 skipped), shared 15 files and 321 tests. No timing failures. - Checks:
version-lockstepandplugin-bundle-bootpass (2 files, 5 tests). - Rebuild: a second cold
pnpm build:cleanleavesgit statusclean, andgrep -rF "0.1.68" claude-plugin/serverreturns nothing. - Conflict markers: none.