Install
npm i @opengsd/gsd-core@1.2.0
# or
npm i @opengsd/gsd-core@latestWhat's Changed
Feature
- feat(113): detect javascript:/data:/userinfo/token-in-query in markdown links by @trek-e in #133
- feat(115): secret-scan exclusion governance + --strict reduced-scan mode by @trek-e in #134
- feat(114): npm dependency integrity gate (npm ls invalid/extraneous) by @trek-e in #135
- feat(117): reproducible npm environment bootstrap + check-env validator by @trek-e in #136
- feat(hub): drop mode/sdkLoader/SdkDispatchFailed (#175) by @trek-e in #220
- feat(observability): add DispatchLogger seam — ADR-0174 SDK retirement Phase 1.3 (#177) by @trek-e in #223
- feat(observability): propagate parentTraceId on DispatchEvent — ADR-0174 SDK retirement Phase 1.4 (#178) by @trek-e in #225
- feat: deepen runtime name policy seam by @trek-e in #296
- feat: deepen workstream name policy seam by @trek-e in #292
- feat: stabilize workstream inventory ordering by @trek-e in #294
- feat: remove retired SDK command-contract drift from phase routing by @trek-e in #302
- feat(#443): unified cross-provider effort controls + fast-mode-aware routing by @trek-e in #463
- feat(#498): single Package Identity seam for /gsd:update + fix runtime undefined-name bug by @trek-e in #499
- feat(#22): plan-vs-codebase drift guard (source-grounded reviewer + intel surface) by @trek-e in #487
Enhancement
- chore: add concurrency block to 11 PR workflows by @trek-e in #141
- docs(118): org-level security baseline RFC (draft) by @trek-e in #137
- docs(2): clarify installer is required for cross-runtime compatibility by @trek-e in #144
- enh(#142): centralize runtime alias canonicalization seam by @trek-e in #143
- chore: invalidate bug-2543 outdated namespace invariant + document /gsd- migration in CONTEXT.md by @trek-e in #164
- chore: enforce sdk/dist freshness in gen-*.mjs + add staleness guard helper by @trek-e in #169
- chore: codify session anti-patterns into skill + CONTEXT.md (after 2026-05-23 PR campaign) by @trek-e in #172
- docs(adr): ADR-0174 — retire @opengsd/gsd-sdk package boundary by @trek-e in #198
- chore(ci): adopt npm Trusted Publishers (OIDC) for release workflow by @trek-e in #208
- docs(#209): README continuity + release communications update by @trek-e in #210
- refactor(hub): tighten Result typed payload — ADR-0174 SDK retirement Phase 1.2 (#176) by @trek-e in #221
- docs(227): ADR on input-validation checking semantic shape, not just type by @trek-e in #228
- chore: introduce
nextintegration branch (Phase 1 — additive) by @trek-e in #231 - chore: enable next-branch automation (Phase 2 flips) by @trek-e in #232
- refactor(#179): migrate Configuration Module to sdk/src/config by @trek-e in #244
- refactor(#180): migrate STATE.md Document Module to sdk/src/state by @trek-e in #249
- refactor(#181): migrate Workstream Inventory Builder to sdk/src/workstream by @trek-e in #250
- refactor(#182): migrate project-root resolution module to sdk/src/runtime by @trek-e in #252
- refactor(#183): migrate runtime name policy module to sdk/src/runtime by @trek-e in #253
- refactor(#184): migrate init composer handlers to sdk/src/handlers/init by @trek-e in #254
- refactor(#185): migrate hub, errors, and manifest to canonical src seams by @trek-e in #255
- refactor(#186): split per-family handler maps into sdk/src/handlers by @trek-e in #256
- docs(#15): ADR for cross-AI convergence flags in existing orchestration by @trek-e in #242
- chore(#187): delete all *-parity.test.cjs files by @trek-e in #263
- build(#188): retire sdk generator scripts and freshness checks by @trek-e in #264
- refactor(#189): retire generated CJS module artifacts by @trek-e in #266
- refactor(#190): collapse bridge and remove synckit runtime seam by @trek-e in #267
- chore(#191): retire @opengsd/gsd-sdk package seam by @trek-e in #268
- docs(#193): update CONTEXT glossary for single-runtime seams by @trek-e in #270
- docs(#194): remove sdk programmatic sections from core docs by @trek-e in #271
- docs(#195): migrate workflow markdown from gsd-sdk query to gsd-tools by @trek-e in #272
- docs(#196): align localized docs with sdk retirement wording by @trek-e in #273
- test: add generator freshness reliability module by @trek-e in #337
- test: add cross-platform test run module by @trek-e in #335
- test: add typed failure classification module by @trek-e in #333
- test: add process-state isolation module for reliability by @trek-e in #331
- test: deepen fixture module v2 for reliability by @trek-e in #329
- refactor(#287): deepen active workstream pointer store seam by @trek-e in #288
- refactor: remove stale SDK router shim wrappers by @trek-e in #298
- refactor: deepen active workstream resolution context by @trek-e in #300
- docs: update CONTRIBUTING local test-runner guidance by @trek-e in #359
- ci: run affected tests in PR workflow lanes by @trek-e in #366
- ci: supersede #367 with combined tiered PR pipeline redesign by @trek-e in #369
- perf(#307): use head-index queue for phase dependency BFS (O(V^2) -> O(V+E)) by @trek-e in #383
- perf(#305): single-pass max-by-mtime for statusline todo lookup by @trek-e in #385
- perf(#306): build learnings dedupe index once per bulk import by @trek-e in #386
- ci(#310): scope release and hotfix gates to unit coverage by @trek-e in #388
- test(#382): make graphify-auto-update hook tests deterministic on Docker by @trek-e in #389
- perf(#311): index subrepo routing by first path segment by @trek-e in #390
- perf(#312): index argv once in parseNamedArgs by @trek-e in #392
- perf(#313): dedupe intel export extraction with a Set by @trek-e in #393
- perf(#314): index roadmap plan lookups by id (O(lines×plans) → O(lines+plans)) by @trek-e in #396
- perf(#315): memoize subrepo detection within loadConfig (3 scans → 1) by @trek-e in #398
- perf(#316): hoist state-lock sleep buffer out of retry loop by @trek-e in #399
- perf(#317): collapse redundant existsSync+readFileSync in context-monitor hook by @trek-e in #400
- ci(#318): drop runtime npm self-upgrade from release lanes by @trek-e in #401
- ci(#319): shallow checkout for docs/changeset lint workflows by @trek-e in #402
- perf(#320): hoist By-Phase state table regex to module scope by @trek-e in #403
- docs(#415): ADR — prevent stale-base reintroduction of retired runtime tokens by @trek-e in #417
- test(#432): make perf-316/perf-407 lock-race tests deterministic by @trek-e in #450
- docs(tests): TESTING-STANDARDS.md + test-rigor architecture ADRs by @trek-e in #458
- chore(tests): adopt ESLint as the single lint harness; retire homegrown regex lint scripts by @trek-e in #460
- test(tests): antagonistic tier — fast-check property tests + Stryker mutation testing (PR-gated) by @trek-e in #461
- refactor(tests): retire output-grep & source-grep via typed surfaces (finish #2974) by @trek-e in #462
- enh(#466): refresh opus-tier model IDs to current GA (Opus 4.8 / codex gpt-5.5) by @trek-e in #467
- chore(tests): clear residual warn-level lint in effort test files by @trek-e in #470
- docs(#23): document changeset extract CLI contract (exit codes, output shape) by @trek-e in #479
- docs(#22): ADR — plan-vs-codebase drift guard (defaults + resolver seam) by @trek-e in #484
- ci(#483): transitive-dependency affected-test selection + widen backstop by @trek-e in #485
- chore(deps): bump tmp from 0.0.33 to removed in the npm_and_yarn group across 1 directory by @dependabot[bot] in #497
- chore(#516): single-source the package name from package.json by @trek-e in #517
- refactor: remove stale Source: sdk/src generated-file banners from bin/lib/*.cjs by @trek-e in #510
- chore(#507): retire dead sdk/ references from CONTEXT.md by @trek-e in #508
- chore(#518): rename npm package + bin to @opengsd/gsd-core by @trek-e in #519
- chore(#191): retire the gsd-sdk shim — route everything at gsd-tools by @trek-e in #522
Fix
- fix(3785): case-insensitive depends_on resolution in phase resolver by @trek-e in #88
- fix(ci): use GETSHITDONEREDUXNPMTOKEN secret in release workflows by @trek-e in #129
- fix(ci): escape colons in echo strings in workflow yaml by @trek-e in #125
- fix(#131): isolate HOME for release-tarball-smoke (before() + runSmoke A-F) by @trek-e in #139
- fix(116): locale-safe base64-scan with portable timeout and partial-scan signaling by @trek-e in #132
- fix(ci): harden test workflow git auth on github-hosted runners by @trek-e in #153
- fix(3): milestone.complete header dup, bullet leakage, one-liner noise by @trek-e in #146
- fix(#21): add YAML frontmatter to STATE.md template by @trek-e in #151
- fix(ci): pin actions/checkout@v4 on Windows to bypass v6 includeIf auth bug by @trek-e in #162
- fix(6): retire validate.ts/verify.cjs cooperating-sibling, fix W007/phaseVariants/W006 drift via generator by @trek-e in #156
- fix(26): retire validate.ts/verify.cjs cooperating-sibling for W005/W006-archived/I001 via generator (stacks on #156) by @trek-e in #158
- fix(5): decision-coverage gate parses XML tag bodies for D-NN citations by @trek-e in #155
- fix(7): raise concurrency-safety roadmap-analyze budget to 5000ms (Mac flake mitigation) by @trek-e in #157
- fix(#14): wire --auto flag through progress→next handoff by @trek-e in #148
- fix(4): retire cooperating-sibling for phase.*, introduce generator + I/O adapter, fix cmdPhaseComplete by @trek-e in #154
- fix(ci): reduce Windows test concurrency 4→2 to prevent synckit worker exhaustion on Node 24 by @trek-e in #173
- fix(#105): skip strategy-branch auto-switch when use_worktrees=false by @trek-e in #150
- fix(ci): raise Node heap to 6144 MB in release finalize job by @trek-e in #200
- fix(ci): reference NPM publish secret as GETSHITDONEREDUXNPMTOKEN by @trek-e in #206
- fix(release): reject leading-zero versions and pre-check npm before publish by @trek-e in #219
- fix(#33): add regression test for model_profile adaptive option by @trek-e in #149
- fix(#166): omit bash.exe wrapper for windows claude sh hooks by @trek-e in #203
- fix(#170): migrate workflow fallback hints to @opengsd package by @trek-e in #204
- fix(#213): support antigravity 2.x config directory split by @trek-e in #217
- fix(#167): support query meta-command in gsd-tools by @trek-e in #202
- fix(#224): return byte counts for --pick stdout capture by @trek-e in #226
- fix: bring next-branch automation flag flips to main by @trek-e in #234
- fix(critical): make hotfix + auto-branch next-aware (Phase 3) by @trek-e in #236
- fix(10): consolidate semver comparison policy by @trek-e in #237
- fix(11): detect cross-name hand-sync pairs from allowlist by @trek-e in #238
- fix(13): emit raw scalar strings for sdk --pick by @trek-e in #239
- fix(#222): enforce synthesizer write-only SUMMARY contract by @trek-e in #240
- fix(#16): renumber canonical phases above 999 on phase remove by @trek-e in #241
- fix(#17): cap AskUserQuestion options at 4 across workflows by @trek-e in #243
- fix: avoid Windows current-timestamp crash by bypassing SDK bridge by @trek-e in #258
- fix(#192): retire sdk release pipeline and align smoke/test seams by @trek-e in #269
- fix(issue): bug: worktree executor force-adds gitignored .planning/SUMMARY.md into worktree branch (regression of the skipped_gitignored SDK contract) by @Solvely-Colin in #265
- fix(#303): deepen command routing seams and alias parity guard by @trek-e in #304
- fix(#229): normalize verify-reapply hook-version substitution by @trek-e in #282
- fix(#275): align decision coverage gate with CLI output shape by @trek-e in #283
- fix(#278): include codex toml roles in agent install checks by @trek-e in #284
- fix(#279): add codex Agent mapping and deferred discovery guidance by @trek-e in #285
- fix(#280): anchor execute-phase files_to_read to project root by @trek-e in #286
- fix(#321): replace JSON config default clone with structuredClone by @trek-e in #324
- fix(#322): normalize surface manifest input shapes by @trek-e in #325
- fix(#341): restore next-based test gate regressions by @trek-e in #342
- fix: remove retired SDK steps from test workflows by @trek-e in #348
- fix: stabilize windows test assertion and pin windows-2025 labels by @trek-e in #349
- fix: opt test workflow JS actions into Node 24 by @trek-e in #350
- fix: remove legacy security contacts and org references by @trek-e in #351
- fix: sync lockfile bin metadata by @Solvely-Colin in #357
- fix: accept json input for state patch by @Solvely-Colin in #356
- fix: replace removed gsd-sdk prompt references by @Solvely-Colin in #355
- fix: restore sdk query families in gsd-tools by @Solvely-Colin in #353
- fix: resolve installed gsd-tools in workflows by @Solvely-Colin in #354
- fix(#372): harden bug-3668 resolver test for Windows/CI (non-login shell + CRLF) by @trek-e in #374
- fix(#371): invoke installed bin via shell for Windows .cmd shims in release-tarball-smoke by @trek-e in #375
- fix(#373): replace unquoted $GSD_SDK with space-safe gsd_run launcher by @trek-e in #379
- fix(#145): extractCurrentMilestone selects active sub-milestone over closed sibling by @trek-e in #380
- fix(#370): scope affected-tests runner to PR suites, exclude push-only install/slow by @trek-e in #395
- fix(#130): skip opencode permission config under GSD_TEST_MODE by @trek-e in #404
- fix(#160): resume partially-executed phases before current_phase routing by @trek-e in #406
- fix(#138): add --default true to nyquist_validation config-get in validate-phase/audit-milestone by @trek-e in #405
- fix(#411): restore gsd_run launcher in next.md and align policy-160 test by @trek-e in #412
- fix(#378): poll scoped package name in update check by @trek-e in #414
- fix(#308): bound websearch fetch with timeout and retry by @trek-e in #387
- fix(#407): hoist sleep SharedArrayBuffer out of withPlanningLock retry loop by @trek-e in #418
- fix(#416): return null when active milestone has no archive; tighten Milestone: regex by @trek-e in #419
- fix(#408): align ci-test-scope smoke handling with #395 changeset (drop unconditional injection; unit fallback) by @trek-e in #420
- fix(#410): guard ~/.gsd/defaults.json write with GSD_TEST_MODE (#130 sibling) by @trek-e in #421
- fix(#397): preserve executor-authored STATE.md fields (template-default-only replacement) by @trek-e in #422
- fix(#376): rewrite /gsd: → /gsd- in Claude-installed hook .js files by @trek-e in #424
- fix(#338): write local Claude install hook wiring to settings.local.json (+ one-shot migration) by @trek-e in #426
- fix(#211): add ~/.claude/get-shit-done/bin fallback to gsd_run launcher (closes #394) by @trek-e in #427
- fix(#431): enforce H1 shell policy (linux=bash, macOS=zsh, windows=pwsh) across PR + release gates by @trek-e in #434
- fix(#437,#439,#440): restore defaults.run.shell + 'zsh {0}' format + Windows .cmd shell:true (PR #434 fallout) by @trek-e in #438
- fix(#445): upgrade Windows checkout v4→v5.0.1 + audit other @v4 floats (silence Node 20 deprecation warnings) by @trek-e in #446
- fix(tests): deterministic concurrency via injectable clock seam; delete flaky racing tests by @trek-e in #459
- fix(tests): make perf-407 lock-buffer-alloc test deterministic (remove real-worker race) by @trek-e in #472
- fix(#478): delete wall-clock elapsed-time assertions per ADR 456 (keep correctness invariants) by @trek-e in #480
- fix(#481): remove residual dead silent-expiry poll helper + Atomics.wait in bug-1974 by @trek-e in #482
- fix(#442): --config-dir= no longer truncates paths containing equals signs by @trek-e in #475
- fix(#444): resolver preamble checks repo-local .claude install path by @trek-e in #476
- fix(#489): stop docs-parity tokenizer matching repo path open-gsd/gsd-core as a command by @trek-e in #491
- fix(#490): restore bounded Windows EBUSY cleanup retry in bug-1974 afterEach by @trek-e in #493
- fix(#474): deterministic STATE dates via deepened clock seam (nowIso/today + GSD_NOW_MS adapter) by @trek-e in #477
- fix(#494): ci-test-scope selects the checks a diff can break (tests→full matrix, docs→docs-parity) by @trek-e in #495
- fix(#503): detect local Antigravity (.agent) installs in /gsd:update by @trek-e in #512
- fix(#501): stop flat "## Phase Details" leaking phases into active milestone by @trek-e in #513
- fix(#500): state planned-phase corrupts STATE.md milestone progress.* counters by @trek-e in #514
- fix(#505): remove dead SDK-shim verification subsystem from bin/install.js by @trek-e in #515
- fix(#520): register package-identity.cjs in inventory (regression from #516) by @trek-e in #521
- fix(#464): make phase completion planning writes transactional by @Solvely-Colin in #465
New Contributors
- @Solvely-Colin made their first contribution in #265
- @dependabot[bot] made their first contribution in #497
Full Changelog: v1.0.0...v1.2.0