BOHICA-LABS / BOHICA-LABS/vsdd-factory
enhancement(state-manager): a story parked mid-convergence leaves no machine-readable record — STATE.md checkpoint silently predates the rounds that ran
- Dominant language
- Rust
- Stars
- 2
- Forks
- 1
- Avg merge
- 6h 43m
- Merged PRs (30d)
- 29
Description
## Summary
A story can run several Step-4.5 convergence rounds and then stop, leaving STATE.md's Session Resume Checkpoint pointing at a state that predates every one of those rounds. A resuming session reading STATE.md alone gets a confidently-stated position that is wrong, with nothing marking it stale.
## Observed
S-BL.LOOPBACK-FULLSTACK ran 5 rounds on 2026-07-22→23 (v1.1 NO-GO, then R1–R5, all NOT CLEAN), then work stopped for 36 days. STATE.md's checkpoint is dated 2026-07-22, names a *different* story as the position, and does not mention LOOPBACK-FULLSTACK at all.
A session resuming from STATE.md would not learn that five rounds ran, that R3's HIGH was already fixed, or that the story sits one MED finding from a clean streak. Reconstructing it took reading `.factory/cycles/cycle-1//rereview-R*.md` directly plus git-log archaeology.
Round record, from the round files themselves:
| Round | Findings |
|---|---|
| v1.1 | 1 BLOCKER + 3 HIGH |
| R1 | 1 HIGH + 6 MED + 2 LOW |
| R2 | 5 MED + 2 LOW |
| R3 | 1 HIGH + 1 MED + 2 LOW |
| R4 | 2 LOW + 2 NITPICK |
| R5 | 1 MED + 2 LOW |
## Why it matters
The per-round files are written correctly and carry everything needed — the gap is that nothing propagates a *parked* state up to the checkpoint that resume paths actually read. Convergence rounds update the cycle record; only delivery seems to update the checkpoint. A story that neither converges nor is abandoned falls between them.
## Suggested fix
When a convergence round completes without reaching the clean-pass threshold, state-manager updates the checkpoint with the parked state: story id, current tip/version, rounds run, open finding count by severity. Alternatively the checkpoint carries a `last_verified` timestamp so a reader can see at a glance that it is older than the newest cycle record.
Proposal from a session review on switchboard-blue (plugin 1.0.0-rc.24), committed at `177d921a` in `.factory/session-reviews/improvement-proposals-2026-08-28.md`.
Contributor guide
Research direction
The issue describes a gap in the state-manager where a parked story's convergence rounds are not reflected in STATE.md. Look at the state-manager module, likely in `src/state_manager.rs` or similar, focusing on how checkpoints are written. The round files are in `.factory/cycles/cycle-1//rereview-R*.md`. The fix involves updating the checkpoint logic to include parked state or a last_verified timestamp when a round completes without a clean pass. Start by examining the checkpoint writing function and the convergence round completion handler.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend, devtools
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 65/100