workflow state machine: evidence can outrun the checklist; pass rows offered before a pass opens
Author: kokorolxCreated Sep 2, 2026Updated Sep 3, 2026
Labelstriage: needs-review
Two related frictions observed in live runs on lab/cs2-plugin (e2e workspaces, 2026-09-02):
- Evidence outran the checklist. In
test-e2e-20260902, the spec'sreviewHistorycarried completed reviews forstructural-passandform-refinement(with fresh renders/comparison sheets per pass) while state.json still saidcurrentPass: structural-passwith every pass rowpendingand onlyblockoutarchived inpassHistory. The session advanced viaappend_review/pipeline-syncwithout marking pass rows; nothing reconciles the two. Consequence:plugin-gates/emission-targetwere never reached through the machine even after 4 passes of real work. - Pass rows offered pre-pass, then reset. A headless e2e agent reported
next.pyoffering pass-scope steps immediately after init whilecurrentPassis"", with the first realnext.pycall then resetting them — it lost a pass of work to this.
Design question to settle first: is the spec (reviewHistory) or the checklist the authority for pass progression? Options include append_review refusing entries for passes whose checklist rows aren't done (couples spec tooling to workspace state), or pipeline-sync back-marking checklist rows from reviewHistory (accepts the spec as authority and keeps the checklist honest as an index).
Related: #122 (mandatory domain-review attachment) — the same run used the optional-attachment gap; the two together are why the terminal gates path has never executed in a real run.
Source: img2threejs/img2threejs