* fix(#1921): preserve verify-work state across gap-closure + defer follow-ups Resuming /gsd:verify-work after /gsd:execute-phase --gaps-only lost the verification state: UAT ## Gaps still read status: failed even after their fix plans executed, so verify-work re-diagnosed them as fresh blockers, spawned a new gap plan, and reported only the new plan verified. A new state contract links each gap to its fix plan so fixed gaps are recognized. - verify-work.md gap YAML: stable gap_id (G-{phase}-{N}) per gap. - plan_gap_closure planner prompt: each *-PLAN.md tags the gap_ids it addresses in its frontmatter (gap_closure: true, gap_ids: [...]). - new reconcile_gaps step (run at resume_from_file entry): marks a gap status: resolved when its plan has a matching *-SUMMARY.md — fixed gaps are not re-diagnosed and do not spawn new gap plans; a re-reported break is treated as a fresh regression with a new gap_id. - deferred-follow-up branch: a future-work idea (signals: 'later', 'next version', 'out of scope', ...) is captured to UAT ## Deferred Follow-Ups instead of becoming a blocking gap/plan. - workflow-size baseline recaptured (verify-work LARGE tier, 38221/61440). Closes #1921 * docs(#1921): backfill changeset pr 2025 * fix(#1921): balance <step> tags in verify-work.md via 4-backtick outer fence The plan_gap_closure step nested a ```yaml example inside a ``` block; same-length fences made stripFencedCode close the outer block early, swallowing the step's </step> (14 opens / 13 closes). Widen the outer fence to 4 backticks so the nested yaml is contained. Regenerate golden fixtures + size baselines. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
5
.changeset/1921-verify-work-gap-recovery.md
Normal file
5
.changeset/1921-verify-work-gap-recovery.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
type: Fixed
|
||||
pr: 2025
|
||||
---
|
||||
**`/gsd:verify-work` preserves verification state across gap-closure execution and no longer auto-promotes deferred follow-ups into blocking gaps** — resuming after `/gsd:execute-phase --gaps-only` used to lose the verification state: the UAT `## Gaps` still read `status: failed` even after their fix plans executed, so verify-work re-diagnosed them as fresh blockers, spawned a new gap plan, and reported only the new plan as verified. A state contract now links each gap to its fix plan: every UAT gap carries a stable `gap_id` (`G-{phase}-{N}`), gap-closure plans tag the ids they address in their frontmatter (`gap_ids: […]`), and a new `reconcile_gaps` step on resume marks a gap `status: resolved` when its plan has a matching `*-SUMMARY.md` — so fixed gaps aren't re-diagnosed and the phase can close. Separately, a deferred-follow-up branch captures future-work ideas (signals like "later", "next version", "out of scope") into a `## Deferred Follow-Ups` section instead of creating a blocking gap/plan. (#1921)
|
||||
Reference in New Issue
Block a user