Install
npm i @opengsd/gsd-core@1.10.0
# or
npm i @opengsd/gsd-core@latestWhat's Changed
Feature
- feat(#2646): surface unresolved deferred-items.md at milestone close by @nabki in #2983
- feat(#3072): ship the deferred MCP served catalog (resources + prompts) by @trek-e in #3083
Enhancement
- enh(#2904): add a
reviewerentry type so third-party reviewer lanes are discoverable by @trek-e in #2912 - enhance(#2530): extend UAT checkpoint frame language pack (9 more languages) by @JusticeWay in #2564
- enhance(#2255): blocking catastrophic-shrink guard for curated .planning/ writes by @0xdhx in #2301
- enhance(#3118): close the dead injectables and the shell projection follow-on — Wave 4 by @trek-e in #3124
- enhance(#3149): dedicated init.debug entry point for /gsd:debug by @trek-e in #3154
Fix
- fix(#2667): run-with-timeout mediates .cmd/.bat/.exe spawns on Windows (CVE-2024-27980); fallow pre-pass names failure kind by @trek-e in #2897
- fix(#2788): recover Gaps Found rows; mark-complete no longer false-succeeds on a rejected row by @trek-e in #2902
- fix(#2834): write defaults.json before agent TOML generation on clean Codex install by @trek-e in #2900
- fix(#2825): gsd-code-fixer honors workflow.use_worktrees; never rm -rf a reparse point by @trek-e in #2905
- fix(#2843): findProjectRoot stops at git-repo boundaries, not just MAX_DEPTH by @trek-e in #2909
- fix(#2844): verify-summary ignores future/prose path mentions; resolves project root by @trek-e in #2910
- fix(#2853): roadmap.update-plan-progress preserves hand-written annotations by @trek-e in #2916
- fix(#2733): route gate-passed spec-phase paths into the probe steps by @davesienkowski in #2779
- fix(#2848): non-Latin titles no longer produce empty slugs (Cyrillic transliteration) by @trek-e in #2934
- fix(#2914): per-PR ack fragments instead of one shared mutable file by @trek-e in #2923
- fix(#2647): code-fixer worktree under .claude/worktrees/, not a hardcoded /tmp path by @trek-e in #2942
- fix(#2944): remove the catastrophic-backtracking regex from the ADR-1671 example by @trek-e in #2950
- fix(#2648): phase.complete refuses when non-retired plans lack summaries (fail-closed coverage gate) by @trek-e in #2953
- fix(#2649): diagnose-issues + execute-plan run worktree.base-check before worktree dispatch by @trek-e in #2955
- fix(#2602): discover project-local Codex agents by @deinspanjer in #2623
- fix(#2956): scope Phase extraction to ## Current Position (3rd gen of #2444/#2567) by @trek-e in #2961
- fix(#2943): rename get-library-docs -> query-docs; correct the ctx7 fallback rationale by @trek-e in #2963
- fix(#2849): strip trailing hyphen after 60-char slug truncation by @trek-e in #2967
- fix(#2858): exclude gen-emitted-baseline.cjs from npm tarball + class-extinction guard by @trek-e in #2968
- fix(#2913): distinguish empty cherry-pick from genuine conflict in hotfix create by @trek-e in #2970
- fix(#2941): hint at global: prefix when bare skill name matches a global skill by @trek-e in #2973
- fix(#2640): report truthful state_updated + keep progress frontmatter in sync after phase remove by @trek-e in #2974
- fix(#2893): preserve prose below the JSON ledger on windows append/waive/fixed by @trek-e in #2975
- fix(#2639): warn when local is ahead of origin before forking phase branch by @trek-e in #2981
- fix(#2641): treat absent capture_artifacts as enabled (schema default) by @trek-e in #2982
- fix(#2840): exclude runtime from defaults.json spread into project config by @trek-e in #2985
- fix(#2544): stage the CommonJS marker in GSD-owned dirs, not the config root by @0xdhx in #2593
- fix(#2738): report graphify query budget outcome and stop between-tier over-trimming by @0xdhx in #2819
- fix(#2562): scope workstream progress/status to the current milestone by @nabki in #2588
- fix(#2777): remove stale codex local home metadata by @kyle-the-dev in #2831
- fix(#2658): detect trae runtime and resolve its instruction file to a concrete rules file by @trek-e in #3006
- fix(#2855): scope the phase-locator archived-milestone fallback to the active workstream by @trek-e in #3008
- fix(#2852): isolate wave-cleanup blocks to their own entry by @trek-e in #3009
- fix(#2657): untrack the nine ADR-457 migration-gap compiled artifacts by @trek-e in #3011
- fix(#2850): resolve the active workstream in the statusline GSD-state segment by @trek-e in #3012
- fix(#1700): scope spike MANIFEST requirements per idea key by @trek-e in #3014
- fix(#2645): persist verification verdicts so deletion cannot raise completeness by @trek-e in #3016
- fix(#2847): require gap_closure value in plan-gap-closure schema and bind validate_plan to it by @trek-e in #3018
- fix(#2650): bound and auto-recover plan-phase planner/plan-checker stalls by @trek-e in #3015
- fix(#2644): deduplicate Cursor slash menu by @clezcoding in #2812
- fix(#2785): implement missing gate predicate evaluators by @denniyahh in #2816
- fix(#2787): clarify broken-windows ship blocking enforcement by @denniyahh in #2814
- fix(#2703): strip GSD-2 frontmatter with the canonical parser by @trek-e in #3027
- fix(#2755): resolve the kimi hooks-TOML root per runtime by @trek-e in #3032
- fix(#2830): propagate a halted plan to its transitive dependents by @trek-e in #3038
- fix(#2868): resume a phase stranded between its last plan and verification by @trek-e in #3041
- fix(#2903): use the command form that actually works in reader-facing docs by @trek-e in #3047
- fix(#2911): resolve surface re-stage destinations the way the installer does by @trek-e in #3049
- fix(#3050): fail closed when a worktree guard cannot verify safety by @trek-e in #3054
- fix(#3050): consolidate the spawn-timeout predicate and propagate the unresolved-root reason by @trek-e in #3060
- fix(#2927): merge installed overlay reviewer lanes into review-lane invocation by @trek-e in #3062
- fix(#2939): honor the declared depth budget in shouldFlattenDispatch by @trek-e in #3063
- fix(#2940): preserve codex config.toml content after the GSD marker on update by @trek-e in #3067
- fix(#3045): fail closed when an executor dispatch drops its resolved isolation by @trek-e in #3069
- fix(#2949): exclude sentinel phase ids from stage-3 next-phase candidacy by @trek-e in #3070
- fix(#2945): roll back the REQUIREMENTS checkbox when the traceability row rejects the write by @trek-e in #3073
- fix(#2977): tolerate a leading UTF-8 BOM before the frontmatter fence by @trek-e in #3076
- fix(#2946): run milestone complete unstarted-phase guard independent of STATE by @trek-e in #3081
- fix(#2766): scan archived phases and read table-shaped Gaps/deferred entries by @trek-e in #3082
- fix(#2947): preserve preamble phase details when milestone section has none by @trek-e in #3084
- fix(#2962): enable nullglob in for-glob shell blocks for zsh portability by @trek-e in #3087
- fix(#3057): make a guard's failure distinguishable from its benign result — Wave 1 by @trek-e in #3088
- fix(#2969): ratchet completed_plans up for gap-closure plans under deriveProgressKeys by @trek-e in #3091
- fix(#2978): add structural validation to roadmap validate by @trek-e in #3092
- fix(#2979): document ExitError plain-text carve-out in json-errors.md by @trek-e in #3093
- fix(#2988): local changeset/docs lint falls back to next, not main by @trek-e in #3095
- fix(#2989): anchor code-review diff-base grep to phase-mention convention by @trek-e in #3096
- fix(#2991): route /gsd command output through Pi's display shape by @trek-e in #3097
- fix(#2997): include phase_id_convention in resolved config by @trek-e in #3098
- fix(#2998): point bug template at runtime-home version, not npm list -g by @trek-e in #3100
- fix(#3001): indent continuation lines in serializeChangelog by @trek-e in #3101
- fix(#3004): update Codex adapter collaboration-tool vocabulary by @trek-e in #3104
- fix(#3017): scope state write disk scan to stored milestone by @trek-e in #3105
- fix(#3020): verify graphify tool identity before reporting compatibility by @trek-e in #3107
- fix(#3057): reach the branches nothing could reach, and stop reaping on a PID we never probed — Wave 3 by @trek-e in #3106
- fix(#3021): recognize worktree-wf_* branch namespace in all guards by @trek-e in #3109
- fix(#3022): suppress spurious typebox fallback warning on Pi startup by @trek-e in #3111
- fix(#3026): document --pi and --gemini in installer --help by @trek-e in #3112
- fix(#3029): remove redundant hooks declaration from plugin manifest by @trek-e in #3113
- fix(#3033): resolve zero-plan split-parent phase as complete when roadmap checkbox is checked by @trek-e in #3114
- fix(#3035): add kimi-code detection and flag to review workflow by @trek-e in #3115
- fix(#3036): accept non-numeric-leading phase ids in roadmap.analyze by @trek-e in #3117
- fix(#3039): clamp max/xhigh effort to high for Claude-runtime skills by @trek-e in #3119
- fix(#3044): add zh-CN verification-patterns.md to secret-scan exclusions by @trek-e in #3122
- fix(#2784): suppress detectApiIntegration on negated prose by @trek-e in #3127
- fix(#2786): skip sentinel phase ids in phase-complete stage 2 heading scan by @trek-e in #3130
- fix(#2665): scrub config-location env vars in TEST_ENV_BASE by @trek-e in #3134
- fix(#3116): strip trailing CR per line in parseFrontmatterStrict for CRLF WINDOWS.md by @trek-e in #3137
- fix(#3132): realign retired covered/backstop-as-status vocab to resolved+verification by @trek-e in #3138
- fix(#3099): emit LAST_ACTIVITY_UNPARSEABLE diagnostic for unusable last_activity by @trek-e in #3139
- fix(#3052): preserve frontmatter last_activity_desc on same-date body prose conflict by @trek-e in #3140
- fix(#3079): query commit no longer resurrects deleted phase branches via silent switch by @trek-e in #3141
- fix(#3086): apply #2667 .cmd-shim gate to deps.spawn + surface errorCode in review lanes by @trek-e in #3142
- fix(#3023): stage pi's shared hook bundle outside pi's reserved hooks/ directory by @trek-e in #3175
- fix(#3024): route sync-skills through the shipped gsd-tools instead of an unshipped install.js by @trek-e in #3195
New Contributors
- @JusticeWay made their first contribution in #2564
- @deinspanjer made their first contribution in #2623
- @kyle-the-dev made their first contribution in #2831
- @denniyahh made their first contribution in #2816
- @funkadelic made their first contribution in #2964
Full Changelog: v1.9.1...v1.10.0