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>
3 lines
221 B
Markdown
3 lines
221 B
Markdown
- `decide_state()` refuses `state:needs-human` while the hand-set `blocked`
|
|
label stands — the PR falls to `state:addressing`, exactly parallel to the
|
|
`needs-ruling` exclusion; never emitted by `blockers()` (#180).
|