v0.10.0 — the gate review: acquittal, raw-only gating, PID locks
v0.10.0 — the gate review
The same community reviewer who found v0.9's literal-collapse flaw came back in full gate mode: every accusation with a line number and a repro — and two accusations retracted when their own repros failed to break the code. That standard is now law in CONTRIBUTING.md ("Release gate — four adversarial questions").
Fixed
- P0 — proven-good code gets total silence. Code with a recorded PASS was still receiving "expect the same failure" notes from old sibling-variant failures. An acquittal check now silences every channel (collapsed AND structural) for code that has passed. The happy path is sacred.
- P1 —
minFailurescounts only THIS exact code. Previously5000failing once +7000failing once could arm a "failed 2 times" hard block against5000. The gate now counts raw-channel failures exclusively. - P1 — locks can't be stolen from live holders. mtime-staleness is gone: locks record
{pid, token}, stealing requires a dead holder, release is token-checked (can never unlink someone else's lock), and waiters wait 15s before the documented last resort. - P3 — eviction by value. Cap pressure now evicts pass/retired/pending first; load-bearing failures survive churn.
Security
- P2 — imported ledger text is neutralized and labeled.
rl importis a cross-machine channel; imported signatures/previews are now structurally neutralized (control chars stripped, newline structure flattened) at import and at render, and tagged[imported verdict]in briefings and block messages. Honest framing: structural neutralization, not content filtering — treat shared ledgers like dependencies.
91 tests (5 new adversarial gate tests, one per finding) - zero dependencies.