Raised nothing yet
A memo, a reading or a gate failure has named something that might change.
the door It is written down verbatim where it can be checked: a brief, a review item or an issue file. A thing said in passing has not been raised.
The states a change moves through here. Each names the one role that can advance it and the door: the condition the next role will not take the work without. Nine states, 7 of them a stage of the seven-stage change control, and 1 door currently shut.
admin/build/gen_board.py declares. Reorder one and forget the other and the build fails, rather than the map going on confidently drawing last month's process. Borrowed, with the reasoning, from newsroom.sgit.ai's brief 10.Approved has 2 item(s) waiting at it and nothing has ever passed through it. It is advanced by the founder, and its door is: The founder answers. There is no substitute, no timeout and no default, which is the point of separating proposing from choosing.
Waiting: WS-01, WS-02. Everything downstream of it — Implemented, Accepted — has therefore never been entered by any pack, which does not mean nothing has shipped: it means what shipped went around the workflow rather than through it.
A memo, a reading or a gate failure has named something that might change.
the door It is written down verbatim where it can be checked: a brief, a review item or an issue file. A thing said in passing has not been raised.
Which roles have a voice on this, and which are only asked for an opinion.
the door The split is recorded BEFORE any opinion is written. Deciding afterwards who had a voice is deciding the answer.
What the thing actually is, counted rather than argued.
the door Every claim anchored to bytes or to a computation that can be re-run. A map that agrees with everyone has not been made.
The candidates, or the deliverable itself, exist.
the door Built only from the estate's own counted vocabulary, with what each option costs stated beside it.
The opinions are in, each from its role's own centre of gravity.
the door Every role with a voice has spoken, and each has said what it would refuse. A round of agreement is not a review.
The founder has decided. No role approves; the team proposes and the founder chooses.
the door The founder answers. There is no substitute, no timeout and no default, which is the point of separating proposing from choosing.
2 waiting: WS-01, WS-02
The change is made, in the source of truth rather than in a projection of it.
the door Both gates green: the unit suite and the release validator. Neither is advisory.
The founder confirms that what was built is what was approved.
the door The founder reads the result on the live site, not the description of it.
Narrated, tagged, deployed, and readable by anyone.
the door A row in the version table saying what changed and why, and green CI. Terminal.
A door with nothing through it is not a criticism of whoever owns it. It is the honest shape of the process at this moment, and it is worth drawing for the reason the sibling site gives: before their state map existed, one shut door was four separate caveats on four separate pages. Ours was the same — the same fact was stated on the board, in two pack records, in the issue tree and in four replies.
What a shut door does NOT mean is that nothing downstream has happened. It means nothing has passed through the workflow. Work can and does go around a shut door, and when it does, the map shows the door still shut while the release table shows the change shipped. That gap is the useful part: it says the process and the practice have diverged, and which of the two to fix is a decision rather than a bug.
workflow.json is the machine surface: id, label, lane, seq, stage, owner, means, door and exits. The occupancy fields on this page (at, passed, shut) are computed at build time from the board and are not in the file — read them from the board rather than caching them here. To add a state, add it to workflow.json with its door and its exits; the build refuses a state with no door, an exit that names nothing, or a stage sequence that disagrees with the declared workflow.