Install
This pre-release is published to npm under the next dist-tag.
npm i @opengsd/gsd-core@1.5.0-rc.5
# or
npm i @opengsd/gsd-core@nextWhat's Changed
Feature
- feat(#656): Research module — content-addressed cache + provider seam + registry-API legitimacy by @trek-e in #664
- feat(#717): re-base workflow size budget on bytes + document quality rationale by @trek-e in #719
- feat(#159): auto-use existing RESEARCH.md in /gsd:plan-phase --research-phase by @trek-e in #718
- feat(#703): add --granularity override flag to /gsd:plan-phase by @trek-e in #750
- feat(#25): scope gsd-verifier Step 7b to enumerate-or-single-test; forbid full-suite re-runs by @trek-e in #753
- feat(#52): add agent_skills_security.trusted_global_roots allowlist for global skills by @trek-e in #754
- feat(#759): non-destructive CHANGELOG preview in the rc release job by @trek-e in #763
- feat(#761): scheduled base-context sweep to close SHA-branch-evading draft PRs by @trek-e in #765
- feat(#764): skip cross-platform test matrix for docs-only and inert-CI PRs by @trek-e in #798
- feat(#766): distribute gsd-core as a native Claude Code plugin by @trek-e in #797
- feat(#786): elevate GitHub Copilot installer — lifecycle hook + AGENTS.md by @trek-e in #804
- feat(#785): write .cursor/commands/ Cursor 1.6 slash-command surface by @trek-e in #805
- feat(#787): elevate Cline — .clinerules/ dir form, PreToolUse hook, AGENTS.md by @trek-e in #803
- feat(#788): expand Qwen Code hook-event coverage by @trek-e in #807
- feat(#790): emit Augment slash commands by @trek-e in #808
- feat(#773): add --ephemeral and --dangerously-bypass-hook-trust to automated codex exec wrappers by @trek-e in #824
- feat(#775): ship a gemini-extension.json extension package for one-step Gemini install by @trek-e in #818
- feat(#768): pre-populate settings.json permissions.allow/deny for Claude Code by @trek-e in #819
- feat(#774): emit service_tier/model_verbosity in Codex agent TOML + agents/openai.yaml skill chip by @trek-e in #828
- feat(#769): adopt context:fork + effort on heavy workflow skills by @trek-e in #820
- feat(#772): adopt stable Codex hook events + commandWindows for Windows parity by @trek-e in #827
- feat(#778): cross-runtime command enrichment (Gemini {{args}}/!{}, Qwen priority) by @trek-e in #825
- feat(#789): elevate CodeBuddy — slash commands by @trek-e in #830
- feat(#776): Gemini hook events (BeforeAgent/AfterAgent/BeforeModel) + hooksConfig.enabled check by @trek-e in #829
- feat(#777): register Cursor-native hooks (.cursor/hooks.json) for session-start/post-tool parity by @trek-e in #831
- feat(#815): add /gsd-update --next to install the @next RC channel by @trek-e in #839
- feat(#836): no-LLM duplicate-issue detection + challenge + 1-day auto-close by @trek-e in #843
- feat(#770): register Claude Code lifecycle hooks (SubagentStop/Stop/PreCompact/FileChanged) by @trek-e in #821
- feat(#69): complete namespace meta-skill architecture — nest concrete skills under routers by @trek-e in #883
- feat(#896): Capability Registry generator + UI pilot (ADR-857 phase 3a-impl) by @trek-e in #902
- feat(#903): generate Loop Host Contract from workflow markers (ADR-857 phase 3a-impl-2) by @trek-e in #906
- feat(#910): federated config merge in config-loader (ADR-857 phase 3b) by @trek-e in #914
- feat(#918): loop.render-hooks resolver — consume the Capability Registry (ADR-857 phase 3c) by @trek-e in #920
- feat(#744): add Kimi CLI runtime support by @viktorplus in #743
- feat(#942): tier→profile/cluster derivation + consistency gate (ADR-857 phase 4a) by @trek-e in #943
- feat(#945): unified capability-state resolver (ADR-857 phase 4b) by @trek-e in #946
- feat(#949): install/surface consume derived profiles/clusters (UI→tier:full, proven no-op) — ADR-857 phase 4c by @trek-e in #954
- feat(#961): capability command mechanism (commandFamilies index + default-case dispatch) — ADR-857 phase 4d-impl-1 by @trek-e in #964
- feat(#972): graphify command cutover — first capability owning a command family (ADR-857 phase 4d-impl-2) by @trek-e in #975
- feat(#981): audit-uat + audit-open command cutover — commands-only capability (ADR-857 phase 4d-impl-3) by @trek-e in #984
- feat(#985): intel command cutover — commands-only capability, last first-party family (ADR-857 phase 4d-impl-4) by @trek-e in #988
- feat(templates): add optional Business Context section to PROJECT.md template by @jslitzkerttcu in #756
- feat(#1014): add Claude Fable 5 model config by @Solvely-Colin in #1015
- feat(#1023): first phase-6 cutover — ui-review (verify:post) → loop.render-hooks dispatch — ADR-857 by @trek-e in #1024
- feat(#1026): §5.6/ui-phase cutover — first gate dispatch (plan:pre step + blocking gate) — ADR-857 by @trek-e in #1028
- feat(#1031): autonomous §3a.5 plan:pre ui-phase cutover — last inlined ui-phase site (step-only) — ADR-857 by @trek-e in #1033
- feat(#1035): phase 5a — author 16 role:runtime capability descriptors (registry-only) — ADR-857/1016 by @trek-e in #1039
- feat(#1040): phase 5b — drive configHome from the runtime descriptor — ADR-857/1016 by @trek-e in #1043
- feat(#1046): phase 5c — drive commandStyle from the runtime descriptor — ADR-857/1016 by @trek-e in #1048
- feat(#435): full Cartesian matrix cross-product expansion in workflow-policy linter by @trek-e in #1050
- feat(#1049): phase 5d — drive artifactLayout from the runtime descriptor (retire the 128-LOC switch) — ADR-857/1016 by @trek-e in #1053
- feat(#1056): phase 5e — close ConverterName enum + configFormat↔installSurface parity guard — ADR-857/1016 by @trek-e in #1057
- feat(#429): HARD GATE on negative-grep literals echoed in plan bodies by @trek-e in #1062
- feat(#247): runtime-neutral phase uat-passed predicate from HUMAN-UAT results by @trek-e in #1063
- feat(#767): inject disallowedTools deny-list into Claude read-only verifier/auditor agents by @trek-e in #1081
- feat(#792): add devin-desktop runtime alias for windsurf by @trek-e in #1086
- feat(#1082): complete phase 5 — descriptor-drive all install surfaces + materialize the InstallPlan — ADR-857/1016/58 by @trek-e in #1080
- feat(#791): migrate antigravity workspace base dir .agent → .agents by @trek-e in #1090
- feat(#1085): migrate windsurf workspace skills to .devin/ + fix global content refs by @trek-e in #1093
- feat(spec-phase): spec-completeness edge-probe (#550) by @davesienkowski in #584
- feat(#1123,#1124): enforce duplicate-producer invariant + fail-loud loadCentralConfigKeys in gen-capability-registry by @trek-e in #1131
- feat(#1132): complete contribution hook prerequisite by @trek-e in #1134
- feat(#1135): migrate planning hooks to capabilities by @trek-e in #1141
- feat(#1137): migrate review verification hooks to capabilities by @trek-e in #1147
- feat(#1136): consume resolved capability state by @trek-e in #1153
- feat(#1138): make runtime descriptors authoritative by @trek-e in #1157
- feat(#1180): hard-gate the GSD Version requirement on bug reports by @trek-e in #1181
- feat(#1169): complete ADR-857 phase 6 — migrate features to Capabilities, revive dead gates, harden conformance gate by @trek-e in #1183
- feat(#956): add MemPalace memory capability (ADR-857 feature plug-in) by @trek-e in #1201
- feat(#1187): per-module Stryker mutation-score ratchet (ADR-456 80% floor) by @trek-e in #1200
- feat(#1165): async external_job_waiting half-state + resume/pause contract (split of #1105) by @trek-e in #1221
- feat(#1213): Capability State Writer — write-side inverse of the resolver by @trek-e in #1225
- feat(#1173): wire agent converters into descriptor-driven install path by @trek-e in #1227
- feat(#1190): wire --converge primary surface into /gsd:progress --next (ADR-15) by @trek-e in #1237
- feat(#1245): capability ecosystem — ADR, PRD & developer documentation (Phase 0 of #1244) by @trek-e in #1248
- feat(#1188): branch-coverage floors + promote no-source-grep to error on tests/** by @trek-e in #1250
- feat(spec-phase): prohibition probe — surface "must-NOT" constraints (#644) by @davesienkowski in #1149
- feat(#1304): add optional activationKey capability manifest field by @trek-e in #1309
- feat(#1305): per-capability active tri-state + isCapabilityActive in Capability State Resolver by @trek-e in #1311
Enhancement
- docs: promote README/branding fixes from next to main by @trek-e in #540
- [codex] docs: promote README version cleanup to main by @jeremymcs in #545
- docs(#546): promote changelog update to main by @jeremymcs in #548
- chore: merge release v1.3.0 to main by @trek-e in #662
- chore: back-merge main into next after v1.3.0 release by @trek-e in #671
- chore(#660): bump next to 1.3.1-dev.0 (-dev stream per ADR 660) by @trek-e in #672
- ci(#660): scoped GSD_BOT_PR_TOKEN for backmerge & release merge-back PR creation by @trek-e in #673
- chore: merge hotfix v1.3.1 back to main by @trek-e in #681
- chore: back-merge main (v1.3.1 hotfix) to next + hono advisory bump by @trek-e in #682
- chore: back-merge main → next (051588f, #690 CHANGELOG fast-track) by @trek-e in #697
- chore: back-merge main → next (3e0578a) by @trek-e in #701
- chore(release): archive 463 shipped changeset fragments before wiring render (#690 follow-up) by @trek-e in #714
- chore(release): wire CHANGELOG render into release finalize job (#690 follow-up) by @trek-e in #715
- docs(#695): document --only and --text flags for /gsd-autonomous by @trek-e in #716
- chore: clean up clear-cut ESLint warnings (#732) by @trek-e in #734
- chore(lint): justify intentional no-control-regex (ANSI strip) + ratchet to error by @trek-e in #737
- chore(lint): eliminate magic-sleep test warnings + ratchet rules to error by @trek-e in #735
- refactor(scripts): replace process.exit() with ExitError + runMain handler (part 1 of #738) by @trek-e in #740
- refactor(bin): replace process.exit() in CLI entrypoints + ratchet n/no-process-exit to error (part 2 of #738) by @trek-e in #741
- refactor(#720): lazy-load MVP-only reference bodies on non-MVP runs by @trek-e in #746
- refactor(#712): replace Codex slash-command denylist lookbehind with positive-boundary match by @trek-e in #747
- refactor(#651): consolidate verification-status routing into one queryable seam by @trek-e in #755
- docs(#58): add ADR for Runtime Install Policy Module boundary by @trek-e in #762
- test(#339): regression guard for gsd-sdk refs in runtime surfaces by @jslitzkerttcu in #691
- refactor(#60): make runtime config adapter registry explicit by @trek-e in #795
- refactor(#56): retire legacy runtime directory helpers into runtime-homes projection by @trek-e in #802
- enhancement(#782): emit gsd skills to ~/.cline/skills for Cline >= v3.48 by @trek-e in #809
- enh(#784): emit native skills for OpenCode + Kilo runtimes by @trek-e in #810
- chore(#771): convert agent color: hex/magenta values to documented named colors by @trek-e in #823
- docs(#832): add how-to guide for minimal install / skill profiles by @trek-e in #835
- chore(#846): remove unused PR-size labeler (size/S–XL) workflow by @trek-e in #848
- docs(#849): capture 1.4.0 release features across the docs base by @trek-e in #850
- docs(#857): ADR-857 Capability system — five-step loop core, features as plug-ins by @trek-e in #858
- refactor(#859): extract CLI I/O primitives from core.cts into io.cts by @trek-e in #864
- refactor(#865): extract pure phase-id helpers from core.cts into phase-id.cts by @trek-e in #868
- ci(#869): raise full-test Windows lane timeout 15m→20m by @trek-e in #871
- chore(#57): add runtime install no-drift guard tests by @trek-e in #867
- refactor(#870): extract ROADMAP.md parsing into roadmap-parser.cts by @trek-e in #876
- refactor(#877): extract shared low-level utilities into core-utils.cts by @trek-e in #878
- refactor(#881): extract phase-locator fs-search into phase-locator.cts by @trek-e in #882
- refactor(#885): extract loadConfig cluster into config-loader.cts by @trek-e in #886
- refactor(#887): consolidate duplicated CHILD_ROUTER test maps into shared helper by @trek-e in #889
- refactor(#888): extract model+effort resolution into model-resolver.cts by @trek-e in #890
- docs(#894): ADR-894 Capability declaration format + registry generation by @trek-e in #895
- chore(#899): auto-close unsolicited fork PRs with no linked issue by @trek-e in #901
- chore(#893): remove dead loadConfig from configuration.cts by @trek-e in #912
- chore(#930): remove self-masking next dist-tag repoint from release finalize by @trek-e in #931
- docs(#956): MemPalace capability pre-proposal (PRD/ADR draft) by @trek-e in #957
- docs(#959): ADR-959 capability command contribution (ADR-857 phase 4d design) by @trek-e in #960
- ci(#962): pipeline audit fixes — scoped matrix, merged coverage gate, suite seeding, bug-* ratchet by @Solvely-Colin in #963
- test(#969): fix stale-build flake (incremental + re-emit-on-missing) and harden runGsdTools against subprocess kills by @trek-e in #996
- docs(#1016): ADR-1016 runtime capability descriptor (ADR-857 phase 5 design) by @trek-e in #1019
- test(#1018): hook-firing de-risk spike — structural off-means-off proof + cutover contract by @trek-e in #1020
- docs(#1022): resolve step-vs-gate model question (steps additive, gates block) — ADR-857/894 by @trek-e in #1025
- refactor(#1059): phase 5f-1 — extract standalone hook-surface writers into a module — ADR-857/1016 by @trek-e in #1064
- docs(#1065): record DEFECT.INVENTORY-MERGE-UNDERCOUNT in CONTEXT.md by @trek-e in #1066
- refactor(#1067): phase 5f-1b — extract the settings-json hook block (applySettingsJsonHooks) — ADR-857/1016 by @trek-e in #1075
- chore(#1087): Windows test-portability lint + n/no-path-concat + LF normalization by @trek-e in #1088
- docs(#793): disambiguate Trae IDE vs trae-agent in runtime notes by @trek-e in #1083
- test(#1074): add additive per-file workflow size baseline guard (PR 1/3) by @davesienkowski in #1089
- test(#1074): swap workflow size enforcement to baseline + loose hard caps (PR 2/3) by @davesienkowski in #1096
- test(#1074): agent-size-budget per-file baseline + line→byte rebase (PR 3/3) by @davesienkowski in #1097
- enhance(spec-phase): edge-probe
precisionprobe should name tie-breaking / rounding-mode by @davesienkowski in #1108 - ci(#1104): keep next package.json in sync with the last published release by @trek-e in #1109
- chore: sync next package version to 1.5.0-rc.2 by @trek-e in #1112
- docs(857): settle phase-6 predicate boundary — verification substrate vs. plug-in tier by @trek-e in #1121
- docs(857): refresh stale 'out of scope' comments — render-hooks/capability-state are now consumed by @trek-e in #1126
- docs(context): codify audit search-discipline — verify enforcement in the source/generator, not the generated artifact by @trek-e in #1128
- docs(#1143): ADR-1143 Claude orchestration capability (Workflow/ultracode) [proposal] by @trek-e in #1155
- test(#1139): add phase 6 capstone conformance gate by @trek-e in #1158
- refactor(#1099): extract runtime artifact conversion module by @trek-e in #1100
- test(#1168): honest phase-6 conformance gate (RED by design) + wire dead ship:pre gate (#1167) by @trek-e in #1174
- test(#1171): parity guard for primary/advanced agent classification by @trek-e in #1176
- refactor(#1170): remove hand-maintained INVENTORY count scalars by @trek-e in #1179
- chore: sync next package version to 1.5.0-rc.3 by @trek-e in #1208
- docs(#1209): map ready-for-agent to confirmed-bug in triage-labels by @trek-e in #1210
- ci(#1212): shard windows full-test lane to remove timeout cliff by @trek-e in #1222
- test(#1189): cover ADR-0006 planningPaths() consumption in init handlers by @trek-e in #1226
- chore(#1175): remove dead tool-name converters + fix unused-arg lint by @trek-e in #1234
- refactor(#1190): extract ADR-230 PR-target branch policy into a tested, fork-safe seam by @trek-e in #1246
- docs(#1239): ADR — GSD as an embeddable orchestration engine by @trek-e in #1241
- refactor(#1190): extract ADR-22 drift-guard decision logic into a testable seam by @trek-e in #1242
- refactor(#1191): inject clock/reset testability seams + handle valid-null settings by @trek-e in #1233
- docs(#1235): ADR — migrate agent conversion to the descriptor-driven install path by @trek-e in #1253
- enhance(spec-phase): surface zero-classification edge-probe requirements as "unclassified — review manually" instead of silent drop by @davesienkowski in #1117
- enh(#1243): consume Claude plugin-provided skills in agent_skills (epic #1258 Phase B) by @trek-e in #1261
- chore: sync next package version to 1.5.0-rc.4 by @trek-e in #1262
- refactor(#1268): re-home core re-export-spine squatters + migration-convergence lint by @trek-e in #1272
- enh(#966): gate behavior-dependent truths on behavioral evidence in gsd-verifier by @trek-e in #1271
- refactor(#1277): T1 — decouple agent-install-check + git-base-branch from the core spine by @trek-e in #1280
- enhance(verify-phase): enforce test-tier prohibitions — wire the deferred negative-test gate (#1259, ADR-550 D5d) by @davesienkowski in #1273
- refactor(#1281): T2 — migrate 12 single-leaf callers off the core spine (batch 1) by @trek-e in #1282
- refactor(#1283): T3 — migrate 9 multi-leaf callers off the core spine (batch 2) by @trek-e in #1285
- refactor(#1286): T4 — migrate 5 large destructure callers off the core spine (batch 3) by @trek-e in #1287
- refactor(#1289): T5 — migrate the final idiom-hard callers off the core spine by @trek-e in #1290
- refactor(#1291): T6 — migrate test files off the core spine ahead of deletion by @trek-e in #1293
- refactor(#1294): T-final — delete the core.cjs re-export spine (epic #1267 complete) by @trek-e in #1295
- enhance(execute): isolated-executor rejected/over-reaching run fails safe — never default recovery to main (#1292) by @trek-e in #1303
- refactor(#1306): gate graphify on isCapabilityActive (tri-state, runtime-aware) by @trek-e in #1313
- enhance(verify-phase): deterministic auto-locate of the prohibition check descriptor (#1278) by @davesienkowski in #1301
- refactor(#1307): gate intel on isCapabilityActive + loop-resolver honors capability active by @trek-e in #1315
- enhance(#968): region-scoped negative-grep idiom + cross-task conflict warning by @trek-e in #1320
- refactor(#1308): consolidate config-key precedence engine into single owner by @trek-e in #1322
- chore(build): untrack tsc-generated git-base-branch.cjs artifact (#1321) by @trek-e in #1323
Fix
- fix(#663): resolve open CodeQL/Dependabot security alerts (ReDoS, prototype pollution, workflow perms, qs DoS) by @trek-e in #665
- fix: accept published installer migration checksums by @Solvely-Colin in #674
- fix(#670): tolerate installer-migration checksum drift on upgrade by @trek-e in #675
- fix(#676): consolidate hotfix into release.yml (delete standalone hotfix workflow) by @trek-e in #678
- fix(#676): update tests/docs referencing deleted hotfix.yml by @trek-e in #680
- fix(#690): promote CHANGELOG 1.3.x + gate release-notes promotion by @trek-e in #694
- fix(#690): backfill CHANGELOG 1.3.x on main for /gsd:update preview by @trek-e in #696
- fix(#698): make auto-backmerge main→next actually land (admin-merge via PAT) by @trek-e in #699
- fix(#698): sync main's auto-backmerge.yml to next (hardened admin-merge + scoped PAT) by @trek-e in #700
- fix(#637): route 3 more workflows through gsd_run launcher (hardcoded $HOME sweep) by @jslitzkerttcu in #642
- fix(#705): route hardcoded $HOME gsd-tools invocations in agents/commands through gsd_run by @trek-e in #707
- fix(#685): set windowsHide on all Windows child-process spawns by @trek-e in #688
- fix(#687): cap agy -p with a hard wall-clock timeout (no indefinite hang) by @trek-e in #689
- fix(#669): /gsd-review --cursor actually invokes cursor-agent by @trek-e in #686
- fix(#704): exclude } and ) from Codex path-rewrite lookbehind (no literal $gsd-core in installs) by @trek-e in #710
- fix(#706): skip rescue of already-committed SUMMARY to avoid worktree cleanup merge_failed by @trek-e in #709
- fix(#730): scope current-milestone Phase Details section in roadmap parser by @trek-e in #748
- fix(#683): auto-degrade phase execution to sequential on worktree base mismatch by @trek-e in #749
- fix(#751): recognise config-set prototype-pollution guard in CodeQL + test dynamic-key vectors by @trek-e in #752
- fix(#758): trigger draft-PR auto-close on pull_request_target by @trek-e in #760
- fix(ci): repair Discord release changelog announcements by @Solvely-Colin in #780
- fix(#783): resolve Kilo global skills base to ~/.kilo/skills by @trek-e in #806
- fix(#812): honor COPILOT_HOME in Copilot global config-dir resolution by @trek-e in #814
- fix(#813): apply per-runtime skill path rewrites in applySurface by @trek-e in #817
- fix(#816): mirror install command-prefix handling in _syncGsdDir by @trek-e in #822
- fix(#837): three-dot diff in ci-test-scope so docs-only PRs skip the heavy matrix by @trek-e in #841
- fix(#844): sync runtime manifest versions on npm version bump by @trek-e in #845
- fix(#834): derive installer --help skill counts from PROFILES by @trek-e in #847
- fix(#856): remove gsd-cmd-rewrites temp dirs after install by @trek-e in #862
- fix(#853): gate manager/autonomous background dispatch by runtime by @trek-e in #863
- fix(#872): make roadmap-phase-fallback tests hermetic against ambient GSD env by @trek-e in #873
- fix(#866): route profile-pipeline temp output under reaped root + fixture teardown by @trek-e in #879
- fix(#875): make getMilestonePhaseFilter fence-aware by @trek-e in #880
- fix(#904): normalize phase number in init.execute-phase branch_name by @trek-e in #909
- fix(#891): probe non-Claude runtime homes in gsd-tools launcher shim detection by @trek-e in #911
- fix(#892): parse checklist-style roadmap phases in validate/verify by @trek-e in #908
- fix(#905): preserve STATE.md frontmatter scalars in syncStateFrontmatter by @trek-e in #907
- fix(#913): guard top-level Claude Code plan-phase against role collapse by @trek-e in #915
- fix(#916): deterministic phase-complete subprocess in regression tests by @trek-e in #917
- fix(#925): context monitor echoes the invoking hook event name by @trek-e in #927
- fix(#921,#922): orchestrators must not fork; plan-phase Agent gate is attempt-based by @trek-e in #926
- fix(#924): revert Claude to flat skill layout so concrete skills are discoverable by @trek-e in #928
- fix(#929): cmdSkillManifest discovers nested concrete skills by @trek-e in #933
- fix(#935): install changeset CLI so /gsd-update changelog preview works by @trek-e in #938
- fix(#936): run plan-phase inline in convergence; guard against nested spawner wraps by @trek-e in #939
- fix(#934): reapply verifier handles missing pristine baseline post-rename by @trek-e in #937
- fix(#941): track managed-hooks-registry.cjs in file manifest by @trek-e in #953
- fix(#948): guard STATE.md no-op writes; preserve milestone_name/stopped_at (closes #944) by @trek-e in #952
- fix(#950): emit status: complete in quick-task SUMMARY frontmatter by @trek-e in #951
- fix(#947): restore gsd- prefix on Hermes skills for canonical dispatch by @trek-e in #955
- fix(#851): correct Codex quick adapter for generic multi_agent_v1 schema by @trek-e in #958
- fix(#970): ratchet --update drift repair + inherited-drift guidance by @Solvely-Colin in #971
- fix(#978): parse --force in milestone complete dispatcher so the guard's documented override works by @trek-e in #982
- fix(#965): emit structured json error for unexpected handler throws under --json-errors by @trek-e in #987
- fix(#973): add Edit to gsd-planner tools and forbid whole-file Write of ROADMAP.md by @trek-e in #989
- fix(#976): detect command+args (wrapped) hook registrations in installer presence checks by @trek-e in #994
- fix(#974): error on graphify --budget with missing/non-numeric value instead of silent NaN no-op by @trek-e in #986
- fix(#967): make verify key-links docs author-strict (from:/to: are file paths; symbols go in via:) by @trek-e in #990
- fix(#977): map ephemeral fnm multishell execPath to a stable fnm alias in normalizeNodePath by @trek-e in #992
- fix(codex): avoid partial model effort pinning by @radioflyer28 in #842
- fix(#983): rewrite bare .claude paths in Trae/Windsurf converters (Codex/Cline parity) by @trek-e in #995
- fix(#1001): make bug-969 hardening tests hermetic + move build tsbuildinfo out of shipped tree (regression from #996) by @trek-e in #1002
- fix(#991): inject configured agent_skills into code-review family subagents by @trek-e in #1005
- fix(#725): route Codex gsd-tools calls through shim by @jeremymcs in #731
- fix(#724): block convergence on actionable review findings by @jeremymcs in #728
- fix(#1006): rc CHANGELOG preview crash on malformed changeset fragment + validate fragment content at the gate by @trek-e in #1007
- fix(#711): wire autonomous convergence flag by @jeremymcs in #729
- fix(#1008): tolerate EAGAIN + short writes in io output()/error() by @davesienkowski in #1009
- fix(#1004): detect http-route hook registrations in installer presence check by @trek-e in #1032
- fix(#1000): align gsd-intel-updater output to canonical intel filenames by @trek-e in #1037
- fix(#1013): resolve worktree.baseRef from user/global settings cascade by @trek-e in #1038
- fix(#222): orchestrator self-heal when synthesizer returns SUMMARY.md inline by @trek-e in #1042
- fix(#1012): invoke fallow with its real CLI and wire the report normalizer by @trek-e in #1044
- fix(#1041): route all source agents through the canonical multi-runtime gsd-tools resolver by @trek-e in https://github.com/open-gsd/gsd-core/pull/1045
- fix(#1034): correct stale intel.cts comments to canonical INTEL_FILES names by @trek-e in https://github.com/open-gsd/gsd-core/pull/1036
- fix(#779): correct stale model-catalog model IDs verified against live providers by @trek-e in https://github.com/open-gsd/gsd-core/pull/1047
- fix(#1051): force-exit + per-chunk timeout for the windows full-test lane; close leaked test handles by @trek-e in https://github.com/open-gsd/gsd-core/pull/1054
- fix(#1070): recognize "Complete ✓" terminal status in planned-phase transition by @trek-e in https://github.com/open-gsd/gsd-core/pull/1078
- fix(#1058): cross-reference install manifest in validate agents to catch .md/.toml pair drift by @trek-e in https://github.com/open-gsd/gsd-core/pull/1079
- fix(#381): make gsd_run launcher reachable in fresh-shell-per-block runtimes by @trek-e in https://github.com/open-gsd/gsd-core/pull/1084
- fix(#1091): thread install scope into skill converters so local Antigravity/Copilot installs use workspace paths by @trek-e in https://github.com/open-gsd/gsd-core/pull/1092
- fix(#1103): preserve newline before Plans: header in roadmap.annotate-dependencies by @trek-e in https://github.com/open-gsd/gsd-core/pull/1111
- fix(#1101): record-session updates ## Session Continuity in place, no duplicate block by @trek-e in https://github.com/open-gsd/gsd-core/pull/1113
- fix(#1114): write-profile resolves the active runtime config home for USER-PROFILE.md by @trek-e in https://github.com/open-gsd/gsd-core/pull/1119
- fix(#1107): progress consults verification.status before reporting a phase complete by @trek-e in https://github.com/open-gsd/gsd-core/pull/1116
- fix(#1115): capability-probe codex hook-trust bypass flag in /gsd:review; fail loud on empty output by @trek-e in https://github.com/open-gsd/gsd-core/pull/1122
- fix(#1098): guard generate-claude-md against clobbering; redirect default to .claude/CLAUDE.md by @trek-e in https://github.com/open-gsd/gsd-core/pull/1118
- fix: route nested sub_repos by longest prefix, not first array-order match (#391) by @trek-e in https://github.com/open-gsd/gsd-core/pull/1130
- fix(#1133): honor model_policy on the claude runtime (forward-port to next) by @trek-e in https://github.com/open-gsd/gsd-core/pull/1144
- fix(#1140): implement state add-roadmap-evolution CJS handler by @trek-e in https://github.com/open-gsd/gsd-core/pull/1148
- fix(#1151): drive codex sandbox_mode emission from runtime descriptor sandboxTier axis by @trek-e in https://github.com/open-gsd/gsd-core/pull/1152
- fix(#1161): make phase complete idempotent for roadmap completion dates by @trek-e in https://github.com/open-gsd/gsd-core/pull/1177
- fix(#1156): support table-format STATE.md and insert missing roadmap plan rows by @trek-e in https://github.com/open-gsd/gsd-core/pull/1172
- fix(#1145): implement query user-story.validate handler by @trek-e in https://github.com/open-gsd/gsd-core/pull/1193
- fix: recover silently-excluded test dirs + test-architecture audit hardening by @trek-e in https://github.com/open-gsd/gsd-core/pull/1195
- fix(#1159): phase complete ignores historical/deferred requirement metadata by @trek-e in https://github.com/open-gsd/gsd-core/pull/1197
- fix(#1196): wire discuss loop step for capability hooks by @trek-e in https://github.com/open-gsd/gsd-core/pull/1199
- fix(#1146): single base-branch resolver across forking workflows by @trek-e in https://github.com/open-gsd/gsd-core/pull/1198
- fix(#1160): resolve capability surface from installed skill layouts by @trek-e in https://github.com/open-gsd/gsd-core/pull/1206
- fix(#997): ensure canonical ~/.claude/gsd-core path for plugin installs by @trek-e in https://github.com/open-gsd/gsd-core/pull/1207
- fix(#1186): guard hotfix version regex against leading zeros (ADR-218) by @trek-e in https://github.com/open-gsd/gsd-core/pull/1214
- fix(#1194): correct inverted statusline auto-compact buffer math by @trek-e in https://github.com/open-gsd/gsd-core/pull/1211
- fix(#1205): roadmapper applies phase_id_convention to generated phase IDs by @trek-e in https://github.com/open-gsd/gsd-core/pull/1215
- fix(#1202): make verify key-links wave-aware for planned future files by @trek-e in https://github.com/open-gsd/gsd-core/pull/1219
- fix(#1203): gate free-form ROADMAP deprecation warning on phase_id_convention by @trek-e in https://github.com/open-gsd/gsd-core/pull/1218
- fix(#1182): extract agent converters + tool-name tables into conversion module by @trek-e in https://github.com/open-gsd/gsd-core/pull/1220
- fix(#1224): accept --pr 0 placeholder at changeset creation by @trek-e in https://github.com/open-gsd/gsd-core/pull/1231
- fix(#1217): bound acquireStateLock retries on recoverable errno (no busy-spin) by @trek-e in https://github.com/open-gsd/gsd-core/pull/1236
- fix(#1223): install scripts/fix-slash-commands.cjs so gsd-tools loads by @trek-e in https://github.com/open-gsd/gsd-core/pull/1240
- fix(#1238): keep node resolvable in bug-891 PATH isolation (home-fallback subtests false-fail when node co-locates with global gsd-tools) by @trek-e in https://github.com/open-gsd/gsd-core/pull/1247
- fix(#1229): count bullet-only phases so phase.add stops reusing an existing phase number by @trek-e in https://github.com/open-gsd/gsd-core/pull/1249
- fix(#1230): preserve frontmatter status/stopped_at when a state write doesn't change the body source by @trek-e in https://github.com/open-gsd/gsd-core/pull/1252
- fix(#1255): advance frontmatter status for pipe-table STATE.md on begin/complete-phase by @trek-e in https://github.com/open-gsd/gsd-core/pull/1256
- fix(#1257): update pipe-table Status/Phase/Plan cells in planned-phase + begin-phase by @trek-e in https://github.com/open-gsd/gsd-core/pull/1260
- fix(#1274): bump ws to ^8.21.0 to clear advisory GHSA-96hv-2xvq-fx4p by @trek-e in https://github.com/open-gsd/gsd-core/pull/1275
- fix(#1284): grant mcp__perplexity__* to researcher agents + dispatch-table parity guard by @trek-e in https://github.com/open-gsd/gsd-core/pull/1288
- fix(#1296): align config docs/prompts/schema with consumers by @trek-e in https://github.com/open-gsd/gsd-core/pull/1299
New Contributors
- @viktorplus made their first contribution in #743
- @radioflyer28 made their first contribution in #842
- @davesienkowski made their first contribution in #1009
Full Changelog: v1.3.1...v1.5.0-rc.5