# 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