* test(#3684): failing-first rows for the verified-unmarked resume * fix(#3684): resume verified-unmarked phases at update_roadmap * test(#3684): heading-shaped roadmap fixture, plain phase.complete calls * fix(#3684): fit under the pre-phase-6 margin, fix pins and verify call * fix(#3684): padding-normalize the marked-complete join, assert STATE idempotency * test(#3684): anchor fixes, node jq mirror, characterized STATE delta * chore(#3684): backfill changeset pr number --------- Co-authored-by: sim <sim@local>
This commit is contained in:
@@ -350,6 +350,10 @@ are done. Blocked-and-incomplete must never be reported as finished.
|
||||
|
||||
```bash
|
||||
VERIFY_STATUS=$(gsd_run query verification status "${PHASE_DIR}" --pick status)
|
||||
# #3684: checkbox = marked-complete; report fields can claim a no-op write (#3685).
|
||||
ANALYZE=$(gsd_run query roadmap.analyze)
|
||||
if [[ "$ANALYZE" == @file:* ]]; then ANALYZE=$(cat "${ANALYZE#@file:}"); fi
|
||||
PHASE_MARKED=$(echo "$ANALYZE"|jq -r --arg p "$PHASE_NUMBER" 'def n:sub("^0+(?=[0-9])";"");.phases[]|select(((.number//.phase_number|tostring|n))==($p|n))|.roadmap_complete'|head -1)
|
||||
```
|
||||
|
||||
Evaluate in this exact order — the first matching condition decides the outcome; do not evaluate
|
||||
@@ -366,8 +370,6 @@ later conditions once one matches:
|
||||
→ exit. Do not fall through to condition 3; this is not a completion state.
|
||||
3. **No filter is active, and every filtered plan was filtered by `has_summary` alone** (no
|
||||
blocked-plan skip occurred):
|
||||
- **`VERIFY_STATUS` is anything other than `missing`**: the phase genuinely finished. Report
|
||||
"No matching incomplete plans" → exit, unchanged.
|
||||
- **`VERIFY_STATUS == missing`**: the plans are all summarized but the run never reached the
|
||||
tail gates. Report:
|
||||
`"All {plan_count} plans are summarized but no VERIFICATION.md exists — resuming at the phase gates (#2868)."`
|
||||
@@ -382,6 +384,13 @@ later conditions once one matches:
|
||||
skip `aggregate_results`, `code_review_gate` or `regression_gate` on this path — the manual
|
||||
workaround this replaces skipped all three, and that gap is the reason this route exists
|
||||
rather than telling users to spawn the verifier by hand.
|
||||
- **`VERIFY_STATUS` ≠ `missing` + `PHASE_MARKED` is `true`**: genuinely finished.
|
||||
Report "No matching incomplete plans" → exit, unchanged.
|
||||
- **`VERIFY_STATUS` ≠ `missing` + `PHASE_MARKED` not `true`** — the run died between
|
||||
`verify_phase_goal` and `update_roadmap` (#3684): verification EXISTS — do not redo
|
||||
it or the gates already run. Report `"Phase {X} is verified but never marked
|
||||
complete — resuming at update_roadmap (#3684)."` and continue directly at
|
||||
`update_roadmap`; the tail steps then run in their normal order.
|
||||
|
||||
Report:
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user