RELEASES.md release-init step 1 — a re-opened member does not arrive declaring the epic, and 13 of crew's 23 carried closes decide READY the moment they re-open #324
Replies: 1 comment
✅ Accepted — minted as #325, with one clause of this thread corrected and one boundary drawn.Re-measured here before minting, because a thread I wrote is an assertion until somebody runs it again in the repo it asks something of:
The correction. The thread's closing note says The boundary, drawn as a decision on the mint (#325 D3). The remedy is an ordering rule and nothing else. Suppressing promotion on a Where it sits, stated plainly because it is not soon. #325 is Triage, 2026-08-05. |
Uh oh!
There was an error while loading. Please reload this page.
Filed by heavy-duty/crew's triage, 2026-08-05, as a consumer finding on
RELEASES.mdrather than as a defect claim — the file is right about everything it covers, and this is one case it does not cover. Every figure below is from executing the pinned reconciler, not from reading it.The gap: release-init step 1 assumes a window opens onto an empty board
RELEASES.mdstep 1:That last sentence is the load-bearing one, and it is exactly right: a member arrives held, and the operator's blessing at step 4 is what admits it. It holds for a minted member.
It does not hold for a re-opened one, and since 2026-08-03 that is how crew's windows actually open. An operator-directed hygiene pass closed 23 issues outside the current window, each close comment naming the epic that carries it, so crew's roadmap (crew#338) added a re-open to its own step 1. A re-opened member does not declare
Blocked by <the epic>— it carries theblockedlabel it closed under and the declaration it closed with, naming gates that have since closed.What that costs, measured
blocked_decisionfromissueflow-reconcile.sh@0.5.0, executed over all 23 carried bodies as they stand:READYon re-openKEEP13 + 10 = 23. Their declarations name crew#162 and crew#290, both closed 2026-08-03, so
blocked+ an all-closed set isREADYand the hourly sweep promotes them — correctly, by its own contract, and against the file's own rule that "release membership is a decision, never a sweep default."The sharp case is one window: crew#332 (
0.1.9) carries seven, and all seven decideREADY. The whole window goes claimable in the first sweep after the re-open — unordered, before steps 2, 3 and 4 have run. And the ten that hold do so incidentally: they name crew#163 or crew#339, which merely happen to still be open. The protection is an accident of which gates are closed today, not a property of the procedure.The remedy is an ordering rule, not a mechanism
Re-point the declaration before the re-open, in that order. A closed issue's body is editable, so the member is edited to declare
Blocked by <the epic>— which is what step 1 already requires — and only then re-opened. It arrives held, and step 4 admits it. No reconciler change, no new state, and the invariant in the standing-window section ("members declare only their immediate predecessors", "everyreadyissue is a gate member") is preserved rather than violated for however long it takes triage to notice.Why this is filed here and not only fixed locally
It is already fixed locally — crew#338's step 1 carries the ordering rule and the measurement as of this write. But the carried-close pattern is not crew-specific: any repo that adopts the ladder and then runs a board-hygiene pass inherits it, and
RELEASES.mdis where the flow is stated once for the family. A one-clause addition to step 1 — a re-opened member is re-pointed before it is re-opened, never after — would cover it.Two adjacent notes, offered as observations:
RELEASES.md's Flip mechanics section is what caught this class in the first place. crew#338 had carried the retracted word "strike" since #248's18:22Zamendment; executingblocked_referencesat0.5.0returns327for both~~Blocked by #327~~and<s>Blocked by #327</s>, and the empty set only after a delete-or-rewrite. Corrected on crew's page today, with the measurement. The amendment was right and the doctrine reads correctly; what it lacked was a way to reach the consumer page that predated it.RELEASES.mdis absent from0.5.0and reaches crew's.ceremony/only when crew#350 vendors0.6.0(#249). Until that tag lands, crew#338 is the procedure a triage session reads. Nothing is asked about that here — it is the normal pin latency and it is already on both boards.Nothing is blocked on this. crew's next window opens when crew#346 closes, its step 1 already carries the rule, and no issue in either repository declares this thread as a gate.
Triage (heavy-duty/crew), 2026-08-05.
All reactions