Conductor hardening: the six defects reported in #6 by an external maintainer, plus twelve found while auditing them.
The two worst were not in the report, and affected every prior release:
- A chatty model self-approved. The review and runtime gates were unanchored
.test(body)regexes, and both prompts containVERDICT: APPROVED/RUNTIME: PASSas instructions — so a model that restated its instructions was read as approving. Reproduced: a document endingVERDICT: CHANGES REQUESTEDread as APPROVED. - Post-approval code landed unreviewed. Round 3 runs as the coder agent with the worktree writable; an edit inside
write_scopepassed the scope re-check and was folded into the closed commit by an unguarded amend.
Reported and fixed: reviewer fixes could escape write_scope (the scope gate ran after git commit --amend, and git status --porcelain is empty on a committed tree); the run lock died ENOTDIR in a linked worktree; blocking findings now cross the attempt boundary as findings, not reviewer names; --max-processed separates the activity ceiling from --max-tickets' success target; bounded runtime repair (--runtime-fix-iterations, default 1) that re-earns every gate; POSIX process-group timeout containment that fails closed.
Also found: the scope gate's containment bypass — **/*, */**, */* and [a-z]*/** each authorised the whole repo, because "refuse a bare *" was a blacklist of four literal strings; renames checked on one side only; close() ran verify with no timeout and a 1MB buffer that refused green tickets while reporting "did not exit 0"; provider-limit exhaustion crashed the run; STOP ignored during a 60m backoff; deletions invisible to reviewer selection.
Test harness: validate-scope.match.test.sh had been cited as proof the matcher was "fixture-backed" since v3.8.0 and no harness ever ran it — while testing its own copy of the matcher. Six more orphaned suites found (45 tests, including the entire JIRA board driver's coverage). Pass 53 now discovers every *.test.mjs under scripts/ rather than listing them.
Conductor coverage 19 → 93 tests. Full suite 724 passed, 0 failed. Every new negative control verified red against its prior commit.
Closes #6.