github open-gsd/gsd-core v1.2.0

4 hours ago

Install

npm i @opengsd/gsd-core@1.2.0
# or
npm i @opengsd/gsd-core@latest

What'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 next integration 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

Full Changelog: v1.0.0...v1.2.0

Don't miss a new gsd-core release

NewReleases is sending notifications on new releases.