Review feedback from @trek-e — address scope gaps: 1. **--dry-run mode** — New flag that computes what would be pruned without modifying STATE.md. Returns structured output showing per-section counts so users can verify before committing. 2. **Resolved blocker pruning** — In addition to decisions and recently-completed entries, now prunes entries in the Blockers section that are marked resolved (~~strikethrough~~ or [RESOLVED] prefix) AND reference a phase older than the cutoff. Unresolved blockers are preserved regardless of age. 3. **Tests** — Added tests/state-prune.test.cjs (4 cases): - Prunes decisions older than cutoff, keeps recent - --dry-run reports changes without modifying STATE.md - Prunes resolved blockers, keeps unresolved regardless of age - Returns pruned:false when nothing exceeds cutoff Scope items still deferred (to be filed as follow-up): - Performance Metrics "By Phase" table row pruning — needs different regex handling than prose lines - Auto-prune via workflow.auto_prune_state at phase completion — needs integration into cmdPhaseComplete Also: the pre-existing test failure (2918/2919) is tests/stale-colon-refs.test.cjs:83:3 "No stale /gsd: colon references (#1748)". Verified failing on main, not introduced by this PR.
4.5 KiB
4.5 KiB