MEDIUM. If an architecture or UX reviewGate crashes it returns null; the caller only log(... 'reviewer died') and proceeds to the implementer anyway. A crashed/again-requesting reviewer should halt the ticket (same as request_changes), not be skipped. Add a guard after the arch/ux gates: if (!r || r.verdict==='request_changes') { record + continue }.
Filed 2026-06-14 from the delivery-train process-safety audit (after the 22-ticket passband run). Engine: .claude/workflows/delivery-train.js. Anchor failure: #1639 — architect committed an ADR, implementer opened no PR, reviewer got "PR #0", ticket dangled with a stranded branch + leftover worktree.
MEDIUM. If an architecture or UX
reviewGatecrashes it returnsnull; the caller onlylog(... 'reviewer died')and proceeds to the implementer anyway. A crashed/again-requesting reviewer should halt the ticket (same asrequest_changes), not be skipped. Add a guard after the arch/ux gates:if (!r || r.verdict==='request_changes') { record + continue }.Filed 2026-06-14 from the delivery-train process-safety audit (after the 22-ticket passband run). Engine:
.claude/workflows/delivery-train.js. Anchor failure: #1639 — architect committed an ADR, implementer opened no PR, reviewer got "PR #0", ticket dangled with a stranded branch + leftover worktree.