From 25aeb443c913b21fcf23115ff1390660b10707a4 Mon Sep 17 00:00:00 2001
From: Derek Pearson <32114370+dpearson2699@users.noreply.github.com>
Date: Sat, 14 Feb 2026 15:17:12 -0500
Subject: [PATCH] fix(#501): verify-work defers diagnosis/planning to
plan-phase --gaps (#502)
Bug fix: Verify-work defers diagnosis/planning to plan-phase --gaps
---
commands/gsd/verify-work.md | 6 +-
get-shit-done/workflows/execute-phase.md | 112 ++++-------
get-shit-done/workflows/verify-work.md | 231 +++--------------------
3 files changed, 66 insertions(+), 283 deletions(-)
diff --git a/commands/gsd/verify-work.md b/commands/gsd/verify-work.md
index b5c9e13bc..d117ea8d9 100644
--- a/commands/gsd/verify-work.md
+++ b/commands/gsd/verify-work.md
@@ -14,9 +14,9 @@ allowed-tools:
Validate built features through conversational testing with persistent state.
-Purpose: Confirm what Claude built actually works from user's perspective. One test at a time, plain text responses, no interrogation. When issues are found, automatically diagnose, plan fixes, and prepare for execution.
+Purpose: Confirm what Claude built actually works from user's perspective. One test at a time, plain text responses, no interrogation. When issues are found, record them in UAT.md and route user to /gsd:plan-phase --gaps in a fresh context.
-Output: {phase}-UAT.md tracking all test results. If issues found: diagnosed gaps, verified fix plans ready for /gsd:execute-phase
+Output: {phase}-UAT.md tracking all test results. If issues found: structured gaps ready for /gsd:plan-phase --gaps
@@ -35,5 +35,5 @@ Phase: $ARGUMENTS (optional)
Execute the verify-work workflow from @~/.claude/get-shit-done/workflows/verify-work.md end-to-end.
-Preserve all workflow gates (session management, test presentation, diagnosis, fix planning, routing).
+Preserve all workflow gates (session management, test presentation, gap recording, routing).
diff --git a/get-shit-done/workflows/execute-phase.md b/get-shit-done/workflows/execute-phase.md
index e6fefaa08..1344b2806 100644
--- a/get-shit-done/workflows/execute-phase.md
+++ b/get-shit-done/workflows/execute-phase.md
@@ -226,94 +226,52 @@ After all waves:
```
-
-Verify phase achieved its GOAL, not just completed tasks.
-
-```
-Task(
- prompt="Verify phase {phase_number} goal achievement.
-Phase directory: {phase_dir}
-Phase goal: {goal from ROADMAP.md}
-Check must_haves against actual codebase. Create VERIFICATION.md.",
- subagent_type="gsd-verifier",
- model="{verifier_model}"
-)
-```
-
-Read status:
-```bash
-grep "^status:" "$PHASE_DIR"/*-VERIFICATION.md | cut -d: -f2 | tr -d ' '
-```
-
-| Status | Action |
-|--------|--------|
-| `passed` | → update_roadmap |
-| `human_needed` | Present items for human testing, get approval or feedback |
-| `gaps_found` | Present gap summary, offer `/gsd:plan-phase {phase} --gaps` |
-
-**If human_needed:**
-```
-## ✓ Phase {X}: {Name} — Human Verification Required
-
-All automated checks passed. {N} items need human testing:
-
-{From VERIFICATION.md human_verification section}
-
-"approved" → continue | Report issues → gap closure
-```
-
-**If gaps_found:**
-```
-## ⚠ Phase {X}: {Name} — Gaps Found
-
-**Score:** {N}/{M} must-haves verified
-**Report:** {phase_dir}/{phase}-VERIFICATION.md
-
-### What's Missing
-{Gap summaries from VERIFICATION.md}
-
----
-## ▶ Next Up
-
-`/gsd:plan-phase {X} --gaps`
-
-`/clear` first → fresh context window
-
-Also: `cat {phase_dir}/{phase}-VERIFICATION.md` — full report
-Also: `/gsd:verify-work {X}` — manual testing first
-```
-
-Gap closure cycle: `/gsd:plan-phase {X} --gaps` reads VERIFICATION.md → creates gap plans with `gap_closure: true` → user runs `/gsd:execute-phase {X} --gaps-only` → verifier re-runs.
-
-
-
-Mark phase complete in ROADMAP.md (date, status).
-
-```bash
-node ~/.claude/get-shit-done/bin/gsd-tools.js commit "docs(phase-{X}): complete phase execution" --files .planning/ROADMAP.md .planning/STATE.md .planning/phases/{phase_dir}/*-VERIFICATION.md .planning/REQUIREMENTS.md
-```
-
-
-**If more phases:**
+**Route based on execution mode:**
+
+**If `--gaps-only` (gap closure execution):**
+
```
-## Next Up
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+ GSD ► GAP FIXES EXECUTED
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-**Phase {X+1}: {Name}** — {Goal}
+Phase {X}: {Name} — gap closure plans executed.
-`/gsd:plan-phase {X+1}`
+───────────────────────────────────────────────────────────────
-`/clear` first for fresh context
+## ▶ Next Up
+
+**Re-verify fixes** — confirm gaps are closed
+
+`/clear` then `/gsd:verify-work {X}`
+
+───────────────────────────────────────────────────────────────
```
-**If milestone complete:**
+**If normal execution (no flags):**
+
```
-MILESTONE COMPLETE!
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+ GSD ► EXECUTION COMPLETE
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-All {N} phases executed.
+Phase {X}: {Name} — all plans executed.
-`/gsd:complete-milestone`
+───────────────────────────────────────────────────────────────
+
+## ▶ Next Up
+
+**Verify what was built** — manual acceptance testing
+
+`/clear` then `/gsd:verify-work {X}`
+
+───────────────────────────────────────────────────────────────
+
+**Also available:**
+- `/gsd:plan-phase {X+1}` — skip verification, plan next phase
+- `/gsd:complete-milestone` — if all phases done
```
diff --git a/get-shit-done/workflows/verify-work.md b/get-shit-done/workflows/verify-work.md
index c3e11886b..34cfe6cb3 100644
--- a/get-shit-done/workflows/verify-work.md
+++ b/get-shit-done/workflows/verify-work.md
@@ -311,7 +311,31 @@ Present summary:
[List from Issues section]
```
-**If issues > 0:** Proceed to `diagnose_issues`
+**If issues > 0:**
+
+```
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+ GSD ► ISSUES RECORDED
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
+{N} issue(s) recorded in UAT.md with structured gaps.
+
+| # | Test | Severity | Issue |
+|---|------|----------|-------|
+[table of issues from Gaps section]
+
+───────────────────────────────────────────────────────────────
+
+## ▶ Next Up
+
+**Plan fixes** in a fresh context (saves tokens):
+
+`/clear` then `/gsd:plan-phase {phase} --gaps`
+
+This will read the UAT gaps and create targeted fix plans.
+
+───────────────────────────────────────────────────────────────
+```
**If issues == 0:**
```
@@ -320,203 +344,6 @@ All tests passed. Ready to continue.
- `/gsd:plan-phase {next}` — Plan next phase
- `/gsd:execute-phase {next}` — Execute next phase
```
-
-
-
-**Diagnose root causes before planning fixes:**
-
-```
----
-
-{N} issues found. Diagnosing root causes...
-
-Spawning parallel debug agents to investigate each issue.
-```
-
-- Load diagnose-issues workflow
-- Follow @~/.claude/get-shit-done/workflows/diagnose-issues.md
-- Spawn parallel debug agents for each issue
-- Collect root causes
-- Update UAT.md with root causes
-- Proceed to `plan_gap_closure`
-
-Diagnosis runs automatically - no user prompt. Parallel agents investigate simultaneously, so overhead is minimal and fixes are more accurate.
-
-
-
-**Auto-plan fixes from diagnosed gaps:**
-
-Display:
-```
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- GSD ► PLANNING FIXES
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-
-◆ Spawning planner for gap closure...
-```
-
-Spawn gsd-planner in --gaps mode:
-
-```
-Task(
- prompt="""
-
-
-**Phase:** {phase_number}
-**Mode:** gap_closure
-
-**UAT with diagnoses:**
-@.planning/phases/{phase_dir}/{phase}-UAT.md
-
-**Project State:**
-@.planning/STATE.md
-
-**Roadmap:**
-@.planning/ROADMAP.md
-
-
-
-
-Output consumed by /gsd:execute-phase
-Plans must be executable prompts.
-
-""",
- subagent_type="gsd-planner",
- model="{planner_model}",
- description="Plan gap fixes for Phase {phase}"
-)
-```
-
-On return:
-- **PLANNING COMPLETE:** Proceed to `verify_gap_plans`
-- **PLANNING INCONCLUSIVE:** Report and offer manual intervention
-
-
-
-**Verify fix plans with checker:**
-
-Display:
-```
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- GSD ► VERIFYING FIX PLANS
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-
-◆ Spawning plan checker...
-```
-
-Initialize: `iteration_count = 1`
-
-Spawn gsd-plan-checker:
-
-```
-Task(
- prompt="""
-
-
-**Phase:** {phase_number}
-**Phase Goal:** Close diagnosed gaps from UAT
-
-**Plans to verify:**
-@.planning/phases/{phase_dir}/*-PLAN.md
-
-
-
-
-Return one of:
-- ## VERIFICATION PASSED — all checks pass
-- ## ISSUES FOUND — structured issue list
-
-""",
- subagent_type="gsd-plan-checker",
- model="{checker_model}",
- description="Verify Phase {phase} fix plans"
-)
-```
-
-On return:
-- **VERIFICATION PASSED:** Proceed to `present_ready`
-- **ISSUES FOUND:** Proceed to `revision_loop`
-
-
-
-**Iterate planner ↔ checker until plans pass (max 3):**
-
-**If iteration_count < 3:**
-
-Display: `Sending back to planner for revision... (iteration {N}/3)`
-
-Spawn gsd-planner with revision context:
-
-```
-Task(
- prompt="""
-
-
-**Phase:** {phase_number}
-**Mode:** revision
-
-**Existing plans:**
-@.planning/phases/{phase_dir}/*-PLAN.md
-
-**Checker issues:**
-{structured_issues_from_checker}
-
-
-
-
-Read existing PLAN.md files. Make targeted updates to address checker issues.
-Do NOT replan from scratch unless issues are fundamental.
-
-""",
- subagent_type="gsd-planner",
- model="{planner_model}",
- description="Revise Phase {phase} plans"
-)
-```
-
-After planner returns → spawn checker again (verify_gap_plans logic)
-Increment iteration_count
-
-**If iteration_count >= 3:**
-
-Display: `Max iterations reached. {N} issues remain.`
-
-Offer options:
-1. Force proceed (execute despite issues)
-2. Provide guidance (user gives direction, retry)
-3. Abandon (exit, user runs /gsd:plan-phase manually)
-
-Wait for user response.
-
-
-
-**Present completion and next steps:**
-
-```
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- GSD ► FIXES READY ✓
-━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-
-**Phase {X}: {Name}** — {N} gap(s) diagnosed, {M} fix plan(s) created
-
-| Gap | Root Cause | Fix Plan |
-|-----|------------|----------|
-| {truth 1} | {root_cause} | {phase}-04 |
-| {truth 2} | {root_cause} | {phase}-04 |
-
-Plans verified and ready for execution.
-
-───────────────────────────────────────────────────────────────
-
-## ▶ Next Up
-
-**Execute fixes** — run fix plans
-
-`/clear` then `/gsd:execute-phase {phase} --gaps-only`
-
-───────────────────────────────────────────────────────────────
-```
-
@@ -562,9 +389,7 @@ Default to **major** if unclear. User can correct if needed.
- [ ] Severity inferred from description (never asked)
- [ ] Batched writes: on issue, every 5 passes, or completion
- [ ] Committed on completion
-- [ ] If issues: parallel debug agents diagnose root causes
-- [ ] If issues: gsd-planner creates fix plans (gap_closure mode)
-- [ ] If issues: gsd-plan-checker verifies fix plans
-- [ ] If issues: revision loop until plans pass (max 3 iterations)
-- [ ] Ready for `/gsd:execute-phase --gaps-only` when complete
+- [ ] If issues: gaps recorded in structured YAML in UAT.md
+- [ ] If issues: user routed to `/gsd:plan-phase {N} --gaps` in fresh context
+- [ ] If no issues: user routed to next phase