The stranded state
An ai:design label with no trusted comment raising a question is a state no actor consumes:
/ndd withholds it — "why": "no trusted comment raises a design question" — because there is no claim to check; presenting it would hand the human an empty centre.
- The producer and vetter both skip it —
ai:design parks the PR outside every AI actor's queue by design.
- No other command lists it.
So the row sits forever. As of 2026-08-09 there are six, and after today's full queue drain (six presentable rows read and ruled, presentable now 0) they are the entire remaining ai:design population:
cyclo.site#412, rain.erc4626.words#233, rain.erc4626.words#166, raindex#2778, raindex#2721, raindex#2720.
How they get here: the label survives its question. A vetter or producer raises a question, the raising comment is superseded by a later push or the note falls out of trust scope, or the label was applied without the flag call ever writing its comment — and next_design's provenance check (author-scoped, so third-party spoofs never count) correctly refuses to treat what remains as a question. The refusal is right; what is missing is any transition OUT.
Ruled fix: the FSM doctor pushes every noQuestion row back to needs-work
Ruling (thedavidmeister, 2026-08-09): the daily FSM-conformance pass should move ALL noQuestion rows to ai:needs-work, automatically.
This is the same principle as the #227 draft ruling — vetter always sends producer drafts back to needs-work as a matter of principle; the "work" is the producer confirming intent — applied to the design lane: a design label whose question is gone is not a design state, and the machine routes it back to the producer rather than parking it. The work order the send-back carries is itself well-defined: re-raise the design question with a trusted flag-design comment if one still exists, otherwise proceed with the PR (the question is gone because it was superseded or never existed).
Mechanics:
- Detection already exists and is already tested:
next_design's withheld classification (counts.noQuestion, pr-review-report-rs/src/main.rs:27138-27234). The doctor consumes the same classifier — no second detector, per the one-enumeration rule.
- The transition is the standard needs-work send-back (clear
ai:design, set ai:needs-work, post the work order comment at the same anchor). It is machine-writable: it routes INTO an AI actor's queue, takes nothing terminal, and the human override namespace (human:*) still dominates — a human:*-ruled row is already excluded from this population by next_design itself.
- Cadence: the daily FSM-conformance review is the natural home; it is the pass whose whole job is reconciling live pipeline state against the modeled FSM, and leak-like buckets that "should trend to zero" are its existing vocabulary.
noQuestion is exactly such a bucket.
- The send-back note must name WHY the row was routed (label present, no trusted raising comment at/after the current head) so the producer knows the choice is re-flag-or-proceed, not a code defect.
Interlock with the sibling issues
The stranded state
An
ai:designlabel with no trusted comment raising a question is a state no actor consumes:/nddwithholds it —"why": "no trusted comment raises a design question"— because there is no claim to check; presenting it would hand the human an empty centre.ai:designparks the PR outside every AI actor's queue by design.So the row sits forever. As of 2026-08-09 there are six, and after today's full queue drain (six presentable rows read and ruled,
presentablenow 0) they are the entire remainingai:designpopulation:cyclo.site#412, rain.erc4626.words#233, rain.erc4626.words#166, raindex#2778, raindex#2721, raindex#2720.
How they get here: the label survives its question. A vetter or producer raises a question, the raising comment is superseded by a later push or the note falls out of trust scope, or the label was applied without the flag call ever writing its comment — and
next_design's provenance check (author-scoped, so third-party spoofs never count) correctly refuses to treat what remains as a question. The refusal is right; what is missing is any transition OUT.Ruled fix: the FSM doctor pushes every noQuestion row back to needs-work
Ruling (thedavidmeister, 2026-08-09): the daily FSM-conformance pass should move ALL
noQuestionrows toai:needs-work, automatically.This is the same principle as the #227 draft ruling — vetter always sends producer drafts back to needs-work as a matter of principle; the "work" is the producer confirming intent — applied to the design lane: a design label whose question is gone is not a design state, and the machine routes it back to the producer rather than parking it. The work order the send-back carries is itself well-defined: re-raise the design question with a trusted
flag-designcomment if one still exists, otherwise proceed with the PR (the question is gone because it was superseded or never existed).Mechanics:
next_design's withheld classification (counts.noQuestion,pr-review-report-rs/src/main.rs:27138-27234). The doctor consumes the same classifier — no second detector, per the one-enumeration rule.ai:design, setai:needs-work, post the work order comment at the same anchor). It is machine-writable: it routes INTO an AI actor's queue, takes nothing terminal, and the human override namespace (human:*) still dominates — ahuman:*-ruled row is already excluded from this population bynext_designitself.noQuestionis exactly such a bucket.Interlock with the sibling issues
noQuestiongenuinely trends to zero and the defect-bucket rendering there gets its emptying mechanism. The two are independent — the dash change is honest counting either way — but this is what makes the bucket drain.