diff --git a/CHANGELOG.md b/CHANGELOG.md index f7a9e5c74..583089ace 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ## [Unreleased] +### Changed +- `/gsd:debug` flow now requires a `human-verify` checkpoint after self-verification before marking debug sessions `resolved` and moving files to `.planning/debug/resolved/` + ## [1.20.3] - 2026-02-16 ### Fixed diff --git a/agents/gsd-debugger.md b/agents/gsd-debugger.md index 4413c99eb..e0337b594 100644 --- a/agents/gsd-debugger.md +++ b/agents/gsd-debugger.md @@ -737,7 +737,7 @@ DEBUG_RESOLVED_DIR=.planning/debug/resolved ```markdown --- -status: gathering | investigating | fixing | verifying | resolved +status: gathering | investigating | fixing | verifying | awaiting_human_verify | resolved trigger: "[verbatim user input]" created: [ISO timestamp] updated: [ISO timestamp] @@ -801,10 +801,10 @@ files_changed: [] ## Status Transitions ``` -gathering -> investigating -> fixing -> verifying -> resolved - ^ | | - |____________|___________| - (if verification fails) +gathering -> investigating -> fixing -> verifying -> awaiting_human_verify -> resolved + ^ | | | + |____________|___________|_________________| + (if verification fails or user reports issue) ``` ## Resume Behavior @@ -907,6 +907,7 @@ Based on status: - "investigating" -> Continue investigation_loop from Current Focus - "fixing" -> Continue fix_and_verify - "verifying" -> Continue verification +- "awaiting_human_verify" -> Wait for checkpoint response and either finalize or continue investigation @@ -966,11 +967,52 @@ Update status to "fixing". - Update status to "verifying" - Test against original Symptoms - If verification FAILS: status -> "investigating", return to investigation_loop -- If verification PASSES: Update Resolution.verification, proceed to archive_session +- If verification PASSES: Update Resolution.verification, proceed to request_human_verification + + + +**Require user confirmation before marking resolved.** + +Update status to "awaiting_human_verify". + +Return: + +```markdown +## CHECKPOINT REACHED + +**Type:** human-verify +**Debug Session:** .planning/debug/{slug}.md +**Progress:** {evidence_count} evidence entries, {eliminated_count} hypotheses eliminated + +### Investigation State + +**Current Hypothesis:** {from Current Focus} +**Evidence So Far:** +- {key finding 1} +- {key finding 2} + +### Checkpoint Details + +**Need verification:** confirm the original issue is resolved in your real workflow/environment + +**Self-verified checks:** +- {check 1} +- {check 2} + +**How to check:** +1. {step 1} +2. {step 2} + +**Tell me:** "confirmed fixed" OR what's still failing +``` + +Do NOT move file to `resolved/` in this step. -**Archive resolved debug session.** +**Archive resolved debug session after human confirmation.** + +Only run this step when checkpoint response confirms the fix works end-to-end. Update status to "resolved". @@ -1127,6 +1169,8 @@ Orchestrator presents checkpoint to user, gets response, spawns fresh continuati **Commit:** {hash} ``` +Only return this after human verification confirms the fix. + ## INVESTIGATION INCONCLUSIVE ```markdown @@ -1176,7 +1220,8 @@ Check for mode flags in prompt context: **goal: find_and_fix** (default) - Find root cause, then fix and verify - Complete full debugging cycle -- Archive session when verified +- Require human-verify checkpoint after self-verification +- Archive session only after user confirmation **Default mode (no flags):** - Interactive debugging with user diff --git a/commands/gsd/debug.md b/commands/gsd/debug.md index d0014bb76..27c383ede 100644 --- a/commands/gsd/debug.md +++ b/commands/gsd/debug.md @@ -110,6 +110,9 @@ Task( **If `## CHECKPOINT REACHED`:** - Present checkpoint details to user - Get user response +- If checkpoint type is `human-verify`: + - If user confirms fixed: continue so agent can finalize/resolve/archive + - If user reports issues: continue so agent returns to investigation/fixing - Spawn continuation agent (see step 5) **If `## INVESTIGATION INCONCLUSIVE`:** diff --git a/get-shit-done/templates/DEBUG.md b/get-shit-done/templates/DEBUG.md index b2fa321ad..63ef4b2bc 100644 --- a/get-shit-done/templates/DEBUG.md +++ b/get-shit-done/templates/DEBUG.md @@ -8,7 +8,7 @@ Template for `.planning/debug/[slug].md` — active debug session tracking. ```markdown --- -status: gathering | investigating | fixing | verifying | resolved +status: gathering | investigating | fixing | verifying | awaiting_human_verify | resolved trigger: "[verbatim user input]" created: [ISO timestamp] updated: [ISO timestamp] @@ -127,9 +127,14 @@ files_changed: [] - Update Resolution.verification with results - If verification fails: status → "investigating", try again +**After self-verification passes:** +- status -> "awaiting_human_verify" +- Request explicit user confirmation in a checkpoint +- Do NOT move file to resolved yet + **On resolution:** - status → "resolved" -- Move file to .planning/debug/resolved/ +- Move file to .planning/debug/resolved/ (only after user confirms fix)