--- name: gsd:audit-milestone description: Audit milestone completion against original intent before archiving argument-hint: "[version]" allowed-tools: - Read - Glob - Grep - Bash - Task - Write --- Verify milestone achieved its definition of done. Check requirements coverage, cross-phase integration, and end-to-end flows. **This command IS the orchestrator.** Reads existing VERIFICATION.md files (phases already verified during execute-phase), aggregates tech debt and deferred gaps, then spawns integration checker for cross-phase wiring. Version: $ARGUMENTS (optional — defaults to current milestone) **Original Intent:** @.planning/PROJECT.md @.planning/REQUIREMENTS.md **Planned Work:** @.planning/ROADMAP.md @.planning/config.json (if exists) **Completed Work:** Glob: .planning/phases/*/*-SUMMARY.md Glob: .planning/phases/*/*-VERIFICATION.md ## 1. Determine Milestone Scope ```bash # Get phases in milestone ls -d .planning/phases/*/ | sort -V ``` - Parse version from arguments or detect current from ROADMAP.md - Identify all phase directories in scope - Extract milestone definition of done from ROADMAP.md - Extract requirements mapped to this milestone from REQUIREMENTS.md ## 2. Read All Phase Verifications For each phase directory, read the VERIFICATION.md: ```bash cat .planning/phases/01-*/*-VERIFICATION.md cat .planning/phases/02-*/*-VERIFICATION.md # etc. ``` From each VERIFICATION.md, extract: - **Status:** passed | gaps_found - **Critical gaps:** (if any — these are blockers) - **Non-critical gaps:** tech debt, deferred items, warnings - **Anti-patterns found:** TODOs, stubs, placeholders - **Requirements coverage:** which requirements satisfied/blocked If a phase is missing VERIFICATION.md, flag it as "unverified phase" — this is a blocker. ## 3. Spawn Integration Checker With phase context collected: ``` Task( prompt="Check cross-phase integration and E2E flows. Phases: {phase_dirs} Phase exports: {from SUMMARYs} API routes: {routes created} Verify cross-phase wiring and E2E user flows.", subagent_type="gsd-integration-checker" ) ``` ## 4. Collect Results Combine: - Phase-level gaps and tech debt (from step 2) - Integration checker's report (wiring gaps, broken flows) ## 5. Check Requirements Coverage For each requirement in REQUIREMENTS.md mapped to this milestone: - Find owning phase - Check phase verification status - Determine: satisfied | partial | unsatisfied ## 6. Aggregate into v{version}-MILESTONE-AUDIT.md Create `.planning/v{version}-v{version}-MILESTONE-AUDIT.md` with: ```yaml --- milestone: {version} audited: {timestamp} status: passed | gaps_found | tech_debt scores: requirements: N/M phases: N/M integration: N/M flows: N/M gaps: # Critical blockers requirements: [...] integration: [...] flows: [...] tech_debt: # Non-critical, deferred - phase: 01-auth items: - "TODO: add rate limiting" - "Warning: no password strength validation" - phase: 03-dashboard items: - "Deferred: mobile responsive layout" --- ``` Plus full markdown report with tables for requirements, phases, integration, tech debt. **Status values:** - `passed` — all requirements met, no critical gaps, minimal tech debt - `gaps_found` — critical blockers exist - `tech_debt` — no blockers but accumulated deferred items need review ## 7. Present Results Route by status (see ``). Output this markdown directly (not as a code block). Route based on status: --- **If passed:** ## ✓ Milestone {version} — Audit Passed **Score:** {N}/{M} requirements satisfied **Report:** .planning/v{version}-MILESTONE-AUDIT.md All requirements covered. Cross-phase integration verified. E2E flows complete. ─────────────────────────────────────────────────────────────── ## ▶ Next Up **Complete milestone** — archive and tag /gsd:complete-milestone {version} /clear first → fresh context window ─────────────────────────────────────────────────────────────── --- **If gaps_found:** ## ⚠ Milestone {version} — Gaps Found **Score:** {N}/{M} requirements satisfied **Report:** .planning/v{version}-MILESTONE-AUDIT.md ### Unsatisfied Requirements {For each unsatisfied requirement:} - **{REQ-ID}: {description}** (Phase {X}) - {reason} ### Cross-Phase Issues {For each integration gap:} - **{from} → {to}:** {issue} ### Broken Flows {For each flow gap:} - **{flow name}:** breaks at {step} ─────────────────────────────────────────────────────────────── ## ▶ Next Up **Plan gap closure** — create phases to complete milestone /gsd:plan-milestone-gaps /clear first → fresh context window ─────────────────────────────────────────────────────────────── **Also available:** - cat .planning/v{version}-MILESTONE-AUDIT.md — see full report - /gsd:complete-milestone {version} — proceed anyway (accept tech debt) ─────────────────────────────────────────────────────────────── --- **If tech_debt (no blockers but accumulated debt):** ## ⚡ Milestone {version} — Tech Debt Review **Score:** {N}/{M} requirements satisfied **Report:** .planning/v{version}-MILESTONE-AUDIT.md All requirements met. No critical blockers. Accumulated tech debt needs review. ### Tech Debt by Phase {For each phase with debt:} **Phase {X}: {name}** - {item 1} - {item 2} ### Total: {N} items across {M} phases ─────────────────────────────────────────────────────────────── ## ▶ Options **A. Complete milestone** — accept debt, track in backlog /gsd:complete-milestone {version} **B. Plan cleanup phase** — address debt before completing /gsd:plan-milestone-gaps /clear first → fresh context window ─────────────────────────────────────────────────────────────── - [ ] Milestone scope identified - [ ] All phase VERIFICATION.md files read - [ ] Tech debt and deferred gaps aggregated - [ ] Integration checker spawned for cross-phase wiring - [ ] v{version}-MILESTONE-AUDIT.md created - [ ] Results presented with actionable next steps