From cff4770c7466415982ce206cf9cec47b5cf47cb8 Mon Sep 17 00:00:00 2001 From: Jonah Schulte Date: Tue, 27 Jan 2026 00:35:03 -0500 Subject: [PATCH] feat: unified workflow format for remaining implementation workflows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Converted 6 workflows to GSD-style unified format: - multi-agent-review (188 → 197 lines) - recover-sprint-status (306 → 172 lines, 44% reduction) - revalidate-epic (273 → 189 lines, 31% reduction) - revalidate-story (510 → 225 lines, 56% reduction) - detect-ghost-features (625 → 278 lines, 56% reduction) - migrate-to-github (957 → 279 lines, 71% reduction) All use semantic tags, explicit commands, and @patterns references. --- .../detect-ghost-features/workflow.md | 278 +++++++++++++++++ .../migrate-to-github/workflow.md | 279 ++++++++++++++++++ .../multi-agent-review/workflow.md | 197 +++++++++++++ .../recover-sprint-status/workflow.md | 172 +++++++++++ .../revalidate-epic/workflow.md | 189 ++++++++++++ .../revalidate-story/workflow.md | 225 ++++++++++++++ .../detect-ghost-features/workflow.md | 278 +++++++++++++++++ .../migrate-to-github/workflow.md | 279 ++++++++++++++++++ .../multi-agent-review/workflow.md | 197 +++++++++++++ .../recover-sprint-status/workflow.md | 172 +++++++++++ .../revalidate-epic/workflow.md | 189 ++++++++++++ .../revalidate-story/workflow.md | 225 ++++++++++++++ 12 files changed, 2680 insertions(+) create mode 100644 src/bmm/workflows/4-implementation/detect-ghost-features/workflow.md create mode 100644 src/bmm/workflows/4-implementation/migrate-to-github/workflow.md create mode 100644 src/bmm/workflows/4-implementation/multi-agent-review/workflow.md create mode 100644 src/bmm/workflows/4-implementation/recover-sprint-status/workflow.md create mode 100644 src/bmm/workflows/4-implementation/revalidate-epic/workflow.md create mode 100644 src/bmm/workflows/4-implementation/revalidate-story/workflow.md create mode 100644 src/modules/bmm/workflows/4-implementation/detect-ghost-features/workflow.md create mode 100644 src/modules/bmm/workflows/4-implementation/migrate-to-github/workflow.md create mode 100644 src/modules/bmm/workflows/4-implementation/multi-agent-review/workflow.md create mode 100644 src/modules/bmm/workflows/4-implementation/recover-sprint-status/workflow.md create mode 100644 src/modules/bmm/workflows/4-implementation/revalidate-epic/workflow.md create mode 100644 src/modules/bmm/workflows/4-implementation/revalidate-story/workflow.md diff --git a/src/bmm/workflows/4-implementation/detect-ghost-features/workflow.md b/src/bmm/workflows/4-implementation/detect-ghost-features/workflow.md new file mode 100644 index 00000000..61132bf3 --- /dev/null +++ b/src/bmm/workflows/4-implementation/detect-ghost-features/workflow.md @@ -0,0 +1,278 @@ +# Detect Ghost Features v3.0 - Reverse Gap Analysis + + +Find undocumented code (components, APIs, services, tables) that exist in codebase +but aren't tracked in any story. "Who you gonna call?" - Ghost Features. + + + +**Reverse Gap Analysis** + +Normal gap analysis: story says X should exist → does it? +Reverse gap analysis: X exists in code → is it documented? + +Undocumented features become maintenance nightmares. +Find them, create backfill stories, restore traceability. + + + +name: detect-ghost-features +version: 3.0.0 + +scan_scope: + epic: "Filter to specific epic number" + sprint: "All stories in sprint-status.yaml" + codebase: "All stories in sprint-artifacts" + +scan_for: + components: true + api_endpoints: true + database_tables: true + services: true + +severity: + critical: "APIs, auth, payment (undocumented = high risk)" + high: "Components, DB tables, services" + medium: "Utilities, helpers" + low: "Config files, constants" + +defaults: + create_backfill_stories: false + auto_create: false + add_to_sprint_status: true + create_report: true + + + +@patterns/hospital-grade.md + + + + + +**Load documented artifacts from stories** + +Based on scan_scope (epic/sprint/codebase): + +```bash +# Get all story files +STORIES=$(ls docs/sprint-artifacts/*.md | grep -v "epic-") +``` + +For each story: +1. Read story file +2. Extract documented artifacts: + - File List (all paths mentioned) + - Tasks (file/component/service names) + - ACs (features/functionality) +3. Store in: documented_artifacts[story_key] + + + +**Scan codebase for actual implementations** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +👻 SCANNING FOR GHOST FEATURES +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + +**Components:** +```bash +# Find React/Vue/Angular components +find . -name "*.tsx" -o -name "*.jsx" | xargs grep -l "export.*function\|export.*const" +``` + +**API Endpoints:** +```bash +# Find Next.js/Express routes +find . -path "*/api/*" -name "*.ts" +grep -r "export.*GET\|export.*POST\|router\.\(get\|post\)" . +``` + +**Database Tables:** +```bash +# Find Prisma/TypeORM models +grep -r "^model " prisma/schema.prisma +find . -name "*.entity.ts" +``` + +**Services:** +```bash +find . -name "*.service.ts" -o -name "*Service.ts" +``` + + + +**Compare codebase artifacts to story documentation** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +🔍 CROSS-REFERENCING +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + +For each codebase artifact: +1. Search all stories for mentions of: + - Component/file name + - File path + - Feature description +2. If NO stories mention it → ORPHAN (ghost feature) +3. If stories mention it → Documented + +Track orphans with: +- type (component/api/db/service) +- name and path +- severity +- inferred purpose + + + +**Analyze and prioritize ghost features** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +👻 GHOST FEATURES DETECTED +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Total Orphans: {{count}} + +By Severity: +- 🔴 CRITICAL: {{critical}} (APIs, security) +- 🟠 HIGH: {{high}} (Components, DB, services) +- 🟡 MEDIUM: {{medium}} (Utilities) +- 🟢 LOW: {{low}} (Config) + +By Type: +- Components: {{components}} +- API Endpoints: {{apis}} +- Database Tables: {{tables}} +- Services: {{services}} + +Documentation Coverage: {{documented_pct}}% +Orphan Rate: {{orphan_pct}}% + +{{#if orphan_pct > 20}} +⚠️ HIGH ORPHAN RATE - Over 20% undocumented! +{{/if}} +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + +**Generate stories for orphaned features** + +For each orphan (prioritized by severity): + +1. **Analyze orphan** - Read implementation, find tests, understand purpose +2. **Generate story draft:** + +```markdown +# Story: Document existing {{name}} + +**Type:** BACKFILL (documenting existing code) + +## Business Context +{{inferred_from_code}} + +## Current State +✅ Implementation EXISTS: {{file}} +{{#if has_tests}}✅ Tests exist{{else}}❌ No tests{{/if}} + +## Acceptance Criteria +{{inferred_acs}} + +## Tasks +- [x] {{name}} implementation (ALREADY EXISTS) +{{#if !has_tests}}- [ ] Add tests{{/if}} +- [ ] Verify functionality +- [ ] Assign to epic +``` + +3. **Ask user** (unless auto_create): + - [Y] Create story + - [A] Auto-create all remaining + - [S] Skip this orphan + - [H] Halt + +4. **Write story file:** `docs/sprint-artifacts/backfill-{{type}}-{{name}}.md` + +5. **Update sprint-status.yaml** (if enabled) + + + +**Recommend epic assignment** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +📊 BACKFILL ORGANIZATION +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +Options: +[A] Create Epic-Backfill (recommended) + - Single epic for all backfill stories + - Clear separation from feature work + +[B] Distribute to existing epics + - Add each to its logical epic + +[C] Leave in backlog + - Manual assignment later +``` + + + +**Write comprehensive ghost features report** + +Write to: `docs/sprint-artifacts/ghost-features-report-{{timestamp}}.md` + +Include: +- Executive summary +- Full orphan list by severity +- Backfill stories created +- Recommendations +- Scan methodology + + + +**Display results and next steps** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +✅ GHOST FEATURE DETECTION COMPLETE +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Orphans Found: {{orphan_count}} +Backfill Stories Created: {{backfill_count}} +Documentation Coverage: {{documented_pct}}% + +{{#if orphan_count == 0}} +✅ All code is documented in stories! +{{else}} +Next Steps: +1. Review backfill stories for accuracy +2. Assign to epics +3. Add tests/docs for orphans +4. Run revalidation to verify +{{/if}} + +💡 Pro Tip: Run this periodically to catch + vibe-coded features before they become + maintenance nightmares. +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + + + +**No stories found:** Check scan_scope, verify sprint-artifacts exists. +**Scan fails:** Report which scan type failed, continue others. +**Backfill creation fails:** Skip, continue to next orphan. + + + +- [ ] All artifact types scanned +- [ ] Cross-reference completed +- [ ] Orphans categorized by severity +- [ ] Backfill stories created (if enabled) +- [ ] Report generated + diff --git a/src/bmm/workflows/4-implementation/migrate-to-github/workflow.md b/src/bmm/workflows/4-implementation/migrate-to-github/workflow.md new file mode 100644 index 00000000..6d16f06d --- /dev/null +++ b/src/bmm/workflows/4-implementation/migrate-to-github/workflow.md @@ -0,0 +1,279 @@ +# Migrate to GitHub v3.0 - Production-Grade Story Migration + + +Migrate BMAD stories to GitHub Issues with full safety guarantees. +Idempotent, atomic, verified, resumable, and reversible. + + + +**Reliability First, Data Integrity Over Speed** + +- Idempotent: Can re-run safely (checks for duplicates) +- Atomic: Each story fully succeeds or rolls back +- Verified: Reads back each created issue +- Resumable: Saves state after each story +- Reversible: Creates rollback manifest + + + +name: migrate-to-github +version: 3.0.0 + +modes: + dry-run: {description: "Preview only, no changes", default: true} + execute: {description: "Actually create issues"} + verify: {description: "Double-check migration accuracy"} + rollback: {description: "Close migrated issues"} + +defaults: + update_existing: false + halt_on_critical_error: true + save_state_after_each: true + max_retries: 3 + retry_backoff_ms: [1000, 3000, 10000] + +labels: + - "type:story" + - "story:{{story_key}}" + - "status:{{status}}" + - "epic:{{epic_number}}" + - "complexity:{{complexity}}" + + + +@patterns/hospital-grade.md + + + + + +**Verify all prerequisites before ANY operations** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +🛡️ PRE-FLIGHT SAFETY CHECKS +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + +**1. Verify GitHub MCP access:** +``` +Call: mcp__github__get_me() +If fails: HALT - Cannot proceed without GitHub API access +``` + +**2. Verify repository access:** +``` +Call: mcp__github__list_issues(owner, repo, per_page=1) +If fails: HALT - Repository not accessible +``` + +**3. Verify local files exist:** +```bash +[ -f "docs/sprint-artifacts/sprint-status.yaml" ] || { echo "HALT"; exit 1; } +``` + +**4. Check for existing migration:** +- If state file exists: offer Resume/Fresh/View/Delete +- If resuming: load already-migrated stories, filter from queue + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +✅ PRE-FLIGHT CHECKS PASSED +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + +**Preview migration plan without making changes** + +For each story: +1. Search GitHub for existing issue with label `story:{{story_key}}` +2. If exists: mark as "Would UPDATE" or "Would SKIP" +3. If not exists: mark as "Would CREATE" + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +📊 DRY-RUN SUMMARY +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Would CREATE: {{create_count}} new issues +Would UPDATE: {{update_count}} existing issues +Would SKIP: {{skip_count}} + +Estimated API Calls: ~{{total_calls}} +Rate Limit Impact: Safe (< 1000 calls) + +⚠️ This was a DRY-RUN. No issues created. +To execute: /migrate-to-github mode=execute +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + +**Perform migration with atomic operations** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +⚡ EXECUTE MODE +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + +**Final confirmation:** +``` +Type "I understand and want to proceed" to continue: +``` + +Initialize migration state and rollback manifest. + +For each story: + +**1. Check if exists (idempotent):** +``` +Search: label:story:{{story_key}} +If exists AND update_existing=false: SKIP +``` + +**2. Generate issue body:** +```markdown +**Story File:** [{{story_key}}.md](path) +**Epic:** {{epic_number}} + +## Business Context +{{parsed.businessContext}} + +## Acceptance Criteria +{{#each ac}} +- [ ] {{this}} +{{/each}} + +## Tasks +{{#each tasks}} +- [ ] {{this}} +{{/each}} +``` + +**3. Create/update with retry and verification:** +``` +attempt = 0 +WHILE attempt < max_retries: + TRY: + result = mcp__github__issue_write(create/update) + sleep 2 seconds # GitHub eventual consistency + + verification = mcp__github__issue_read(issue_number) + IF verification.title != expected: + THROW "Verification failed" + + SUCCESS - add to rollback manifest + BREAK + + CATCH: + attempt++ + IF attempt < max_retries: + sleep backoff_ms[attempt] + ELSE: + FAIL - add to issues_failed +``` + +**4. Save state after each story** + +**5. Progress updates every 10 stories:** +``` +📊 Progress: {{index}}/{{total}} + Created: {{created}}, Updated: {{updated}}, Failed: {{failed}} +``` + + + +**Double-check migration accuracy** + +For each migrated story: +1. Fetch issue from GitHub +2. Verify title, labels, AC count match +3. Report mismatches + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +📊 VERIFICATION RESULTS +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Verified Correct: {{verified}} +Warnings: {{warnings}} +Failures: {{failures}} +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + +**Close migrated issues (GitHub API doesn't support delete)** + +Load rollback manifest. For each created issue: +``` +mcp__github__issue_write({ + issue_number: {{number}}, + state: "closed", + labels: ["migrated:rolled-back"], + state_reason: "not_planned" +}) + +mcp__github__add_issue_comment({ + body: "Issue closed - migration was rolled back." +}) +``` + + + +**Create comprehensive migration report** + +Write to: `docs/sprint-artifacts/github-migration-{{timestamp}}.md` + +Include: +- Executive summary +- Created/updated/failed issues +- GitHub URLs for each issue +- Rollback instructions +- Next steps + + + +**Display completion status** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +✅ MIGRATION COMPLETE +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Total: {{total}} stories +Created: {{created}} +Updated: {{updated}} +Failed: {{failed}} +Success Rate: {{success_pct}}% + +View in GitHub: +https://github.com/{{owner}}/{{repo}}/issues?q=label:type:story + +Rollback Manifest: {{rollback_path}} +State File: {{state_path}} + +Next Steps: +1. Verify: /migrate-to-github mode=verify +2. Enable GitHub sync in workflow.yaml +3. Share Issues URL with Product Owner +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + + + +**GitHub MCP unavailable:** HALT - Cannot proceed. +**Repository not accessible:** HALT - Check permissions. +**Issue create fails:** Retry with backoff, then fail story. +**Verification fails:** Log warning, continue. +**All stories fail:** Report systemic issue, HALT. + + + +- [ ] Pre-flight checks passed +- [ ] All stories processed +- [ ] Issues verified after creation +- [ ] State and rollback manifest saved +- [ ] Report generated + diff --git a/src/bmm/workflows/4-implementation/multi-agent-review/workflow.md b/src/bmm/workflows/4-implementation/multi-agent-review/workflow.md new file mode 100644 index 00000000..2d32d036 --- /dev/null +++ b/src/bmm/workflows/4-implementation/multi-agent-review/workflow.md @@ -0,0 +1,197 @@ +# Multi-Agent Code Review v3.0 + + +Perform unbiased code review using multiple specialized AI agents in fresh context. +Agent count scales with story complexity. Independent perspective prevents bias. + + + +**Fresh Context, Multiple Perspectives** + +- Review happens in NEW session (not the agent that wrote the code) +- Prevents bias from implementation decisions +- Agent count determined by complexity, agents chosen by code analysis +- Smart selection: touching auth code → auth-security agent, etc. + + + +name: multi-agent-review +version: 3.0.0 + +agent_selection: + micro: {count: 2, agents: [security, code_quality]} + standard: {count: 4, agents: [security, code_quality, architecture, testing]} + complex: {count: 6, agents: [security, code_quality, architecture, testing, performance, domain_expert]} + +available_agents: + security: "Identifies vulnerabilities and security risks" + code_quality: "Reviews style, maintainability, best practices" + architecture: "Reviews system design, patterns, structure" + testing: "Evaluates test coverage and quality" + performance: "Analyzes efficiency and optimization" + domain_expert: "Validates business logic and domain constraints" + + + +@patterns/security-checklist.md +@patterns/hospital-grade.md +@patterns/agent-completion.md + + + + + +**Select agents based on complexity** + +``` +If complexity_level == "micro": + agents = ["security", "code_quality"] + Display: 🔍 MICRO Review (2 agents) + +Else if complexity_level == "standard": + agents = ["security", "code_quality", "architecture", "testing"] + Display: 📋 STANDARD Review (4 agents) + +Else if complexity_level == "complex": + agents = ALL 6 agents + Display: 🔬 COMPLEX Review (6 agents) +``` + + + +**Load story file and understand requirements** + +```bash +STORY_FILE="{{story_file}}" +[ -f "$STORY_FILE" ] || { echo "❌ Story file not found"; exit 1; } +``` + +Use Read tool on story file. Extract: +- What was supposed to be implemented +- Acceptance criteria +- Tasks and subtasks +- File list + + + +**Spawn review agents in fresh context** + +For each agent in selected agents, spawn Task agent: + +``` +Task({ + subagent_type: "general-purpose", + description: "{{agent_type}} review for {{story_key}}", + prompt: ` +You are the {{AGENT_TYPE}} reviewer for story {{story_key}}. + + +@patterns/security-checklist.md +@patterns/hospital-grade.md + + + +Story: [inline story content] +Changed files: [git diff output] + + + +Review from your {{agent_type}} perspective. Find issues, be thorough. + + + +- [ ] All relevant files reviewed +- [ ] Issues categorized by severity (CRITICAL/HIGH/MEDIUM/LOW) +- [ ] Return ## AGENT COMPLETE with findings + +` +}) +``` + +Wait for all agents to complete. Aggregate findings. + + + +**Collect and categorize all findings** + +Merge findings from all agents: +- CRITICAL: Security vulnerabilities, data loss risks +- HIGH: Production bugs, logic errors +- MEDIUM: Technical debt, maintainability +- LOW: Nice-to-have improvements + + + +**Display review summary** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +🤖 MULTI-AGENT CODE REVIEW COMPLETE +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +Agents Used: {{agent_count}} +- Security Agent +- Code Quality Agent +[...] + +Findings: +- 🔴 CRITICAL: {{critical_count}} +- 🟠 HIGH: {{high_count}} +- 🟡 MEDIUM: {{medium_count}} +- 🔵 LOW: {{low_count}} +``` + +For each finding, display: +- Severity and title +- Agent that found it +- Location (file:line) +- Description and recommendation + + + +**Suggest next steps based on findings** + +``` +📋 RECOMMENDED NEXT STEPS: + +If CRITICAL findings exist: + ⚠️ MUST FIX before proceeding + - Address all critical security/correctness issues + - Re-run review after fixes + +If only HIGH/MEDIUM findings: + ✅ Story may proceed + - Consider addressing high-priority items + - Create follow-up tasks for medium items + +If only LOW/INFO findings: + ✅ Code quality looks good + - Optional: Address style/optimization suggestions +``` + + + + + +**When to use:** +- Complex stories (≥16 tasks or high-risk keywords) +- Security-sensitive code +- Significant architectural changes +- When single-agent review was inconclusive + +**When NOT to use:** +- Micro stories (≤3 tasks) +- Standard stories with simple changes +- Stories that passed adversarial review cleanly + + + +**Review agent fails:** Fall back to adversarial code review. +**API error:** Log failure, continue pipeline with warning. + + + +- [ ] All selected agents completed review +- [ ] Findings aggregated and categorized +- [ ] Report displayed with recommendations + diff --git a/src/bmm/workflows/4-implementation/recover-sprint-status/workflow.md b/src/bmm/workflows/4-implementation/recover-sprint-status/workflow.md new file mode 100644 index 00000000..0b4c8017 --- /dev/null +++ b/src/bmm/workflows/4-implementation/recover-sprint-status/workflow.md @@ -0,0 +1,172 @@ +# Recover Sprint Status v3.0 + + +Fix sprint-status.yaml when tracking has drifted. Analyzes multiple sources +(story files, git commits, completion reports) to rebuild accurate status. + + + +**Multiple Evidence Sources, Conservative Updates** + +1. Story file quality (size, tasks, checkboxes) +2. Explicit Status: fields in stories +3. Git commits (last 30 days) +4. Autonomous completion reports +5. Task completion rate + +Trust explicit Status: fields highest. Require evidence for status changes. + + + +name: recover-sprint-status +version: 3.0.0 + +modes: + dry-run: {description: "Analysis only, no changes", default: true} + conservative: {description: "High confidence updates only"} + aggressive: {description: "Medium+ confidence, infers from git"} + interactive: {description: "Ask before each batch"} + +confidence_levels: + very_high: {sources: [explicit_status, completion_report]} + high: {sources: [3+ git_commits, 90% tasks_complete]} + medium: {sources: [1-2 git_commits, 50-90% tasks_complete]} + low: {sources: [no_status, no_commits, small_file]} + + + +@patterns/hospital-grade.md + + + + + +**Scan all evidence sources** + +```bash +# Find story files +SPRINT_ARTIFACTS="docs/sprint-artifacts" +STORIES=$(ls $SPRINT_ARTIFACTS/*.md 2>/dev/null | grep -v "epic-") + +# Get recent git commits +git log --oneline --since="30 days ago" > /tmp/recent_commits.txt +``` + +For each story: +1. Read story file, extract Status: field if present +2. Check file size (≥10KB = properly detailed) +3. Count tasks and checkbox completion +4. Search git commits for story references +5. Check for completion reports (.epic-*-completion-report.md) + + + +**Determine confidence level for each story** + +| Evidence | Confidence | Action | +|----------|------------|--------| +| Explicit Status: done | Very High | Trust it | +| Completion report lists story | Very High | Mark done | +| 3+ git commits + 90% checked | High | Mark done | +| 1-2 commits OR 50-90% checked | Medium | Mark in-progress | +| No commits, <50% checked | Low | Leave as-is | +| File <10KB | Low | Downgrade if done | + + + +**Show recommendations without applying** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +🔍 RECOVERY ANALYSIS (Dry Run) +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +High Confidence Updates: +- 2-5-auth: backlog → done (explicit Status:, 3 commits) +- 2-6-profile: in-progress → done (completion report) + +Medium Confidence Updates: +- 2-7-settings: backlog → in-progress (2 commits) + +Low Confidence (verify manually): +- 2-8-dashboard: no Status:, no commits, <10KB file +``` + +Exit after preview. No changes made. + + + +**Apply only high/very-high confidence updates** + +For each high+ confidence story: +1. Backup current sprint-status.yaml +2. Use Edit tool to update status +3. Log change + +```bash +# Backup +cp $SPRINT_STATUS .sprint-status-backups/sprint-status-recovery-$(date +%Y%m%d).yaml +``` + +Skip medium/low confidence stories. + + + +**Apply medium+ confidence updates** + +Includes: +- Inferring from git commits (even 1 commit) +- Using task completion rate +- Pre-filling brownfield checkboxes + +``` +⚠️ AGGRESSIVE mode may make incorrect inferences. + Review results carefully. +``` + + + +**Verify recovery worked** + +```bash +./scripts/sync-sprint-status.sh --validate +``` + +Should show: +- "✓ sprint-status.yaml is up to date!" (success) +- OR discrepancy count (if issues remain) + + + +**Commit the recovery** + +Use Bash to commit: +```bash +git add docs/sprint-artifacts/sprint-status.yaml +git add .sprint-status-backups/ +git commit -m "fix(tracking): Recover sprint-status.yaml - {{mode}} recovery" +``` + + + + + +**No changes detected:** sprint-status.yaml already accurate. +**Low confidence on known-done stories:** Add Status: field manually, re-run. +**Recovery marks incomplete as done:** Use conservative mode, verify manually. + + + +- [ ] Run validation: `./scripts/sync-sprint-status.sh --validate` +- [ ] Review backup in `.sprint-status-backups/` +- [ ] Spot-check 5-10 stories for accuracy +- [ ] Commit changes +- [ ] Document why drift occurred + + + +- [ ] All evidence sources analyzed +- [ ] Changes applied based on confidence threshold +- [ ] Validation passes +- [ ] Backup created + diff --git a/src/bmm/workflows/4-implementation/revalidate-epic/workflow.md b/src/bmm/workflows/4-implementation/revalidate-epic/workflow.md new file mode 100644 index 00000000..0f2769b0 --- /dev/null +++ b/src/bmm/workflows/4-implementation/revalidate-epic/workflow.md @@ -0,0 +1,189 @@ +# Revalidate Epic v3.0 - Batch Story Revalidation + + +Batch revalidate all stories in an epic using parallel agents (semaphore pattern). +Clears checkboxes, verifies against codebase, re-checks verified items. + + + +**Parallel Verification, Continuous Worker Pool** + +- Spawn up to N workers, refill as each completes +- Each story gets fresh context verification +- Aggregate results into epic-level health score +- Optionally fill gaps found during verification + + + +name: revalidate-epic +version: 3.0.0 + +defaults: + max_concurrent: 3 + fill_gaps: false + continue_on_failure: true + create_epic_report: true + update_sprint_status: true + + + +@patterns/verification.md +@patterns/hospital-grade.md +@revalidate-story/workflow.md + + + + + +**Find all stories for the epic** + +```bash +EPIC_NUMBER="{{epic_number}}" +[ -n "$EPIC_NUMBER" ] || { echo "ERROR: epic_number required"; exit 1; } + +# Filter stories from sprint-status.yaml +grep "^${EPIC_NUMBER}-" docs/sprint-artifacts/sprint-status.yaml +``` + +Use Read tool on sprint-status.yaml. Filter stories starting with `{epic_number}-`. +Exclude epics and retrospectives. + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +🔍 EPIC {{epic_number}} REVALIDATION +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Stories Found: {{count}} +Mode: {{fill_gaps ? "Verify & Fill Gaps" : "Verify Only"}} +Max Concurrent: {{max_concurrent}} agents +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + +Use AskUserQuestion: Proceed with revalidation? (yes/no) + + + +**Initialize semaphore pattern for parallel revalidation** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +🚀 Starting Parallel Revalidation +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + +Initialize state: +- story_queue = epic_stories +- active_workers = {} +- completed_stories = [] +- failed_stories = [] + +Fill initial worker slots (up to max_concurrent): + +``` +Task({ + subagent_type: "general-purpose", + description: "Revalidate story {{story_key}}", + prompt: ` +Execute revalidate-story workflow for {{story_key}}. + + +@revalidate-story/workflow.md + + +Parameters: +- story_file: {{story_file}} +- fill_gaps: {{fill_gaps}} + +Return verification summary with verified_pct, gaps_found, gaps_filled. +`, + run_in_background: true +}) +``` + + + +**Keep workers running until all stories done** + +While active_workers > 0 OR stories remaining in queue: + +1. Poll for completed workers (non-blocking with TaskOutput) +2. When worker completes: + - Parse verification results + - Add to completed_stories + - If more stories in queue: spawn new worker in that slot +3. Display progress every 30 seconds: + +``` +📊 Progress: {{completed}} completed, {{active}} active, {{queued}} queued +``` + + + +**Generate epic-level summary** + +Calculate totals across all stories: +- epic_verified = sum of verified items +- epic_partial = sum of partial items +- epic_missing = sum of missing items +- epic_verified_pct = (verified / total) × 100 + +Group stories by health: +- Complete (≥95% verified) +- Mostly Complete (80-94%) +- Partial (50-79%) +- Incomplete (<50%) + + + +**Show epic revalidation results** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +📊 EPIC {{epic_number}} REVALIDATION SUMMARY +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Total Stories: {{count}} +Completed: {{completed_count}} +Failed: {{failed_count}} + +Epic-Wide Verification: +- ✅ Verified: {{verified}}/{{total}} ({{pct}}%) +- 🔶 Partial: {{partial}}/{{total}} +- ❌ Missing: {{missing}}/{{total}} + +Epic Health Score: {{epic_verified_pct}}/100 + +{{#if pct >= 95}} +✅ Epic is COMPLETE and verified +{{else if pct >= 80}} +🔶 Epic is MOSTLY COMPLETE +{{else if pct >= 50}} +⚠️ Epic is PARTIALLY COMPLETE +{{else}} +❌ Epic is INCOMPLETE (major rework needed) +{{/if}} +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + +**Update sprint-status with revalidation results** + +Use Edit tool to add comment to epic entry: +``` +epic-{{epic_number}}: done # Revalidated: {{pct}}% verified ({{timestamp}}) +``` + + + + + +**Worker fails:** Log error, refill slot if continue_on_failure=true. +**All stories fail:** Report systemic issue, halt batch. +**Story file missing:** Skip with warning. + + + +- [ ] All epic stories processed +- [ ] Results aggregated +- [ ] Epic health score calculated +- [ ] Sprint status updated (if enabled) + diff --git a/src/bmm/workflows/4-implementation/revalidate-story/workflow.md b/src/bmm/workflows/4-implementation/revalidate-story/workflow.md new file mode 100644 index 00000000..5e28a7ae --- /dev/null +++ b/src/bmm/workflows/4-implementation/revalidate-story/workflow.md @@ -0,0 +1,225 @@ +# Revalidate Story v3.0 - Verify Checkboxes Against Codebase + + +Clear all checkboxes and re-verify each item against actual codebase reality. +Detects over-reported completion and identifies real gaps. +Optionally fills gaps by implementing missing items. + + + +**Trust But Verify, Evidence Required** + +1. Clear all checkboxes (fresh start) +2. For each AC/Task/DoD: search codebase for evidence +3. Only re-check if evidence found AND not a stub +4. Report accuracy: was completion over-reported or under-reported? + + + +name: revalidate-story +version: 3.0.0 + +defaults: + fill_gaps: false + max_gaps_to_fill: 10 + commit_strategy: "all_at_once" # or "per_gap" + create_report: true + update_sprint_status: true + +verification_status: + verified: {checkbox: "[x]", evidence: "found, not stub, tests exist"} + partial: {checkbox: "[~]", evidence: "partial implementation or missing tests"} + missing: {checkbox: "[ ]", evidence: "not found in codebase"} + + + +@patterns/verification.md +@patterns/hospital-grade.md + + + + + +**Load story and backup current state** + +```bash +STORY_FILE="{{story_file}}" +[ -f "$STORY_FILE" ] || { echo "ERROR: story_file required"; exit 1; } +``` + +Use Read tool on story file. Count current checkboxes: +- ac_checked_before +- tasks_checked_before +- dod_checked_before + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +🔍 STORY REVALIDATION STARTED +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Story: {{story_key}} +Mode: {{fill_gaps ? "Verify & Fill Gaps" : "Verify Only"}} + +Current State: +- Acceptance Criteria: {{ac_checked}}/{{ac_total}} checked +- Tasks: {{tasks_checked}}/{{tasks_total}} checked +- DoD: {{dod_checked}}/{{dod_total}} checked +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + +**Clear all checkboxes for fresh verification** + +Use Edit tool (replace_all: true): +- `[x]` → `[ ]` in Acceptance Criteria section +- `[x]` → `[ ]` in Tasks section +- `[x]` → `[ ]` in Definition of Done section + + + +**Verify each AC against codebase** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +📋 VERIFYING ACCEPTANCE CRITERIA +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + +For each AC item: + +1. **Parse AC** - Extract file/component/feature mentions +2. **Search codebase** - Use Glob/Grep to find evidence +3. **Verify implementation** - Read files, check for: + - NOT a stub (no "TODO", "Not implemented", empty function) + - Has actual implementation + - Tests exist (*.test.* or *.spec.*) + +4. **Determine status:** + - VERIFIED: Evidence found, not stub, tests exist → check [x] + - PARTIAL: Partial evidence or missing tests → check [~] + - MISSING: No evidence found → leave [ ] + +5. **Record evidence or gap** + + + +**Verify each task against codebase** + +Same process as ACs: +- Parse task description for artifacts +- Search codebase with Glob/Grep +- Read and verify (check for stubs, tests) +- Update checkbox based on evidence + + + +**Verify DoD items** + +For common DoD items, run actual checks: +- "Type check passes" → `npm run type-check` +- "Unit tests pass" → `npm test` +- "Linting clean" → `npm run lint` +- "Build succeeds" → `npm run build` + + + +**Calculate and display results** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +📊 REVALIDATION SUMMARY +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Story: {{story_key}} + +Verification Results: +- ✅ Verified: {{verified}}/{{total}} ({{pct}}%) +- 🔶 Partial: {{partial}}/{{total}} +- ❌ Missing: {{missing}}/{{total}} + +Accuracy Check: +- Before: {{pct_before}}% checked +- After: {{verified_pct}}% verified +- {{pct_before > verified_pct ? "Over-reported" : "Under-reported"}} + +{{#if missing > 0}} +Gaps Found ({{missing}}): +[list gaps with what's missing] +{{/if}} +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + +**Implement missing items** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +🔧 GAP FILLING MODE +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + +Safety check: +``` +if gaps_found > max_gaps_to_fill: + echo "⚠️ TOO MANY GAPS ({{gaps}} > {{max}})" + echo "Consider re-implementing with /dev-story" + HALT +``` + +For each gap: +1. Load story context +2. Implement missing item +3. Write tests +4. Run tests to verify +5. Check box [x] if successful +6. Commit if commit_strategy == "per_gap" + + + +**Re-verify and commit** + +If gaps were filled: +1. Re-run verification on filled gaps +2. Commit all changes (if commit_strategy == "all_at_once") + +Update sprint-status.yaml with revalidation result: +``` +{{story_key}}: {{status}} # Revalidated: {{pct}}% ({{timestamp}}) +``` + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +✅ REVALIDATION COMPLETE +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Final: {{verified}}/{{total}} verified ({{pct}}%) + +Recommendation: +{{#if pct >= 95}} +✅ Story is COMPLETE - mark as "done" +{{else if pct >= 80}} +🔶 Mostly complete - finish remaining items +{{else if pct >= 50}} +⚠️ Significant gaps - continue with /dev-story +{{else}} +❌ Mostly incomplete - consider re-implementing +{{/if}} +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + + + +**File not found:** HALT with error. +**Verification fails:** Record gap, continue to next item. +**Gap fill fails:** Leave unchecked, record failure. +**Too many gaps:** HALT, recommend re-implementation. + + + +- [ ] All items verified against codebase +- [ ] Checkboxes reflect actual implementation +- [ ] Accuracy comparison displayed +- [ ] Gaps filled (if enabled) +- [ ] Sprint status updated + diff --git a/src/modules/bmm/workflows/4-implementation/detect-ghost-features/workflow.md b/src/modules/bmm/workflows/4-implementation/detect-ghost-features/workflow.md new file mode 100644 index 00000000..61132bf3 --- /dev/null +++ b/src/modules/bmm/workflows/4-implementation/detect-ghost-features/workflow.md @@ -0,0 +1,278 @@ +# Detect Ghost Features v3.0 - Reverse Gap Analysis + + +Find undocumented code (components, APIs, services, tables) that exist in codebase +but aren't tracked in any story. "Who you gonna call?" - Ghost Features. + + + +**Reverse Gap Analysis** + +Normal gap analysis: story says X should exist → does it? +Reverse gap analysis: X exists in code → is it documented? + +Undocumented features become maintenance nightmares. +Find them, create backfill stories, restore traceability. + + + +name: detect-ghost-features +version: 3.0.0 + +scan_scope: + epic: "Filter to specific epic number" + sprint: "All stories in sprint-status.yaml" + codebase: "All stories in sprint-artifacts" + +scan_for: + components: true + api_endpoints: true + database_tables: true + services: true + +severity: + critical: "APIs, auth, payment (undocumented = high risk)" + high: "Components, DB tables, services" + medium: "Utilities, helpers" + low: "Config files, constants" + +defaults: + create_backfill_stories: false + auto_create: false + add_to_sprint_status: true + create_report: true + + + +@patterns/hospital-grade.md + + + + + +**Load documented artifacts from stories** + +Based on scan_scope (epic/sprint/codebase): + +```bash +# Get all story files +STORIES=$(ls docs/sprint-artifacts/*.md | grep -v "epic-") +``` + +For each story: +1. Read story file +2. Extract documented artifacts: + - File List (all paths mentioned) + - Tasks (file/component/service names) + - ACs (features/functionality) +3. Store in: documented_artifacts[story_key] + + + +**Scan codebase for actual implementations** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +👻 SCANNING FOR GHOST FEATURES +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + +**Components:** +```bash +# Find React/Vue/Angular components +find . -name "*.tsx" -o -name "*.jsx" | xargs grep -l "export.*function\|export.*const" +``` + +**API Endpoints:** +```bash +# Find Next.js/Express routes +find . -path "*/api/*" -name "*.ts" +grep -r "export.*GET\|export.*POST\|router\.\(get\|post\)" . +``` + +**Database Tables:** +```bash +# Find Prisma/TypeORM models +grep -r "^model " prisma/schema.prisma +find . -name "*.entity.ts" +``` + +**Services:** +```bash +find . -name "*.service.ts" -o -name "*Service.ts" +``` + + + +**Compare codebase artifacts to story documentation** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +🔍 CROSS-REFERENCING +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + +For each codebase artifact: +1. Search all stories for mentions of: + - Component/file name + - File path + - Feature description +2. If NO stories mention it → ORPHAN (ghost feature) +3. If stories mention it → Documented + +Track orphans with: +- type (component/api/db/service) +- name and path +- severity +- inferred purpose + + + +**Analyze and prioritize ghost features** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +👻 GHOST FEATURES DETECTED +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Total Orphans: {{count}} + +By Severity: +- 🔴 CRITICAL: {{critical}} (APIs, security) +- 🟠 HIGH: {{high}} (Components, DB, services) +- 🟡 MEDIUM: {{medium}} (Utilities) +- 🟢 LOW: {{low}} (Config) + +By Type: +- Components: {{components}} +- API Endpoints: {{apis}} +- Database Tables: {{tables}} +- Services: {{services}} + +Documentation Coverage: {{documented_pct}}% +Orphan Rate: {{orphan_pct}}% + +{{#if orphan_pct > 20}} +⚠️ HIGH ORPHAN RATE - Over 20% undocumented! +{{/if}} +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + +**Generate stories for orphaned features** + +For each orphan (prioritized by severity): + +1. **Analyze orphan** - Read implementation, find tests, understand purpose +2. **Generate story draft:** + +```markdown +# Story: Document existing {{name}} + +**Type:** BACKFILL (documenting existing code) + +## Business Context +{{inferred_from_code}} + +## Current State +✅ Implementation EXISTS: {{file}} +{{#if has_tests}}✅ Tests exist{{else}}❌ No tests{{/if}} + +## Acceptance Criteria +{{inferred_acs}} + +## Tasks +- [x] {{name}} implementation (ALREADY EXISTS) +{{#if !has_tests}}- [ ] Add tests{{/if}} +- [ ] Verify functionality +- [ ] Assign to epic +``` + +3. **Ask user** (unless auto_create): + - [Y] Create story + - [A] Auto-create all remaining + - [S] Skip this orphan + - [H] Halt + +4. **Write story file:** `docs/sprint-artifacts/backfill-{{type}}-{{name}}.md` + +5. **Update sprint-status.yaml** (if enabled) + + + +**Recommend epic assignment** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +📊 BACKFILL ORGANIZATION +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +Options: +[A] Create Epic-Backfill (recommended) + - Single epic for all backfill stories + - Clear separation from feature work + +[B] Distribute to existing epics + - Add each to its logical epic + +[C] Leave in backlog + - Manual assignment later +``` + + + +**Write comprehensive ghost features report** + +Write to: `docs/sprint-artifacts/ghost-features-report-{{timestamp}}.md` + +Include: +- Executive summary +- Full orphan list by severity +- Backfill stories created +- Recommendations +- Scan methodology + + + +**Display results and next steps** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +✅ GHOST FEATURE DETECTION COMPLETE +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Orphans Found: {{orphan_count}} +Backfill Stories Created: {{backfill_count}} +Documentation Coverage: {{documented_pct}}% + +{{#if orphan_count == 0}} +✅ All code is documented in stories! +{{else}} +Next Steps: +1. Review backfill stories for accuracy +2. Assign to epics +3. Add tests/docs for orphans +4. Run revalidation to verify +{{/if}} + +💡 Pro Tip: Run this periodically to catch + vibe-coded features before they become + maintenance nightmares. +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + + + +**No stories found:** Check scan_scope, verify sprint-artifacts exists. +**Scan fails:** Report which scan type failed, continue others. +**Backfill creation fails:** Skip, continue to next orphan. + + + +- [ ] All artifact types scanned +- [ ] Cross-reference completed +- [ ] Orphans categorized by severity +- [ ] Backfill stories created (if enabled) +- [ ] Report generated + diff --git a/src/modules/bmm/workflows/4-implementation/migrate-to-github/workflow.md b/src/modules/bmm/workflows/4-implementation/migrate-to-github/workflow.md new file mode 100644 index 00000000..6d16f06d --- /dev/null +++ b/src/modules/bmm/workflows/4-implementation/migrate-to-github/workflow.md @@ -0,0 +1,279 @@ +# Migrate to GitHub v3.0 - Production-Grade Story Migration + + +Migrate BMAD stories to GitHub Issues with full safety guarantees. +Idempotent, atomic, verified, resumable, and reversible. + + + +**Reliability First, Data Integrity Over Speed** + +- Idempotent: Can re-run safely (checks for duplicates) +- Atomic: Each story fully succeeds or rolls back +- Verified: Reads back each created issue +- Resumable: Saves state after each story +- Reversible: Creates rollback manifest + + + +name: migrate-to-github +version: 3.0.0 + +modes: + dry-run: {description: "Preview only, no changes", default: true} + execute: {description: "Actually create issues"} + verify: {description: "Double-check migration accuracy"} + rollback: {description: "Close migrated issues"} + +defaults: + update_existing: false + halt_on_critical_error: true + save_state_after_each: true + max_retries: 3 + retry_backoff_ms: [1000, 3000, 10000] + +labels: + - "type:story" + - "story:{{story_key}}" + - "status:{{status}}" + - "epic:{{epic_number}}" + - "complexity:{{complexity}}" + + + +@patterns/hospital-grade.md + + + + + +**Verify all prerequisites before ANY operations** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +🛡️ PRE-FLIGHT SAFETY CHECKS +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + +**1. Verify GitHub MCP access:** +``` +Call: mcp__github__get_me() +If fails: HALT - Cannot proceed without GitHub API access +``` + +**2. Verify repository access:** +``` +Call: mcp__github__list_issues(owner, repo, per_page=1) +If fails: HALT - Repository not accessible +``` + +**3. Verify local files exist:** +```bash +[ -f "docs/sprint-artifacts/sprint-status.yaml" ] || { echo "HALT"; exit 1; } +``` + +**4. Check for existing migration:** +- If state file exists: offer Resume/Fresh/View/Delete +- If resuming: load already-migrated stories, filter from queue + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +✅ PRE-FLIGHT CHECKS PASSED +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + +**Preview migration plan without making changes** + +For each story: +1. Search GitHub for existing issue with label `story:{{story_key}}` +2. If exists: mark as "Would UPDATE" or "Would SKIP" +3. If not exists: mark as "Would CREATE" + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +📊 DRY-RUN SUMMARY +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Would CREATE: {{create_count}} new issues +Would UPDATE: {{update_count}} existing issues +Would SKIP: {{skip_count}} + +Estimated API Calls: ~{{total_calls}} +Rate Limit Impact: Safe (< 1000 calls) + +⚠️ This was a DRY-RUN. No issues created. +To execute: /migrate-to-github mode=execute +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + +**Perform migration with atomic operations** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +⚡ EXECUTE MODE +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + +**Final confirmation:** +``` +Type "I understand and want to proceed" to continue: +``` + +Initialize migration state and rollback manifest. + +For each story: + +**1. Check if exists (idempotent):** +``` +Search: label:story:{{story_key}} +If exists AND update_existing=false: SKIP +``` + +**2. Generate issue body:** +```markdown +**Story File:** [{{story_key}}.md](path) +**Epic:** {{epic_number}} + +## Business Context +{{parsed.businessContext}} + +## Acceptance Criteria +{{#each ac}} +- [ ] {{this}} +{{/each}} + +## Tasks +{{#each tasks}} +- [ ] {{this}} +{{/each}} +``` + +**3. Create/update with retry and verification:** +``` +attempt = 0 +WHILE attempt < max_retries: + TRY: + result = mcp__github__issue_write(create/update) + sleep 2 seconds # GitHub eventual consistency + + verification = mcp__github__issue_read(issue_number) + IF verification.title != expected: + THROW "Verification failed" + + SUCCESS - add to rollback manifest + BREAK + + CATCH: + attempt++ + IF attempt < max_retries: + sleep backoff_ms[attempt] + ELSE: + FAIL - add to issues_failed +``` + +**4. Save state after each story** + +**5. Progress updates every 10 stories:** +``` +📊 Progress: {{index}}/{{total}} + Created: {{created}}, Updated: {{updated}}, Failed: {{failed}} +``` + + + +**Double-check migration accuracy** + +For each migrated story: +1. Fetch issue from GitHub +2. Verify title, labels, AC count match +3. Report mismatches + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +📊 VERIFICATION RESULTS +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Verified Correct: {{verified}} +Warnings: {{warnings}} +Failures: {{failures}} +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + +**Close migrated issues (GitHub API doesn't support delete)** + +Load rollback manifest. For each created issue: +``` +mcp__github__issue_write({ + issue_number: {{number}}, + state: "closed", + labels: ["migrated:rolled-back"], + state_reason: "not_planned" +}) + +mcp__github__add_issue_comment({ + body: "Issue closed - migration was rolled back." +}) +``` + + + +**Create comprehensive migration report** + +Write to: `docs/sprint-artifacts/github-migration-{{timestamp}}.md` + +Include: +- Executive summary +- Created/updated/failed issues +- GitHub URLs for each issue +- Rollback instructions +- Next steps + + + +**Display completion status** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +✅ MIGRATION COMPLETE +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Total: {{total}} stories +Created: {{created}} +Updated: {{updated}} +Failed: {{failed}} +Success Rate: {{success_pct}}% + +View in GitHub: +https://github.com/{{owner}}/{{repo}}/issues?q=label:type:story + +Rollback Manifest: {{rollback_path}} +State File: {{state_path}} + +Next Steps: +1. Verify: /migrate-to-github mode=verify +2. Enable GitHub sync in workflow.yaml +3. Share Issues URL with Product Owner +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + + + +**GitHub MCP unavailable:** HALT - Cannot proceed. +**Repository not accessible:** HALT - Check permissions. +**Issue create fails:** Retry with backoff, then fail story. +**Verification fails:** Log warning, continue. +**All stories fail:** Report systemic issue, HALT. + + + +- [ ] Pre-flight checks passed +- [ ] All stories processed +- [ ] Issues verified after creation +- [ ] State and rollback manifest saved +- [ ] Report generated + diff --git a/src/modules/bmm/workflows/4-implementation/multi-agent-review/workflow.md b/src/modules/bmm/workflows/4-implementation/multi-agent-review/workflow.md new file mode 100644 index 00000000..2d32d036 --- /dev/null +++ b/src/modules/bmm/workflows/4-implementation/multi-agent-review/workflow.md @@ -0,0 +1,197 @@ +# Multi-Agent Code Review v3.0 + + +Perform unbiased code review using multiple specialized AI agents in fresh context. +Agent count scales with story complexity. Independent perspective prevents bias. + + + +**Fresh Context, Multiple Perspectives** + +- Review happens in NEW session (not the agent that wrote the code) +- Prevents bias from implementation decisions +- Agent count determined by complexity, agents chosen by code analysis +- Smart selection: touching auth code → auth-security agent, etc. + + + +name: multi-agent-review +version: 3.0.0 + +agent_selection: + micro: {count: 2, agents: [security, code_quality]} + standard: {count: 4, agents: [security, code_quality, architecture, testing]} + complex: {count: 6, agents: [security, code_quality, architecture, testing, performance, domain_expert]} + +available_agents: + security: "Identifies vulnerabilities and security risks" + code_quality: "Reviews style, maintainability, best practices" + architecture: "Reviews system design, patterns, structure" + testing: "Evaluates test coverage and quality" + performance: "Analyzes efficiency and optimization" + domain_expert: "Validates business logic and domain constraints" + + + +@patterns/security-checklist.md +@patterns/hospital-grade.md +@patterns/agent-completion.md + + + + + +**Select agents based on complexity** + +``` +If complexity_level == "micro": + agents = ["security", "code_quality"] + Display: 🔍 MICRO Review (2 agents) + +Else if complexity_level == "standard": + agents = ["security", "code_quality", "architecture", "testing"] + Display: 📋 STANDARD Review (4 agents) + +Else if complexity_level == "complex": + agents = ALL 6 agents + Display: 🔬 COMPLEX Review (6 agents) +``` + + + +**Load story file and understand requirements** + +```bash +STORY_FILE="{{story_file}}" +[ -f "$STORY_FILE" ] || { echo "❌ Story file not found"; exit 1; } +``` + +Use Read tool on story file. Extract: +- What was supposed to be implemented +- Acceptance criteria +- Tasks and subtasks +- File list + + + +**Spawn review agents in fresh context** + +For each agent in selected agents, spawn Task agent: + +``` +Task({ + subagent_type: "general-purpose", + description: "{{agent_type}} review for {{story_key}}", + prompt: ` +You are the {{AGENT_TYPE}} reviewer for story {{story_key}}. + + +@patterns/security-checklist.md +@patterns/hospital-grade.md + + + +Story: [inline story content] +Changed files: [git diff output] + + + +Review from your {{agent_type}} perspective. Find issues, be thorough. + + + +- [ ] All relevant files reviewed +- [ ] Issues categorized by severity (CRITICAL/HIGH/MEDIUM/LOW) +- [ ] Return ## AGENT COMPLETE with findings + +` +}) +``` + +Wait for all agents to complete. Aggregate findings. + + + +**Collect and categorize all findings** + +Merge findings from all agents: +- CRITICAL: Security vulnerabilities, data loss risks +- HIGH: Production bugs, logic errors +- MEDIUM: Technical debt, maintainability +- LOW: Nice-to-have improvements + + + +**Display review summary** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +🤖 MULTI-AGENT CODE REVIEW COMPLETE +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +Agents Used: {{agent_count}} +- Security Agent +- Code Quality Agent +[...] + +Findings: +- 🔴 CRITICAL: {{critical_count}} +- 🟠 HIGH: {{high_count}} +- 🟡 MEDIUM: {{medium_count}} +- 🔵 LOW: {{low_count}} +``` + +For each finding, display: +- Severity and title +- Agent that found it +- Location (file:line) +- Description and recommendation + + + +**Suggest next steps based on findings** + +``` +📋 RECOMMENDED NEXT STEPS: + +If CRITICAL findings exist: + ⚠️ MUST FIX before proceeding + - Address all critical security/correctness issues + - Re-run review after fixes + +If only HIGH/MEDIUM findings: + ✅ Story may proceed + - Consider addressing high-priority items + - Create follow-up tasks for medium items + +If only LOW/INFO findings: + ✅ Code quality looks good + - Optional: Address style/optimization suggestions +``` + + + + + +**When to use:** +- Complex stories (≥16 tasks or high-risk keywords) +- Security-sensitive code +- Significant architectural changes +- When single-agent review was inconclusive + +**When NOT to use:** +- Micro stories (≤3 tasks) +- Standard stories with simple changes +- Stories that passed adversarial review cleanly + + + +**Review agent fails:** Fall back to adversarial code review. +**API error:** Log failure, continue pipeline with warning. + + + +- [ ] All selected agents completed review +- [ ] Findings aggregated and categorized +- [ ] Report displayed with recommendations + diff --git a/src/modules/bmm/workflows/4-implementation/recover-sprint-status/workflow.md b/src/modules/bmm/workflows/4-implementation/recover-sprint-status/workflow.md new file mode 100644 index 00000000..0b4c8017 --- /dev/null +++ b/src/modules/bmm/workflows/4-implementation/recover-sprint-status/workflow.md @@ -0,0 +1,172 @@ +# Recover Sprint Status v3.0 + + +Fix sprint-status.yaml when tracking has drifted. Analyzes multiple sources +(story files, git commits, completion reports) to rebuild accurate status. + + + +**Multiple Evidence Sources, Conservative Updates** + +1. Story file quality (size, tasks, checkboxes) +2. Explicit Status: fields in stories +3. Git commits (last 30 days) +4. Autonomous completion reports +5. Task completion rate + +Trust explicit Status: fields highest. Require evidence for status changes. + + + +name: recover-sprint-status +version: 3.0.0 + +modes: + dry-run: {description: "Analysis only, no changes", default: true} + conservative: {description: "High confidence updates only"} + aggressive: {description: "Medium+ confidence, infers from git"} + interactive: {description: "Ask before each batch"} + +confidence_levels: + very_high: {sources: [explicit_status, completion_report]} + high: {sources: [3+ git_commits, 90% tasks_complete]} + medium: {sources: [1-2 git_commits, 50-90% tasks_complete]} + low: {sources: [no_status, no_commits, small_file]} + + + +@patterns/hospital-grade.md + + + + + +**Scan all evidence sources** + +```bash +# Find story files +SPRINT_ARTIFACTS="docs/sprint-artifacts" +STORIES=$(ls $SPRINT_ARTIFACTS/*.md 2>/dev/null | grep -v "epic-") + +# Get recent git commits +git log --oneline --since="30 days ago" > /tmp/recent_commits.txt +``` + +For each story: +1. Read story file, extract Status: field if present +2. Check file size (≥10KB = properly detailed) +3. Count tasks and checkbox completion +4. Search git commits for story references +5. Check for completion reports (.epic-*-completion-report.md) + + + +**Determine confidence level for each story** + +| Evidence | Confidence | Action | +|----------|------------|--------| +| Explicit Status: done | Very High | Trust it | +| Completion report lists story | Very High | Mark done | +| 3+ git commits + 90% checked | High | Mark done | +| 1-2 commits OR 50-90% checked | Medium | Mark in-progress | +| No commits, <50% checked | Low | Leave as-is | +| File <10KB | Low | Downgrade if done | + + + +**Show recommendations without applying** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +🔍 RECOVERY ANALYSIS (Dry Run) +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +High Confidence Updates: +- 2-5-auth: backlog → done (explicit Status:, 3 commits) +- 2-6-profile: in-progress → done (completion report) + +Medium Confidence Updates: +- 2-7-settings: backlog → in-progress (2 commits) + +Low Confidence (verify manually): +- 2-8-dashboard: no Status:, no commits, <10KB file +``` + +Exit after preview. No changes made. + + + +**Apply only high/very-high confidence updates** + +For each high+ confidence story: +1. Backup current sprint-status.yaml +2. Use Edit tool to update status +3. Log change + +```bash +# Backup +cp $SPRINT_STATUS .sprint-status-backups/sprint-status-recovery-$(date +%Y%m%d).yaml +``` + +Skip medium/low confidence stories. + + + +**Apply medium+ confidence updates** + +Includes: +- Inferring from git commits (even 1 commit) +- Using task completion rate +- Pre-filling brownfield checkboxes + +``` +⚠️ AGGRESSIVE mode may make incorrect inferences. + Review results carefully. +``` + + + +**Verify recovery worked** + +```bash +./scripts/sync-sprint-status.sh --validate +``` + +Should show: +- "✓ sprint-status.yaml is up to date!" (success) +- OR discrepancy count (if issues remain) + + + +**Commit the recovery** + +Use Bash to commit: +```bash +git add docs/sprint-artifacts/sprint-status.yaml +git add .sprint-status-backups/ +git commit -m "fix(tracking): Recover sprint-status.yaml - {{mode}} recovery" +``` + + + + + +**No changes detected:** sprint-status.yaml already accurate. +**Low confidence on known-done stories:** Add Status: field manually, re-run. +**Recovery marks incomplete as done:** Use conservative mode, verify manually. + + + +- [ ] Run validation: `./scripts/sync-sprint-status.sh --validate` +- [ ] Review backup in `.sprint-status-backups/` +- [ ] Spot-check 5-10 stories for accuracy +- [ ] Commit changes +- [ ] Document why drift occurred + + + +- [ ] All evidence sources analyzed +- [ ] Changes applied based on confidence threshold +- [ ] Validation passes +- [ ] Backup created + diff --git a/src/modules/bmm/workflows/4-implementation/revalidate-epic/workflow.md b/src/modules/bmm/workflows/4-implementation/revalidate-epic/workflow.md new file mode 100644 index 00000000..0f2769b0 --- /dev/null +++ b/src/modules/bmm/workflows/4-implementation/revalidate-epic/workflow.md @@ -0,0 +1,189 @@ +# Revalidate Epic v3.0 - Batch Story Revalidation + + +Batch revalidate all stories in an epic using parallel agents (semaphore pattern). +Clears checkboxes, verifies against codebase, re-checks verified items. + + + +**Parallel Verification, Continuous Worker Pool** + +- Spawn up to N workers, refill as each completes +- Each story gets fresh context verification +- Aggregate results into epic-level health score +- Optionally fill gaps found during verification + + + +name: revalidate-epic +version: 3.0.0 + +defaults: + max_concurrent: 3 + fill_gaps: false + continue_on_failure: true + create_epic_report: true + update_sprint_status: true + + + +@patterns/verification.md +@patterns/hospital-grade.md +@revalidate-story/workflow.md + + + + + +**Find all stories for the epic** + +```bash +EPIC_NUMBER="{{epic_number}}" +[ -n "$EPIC_NUMBER" ] || { echo "ERROR: epic_number required"; exit 1; } + +# Filter stories from sprint-status.yaml +grep "^${EPIC_NUMBER}-" docs/sprint-artifacts/sprint-status.yaml +``` + +Use Read tool on sprint-status.yaml. Filter stories starting with `{epic_number}-`. +Exclude epics and retrospectives. + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +🔍 EPIC {{epic_number}} REVALIDATION +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Stories Found: {{count}} +Mode: {{fill_gaps ? "Verify & Fill Gaps" : "Verify Only"}} +Max Concurrent: {{max_concurrent}} agents +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + +Use AskUserQuestion: Proceed with revalidation? (yes/no) + + + +**Initialize semaphore pattern for parallel revalidation** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +🚀 Starting Parallel Revalidation +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + +Initialize state: +- story_queue = epic_stories +- active_workers = {} +- completed_stories = [] +- failed_stories = [] + +Fill initial worker slots (up to max_concurrent): + +``` +Task({ + subagent_type: "general-purpose", + description: "Revalidate story {{story_key}}", + prompt: ` +Execute revalidate-story workflow for {{story_key}}. + + +@revalidate-story/workflow.md + + +Parameters: +- story_file: {{story_file}} +- fill_gaps: {{fill_gaps}} + +Return verification summary with verified_pct, gaps_found, gaps_filled. +`, + run_in_background: true +}) +``` + + + +**Keep workers running until all stories done** + +While active_workers > 0 OR stories remaining in queue: + +1. Poll for completed workers (non-blocking with TaskOutput) +2. When worker completes: + - Parse verification results + - Add to completed_stories + - If more stories in queue: spawn new worker in that slot +3. Display progress every 30 seconds: + +``` +📊 Progress: {{completed}} completed, {{active}} active, {{queued}} queued +``` + + + +**Generate epic-level summary** + +Calculate totals across all stories: +- epic_verified = sum of verified items +- epic_partial = sum of partial items +- epic_missing = sum of missing items +- epic_verified_pct = (verified / total) × 100 + +Group stories by health: +- Complete (≥95% verified) +- Mostly Complete (80-94%) +- Partial (50-79%) +- Incomplete (<50%) + + + +**Show epic revalidation results** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +📊 EPIC {{epic_number}} REVALIDATION SUMMARY +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Total Stories: {{count}} +Completed: {{completed_count}} +Failed: {{failed_count}} + +Epic-Wide Verification: +- ✅ Verified: {{verified}}/{{total}} ({{pct}}%) +- 🔶 Partial: {{partial}}/{{total}} +- ❌ Missing: {{missing}}/{{total}} + +Epic Health Score: {{epic_verified_pct}}/100 + +{{#if pct >= 95}} +✅ Epic is COMPLETE and verified +{{else if pct >= 80}} +🔶 Epic is MOSTLY COMPLETE +{{else if pct >= 50}} +⚠️ Epic is PARTIALLY COMPLETE +{{else}} +❌ Epic is INCOMPLETE (major rework needed) +{{/if}} +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + +**Update sprint-status with revalidation results** + +Use Edit tool to add comment to epic entry: +``` +epic-{{epic_number}}: done # Revalidated: {{pct}}% verified ({{timestamp}}) +``` + + + + + +**Worker fails:** Log error, refill slot if continue_on_failure=true. +**All stories fail:** Report systemic issue, halt batch. +**Story file missing:** Skip with warning. + + + +- [ ] All epic stories processed +- [ ] Results aggregated +- [ ] Epic health score calculated +- [ ] Sprint status updated (if enabled) + diff --git a/src/modules/bmm/workflows/4-implementation/revalidate-story/workflow.md b/src/modules/bmm/workflows/4-implementation/revalidate-story/workflow.md new file mode 100644 index 00000000..5e28a7ae --- /dev/null +++ b/src/modules/bmm/workflows/4-implementation/revalidate-story/workflow.md @@ -0,0 +1,225 @@ +# Revalidate Story v3.0 - Verify Checkboxes Against Codebase + + +Clear all checkboxes and re-verify each item against actual codebase reality. +Detects over-reported completion and identifies real gaps. +Optionally fills gaps by implementing missing items. + + + +**Trust But Verify, Evidence Required** + +1. Clear all checkboxes (fresh start) +2. For each AC/Task/DoD: search codebase for evidence +3. Only re-check if evidence found AND not a stub +4. Report accuracy: was completion over-reported or under-reported? + + + +name: revalidate-story +version: 3.0.0 + +defaults: + fill_gaps: false + max_gaps_to_fill: 10 + commit_strategy: "all_at_once" # or "per_gap" + create_report: true + update_sprint_status: true + +verification_status: + verified: {checkbox: "[x]", evidence: "found, not stub, tests exist"} + partial: {checkbox: "[~]", evidence: "partial implementation or missing tests"} + missing: {checkbox: "[ ]", evidence: "not found in codebase"} + + + +@patterns/verification.md +@patterns/hospital-grade.md + + + + + +**Load story and backup current state** + +```bash +STORY_FILE="{{story_file}}" +[ -f "$STORY_FILE" ] || { echo "ERROR: story_file required"; exit 1; } +``` + +Use Read tool on story file. Count current checkboxes: +- ac_checked_before +- tasks_checked_before +- dod_checked_before + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +🔍 STORY REVALIDATION STARTED +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Story: {{story_key}} +Mode: {{fill_gaps ? "Verify & Fill Gaps" : "Verify Only"}} + +Current State: +- Acceptance Criteria: {{ac_checked}}/{{ac_total}} checked +- Tasks: {{tasks_checked}}/{{tasks_total}} checked +- DoD: {{dod_checked}}/{{dod_total}} checked +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + +**Clear all checkboxes for fresh verification** + +Use Edit tool (replace_all: true): +- `[x]` → `[ ]` in Acceptance Criteria section +- `[x]` → `[ ]` in Tasks section +- `[x]` → `[ ]` in Definition of Done section + + + +**Verify each AC against codebase** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +📋 VERIFYING ACCEPTANCE CRITERIA +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + +For each AC item: + +1. **Parse AC** - Extract file/component/feature mentions +2. **Search codebase** - Use Glob/Grep to find evidence +3. **Verify implementation** - Read files, check for: + - NOT a stub (no "TODO", "Not implemented", empty function) + - Has actual implementation + - Tests exist (*.test.* or *.spec.*) + +4. **Determine status:** + - VERIFIED: Evidence found, not stub, tests exist → check [x] + - PARTIAL: Partial evidence or missing tests → check [~] + - MISSING: No evidence found → leave [ ] + +5. **Record evidence or gap** + + + +**Verify each task against codebase** + +Same process as ACs: +- Parse task description for artifacts +- Search codebase with Glob/Grep +- Read and verify (check for stubs, tests) +- Update checkbox based on evidence + + + +**Verify DoD items** + +For common DoD items, run actual checks: +- "Type check passes" → `npm run type-check` +- "Unit tests pass" → `npm test` +- "Linting clean" → `npm run lint` +- "Build succeeds" → `npm run build` + + + +**Calculate and display results** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +📊 REVALIDATION SUMMARY +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Story: {{story_key}} + +Verification Results: +- ✅ Verified: {{verified}}/{{total}} ({{pct}}%) +- 🔶 Partial: {{partial}}/{{total}} +- ❌ Missing: {{missing}}/{{total}} + +Accuracy Check: +- Before: {{pct_before}}% checked +- After: {{verified_pct}}% verified +- {{pct_before > verified_pct ? "Over-reported" : "Under-reported"}} + +{{#if missing > 0}} +Gaps Found ({{missing}}): +[list gaps with what's missing] +{{/if}} +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + +**Implement missing items** + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +🔧 GAP FILLING MODE +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + +Safety check: +``` +if gaps_found > max_gaps_to_fill: + echo "⚠️ TOO MANY GAPS ({{gaps}} > {{max}})" + echo "Consider re-implementing with /dev-story" + HALT +``` + +For each gap: +1. Load story context +2. Implement missing item +3. Write tests +4. Run tests to verify +5. Check box [x] if successful +6. Commit if commit_strategy == "per_gap" + + + +**Re-verify and commit** + +If gaps were filled: +1. Re-run verification on filled gaps +2. Commit all changes (if commit_strategy == "all_at_once") + +Update sprint-status.yaml with revalidation result: +``` +{{story_key}}: {{status}} # Revalidated: {{pct}}% ({{timestamp}}) +``` + +``` +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +✅ REVALIDATION COMPLETE +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Final: {{verified}}/{{total}} verified ({{pct}}%) + +Recommendation: +{{#if pct >= 95}} +✅ Story is COMPLETE - mark as "done" +{{else if pct >= 80}} +🔶 Mostly complete - finish remaining items +{{else if pct >= 50}} +⚠️ Significant gaps - continue with /dev-story +{{else}} +❌ Mostly incomplete - consider re-implementing +{{/if}} +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + + + + + +**File not found:** HALT with error. +**Verification fails:** Record gap, continue to next item. +**Gap fill fails:** Leave unchecked, record failure. +**Too many gaps:** HALT, recommend re-implementation. + + + +- [ ] All items verified against codebase +- [ ] Checkboxes reflect actual implementation +- [ ] Accuracy comparison displayed +- [ ] Gaps filled (if enabled) +- [ ] Sprint status updated +