Phases listed in ROADMAP.md but not yet planned (no directory on disk) were excluded from total_phases, causing premature milestone completion. Now uses Math.max(diskDirs, roadmapCount) via filter.phaseCount. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>