Skip to content

FSM doctor: route every noQuestion ai:design row back to ai:needs-work #241

Description

@thedavidmeister

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

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions