Tom Boucher
a4da216523
feat: support ticket-based phase identifiers for team workflows (#1019)
Teams sharing a GSD repo collide on sequential phase numbers when multiple
people create phases concurrently. This adds support for arbitrary string
IDs (e.g. PROJ-42, AUTH-101) as phase identifiers.
New config option:
{ "phase_naming": "custom" }
Changes:
- core.cjs: normalizePhaseName() handles non-numeric IDs gracefully
- core.cjs: comparePhaseNum() falls back to string comparison for custom IDs
- core.cjs: searchPhaseInDir() matches custom ID prefixes case-insensitively
- core.cjs: getMilestonePhaseFilter() recognizes custom ID directory names
- core.cjs: getRoadmapPhaseInternal() matches Phase headers with any word chars
- core.cjs: loadConfig() adds phase_naming option (default: 'sequential')
- phase.cjs: cmdPhaseAdd() accepts --id flag for custom phase IDs
- verify.cjs: health check skips sequential numbering validation in custom mode
- gsd-tools.cjs: phase add --id PROJ-42 "description" wired up
Usage:
# Sequential mode (default, backward compatible)
gsd-tools phase add "User Authentication" # → Phase 3
# Custom mode (config: phase_naming: custom)
gsd-tools phase add --id PROJ-42 "User Authentication"
# Creates: .planning/phases/PROJ-42-user-authentication/
# ROADMAP: ### Phase PROJ-42: User Authentication
All 755 existing tests pass.
Fixes #1019
2026-03-18 20:27:12 -04:00
..
2026-03-18 20:27:12 -04:00
2026-03-18 17:17:34 -04:00
2026-03-18 12:26:04 -04:00
2026-03-18 18:09:42 -04:00