Version. 0.1 · Date. 2026-08-14 · Author. Claude Code (drafting, from [B-99] + scoping-notes/loomworks-b101-b99-scoping-note-v0_1) / Marvin Percival (approving).
Target. /Users/dunin7/loomworks (surface only — one component, one site). Baseline. Surface 322a216 (or CR-2026-213's landing, whichever stands when this executes — Step 0 confirms). Ordering. Behind CR-2026-213, per the Operator.
Charter. Autonomous regime. Status. DRAFT — awaiting the gate. Do not execute.
One site. CandidateFindingsPanel: the render guard distinguishes the two empties. Idle-empty (mount fetch returned none — no findings existed to answer): render nothing, exactly as today. Action-outcome empty (an answer's induction cycle returned zero open findings): the panel STAYS and renders the closing state — "Re-reviewed (cycle N) — nothing left open. This draft is ready to commit." — the report rendered where the action happened, handing off to the banner one block above. Mechanically: the converged outcome sets a closedAtCycle state rather than relying on the findings array alone; the guard checks it before nulling. The closing state retires naturally on navigation/refetch (a fresh mount with no findings is an idle-empty again).
Nothing else. No shared mechanism, no idiom change, no banner change (§0.3's sentence rides in §2).
CandidateCommitBanner's reload-as-report (unmounting on the commit it reports, the full reload landing on the committed state) is cruder than a confirmation but not silent — and becomes this defect's shape exactly if that reload ever softens to a partial refresh. Watched, not fixed.
The converged outcome renders the closing state BEFORE any unmount (the missing test the walk exposed — drive {converged: true, findings: [], cycle_number: N} through the answer flow; assert the report renders); the idle-empty still renders nothing (the criterion's other direction, pinned); the still-open outcome unchanged (existing test re-run); the closing state names the cycle. Existing panel suite re-run.
Kind C expected: one component's render states. Checked at Step 1; a null finding is an entry.
| Step | What | Mode | |---|---|---| | 0 | Pre-flight — baseline (post-213), clean tree. | Auto | | 1 | Verify the guard + answer flow against code; tests written, observed failing. | Auto | | 2 | The closing state. | Auto | | 3 | vitest; tsc; lint (the standing local gate list). | Auto | | 4 | Eye-test: disposable draft-route candidate (turn-less — [B-93] routed around, again, by the recorded plan), answer its findings down to zero through the panel, observe the closing state render live; discard clean. | Auto | | A | Checkpoint. | Checkpoint | | 5 | Tag; push; watch (verdict read directly); redeploy; post-deploy smoke. | Auto |
Execute CR-2026-214 v0.1 at change-requests/cr-2026-214-loomworks-
findings-panel-closing-state-v0_1.md in loomworks-record. Surface
repo only. Confirm baseline first (post-213).
§0: empties-as-idle vs empties-as-action-outcome — one site, no
idiom change. The report renders BEFORE any unmount; the idle
direction stays byte-identical. The banner adjacency is one
sentence, not a change.
DUNIN7 — Done In Seven LLC — Miami, Florida CR-2026-214 — the findings panel reports the close — v0.1 — 2026-08-14 The right outcome, reported where the action happened. One site, not a habit.