Skip to content

test: coverage improvements for #291 concurrent milestone execution#806

Open
0xLeathery wants to merge 6 commits intogsd-build:mainfrom
0xLeathery:test/291-coverage-improvements
Open

test: coverage improvements for #291 concurrent milestone execution#806
0xLeathery wants to merge 6 commits intogsd-build:mainfrom
0xLeathery:test/291-coverage-improvements

Conversation

@0xLeathery
Copy link
Contributor

What

Adds 47 tests covering gaps from the concurrent milestone execution feature (#291), bringing the suite to 508 tests and 94% line coverage.

Why

Template heuristics (5% covered), all 3 hooks (0%), milestone isolation (untested), and --milestone flag on init commands were shipped without adequate test coverage in #291.

Changes

File Tests Coverage Impact
tests/template.test.cjs (new) 14 template.cjs 5% → 99%
tests/hooks.test.cjs (new) 15 hooks/ 0% → 85%
tests/paths.test.cjs +6 Milestone state isolation
tests/init.test.cjs +5 --milestone flag on init commands
tests/milestone.test.cjs +7 Auto-migration depth + edge cases

Testing

  • Tested on macOS
  • Tested on Windows
  • Tested on Linux

Checklist

  • Follows GSD style (no enterprise patterns, no filler)
  • Updates CHANGELOG.md for user-facing changes
  • No unnecessary dependencies added
  • Works on Windows (backslash paths tested)

Breaking Changes

None

Closes #291

Ethan Hurst added 6 commits February 28, 2026 17:42
Command shipped in a92512a but was missing from all documentation.
Added to help.md (full reference + common workflows), README.md
command table, and USER-GUIDE.md command reference.
Add centralized path resolution layer (paths.cjs) that enables
milestone-scoped directories for parallel milestone work. All 11 lib
files refactored to use resolvePlanningPaths() instead of hardcoded
.planning/ paths.

Key changes:
- New paths.cjs: resolvePlanningPaths(cwd, milestoneOverride) resolves
  abs/rel paths based on ACTIVE_MILESTONE file or --milestone CLI flag
- --milestone <name> CLI flag parsed in gsd-tools.cjs
- New commands: milestone create/switch/list/status
- All init commands output milestone, is_multi_milestone, planning_base
- Legacy mode (no ACTIVE_MILESTONE) returns identical paths to before
- Auto-migration: first milestone create copies existing global state
- 25 new tests for paths and milestone commands (457 total, 0 failures)
Replace hardcoded .planning/ paths in bash commands and commit
file lists with init JSON variables ({state_path}, {roadmap_path},
{planning_base}/...). Workflows without init calls gain appropriate
init calls. Global paths (PROJECT.md, codebase/) left unchanged.
…tusline, and docs (gsd-build#291)

Phase 5: polish for concurrent milestone execution.
- Milestone-scoped commit prefixes in execute-plan.md (v2.0/08-02)
- cmdMilestoneSwitch warns about in-progress work before switching
- /gsd:switch-milestone workflow and command
- Statusline shows active milestone in cyan [v2.0]
- new-milestone.md calls milestone create for multi-milestone mode
- Help and README updated with switch-milestone and concurrent docs
…itch-warning tests (gsd-build#291)

- USER-GUIDE: add /gsd:switch-milestone, concurrent milestones section,
  multi-milestone directory layout
- CHANGELOG: add [Unreleased] entry for concurrent milestone execution
- planner-subagent-prompt.md: replace hardcoded .planning/ paths with
  milestone-aware template variables
- 4 new tests: switch in-progress warning, idle switch, same-milestone
  switch, and auto-migration on first milestone create (461 total)
…lestone flag (gsd-build#291)

Cover gaps from concurrent milestone execution: template.cjs (5% → 99%),
all 3 hooks (0% → 85%), cross-contamination isolation, --milestone on init
commands, and migration edge cases. Suite: 508 tests, 94% line coverage.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature Request] Support concurrent milestone execution with isolated state management

1 participant