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

Open
#794 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.