forked from heavy-duty/ceremony
During the ceremony#111 freeze, rig#126/#128 carried blocked beside state:needs-human — the round had finished, but the hold said the merge must not happen, and rig#126 was merged seven minutes after the reconciler wrote the green label. decide_state() only joined the two axes through blockers(), which emits branch facts; the hand-set blocked label was never consulted. blocked becomes the second exclusion on state:needs-human, exactly parallel to needs-ruling: round says needs-human + has_label blocked -> state:addressing. Deliberately not a blockers() emission — BLOCKERS is machine-owned and the converge loop would strip the live hold on the next tick, the same trap #51 names for needs-ruling. Ruling record: discussion 122, armed default A fired 2026-07-25T09:00Z. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| fixtures | ||
| changelog-armed.test.sh | ||
| changelog-assemble.test.sh | ||
| changelog-assembled.test.sh | ||
| changelog-monotonic.test.sh | ||
| changelog.test.sh | ||
| decide.test.sh | ||
| docs-sync.test.sh | ||
| drill-recorded.test.sh | ||
| facts.test.sh | ||
| harness.sh | ||
| issueflow-reconcile.test.sh | ||
| labels-reconcile.test.sh | ||
| labels-scope.test.sh | ||
| labels.test.sh | ||
| release-chain.test.sh | ||
| ruling.test.sh | ||
| run.sh | ||
| runner-isolated.test.sh | ||
| self-ref.test.sh | ||
| version.test.sh | ||