Fixed
Phase planning & state
- Wave 0 plans no longer collapse into wave 1, and
depends_onis honored —phase-plan-indexnow derives waves from a Kahn topological sort overdepends_on(with cycle detection) instead of trusting thewave:frontmatter alone, and a parsedwave: 0is preserved instead of being coerced byparseInt(...) || 1. A declaredwave:that disagrees with the computed level surfaces as a non-fatal warning. CJS and SDK twins fixed identically. (#3276) execute-phasestep 5.5 now documents the cross-wave-deviation cleanup tail so deviation cleanup is no longer silently skipped between waves. (#3273)state snapshotprefers YAML frontmatter for canonical fields — body table cells like**Status:** to ✅ COMPLETEno longer override the correct frontmatter value. Numeric frontmatter scalars (current_phase: 19) are preserved instead of dropped. Falls back to body extraction only when the key is absent. (#3275)state.updateon body-only changes preserves curatedprogress.*frontmatter — a "Last Activity" edit no longer tramples manually-curated cross-milestone counters. The progress-percent formula now appliesmin(plan_fraction, phase_fraction), so 22/22 plans across 6/12 declared phases reports 50%, not a false 100%. (#3252)phase.addhonors--dry-runand rejects unknown flags —--dry-runwas silently absorbed into the phase description; it now returns{ dry_run: true, roadmap_entry }and skips disk writes. Any unrecognized--flagraises a validation error. (#3246)
Query dispatch & CLI
- Native
--helpis non-mutating — a dispatcher-level guard short-circuits to a help stub whenever--help/-happears in args destined for a mutating handler, with defense-in-depth inmilestoneCompleterejecting--helpas a version value. (#3272) - CJS dispatcher accepts the canonical dotted command form —
state.update,roadmap.analyze,phases.list, etc. now resolve correctly when callers bypass the SDK. Unknown dotted commands suggest the spaced equivalent. (#3248) extractFrontmatteris anchored at file start — the regex no longer matches a frontmatter-shaped block later in the file, fixing fields read off the wrong block. (#3247)
Code review pipeline
code-reviewSUMMARY parser hardened;BL-/blocker:accepted as Critical-tier — fixes three cooperating bugs:compute_file_scopeno longer captures prose bullets as file paths (boundary regex widened to[\w-]+, with path-validity guard);present_resultsgrep now accepts bothcritical:andblocker:keys (and### BL-headings);gsd-code-fixertreatsBL-*findings as Critical-tier-equivalent toCR-*instead of silently dropping them. POSIX[[:space:]]replaces\sso the grep works on BSDgrep(macOS). (#3274)
Install
- Codex install accepts TOML float values —
parseTomlValuenow reads TOML 1.0 floats (decimals, exponents, signed,_separators), sotool_timeout_sec = 20.0no longer triggers a fatal schema error. The Codex post-install rollback is unified and idempotent: it now revertsconfig.toml,skills/gsd-*,agents/gsd-*,get-shit-done/VERSION, and orphaned atomic-write temp files together, leaving no hybrid state behind. (#3254) ✓ GSD SDK readyonly prints once SDK is genuinely reachable — install now requires a persistent cross-shell PATH probe and filters transient_npxentries from bothprocess.env.PATHand the login-shell PATH before declaring success. Eliminates false-ready signals on Linux. (#3249)config-set model_overrides.<agent-id>accepted — was previously rejected as an unknown key. (#3253)- Shared model catalog as the single source of truth for agent profiles and runtime tier defaults (ADR-0003) — replaces four drifting truths (CJS
model-profiles, SDKconfig-query,settings-advanced.md, session-runner) withsdk/shared/model-catalog.json, consumed by both packages via thin adapters.resolve-modelnow covers all 33 shipped agents; unknown-agent fallback is profile-semantic (quality→opus,budget→haiku,balanced/adaptive→sonnet) instead of hardcoded sonnet. (#3230)
Capture
/gsd-capture --seedone-shot contract restored — the workflow now defines$KEYWORDfrom$IDEAincollect-breadcrumbs, wires--enrichto skipparse-ideaand target the resolved seed, and adds language identifiers toplant-seedcode blocks. (#3250)
Install/upgrade: npx get-shit-done-cc@latest
Full Changelog: v1.41.0...v1.41.1