refactor(#2724): delete the committed golden fixtures and size baselines (#2767)

* test(#2724): delete golden-install-parity fixtures, test, and generator

Removes the 19 committed path->hash manifests, the two per-file size
baselines, tests/golden-install-parity.test.cjs, and
scripts/gen-golden-install-parity-zcode.cjs. These were pure functions
of the source tree (ADR-2719); the differential attribution check
(tests/emitted-attribution.test.cjs + tests/emitted-provenance.test.cjs)
is now the sole gate for emitted-artifact propagation.

tests/fixtures/install-tree/*.json and tests/golden-install-tree.test.cjs
are unchanged (ADR-2719 section 7 exception).

Follow-up commits fix the resulting bookkeeping: scripts/ci-test-scope.cjs's
existence guard, .gitattributes, package.json scripts, the emitted-provenance
totality guard's IO, the differential check's baseline acquisition, CI
wiring to publish/restore the baseline artifact, and docs.

* refactor(#2724): make the differential attribution check self-sufficient

Three fixes required to delete the golden fixtures without breaking CI:

- scripts/ci-test-scope.cjs: remove tests/golden-install-parity.test.cjs
  from the three rules that named it. #2759's missingRuleTestFiles guard
  hard-throws at module load if a rule names a test file absent from
  disk, which would break the changes job on every PR the moment the
  fixture-deletion commit landed.

- tests/helpers/emitted-provenance.cjs: loadManifests() read the
  committed golden fixture directory. With that directory deleted at
  every future ref, this would throw at module load forever, taking
  the Phase 2 totality guard down with it. Rebuilt from real installer
  spawns (MANIFEST_FAMILIES + runMinimalInstall + buildParityManifest),
  the same shape emitted-runtime.cjs's currentManifests() already uses.

- tests/emitted-attribution.test.cjs / tests/helpers/emitted-runtime.cjs:
  the real-tree test's baseline acquisition swaps from
  baselineManifestsAtRef(base) (git show at a ref that no longer carries
  fixtures) to resolveBaseline()'s documented precedence: env, then the
  on-disk cache, then an in-job build. The build fallback
  (buildBaselineAtRef, new) checks out base into a throwaway git
  worktree and runs the new scripts/gen-emitted-baseline.cjs there --
  no npm ci needed, since bin/install.js and the test helper shells are
  Node-builtins-only. That script also publishes the baseline artifact
  from CI's push-to-next job (wired in a follow-up commit).

* refactor(#2724): retire the merge-driver bridge and per-file size baselines

The Phase 1 bridge (#2721) is retired now that the artifacts it guarded
are deleted: scripts/git-merge-regen-driver.cjs, its test, and the
'setup:merge-driver' npm script are removed, and the .gitattributes
merge=gsd-regen/linguist-generated block for the three deleted-path
globs is dropped. tests/fixtures/install-tree/*.json keeps its normal
merge behavior, unchanged (ADR-2719 section 7).

scripts/update-size-baseline.cjs and its test are removed: their sole
purpose was regenerating tests/workflow-size-baseline.json and
tests/agent-size-baseline.json, both deleted. The 'size:baseline' npm
script and its step in 'regen:derived' go with it. The per-file
baseline describe blocks in tests/workflow-size-budget.test.cjs and
tests/agent-size-budget.test.cjs are removed for the same reason; the
independent loose-tier hard caps are untouched. The differential
attribution check's size ratchet (tests/emitted-diff.cjs, already
shipped in #2723) is the replacement anti-creep mechanism.

'npm run gen:golden' is replaced by 'npm run gen:install-tree', which
keeps regenerating tests/fixtures/install-tree/*.json (the one artifact
family ADR-2719 section 7 keeps committed); tests/golden-install-tree.test.cjs's
error messages point at the new command name.

tests/golden-parity-single-source.test.cjs's anti-divergence guard
(#2266) is retargeted from the two deleted golden-parity consumers to
their two replacements (tests/helpers/emitted-runtime.cjs and
tests/helpers/emitted-provenance.cjs), which import buildParityManifest
the same way — the divergence risk the guard exists for is unchanged.

Also wires CI: a new publish-emitted-baseline job runs
scripts/gen-emitted-baseline.cjs after a push to next and caches the
result keyed on the sha; the test and test-full jobs restore that cache
on pull_request events, keyed on the PR's base sha, and export
GSD_EMITTED_BASELINE for tests/emitted-attribution.test.cjs's real-tree
test to pick up.

* docs(#2724): flip ADR-2719 to Accepted and update contributor docs

Status: Proposed -> Accepted. Regenerated docs/adr/README.md index.

CONTRIBUTING.md, docs/TESTING-SUITES.md, and CONTEXT.md (RULESET.
EMITTED_ATTRIBUTION, RULESET.WORKFLOW_SIZE_BUDGET, RULESET.
AGENT_SIZE_BUDGET, and the Emitted Artifact Provenance glossary entry)
no longer point at the deleted golden-install-parity fixtures, size
baselines, gen:golden, UPDATE_GOLDEN, or the setup:merge-driver /
git-merge-regen-driver.cjs bridge. Editing shipped content now
requires zero manual fixture regeneration, documented against the
differential attribution check instead of the deleted commands.

* docs(#2724): add changeset for removed golden-parity commands

* fix(#2724): drop stale scripts/update-size-baseline.cjs glossary ref

check-glossary-refs.cjs verifies every backtick-wrapped scripts/*.cjs
token in CONTEXT.md resolves to a real file. The RULESET.
EMITTED_ATTRIBUTION rewrite named the deleted script inside backticks,
which the checker reads as a live reference, not historical prose.

* test(#2724): retarget ci-test-scope tests off the deleted golden test

tests/ci-test-scope.test.cjs asserted specific RULES entries select
tests/golden-install-parity.test.cjs, and that every rule selecting it
also selects both emitted gates. Both premises broke when the golden
test was deleted (#2724): the deleted filename never re-appears in
targeted_tests, and there was no longer a third file for the gates to
travel alongside. Retargeted the two selection describe blocks to
assert tests/emitted-provenance.test.cjs directly (the drift guard the
golden gate's rules were retargeted to), and simplified the third block
to assert the two emitted gates always travel together, without
reference to the golden filename.

* docs(#2724): repoint two contributor how-to guides at the differential check

Both guides told contributors to regenerate a baseline against
tests/golden-install-parity.test.cjs, which #2724 deletes. Repointed
at the differential attribution check (tests/emitted-attribution.test.cjs,
ADR-2719), which needs no manual regeneration step.

* fix(#2724): repair phase6-capstone-conformance's deleted-baseline read

An independent orthogonal review caught a real regression this branch
introduced into a test file the branch's diff never touched:
tests/phase6-capstone-conformance.test.cjs read
tests/workflow-size-baseline.json (deleted earlier in this branch) with
no fallback, so the whole suite would throw ENOENT the moment this
branch landed. The test's actual intent — prove the host-loop workflow
files are real, tracked, non-empty docs — is preserved by asserting the
live byte count via the same shared counter (scripts/workflow-size.cjs)
the size guards already use, instead of a committed snapshot.

Also, from the same review: a stale doc comment in
scripts/workflow-size.cjs still named the deleted
scripts/update-size-baseline.cjs as a consumer, and
buildBaselineAtRef's cleanup in tests/helpers/emitted-runtime.cjs left
two fs.rmSync calls unguarded against masking the primary result/error,
inconsistent with the try/catch already wrapping the git cleanup beside
them. Both fixed. A doc comment was added to baselineFamilyNamesAtRef
explaining why it (and its siblings) are kept despite having no
production caller post-cutover — they still answer real questions
about refs that predate the cutover.

* fix(#2724): repair three real regressions found by remote verification

1. tests/emitted-provenance.test.cjs's two hostile-input tests
   (non-object manifest, unreadable fixture) drove loadManifests(tmp)
   and monkeypatched fs.readFileSync, both premised on the deleted
   fixture-directory read this branch already replaced with real
   installer spawns -- the negative assertions silently stopped firing.
   loadManifests() now accepts injected {families, install, build,
   clean} (defaulting to production values), giving the tests a real
   seam to drive a bad build result and a build failure through the
   ACTUAL loader instead of a reimplementation, and added coverage that
   clean() still runs on both paths.

2. .github/workflows/test.yml's two 'Export GSD_EMITTED_BASELINE'
   steps hardcoded shell: bash, which is wrong on windows-latest (native
   pwsh) and on test-full's macos-latest legs (native zsh per that job's
   own matrix) -- the repo's H1 shell policy (tests/policy-shell-pinning
   .test.cjs) caught it. Replaced the inline bash script with
   scripts/ci-export-emitted-baseline-env.cjs, a plain Node script: a
   bare 'node <path>' command line has no shell-specific syntax, so it
   runs correctly under bash, zsh, and pwsh without a shell override.

tests/phase6-capstone-conformance.test.cjs's deleted-baseline read
(caught by the same remote run, at a commit prior to this one) was
already fixed in d0c3b1242 and is not touched here; verified still
passing after these changes.

* fix(#2724): revive ADR-1610's new-file size cap inside the differential

An isolated review caught a real regression: deleting
tests/workflow-size-baseline.json silently dropped NEW_FILE_CAP
(ADR-1610 Decision point 3, the Codex project_doc_max_bytes anchor)
with no successor. tests/helpers/emitted-diff.cjs's size ratchet
already 'continue's past any file absent from sizeBaseline -- exactly
the files this cap exists to bound -- so a brand-new workflow file
sized 32,769-40,960 bytes passed CI clean and shipped, then risked
silent truncation at the Codex anchor at runtime. ADR-1610 is Accepted
and never referenced anywhere in this branch.

Fix: NEW_FILE_CAP=32768 revived inside emitted-diff.cjs's own
size-ratchet loop, keyed off the SAME hasOwnProperty(sizeBaseline,
name) signal the growth check already computes -- 'new' is exactly
'present in sizeCurrent, absent from sizeBaseline'. Not ack-able,
matching the tier hard caps it sits beside: the fix is extraction, not
an acknowledgment entry. Documented, disclosed narrowing: the pure
differential module cannot see XL_WORKFLOWS/LARGE_WORKFLOWS tiering
(tests/workflow-size-budget.test.cjs's classification), so a
legitimately large new file must extract rather than tier in, one
release earlier than an existing file would need to. ADR-1610 itself is
left unamended -- this restores its decision rather than re-litigating
it.

Also fixes a stale comment plus a redundant real 19-installer-spawn
assertion left over from the pre-injection-seam version of
tests/emitted-provenance.test.cjs's build-failure test, and annotates
3 of 4 stale golden-fixture citations in
docs/reference/host-integration-capability-matrix.md as superseded
(the 4th is an accurate historical PR narrative, left alone).

* fix(#2724): repair three red CI defects on the golden-fixture cutover

Windows-only provenance false attribution (defect A): the `hooks-built`
provenance rule attributed `hooks/<name>.cmd` to itself. Those shims are
Windows-only installer output (ensureCodexHooksJsonSessionStart /
ensureCodexHooksJsonEvent, both in src/runtime-hooks-surface.cts) wrapping
the same-named `.js` hook — no `.cmd` file is ever tracked in the repo, so
the self-attribution resolved to a path that exists on no platform. Only
windows-latest ever emits the key, so this only failed there. Fixed by
special-casing `.cmd` inside the SAME `hooks-built` rule (not a dedicated
rule) — a dedicated rule would match zero paths, and therefore report as a
dead rule, on every non-Windows lane of the same totality guard. `sources`
already supported per-match functions; `transforms` is extended to support
the same shape so the attribution can vary by match within one rule.

Baseline bootstrap was structurally impossible (defect B): `buildBaselineAtRef`
ran `scripts/gen-emitted-baseline.cjs` from INSIDE the base-ref worktree, but
that script is new in this PR and therefore absent at any base ref that
predates it — every call failed closed with "Cannot find module". Fixed by
running the PR checkout's own generator against the worktree via a new `--dir`
parameter, decoupling "which copy of the script runs" from "which tree it
measures" (`currentManifests`/`currentSizes` gained a `repoRoot` override,
threaded down to `runMinimalInstall`'s new `installScript` override). This is
not just a bootstrap fix: a differential needs ONE measurement schema applied
to both sides, or the two stop being comparable the moment that schema
evolves — running each side's own copy would silently reintroduce that risk.
Verified locally end-to-end against real origin/next: resolves a valid
{version, sha, manifests, sizes} artifact with the correct sha and no leaked
worktree.

Changeset placeholder (defect C): `pr: 0` -> `pr: 2767`, which is what let
docs-lint evaluate the fragment for the first time; it already passes
(docs/TESTING-SUITES.md and friends already document the removed scripts).

Also fixed while in this file: an eslint no-unused-vars warning surfaced by
the changed lint run (unused `cleanup` import in
tests/emitted-provenance.test.cjs).

Added regression coverage for both A and B: a cross-platform spot-check that
drives the real hooks-built rule against `.cmd` keys directly (not through a
real Windows install), and a real-tree test that drives buildBaselineAtRef
against a base ref verified (via git cat-file) to lack the generator, both
skipping honestly rather than false-passing when their precondition does not
hold.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W5kQs6ZufZDySC6zDJfYP6

* fix(#2724): repair false .cmd byte-provenance and a permanently-skipping regression test

Two isolated-review findings on PR #2767:

- `hooks-built`'s `.cmd` branch attributed the Windows shim's bytes to the
  wrapped `hooks/<name>.js` script, asserting a byte-provenance link that
  does not exist — traced against buildCodexHookWindowsShimIR
  (src/runtime-hooks-surface.cts), only the script's NAME (a literal in that
  same file) flows into the .cmd bytes, never its content. Point `sources`
  at HOOKS_WINDOWS_SHIM_SRC instead, matching the code-derived convention
  used elsewhere in the table. Since `sources` is checked before
  `transforms` in the differential, the wrong mapping silently excused any
  .cmd byte movement caused by editing the wrapped .js file.

- The `buildBaselineAtRef` regression test skipped unless a resolvable base
  ref still lacked scripts/gen-emitted-baseline.cjs — true only until this
  PR merges, after which every base ref carries the file and the test skips
  forever with zero ongoing coverage. Rebuilt hermetically: synthesize the
  missing-generator condition in-place via git plumbing (a throwaway commit,
  child of HEAD, with just that one file removed from a scratch index),
  never touching the real working tree, HEAD, or index, and never depending
  on ambient history or remotes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W5kQs6ZufZDySC6zDJfYP6

* fix(#2724): tolerate the remote runner's dubious-ownership git mount in the emitted baseline path

The runner container mounts the repo at a path owned by a different uid than
the process running the suite, so git's dubious-ownership protection refuses
every git operation there. GitHub Actions never hits this because
actions/checkout registers the workspace as safe automatically; this
runner's container does not.

buildBaselineAtRef is the production build-fallback the sole remaining
emitted gate depends on (resolveBaseline's in-job-build leg), not just a
test helper, so the fix is in the shared git() wrapper (emitted-runtime.cjs)
that every caller — resolveChangedPaths, resolveBase, buildBaselineAtRef's
worktree add/remove/prune, and the hermetic regression test added in the
prior commit — funnels through, plus gen-emitted-baseline.cjs's own
rev-parse (now reusing that same wrapper instead of a second execFileSync,
so the fix has one source of truth). Each call declares -c
safe.directory=<the exact directory it already operates on>, never the *
wildcard.

Audited every other helper on this surface (emitted-diff.cjs,
emitted-baseline.cjs, install-shared.cjs) for the same gap: none of them
shell out to git at all.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W5kQs6ZufZDySC6zDJfYP6

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Tom Boucher
2026-07-28 15:41:43 -04:00
committed by GitHub
parent d04592de58
commit 1c1af70a4b
56 changed files with 1244 additions and 10805 deletions

View File

@@ -2,4 +2,4 @@
type: Added
pr: 2730
---
**`npm run regen:derived` regenerates every derived artifact in one command, and a `gsd-regen` merge driver ends hand-resolving the generated parity manifests** — the golden install-parity fixtures and the workflow/agent size baselines are pure functions of the source tree, so neither side of a merge conflict on them is ever correct. Run `npm run setup:merge-driver` once per clone and conflicts on those files resolve to your branch's copy with a one-line notice; `npm run regen:derived` then recomputes them, replacing seven separate invocations with one dependency-ordered command over twelve generators. (#2721)
**`npm run regen:derived` regenerates every derived artifact in one command** — replacing several separate invocations (`build`, `gen:registry`, `gen-adr-index`, `gen-capability-matrix`, `gen-inventory-manifest`, `sync-manifest-versions`, `gen:install-tree`) with one dependency-ordered command. (#2721)

View File

@@ -0,0 +1,5 @@
---
type: Removed
pr: 2767
---
**`npm run gen:golden`, `UPDATE_GOLDEN`, `npm run size:baseline`, and `npm run setup:merge-driver` are removed** — the committed golden-install-parity fixtures and the two per-file size baselines they regenerated are deleted. The differential attribution check (`tests/emitted-attribution.test.cjs`) is now the sole gate for both emitted-content propagation and workflow/agent size growth; editing shipped content requires zero manual fixture regeneration. `npm run regen:derived` and `npm run gen:install-tree` are unaffected. (#2724)

32
.gitattributes vendored
View File

@@ -11,25 +11,15 @@
*.ttf binary
*.pdf binary
# --- Emitted Artifact Provenance (#2721, ADR-2719 Phase 1) -------------------
# The `merge=gsd-regen` driver + linguist-generated block that used to live here
# (#2721, ADR-2719 Phase 1) covered tests/fixtures/golden-install-parity/*.json,
# tests/workflow-size-baseline.json, and tests/agent-size-baseline.json — all
# three deleted by #2724 (ADR-2719 Phase 4), which retired the bridge driver too.
# The differential attribution check (tests/emitted-attribution.test.cjs) is the
# sole gate now; it has no committed artifact to conflict on, so there is nothing
# left for a merge driver to resolve.
#
# These artifacts are pure functions of the source tree. Git can offer ours or
# theirs; both are wrong, because the only correct value is recomputed from the
# merged tree — so `merge=gsd-regen` keeps your branch's copy and tells you to
# run `npm run regen:derived`, instead of asking you to hand-merge 7,500 lines
# of hex. `linguist-generated` stops GitHub rendering them expanded in diffs.
#
# BRIDGE — DELETE THIS BLOCK IN #2724, which removes these files entirely.
# Register the driver in your clone with: npm run setup:merge-driver
#
# Declared by exact path, never by a `tests/*-size-baseline.json` glob: a glob
# would silently capture any future baseline that had not been reasoned about.
tests/fixtures/golden-install-parity/*.json merge=gsd-regen linguist-generated=true
tests/workflow-size-baseline.json merge=gsd-regen linguist-generated=true
tests/agent-size-baseline.json merge=gsd-regen linguist-generated=true
# tests/fixtures/install-tree/*.json is deliberately ABSENT from the block above.
# ADR-2719 §7 keeps it committed and normally-merged: it conflicts on 0 of 7, its
# diffs are readable, and it preserves "the installer stopped shipping X" as a
# hard absolute failure with no attribution reasoning involved. Capturing it here
# would silently convert that absolute into an auto-resolve.
# tests/fixtures/install-tree/*.json was, and remains, deliberately ABSENT from
# that block: ADR-2719 §7 keeps it committed and normally-merged (0 of 7
# conflicts, readable diffs, preserves "the installer stopped shipping X" as a
# hard absolute failure with no attribution reasoning involved).

View File

@@ -186,6 +186,24 @@ jobs:
- name: Dependency integrity gate
run: node scripts/check-npm-integrity.cjs
# #2724 (ADR-2719 §5): the differential attribution check's baseline is cached,
# not committed. This restores what the push-to-next job published, keyed on
# the PR's base sha — the "next sha the PR was merged with" the ADR requires.
# A miss is NOT a failure here: resolveBaseline() degrades to an in-job build.
- name: Restore emitted-baseline cache
if: github.event_name == 'pull_request'
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: .gsd-cache/emitted-baseline.json
key: emitted-baseline-${{ github.event.pull_request.base.sha }}
- name: Export GSD_EMITTED_BASELINE when the cache restored
if: github.event_name == 'pull_request'
# No `shell:` override — H1 shell policy requires each job's native shell
# (pwsh on Windows, zsh on macOS test-full, bash on Linux). A bare `node`
# invocation has no shell-specific syntax, so it is valid under all three.
run: node scripts/ci-export-emitted-baseline-env.cjs
- name: Prepare scoped test list
if: matrix.scope != 'full'
env:
@@ -411,6 +429,23 @@ jobs:
- name: Dependency integrity gate
run: node scripts/check-npm-integrity.cjs
# #2724 (ADR-2719 §5): restore the differential attribution check's cached
# baseline, keyed on the PR's base sha. A miss degrades to an in-job build
# rather than failing (resolveBaseline()'s documented precedence).
- name: Restore emitted-baseline cache
if: github.event_name == 'pull_request'
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: .gsd-cache/emitted-baseline.json
key: emitted-baseline-${{ github.event.pull_request.base.sha }}
- name: Export GSD_EMITTED_BASELINE when the cache restored
if: github.event_name == 'pull_request'
# No `shell:` override — H1 shell policy requires each job's native shell
# (pwsh on Windows, zsh on macOS test-full, bash on Linux). A bare `node`
# invocation has no shell-specific syntax, so it is valid under all three.
run: node scripts/ci-export-emitted-baseline-env.cjs
# The heavy unit suite is split across the 3 shards — each runs a
# deterministic cost-balanced third of the sorted unit-file list (#2472). The
# union of shards 1/3 + 2/3 + 3/3 is the full unit suite, so coverage is
@@ -496,3 +531,39 @@ jobs:
fi
echo "Required test gate passed."
# #2724 (ADR-2719 §5): publishes the differential attribution check's baseline
# artifact after `next` advances, keyed on the merge sha. PR lanes restore it
# (see the `test` and `test-full` jobs' "Restore emitted-baseline cache" steps),
# keyed on `pull_request.base.sha` — "the next sha the PR was merged with", the
# ADR's own phrasing. Not required by `required-tests`: a miss here degrades PR
# lanes to an in-job build (resolveBaseline()'s documented precedence) rather
# than failing them, so this job's own failure must not block `next`.
publish-emitted-baseline:
name: Publish emitted-baseline artifact
needs: [changes, test]
if: github.event_name == 'push' && github.ref == 'refs/heads/next' && needs.test.result == 'success'
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: true
token: ${{ github.token }}
- name: Set up Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24
- name: Install dependencies
run: npm ci
- name: Build emitted-baseline artifact
run: node scripts/gen-emitted-baseline.cjs --out .gsd-cache/emitted-baseline.json
- name: Publish baseline cache (keyed on this sha)
uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: .gsd-cache/emitted-baseline.json
key: emitted-baseline-${{ github.sha }}

File diff suppressed because one or more lines are too long

View File

@@ -763,27 +763,33 @@ npm run check:alias-drift
This verifies generated alias artifacts are in sync with manifest source-of-truth.
### Generated artifacts that conflict on every merge
### Editing shipped content (gsd-core/workflows, references, templates, contexts, agents/, commands/gsd/)
If your PR conflicts on `tests/fixtures/golden-install-parity/*.json`,
`tests/workflow-size-baseline.json`, or `tests/agent-size-baseline.json`, **do not
hand-resolve them.** They are pure functions of the source tree, so neither "ours"
nor "theirs" is correct — the only correct value is recomputed.
Editing the content of a copied shipped file — a `gsd-core/workflows/*.md`, an agent, a
command definition — requires **zero manual fixture regeneration**. There is no
committed path→hash manifest or per-file size baseline to update by hand; the
differential attribution check (`tests/emitted-attribution.test.cjs`, ADR-2719) computes
what your PR changed against `next` and requires every emitted-artifact hash that moved
to be attributable to your diff. If it is not, the check fails and names the paths.
Legitimate cases where emitted bytes move for a reason your diff cannot show directly —
a converter change, for example — go through `tests/emitted-drift-ack.json` (name the
path, say why); see `CONTEXT.md`'s `### Emitted Artifact Provenance` entry for the full
model. Growth in a `gsd-core/workflows/*.md` or `agents/gsd-*.md` file is reported with
its exact byte delta and needs the same acknowledgment; the outer tier hard caps in
`tests/workflow-size-budget.test.cjs` / `tests/agent-size-budget.test.cjs` are unaffected
and still apply.
`npm run regen:derived` still exists for the artifacts that ARE committed and derived —
`sync-manifest-versions`, the ADR index, the capability matrix, the inventory manifest,
the registry, and `tests/fixtures/install-tree/*.json` (`npm run gen:install-tree`, the
one fixture family ADR-2719 §7 keeps committed, because it conflicts on 0 of 7 and its
diffs are readable). Run it after a change to any of those, before committing:
```bash
npm run setup:merge-driver # once per clone: conflicts resolve to your copy
npm run regen:derived # then recompute, before committing
npm run regen:derived
```
`regen:derived` replaces the seven separate invocations this used to take (`npm run
build` plus six more), and runs them in dependency order — `gen:golden` last, because it
hashes installed output. It covers twelve generators: the eleven that produce committed
artifacts, plus `sync-manifest-versions`, which `npm run lint:generated-sync` also checks —
without it, the command that claims to regenerate everything could still leave that gate red.
Full guide, including what the driver deliberately does not do:
[docs/TESTING-SUITES.md](docs/TESTING-SUITES.md) → "the baselines or golden fixtures
conflict on merge".
Optional local pre-commit hook entry (Git-native):
```bash
@@ -909,16 +915,16 @@ gsd-core/
the canonical example (the discuss-phase/modes split, #717). New modes for
discuss-phase land in
workflows/discuss-phase/modes/<mode>.md.
Per-file sizes are pinned by a committed baseline
(tests/workflow-size-baseline.json) plus loose tier
hard caps, both in tests/workflow-size-budget.test.cjs.
If you legitimately grow or shrink a workflow file,
run `npm run size:baseline` to update the snapshot and
justify any growth in your PR (or extract content
lazily). The same guard covers agent files
(agents/gsd-*.md). Full how-to + reference in
docs/TESTING-SUITES.md (Workflow & agent size
budget); see issue #1074.
Per-file growth is caught by the differential
attribution check (tests/emitted-attribution.test.cjs,
ADR-2719) — it reports the exact byte delta and
requires an entry in tests/emitted-drift-ack.json,
no committed snapshot to regenerate. Loose tier
hard caps remain in tests/workflow-size-budget.test.cjs.
The same applies to agent files (agents/gsd-*.md,
tests/agent-size-budget.test.cjs). Full how-to +
reference in docs/TESTING-SUITES.md (Workflow &
agent size budget); see issue #1074.
references/ — Reference documentation (.md)
templates/ — File templates
agents/ — Agent definitions (.md) — CANONICAL SOURCE

View File

@@ -70,107 +70,69 @@ both ship in the installed runtime and are loaded into context — workflows on
every command, agents on every subagent dispatch — so their byte size is a real
cost. Two sibling guards (`tests/workflow-size-budget.test.cjs` and
`tests/agent-size-budget.test.cjs`) keep that cost from creeping up invisibly,
sharing one byte-counter (`measureMdFiles`) and one `npm run size:baseline`
command that regenerates **both** snapshots. Each is an **anti-creep ratchet**,
sibling to the regression-name ratchet above — three layers (workflows), ordered
from day-to-day to last-resort:
sharing one byte-counter (`measureMdFiles`). Growth is caught by two independent
layers:
| Layer | What it does | Where |
|---|---|---|
| **Per-file baseline** (primary) | Pins every workflow's *exact* current size in a committed snapshot. Any growth, shrink, add, or removal fails until the snapshot is regenerated — so sub-ceiling creep is caught by name and delta, not just at the tier's single largest file. | `tests/workflow-size-baseline.json` |
| **Loose tier hard caps** (backstop) | Absolute outer red lines per tier — `XL ≤ 98304`, `LARGE ≤ 61440`, `DEFAULT ≤ 40960` bytes. Unlike the old tighten-only ceiling, a cap is **never raised** when a file approaches it: crossing it means *extract*, not bump. | `XL/LARGE/DEFAULT_CAP` |
| **New-file cap** | A workflow not yet in the baseline must stay under `32768` bytes (the Codex `project_doc_max_bytes` anchor) unless explicitly tiered into `XL_WORKFLOWS`/`LARGE_WORKFLOWS` in the same PR. Keeps net-new orchestrators from being born oversized. | `NEW_FILE_CAP` |
| **Differential attribution size ratchet** (primary, #2724 / ADR-2719 §4) | The same computed-attribution check that replaced the golden-install-parity fixtures also reports growth in any `gsd-core/workflows/*.md` or `agents/gsd-*.md` file, with the exact byte delta, comparing PR HEAD against `next`. Unacknowledged growth is a hard failure; shrinkage needs no acknowledgment. No committed snapshot — nothing to regenerate by hand. | `tests/emitted-attribution.test.cjs` (real-tree test) via `tests/helpers/emitted-diff.cjs` |
| **Loose tier hard caps** (backstop) | Absolute outer red lines per tier — workflows: `XL ≤ 98304`, `LARGE ≤ 61440`, `DEFAULT ≤ 40960` bytes; agents: `XL ≤ 57344`, `LARGE ≤ 49152`, `DEFAULT ≤ 24576` bytes. A cap is **never raised** when a file approaches it: crossing it means *extract*, not bump. Independent of the ratchet above — unaffected by #2724. | `XL/LARGE/DEFAULT_CAP` in each guard file |
`discuss-phase.md` additionally has a thin-dispatcher target of `< 32000` bytes
(the discuss-phase progressive-disclosure split, #717).
**Agents** (`tests/agent-size-budget.test.cjs`) use the same per-agent baseline
(`tests/agent-size-baseline.json`) + loose tier hard caps — `XL ≤ 57344` /
`LARGE ≤ 49152` / `DEFAULT ≤ 24576` bytes. There is no new-agent cap: a net-new
agent is DEFAULT-tier and already bounded by the DEFAULT cap. (This is distinct
from the separate 45 KB-*char* extraction-evidence threshold on `gsd-planner`
enforced by `tests/planner-decomposition.test.cjs` — that one proves mode
sections were extracted; this one bounds total agent bytes.)
(the discuss-phase progressive-disclosure split, #717). A net-new agent is
DEFAULT-tier and already bounded by the DEFAULT cap — no separate new-agent cap
is needed. (This tier-cap machinery is distinct from the separate 45 KB-*char*
extraction-evidence threshold on `gsd-planner` enforced by
`tests/planner-decomposition.test.cjs` — that one proves mode sections were
extracted; this one bounds total agent bytes.)
### How-to: a workflow or agent grew and CI is red
The baseline guard reports the file and the byte delta (the same flow for both
the workflow and agent guards). To resolve:
The differential attribution check reports the file and the byte delta. To resolve:
1. **Regenerate the snapshot** and inspect the one-line diff:
```bash
npm run size:baseline
git diff tests/workflow-size-baseline.json
```
2. **Justify the growth in your PR** (a sentence in the description is enough) —
the committed baseline diff is the review record that the larger size was a
deliberate, seen decision, not silent drift.
3. **Or shrink it instead of baselining.** Prefer extraction when the growth is
incidental: for a workflow, move per-mode bodies to `workflows/<name>/modes/`,
templates to `workflows/<name>/templates/`, and shared prose to
`gsd-core/references/`; for an agent, lift shared boilerplate into
`gsd-core/references/` and `@`-reference it — then load it **LAZILY**. Do *not* convert them to eager `@-required_reading`
includes: that shrinks the file's bytes without shrinking loaded context, so
it games the guard while making the real cost worse. See
`workflows/discuss-phase/` for the progressive-disclosure pattern.
1. **Justify the growth in your PR** (a sentence in the description is enough) —
the acknowledgment entry (below) is the review record that the larger size
was a deliberate, seen decision, not silent drift.
2. **Add an acknowledgment entry** in `tests/emitted-drift-ack.json` naming the
file and the reason, per `CONTEXT.md`'s `### Emitted Artifact Provenance`
entry. This is deliberately a committed file, not a flag — the entry appears
in your PR diff, so touching it *is* the visible signal.
3. **Or shrink it instead of acknowledging.** Prefer extraction when the growth
is incidental: for a workflow, move per-mode bodies to
`workflows/<name>/modes/`, templates to `workflows/<name>/templates/`, and
shared prose to `gsd-core/references/`; for an agent, lift shared boilerplate
into `gsd-core/references/` and `@`-reference it — then load it **LAZILY**. Do
*not* convert them to eager `@-required_reading` includes: that shrinks the
file's bytes without shrinking loaded context, so it games the guard while
making the real cost worse. See `workflows/discuss-phase/` for the
progressive-disclosure pattern.
If a hard cap (not the baseline) is what failed, regeneration will **not** help —
that is the signal to extract, per step 3.
### How-to: the baselines or golden fixtures conflict on merge
`tests/workflow-size-baseline.json`, `tests/agent-size-baseline.json` and
`tests/fixtures/golden-install-parity/*.json` are **Emitted Artifact Provenance**
files (`CONTEXT.md` → `RULESET.EMITTED_ATTRIBUTION`): pure functions of the source
tree. Their correct merge is always *recompute*, which git's ours/theirs interface
cannot express — so a conflict here is never something to hand-resolve.
Register the merge driver once per clone:
```bash
npm run setup:merge-driver
```
Afterwards a conflicting merge, rebase or cherry-pick keeps your branch's copy and
prints a one-line notice. Recompute the artifacts before committing:
```bash
npm run regen:derived
```
That one command runs every generator in dependency order (`gen:golden` last,
because it hashes installed output). On an unmodified tree it produces no diff.
Two things it deliberately does **not** do:
- **It does not clear GitHub's `CONFLICTING` label.** Merge drivers live in
`.git/config`, so forks do not have one and github.com's own merge never runs a
custom driver. The driver removes the labour, not the label.
- **It does not regenerate during the merge.** At the moment git invokes a merge
driver, neither the working tree nor the index reflects the merge yet — so
regenerating there would compute the artifact from the *pre-merge* tree and write
a confidently wrong answer. Running `regen:derived` afterwards is what makes it
correct.
This driver is a bridge introduced by [#2721](https://github.com/open-gsd/gsd-core/issues/2721)
and retired by [#2724](https://github.com/open-gsd/gsd-core/issues/2724), which
replaces these committed artifacts with a computed attribution check (ADR-2719).
`tests/fixtures/install-tree/*.json` is deliberately excluded and keeps normal merge
semantics — its diffs are readable and it must stay an absolute "the installer
stopped shipping X" failure.
If a hard cap (not the ratchet) is what failed, an acknowledgment will **not**
help — that is the signal to extract, per step 3.
### Reference
| Artifact | Role |
|---|---|
| `scripts/workflow-size.cjs` | Single source of truth — LF-normalized byte counter (`lfByteCount`) + generic `measureMdFiles(dir, predicate)` (backs both workflows and agents) + workflow enumeration (`listWorkflowStems`, `measureWorkflows`). Imported by **both** the guards and the generator so they can never measure differently. |
| `scripts/update-size-baseline.cjs` (`npm run size:baseline`) | Regenerates **both** `tests/workflow-size-baseline.json` and `tests/agent-size-baseline.json` — sorted keys, trailing newline, idempotent. |
| `npm run regen:derived` | Runs every generator in dependency order (build → registry → ADR index → capability matrix → inventory manifest → manifest versions → size baselines → golden fixtures). Use it instead of remembering which generator owns which artifact. |
| `scripts/git-merge-regen-driver.cjs` (`npm run setup:merge-driver`) | Registers the `gsd-regen` merge driver in this clone. Keeps your branch's copy of a conflicting generated artifact and points you at `regen:derived`. Bridge for #2721; retired by #2724. |
| `tests/workflow-size-baseline.json` | The committed per-workflow snapshot (one entry per workflow). |
| `tests/agent-size-baseline.json` | The committed per-agent snapshot (one entry per `gsd-*` agent). |
| `tests/workflow-size-budget.test.cjs` | The three workflow guards above, plus the `discuss-phase` progressive-disclosure checks. |
| `tests/agent-size-budget.test.cjs` | The per-agent baseline + tier hard-cap guards (the agent analog). |
| `scripts/workflow-size.cjs` | Single source of truth — LF-normalized byte counter (`lfByteCount`) + generic `measureMdFiles(dir, predicate)` (backs both workflows and agents) + workflow enumeration (`listWorkflowStems`, `measureWorkflows`). Imported by both guards and by `tests/helpers/emitted-runtime.cjs`'s `currentSizes()` so they can never measure differently. |
| `tests/emitted-attribution.test.cjs` + `tests/helpers/emitted-diff.cjs` | The differential attribution check and its size ratchet (ADR-2719). The sole mechanism for both emitted-content propagation AND per-file size growth as of #2724. |
| `tests/emitted-drift-ack.json` | Committed acknowledgment file for unattributable emitted-content ripples and for size growth. Absent = no acks; its presence is the alarm. |
| `npm run regen:derived` | Runs every remaining generator in dependency order (build → registry → ADR index → capability matrix → inventory manifest → manifest versions → `tests/fixtures/install-tree/*.json`). |
| `tests/workflow-size-budget.test.cjs` | The workflow tier hard-cap guards, plus the `discuss-phase` progressive-disclosure checks. |
| `tests/agent-size-budget.test.cjs` | The agent tier hard-cap guards (the agent analog). |
`tests/workflow-size-baseline.json`, `tests/agent-size-baseline.json`,
`tests/fixtures/golden-install-parity/*.json`, `scripts/update-size-baseline.cjs`
(`npm run size:baseline`), and `scripts/git-merge-regen-driver.cjs`
(`npm run setup:merge-driver`) are all removed by
[#2724](https://github.com/open-gsd/gsd-core/issues/2724): they were pure
functions of the source tree, conflicted on every merge that touched them, and
their functions are now served by the differential attribution check above.
`tests/fixtures/install-tree/*.json` is the one artifact family that stays
committed and normally-merged (ADR-2719 §7) — it conflicts on 0 of 7, its diffs
are readable, and it preserves "the installer stopped shipping X" as a hard
absolute failure with no attribution reasoning involved. Regenerate it with
`npm run gen:install-tree` (folded into `npm run regen:derived`).
## Running suites locally

View File

@@ -1,6 +1,6 @@
# ADR-2719: Emitted-artifact attribution — replace the committed parity fixtures with a computed conservation law
- **Status:** Proposed
- **Status:** Accepted
- **Date:** 2026-07-27
- **Issue:** [#2719](https://github.com/open-gsd/gsd-core/issues/2719) (epic); Phase 0 tracked by [#2720](https://github.com/open-gsd/gsd-core/issues/2720)
- **Supersedes:** [ADR-2264](2264-golden-parity-redesign.md) (Redesign golden-install-parity) — replaces its Decision §2–§4 and its 2026-07-14 Amendment. ADR-2264 **Phase 1 is retained and depended upon**: the single-source `buildParityManifest` and the four exclusion constants in `tests/helpers/install-shared.cjs` are the foundation this design builds on, not something being reverted.

View File

@@ -116,7 +116,7 @@ This replaces a hand-maintained table that had drifted to **40 of 65 ADRs** —
<!-- ADR-INDEX:START — generated by scripts/gen-adr-index.cjs; do not edit by hand -->
### Active decisions (51)
### Active decisions (52)
These govern the system as it stands. Cite these.
@@ -172,9 +172,10 @@ These govern the system as it stands. Cite these.
| [ADR-2207](2207-status-field-lifecycle-ownership.md) | STATE.md `Status` lifecycle — phase-completion writes an intermediate state; milestone-close owns termination | Accepted | — |
| [ADR-2346](2346-command-dispatch-completion.md) | Command Dispatch Completion | Accepted | — |
| [ADR-2629](2629-phase-effort-estimation-calibration.md) | Phase effort is estimated against a calibrated smart-zone budget, not a static heuristic | Accepted | — |
| [ADR-2719](2719-emitted-artifact-attribution.md) | Emitted-artifact attribution — replace the committed parity fixtures with a computed conservation law | Accepted | — |
| [ADR-3660](3660-runtime-artifact-layout-module.md) | Runtime Artifact Layout Module owns per-runtime artifact placement | Accepted | [ADR-1239](1239-gsd-embeddable-orchestration-engine.md) |
### Proposed (9)
### Proposed (8)
Decided in principle, not yet ratified. Do not cite as settled architecture.
@@ -188,7 +189,6 @@ Decided in principle, not yet ratified. Do not cite as settled architecture.
| [ADR-1213](1213-capability-state-writer.md) | Capability write side — the Capability State Writer | Proposed | — |
| [ADR-1606](1606-prohibition-enforcement-verify-seam.md) | prohibition-enforcement verify-time seam | Proposed | — |
| [ADR-1671](1671-dynamic-context-management-platform.md) | Dynamic context management platform | Proposed | — |
| [ADR-2719](2719-emitted-artifact-attribution.md) | Emitted-artifact attribution — replace the committed parity fixtures with a computed conservation law | Proposed | — |
### Superseded, Retired, and Legacy (8)

View File

@@ -139,10 +139,12 @@ yields the same truth value**, so behavior is unchanged and only the brittle cou
delegates to the *same* engine functions, so the output is byte-identical — that is the point: the
host is now driven **through** the interface, not around it.
5. **Prove parity, both scopes.** `tests/golden-install-parity.test.cjs` captures a byte-stable manifest
of every emitted file. Assert the host's install is unchanged for **global and local** scopes
(regenerate a baseline from `origin/next` first, then confirm the migrated tree matches it). Exclude
only genuinely volatile / platform-varying files (`settings.json`, `settings.local.json`, `.gsd-source`).
5. **Prove parity, both scopes.** The differential attribution check
(`tests/emitted-attribution.test.cjs`, ADR-2719) compares the emitted manifest built
from your branch against `next`'s recorded state and requires every moved hash to be
attributable to a path your PR changed — no fixture to regenerate by hand. Confirm the
host's install is unchanged for **global and local** scopes. Exclude only genuinely
volatile / platform-varying files (`settings.json`, `settings.local.json`, `.gsd-source`).
6. **Guard against regression.** Add a `*-imperative-reference.test.cjs` asserting the adapter classifies
the host correctly, negotiation fails closed on a corrupted descriptor, and — with a source-grep behind

View File

@@ -106,7 +106,7 @@ Sources consulted:
| dispatch.backgroundDispatch | true | https://github.com/openai/codex/blob/main/codex-rs/core/templates/collab/experimental_prompt.md | "Sub-agents have access to the same set of tools as you do so you must tell them if they are allowed to spawn sub-agents themselves or not." The config (codex-rs/config/src/config_toml.rs) exposes an |
| dispatch.isolation | orchestrator-worktree | https://learn.chatgpt.com/docs/environments/git-worktrees ; https://github.com/openai/codex/blob/main/codex-rs/utils/cli/src/shared_options.rs | "Worktrees are available only in Codex in the ChatGPT desktop app." (no native CLI worktree) + `codex exec --cd <dir>` sets an explicit working root, so GSD creates+manages the worktree and points the executor at it (#2584) |
**GSD integration status — Phase D dogfood complete (#2088, ADR-1239).** Codex installs through the `declarative` embedding adapter (`createDeclarativeAdapter` → `installRuntimeArtifacts`); the hardcoded `runtime === 'codex'`/`isCodex` projection is folded into descriptor-driven `runtime.hostBehaviors`, and install/uninstall output is byte-parity-gated (`tests/fixtures/golden-install-parity/codex.json`). Three capability upgrades land, each with a test driving the user-reachable surface:
**GSD integration status — Phase D dogfood complete (#2088, ADR-1239).** Codex installs through the `declarative` embedding adapter (`createDeclarativeAdapter` → `installRuntimeArtifacts`); the hardcoded `runtime === 'codex'`/`isCodex` projection is folded into descriptor-driven `runtime.hostBehaviors`, and install/uninstall output is byte-parity-gated at the time (`tests/fixtures/golden-install-parity/codex.json`; superseded by the differential attribution check, #2724). Three capability upgrades land, each with a test driving the user-reachable surface:
- **Skill root** — skills install to the canonical `$HOME/.agents/skills` (Codex core-skills `loader.rs` user-scope root), not the deprecated `$CODEX_HOME/skills` fallback. Declared via the skills-kind `home: ".agents"` override; pre-move installs are migrated (stale `~/.codex/skills/gsd-*` cleaned on both install and uninstall).
- **Hook events** — GSD registers all documented `hooks.json` lifecycle events beyond `SessionStart`: `SubagentStart`, `Stop`, `PostToolUse` (#772), plus the six added in #2088 — `PreToolUse`, `PermissionRequest`, `PreCompact`, `PostCompact`, `SubagentStop`, `UserPromptSubmit` — all routed through `gsd-context-monitor.js`. (The descriptor `extendedHookEvents` field reflects the schema-valid cross-runtime subset `SubagentStop`/`Stop`/`PreCompact`; Codex's full event set is codex-hooks-json-native, registered directly in `hooks.json`.)
@@ -196,7 +196,7 @@ Sources consulted:
- https://cursor.com/docs/enterprise/llm-safety-and-controls
- /websites/cursor (Context7)
**GSD integration status — Phase D dogfood complete (#2089, ADR-1239).** Cursor installs through the `imperative` embedding adapter (`createImperativeAdapter` → `installRuntimeArtifacts`); the hardcoded `runtime === 'cursor'` / `isCursor` projection is folded into descriptor-driven `runtime.hostBehaviors`, and install/uninstall output is byte-parity-gated (`tests/fixtures/golden-install-parity/cursor.json`). Two capability upgrades land, each with a test driving the user-reachable surface:
**GSD integration status — Phase D dogfood complete (#2089, ADR-1239).** Cursor installs through the `imperative` embedding adapter (`createImperativeAdapter` → `installRuntimeArtifacts`); the hardcoded `runtime === 'cursor'` / `isCursor` projection is folded into descriptor-driven `runtime.hostBehaviors`, and install/uninstall output is byte-parity-gated at the time (`tests/fixtures/golden-install-parity/cursor.json`; superseded by the differential attribution check, #2724). Two capability upgrades land, each with a test driving the user-reachable surface:
- **Expanded hook-bus coverage** — GSD registers all 6 managed lifecycle events in `hooks.json` beyond the original `sessionStart`/`postToolUse`: `preToolUse`, `stop`, `subagentStart`, `subagentStop` (AC4a, cite https://cursor.com/docs/hooks). The hook-bus binding is descriptor-driven via `src/host-integration-adapters/imperative-hook-bus.cts` (reads `hostBehaviors.managedHookEvents`), not a hardcoded event pair.
- **Named/background nested subagent dispatch** — `dispatch.background`/`backgroundDispatch`/`nested` are all `true` with `maxDepth: 2`; `shouldFlattenDispatch(cursor)` returns `false` so GSD's wave-based execution drives Cursor's native background + depth-2 nested subagent dispatch instead of flattening to inline sequential calls (AC4b, cite https://cursor.com/docs/subagents + https://cursor.com/docs/sdk/typescript).
@@ -233,7 +233,7 @@ Sources consulted:
- https://github.com/cline/cline/blob/main/sdk/packages/llms/README.md
- /cline/cline (Context7)
**GSD integration status — Phase D dogfood complete (#2090, ADR-1239).** Cline installs through the `imperative` embedding adapter (`createImperativeAdapter` → `installRuntimeArtifacts`); the hardcoded `runtime === 'cline'` / `isCline` projection is folded into descriptor-driven `runtime.hostBehaviors`, and install/uninstall output is byte-parity-gated (`tests/fixtures/golden-install-parity/cline.json`). Two capability upgrades land, each with a test driving the user-reachable surface:
**GSD integration status — Phase D dogfood complete (#2090, ADR-1239).** Cline installs through the `imperative` embedding adapter (`createImperativeAdapter` → `installRuntimeArtifacts`); the hardcoded `runtime === 'cline'` / `isCline` projection is folded into descriptor-driven `runtime.hostBehaviors`, and install/uninstall output is byte-parity-gated at the time (`tests/fixtures/golden-install-parity/cline.json`; superseded by the differential attribution check, #2724). Two capability upgrades land, each with a test driving the user-reachable surface:
- **`AgentPlugin.hooks.beforeTool` planning guard** — the `.clinerules/hooks/PreToolUse` file-convention hook (#787) is re-implemented as a real Cline SDK `AgentPlugin` registered through the negotiated `hookBus: host` interface point. Guard semantics are preserved exactly (fail-open, cancels write-class calls targeting `.planning/`); the SDK maps the file hook's `{cancel, errorMessage}` to `{skip, reason}`. The binding lives in `src/host-integration-adapters/cline-sdk-binding.cts` (cite https://github.com/cline/cline/blob/main/docs/sdk/plugins.mdx).
- **`createAgentModel` per-subagent model overrides** — `DefaultGateway.createAgentModel({providerId, modelId})` is wired so GSD's `model_overrides` / `model_profile_overrides` resolution (already used for OpenCode/Codex passive hosts) applies to cline subagents (`modelMode: active`), instead of leaving model selection untouched (cite https://github.com/cline/cline/blob/main/docs/sdk/reference/gateway.mdx).

View File

@@ -59,8 +59,8 @@ constructed fail-closed (they throw if a required host primitive is absent):
The declarative + imperative adapters delegate install/uninstall in-process to
the **same** `installRuntimeArtifacts` engine function `bin/install.js` uses, so
adapter output is byte-identical to a first-party install (gated by
`tests/golden-install-parity.test.cjs`).
adapter output is byte-identical to a first-party install (gated by the
differential attribution check, `tests/emitted-attribution.test.cjs`, ADR-2719).
## Profiles

View File

@@ -92,9 +92,8 @@
"gen:plugin-skills": "node scripts/gen-plugin-skills.cjs --write",
"gen:capability-registry": "node scripts/gen-capability-registry.cjs --write",
"gen:registry": "node scripts/gen-registry.cjs --write",
"gen:golden": "node scripts/gen-golden-install-parity-zcode.cjs && node scripts/gen-install-tree-fixtures.cjs",
"regen:derived": "npm run build && npm run gen:registry && node scripts/gen-adr-index.cjs --write && node scripts/gen-capability-matrix.cjs --write && node scripts/gen-inventory-manifest.cjs --write && node scripts/sync-manifest-versions.cjs && npm run size:baseline && npm run gen:golden",
"setup:merge-driver": "node scripts/git-merge-regen-driver.cjs --install",
"gen:install-tree": "node scripts/gen-install-tree-fixtures.cjs",
"regen:derived": "npm run build && npm run gen:registry && node scripts/gen-adr-index.cjs --write && node scripts/gen-capability-matrix.cjs --write && node scripts/gen-inventory-manifest.cjs --write && node scripts/sync-manifest-versions.cjs && npm run gen:install-tree",
"validate:registry": "node scripts/validate-registry.cjs",
"prepack": "npm run build:lib",
"prepare": "npm run build:lib",
@@ -117,7 +116,6 @@
"lint:docs": "node scripts/lint-docs-required.cjs",
"lint:legacy-name": "node scripts/lint-legacy-dir-name.cjs",
"ci:test-scope": "node scripts/ci-test-scope.cjs",
"size:baseline": "node scripts/update-size-baseline.cjs",
"changeset": "node scripts/changeset/new.cjs",
"changelog:render": "node scripts/changeset/cli.cjs render",
"test": "node scripts/run-tests.cjs",

View File

@@ -0,0 +1,44 @@
#!/usr/bin/env node
'use strict';
/**
* ci-export-emitted-baseline-env.cjs — exports GSD_EMITTED_BASELINE for the
* differential attribution check when its baseline cache was restored (#2724,
* ADR-2719 §5).
*
* A plain `node <script>` invocation on purpose, not a shell script. The repo's H1
* shell policy (scripts/workflow-policy.cjs) requires every CI step to run under its
* job/matrix-declared NATIVE shell — pwsh on Windows, zsh on macOS (test-full's own
* `shell: 'zsh {0}'`), bash on Linux — and a step that hardcodes `shell: bash`
* violates that on the other two. A cross-platform Node script run via a bare
* `node scripts/...` command line has no shell-specific syntax at all, so it is
* valid unmodified under bash, zsh, AND pwsh — sidestepping the conflict instead of
* picking one shell and being wrong on the other two.
*/
const fs = require('node:fs');
const path = require('node:path');
const REPO_ROOT = path.join(__dirname, '..');
const CACHE_PATH = path.join(REPO_ROOT, '.gsd-cache', 'emitted-baseline.json');
function main() {
const githubEnv = process.env.GITHUB_ENV;
if (!fs.existsSync(CACHE_PATH)) {
console.log(`ci-export-emitted-baseline-env: ${CACHE_PATH} absent (cache miss) — nothing to export`);
return 0;
}
if (!githubEnv) {
// Not fatal: running this locally or outside Actions should not break anything.
console.log('ci-export-emitted-baseline-env: GITHUB_ENV not set — skipping export (not running under Actions?)');
return 0;
}
fs.appendFileSync(githubEnv, `GSD_EMITTED_BASELINE=${CACHE_PATH}\n`, 'utf8');
console.log(`ci-export-emitted-baseline-env: exported GSD_EMITTED_BASELINE=${CACHE_PATH}`);
return 0;
}
process.exitCode = main();

View File

@@ -117,8 +117,7 @@ const RULES = [
match: path => path.startsWith('src/') || path === 'tsconfig.build.json',
tests: [
'tests/semver-compare.test.cjs', // #2758: absorbs the former tests/bug-10-semver-policy-consolidation.test.cjs (folded into it by consolidation epic #1969 B3 #1972; the stale filename here was a silent coverage hole this rule never actually re-selected)
'tests/golden-install-parity.test.cjs', // any src/installer change can alter emitted install artifacts → re-verify golden install parity (drift guard)
'tests/emitted-provenance.test.cjs', // #2758: the differential travels with the golden — ADR-2719 dual-run
'tests/emitted-provenance.test.cjs', // any src/installer change can alter emitted install artifacts → re-verify provenance totality (#2724: golden-install-parity retired, this is the sole gate)
'tests/emitted-attribution.test.cjs',
],
},
@@ -143,25 +142,23 @@ const RULES = [
// SCOPED_LANE_EXCLUDE guard below, which also drops it when it is itself a
// changed test file.
'tests/runtime-artifact-layout.test.cjs',
'tests/golden-install-parity.test.cjs', // any src/installer change can alter emitted install artifacts → re-verify golden install parity (drift guard)
'tests/emitted-provenance.test.cjs', // #2758: the differential travels with the golden — ADR-2719 dual-run
'tests/emitted-provenance.test.cjs', // any src/installer change can alter emitted install artifacts → re-verify provenance totality (#2724: golden-install-parity retired, this is the sole gate)
'tests/emitted-attribution.test.cjs',
],
},
{
name: 'shipped install content (golden-parity drift guard, #2267)',
name: 'shipped install content (emitted-attribution drift guard, #2267/#2724)',
// Every source file the installer EMITS into a runtime layout is captured by
// golden-install-parity + the install-tree snapshot. A source edit here that
// changes emitted output MUST re-verify the fixtures — otherwise stale golden
// fixtures merge silently (#2266: a hooks/gsd-statusline.js edit changed
// installed output but no rule selected golden-parity, so stale fixtures
// shipped to next undetected). Union semantics: this ADDS the parity guard on
// top of each path's existing content-specific tests. Targeted lane only (the
// golden test skips win32 by design), no fullMatrix.
// #2758: the Phase 2/3 emitted differential (ADR-2719) travels alongside the
// golden here too — a PR editing only shipped content is the archetypal
// emitted ripple, and until this fix no rule selected the differential at
// all. Both green, fixtures untouched, is the dual-run premise.
// the emitted-attribution differential + the install-tree snapshot. A source
// edit here that changes emitted output MUST re-verify (#2266: a
// hooks/gsd-statusline.js edit changed installed output but no rule selected
// the drift guard, so a stale emitted state shipped to next undetected).
// Union semantics: this ADDS the drift guard on top of each path's existing
// content-specific tests. Targeted lane only (the real-tree test skips win32
// by design), no fullMatrix.
// #2724: golden-install-parity.test.cjs is retired (ADR-2719 Phase 4); the
// emitted differential (ADR-2719 Phase 2/3) is now the sole gate for a PR
// editing only shipped content, the archetypal emitted-ripple case.
// NOTE: intentionally NOT a blanket 'gsd-core/' prefix, for two reasons:
// (1) gsd-core/bin/** is tsc-compiled runtime output — EXCLUDED_PREFIXES-
// excluded from both manifests, and already covered by the 'installer and
@@ -179,7 +176,6 @@ const RULES = [
(path.startsWith('gsd-core/bin/shared/') && path.endsWith('.json')) ||
['scripts/fix-slash-commands.cjs', 'scripts/gen-capability-registry.cjs', 'scripts/gen-loop-host-contract.cjs'].includes(path),
tests: [
'tests/golden-install-parity.test.cjs',
'tests/golden-install-tree.test.cjs',
'tests/emitted-provenance.test.cjs',
'tests/emitted-attribution.test.cjs',

View File

@@ -0,0 +1,145 @@
#!/usr/bin/env node
'use strict';
/**
* gen-emitted-baseline.cjs — publishes the emitted-baseline artifact the
* differential attribution check reads via `resolveBaseline()` (#2724, ADR-2719 §5).
*
* ## Why this exists
*
* Phase 3 (#2723) built `resolveBaseline()` (tests/helpers/emitted-baseline.cjs) and its
* cache-key staleness discipline, but nothing produced the artifact it reads — the
* dual-run window instead read the baseline straight off the committed golden fixtures
* at the base ref (`baselineManifestsAtRef`). Phase 4 deletes those fixtures, so
* something has to build and publish `{version, sha, manifests, sizes}` for real.
*
* ## What it does
*
* Builds the emitted manifest set (19 real installer spawns) and the workflow/agent size
* maps for the tree at `--dir <path>` (default: THIS script's own checkout — i.e.
* whatever commit is currently checked out where `gen-emitted-baseline.cjs` itself
* lives). Writes the result to `--out <path>` (default `.gsd-cache/emitted-baseline.json`).
*
* `--dir` decouples "which copy of this script runs" from "which tree gets measured"
* (#2767). The MEASUREMENT SCHEMA — this script, and the `currentManifests`/
* `currentSizes`/`buildParityManifest` functions it calls — always comes from wherever
* `gen-emitted-baseline.cjs` itself is being run from (relative `require`s resolve
* there); only the tree being measured (which `bin/install.js` gets spawned, which
* `hooks/`/`gsd-core/workflows/`/`agents/` get read) moves to `--dir`. That is what lets
* a differential apply ONE definition of "the emitted manifest" to two different
* commits and stay comparable even as that definition evolves — see
* `tests/helpers/emitted-runtime.cjs`'s `buildBaselineAtRef` for the caller that
* exercises this for real, and why it must NOT run the `--dir` tree's own copy of this
* script (which may be an older version, or — for any base ref that predates the PR
* that added this script at all — may not exist there yet).
*
* ## Callers
*
* 1. CI's push-to-`next` job runs this straight after `next` advances (no `--dir`,
* measuring its own checkout), then uploads `.gsd-cache/emitted-baseline.json` as a
* cache entry keyed on the merge sha (.github/workflows/test.yml,
* `publish-emitted-baseline` job).
* 2. `tests/emitted-attribution.test.cjs`'s real-tree test passes
* `buildBaselineAtRef` (tests/helpers/emitted-runtime.cjs) to `resolveBaseline()`
* as the `buildFallback` for a cache miss: it checks out `base` into a throwaway
* `git worktree`, symlinks in `node_modules` and runs `npm run build:lib` there
* (this script and the test helpers are Node-builtins-only per CONTRIBUTING.md's
* "No external dependencies in core", but `tests/helpers/install-shared.cjs`
* requires the TSC-compiled, gitignored `gsd-core/bin/lib/*.cjs`, so that one build
* step is unavoidable), then spawns THIS repo's OWN `gen-emitted-baseline.cjs`
* with `--dir <worktree> --out <tmp>` and reads the artifact back.
*
* Every git subprocess is bounded (CLAUDE.md → KNOWN DEFECTS: unbounded subprocesses
* hang CI silently).
*/
const fs = require('node:fs');
const path = require('node:path');
const { execFileSync } = require('node:child_process');
const { runMain, ExitError } = require('./lib/cli-exit.cjs');
const { BUILD_SCRIPT } = require('../tests/helpers/install-shared.cjs');
const { currentManifests, currentSizes, git } = require('../tests/helpers/emitted-runtime.cjs');
const { BASELINE_VERSION } = require('../tests/helpers/emitted-baseline.cjs');
const REPO_ROOT = path.join(__dirname, '..');
const DEFAULT_OUT = path.join(REPO_ROOT, '.gsd-cache', 'emitted-baseline.json');
// Reuses emitted-runtime.cjs's `git()` (not a local execFileSync) so the
// `-c safe.directory=<dir>` fix for the remote runner's dubious-ownership
// mount (#2767) has exactly one source of truth — see that module's
// `safeDirArgs` doc comment.
function resolveHeadSha(cwd) {
return git(['rev-parse', 'HEAD'], { cwd }).trim();
}
function parseArgs(argv) {
let out = DEFAULT_OUT;
let dir = REPO_ROOT;
for (let i = 0; i < argv.length; i++) {
if (argv[i] === '--out') {
out = argv[i + 1];
i++;
} else if (argv[i] === '--dir') {
dir = argv[i + 1];
i++;
} else {
throw new ExitError(2, `gen-emitted-baseline: unknown argument "${argv[i]}"`);
}
}
if (!out || typeof out !== 'string') {
throw new ExitError(2, 'gen-emitted-baseline: --out requires a path');
}
if (!dir || typeof dir !== 'string') {
throw new ExitError(2, 'gen-emitted-baseline: --dir requires a path');
}
return {
out: path.isAbsolute(out) ? out : path.join(process.cwd(), out),
dir: path.isAbsolute(dir) ? dir : path.join(process.cwd(), dir),
};
}
async function main() {
const { out, dir } = parseArgs(process.argv.slice(2));
if (!fs.existsSync(dir)) {
throw new ExitError(1, `gen-emitted-baseline: --dir "${dir}" does not exist`);
}
const sha = resolveHeadSha(dir);
if (!/^[0-9a-f]{40}$/.test(sha)) {
throw new ExitError(1, `gen-emitted-baseline: HEAD of "${dir}" did not resolve to a 40-hex sha: ${sha}`);
}
// hooks/dist is gitignored and built; a scoped CI checkout may not have run
// build:hooks yet. Idempotent, mirrors the real-tree test. Built INSIDE `dir` — the
// MEASURED tree's own hooks/ source, not this script's — so a `--dir` pointed at a
// different checkout (e.g. a base-ref worktree) reflects that checkout's hooks, not
// the caller's. `dir === REPO_ROOT` (the default, no `--dir`) collapses to the
// pre-#2767 behavior of building this own repo's hooks/dist.
const buildScript = dir === REPO_ROOT ? BUILD_SCRIPT : path.join(dir, 'scripts', 'build-hooks.js');
execFileSync(process.execPath, [buildScript], { cwd: dir, encoding: 'utf-8', stdio: 'pipe', timeout: 120_000 });
// The measurement SCHEMA (currentManifests/currentSizes/buildParityManifest) is
// always THIS script's own — only the tree being measured moves with `repoRoot`.
const manifests = currentManifests({ repoRoot: dir });
const sizes = currentSizes({ repoRoot: dir });
const artifact = { version: BASELINE_VERSION, sha, manifests, sizes };
fs.mkdirSync(path.dirname(out), { recursive: true });
fs.writeFileSync(out, `${JSON.stringify(artifact, null, 2)}\n`, 'utf8');
const familyCount = Object.keys(manifests).length;
const sizeCount = Object.keys(sizes).length;
process.stdout.write(
`gen-emitted-baseline: wrote ${out} (dir=${dir}, sha=${sha.slice(0, 12)}, ${familyCount} families, ${sizeCount} sized files)\n`,
);
return 0;
}
if (require.main === module) {
runMain(main);
}
module.exports = { parseArgs, resolveHeadSha, DEFAULT_OUT, REPO_ROOT };

View File

@@ -1,77 +0,0 @@
#!/usr/bin/env node
'use strict';
/**
* Standalone golden-fixture generator for tests/golden-install-parity.
*
* This is a BUILD-TIME generation script — NOT a test run. It imports the
* canonical buildParityManifest builder from tests/helpers/install-shared.cjs
* (issue #2266 — single source of truth shared with
* tests/golden-install-parity.test.cjs) and captures the zcode fixture so the
* parity test (which the gsd-test gate runs) has a committed artifact to
* compare against. The authoritative test gate remains `gsd-test run`, never
* a local `node --test`.
*
* Usage: node scripts/gen-golden-install-parity-zcode.cjs
*/
const fs = require('node:fs');
const path = require('node:path');
const { execFileSync } = require('node:child_process');
const ROOT = path.resolve(__dirname, '..');
// buildParityManifest (and its exclusion constants) is the canonical single
// source of truth in tests/helpers/install-shared.cjs (issue #2266) — the
// generator no longer keeps its own inline copy, which had drifted from the
// test harness's copy (missing the realpath/`<HOME>` normalization) and
// mis-generated the claude-local fixture (#2100).
const { runMinimalInstall, RUNTIME_META, buildParityManifest, BUILD_SCRIPT } = require(path.join(ROOT, 'tests', 'helpers', 'install-shared.cjs'));
const FIXTURE_DIR = path.join(ROOT, 'tests', 'fixtures', 'golden-install-parity');
function cleanup(root) {
try { fs.rmSync(root, { recursive: true, force: true }); } catch { /* best effort */ }
}
// Regenerate the fixture for every runtime in RUNTIME_META. Needed when a
// SHARED gsd-core payload file (e.g. model-catalog.json, capability-registry)
// changes content — its hash appears in every runtime's manifest, so all
// fixtures must be recaptured together. Usage:
// node scripts/gen-golden-install-parity-zcode.cjs [runtime ...]
// With no args, regenerates ALL runtimes. With args, only the named runtimes.
const targets = process.argv.slice(2).length > 0 ? process.argv.slice(2) : Object.keys(RUNTIME_META);
fs.mkdirSync(FIXTURE_DIR, { recursive: true });
// Build hooks/dist before capturing so fixtures are complete even in a clean
// checkout (hooks/dist is gitignored + built; DEFECT.HOOKS-DIST-SCOPED-CI). The
// test harness's before() hook does the same; without it a fresh checkout omits
// every hooks/* path and this generator silently writes short fixtures.
execFileSync(process.execPath, [BUILD_SCRIPT], { stdio: 'pipe' });
for (const runtime of targets) {
if (!Object.prototype.hasOwnProperty.call(RUNTIME_META, runtime)) {
process.stderr.write(`[gen] unknown runtime '${runtime}' (not in RUNTIME_META) — skipping\n`);
continue;
}
const { configDir, root } = runMinimalInstall({ runtime, scope: 'global' });
let actual;
try {
actual = buildParityManifest(configDir, root);
} finally {
cleanup(root);
}
const fixturePath = path.join(FIXTURE_DIR, `${runtime}.json`);
fs.writeFileSync(fixturePath, JSON.stringify(actual, null, 2) + '\n', 'utf8');
process.stdout.write(`[gen] ${runtime}: wrote ${Object.keys(actual).length} file hashes -> ${fixturePath}\n`);
}
// Also regenerate the claude LOCAL legacy-layout fixture (claude-local.json).
// This layout is distinct from the global install (commands/gsd-*.md +
// agents/gsd-*.md) and has its own parity assertion in the test harness.
const { configDir: localConfigDir, root: localRoot } = runMinimalInstall({ runtime: 'claude', scope: 'local' });
let localActual;
try {
localActual = buildParityManifest(localConfigDir, localRoot);
} finally {
cleanup(localRoot);
}
const localFixturePath = path.join(FIXTURE_DIR, 'claude-local.json');
fs.writeFileSync(localFixturePath, JSON.stringify(localActual, null, 2) + '\n', 'utf8');
process.stdout.write(`[gen] claude-local: wrote ${Object.keys(localActual).length} file hashes -> ${localFixturePath}\n`);

View File

@@ -1,367 +0,0 @@
#!/usr/bin/env node
'use strict';
/**
* git-merge-regen-driver.cjs — the `gsd-regen` git merge driver (#2721, ADR-2719 Phase 1).
*
* ## Why
*
* `tests/fixtures/golden-install-parity/*.json` and the two size baselines are pure
* functions of the source tree. Git offers ours or theirs; both are wrong, because the
* only correct value is recomputed from the merged tree. 140 of 143 conflicted-file
* instances across the open PR queue are these artifacts (ADR-2719).
*
* ## What this driver does — and deliberately does NOT do
*
* It does **not** regenerate. That is not implementable, and the constraint is git's, not
* a design preference: at the moment git invokes a merge driver, **neither the working
* tree nor the index reflects the merge**. Both hold the ours side; a file added by
* theirs does not exist yet; `.git/MERGE_HEAD` has not been written. A driver that shelled
* out to the generators there would read the ours-side tree and write a
* plausible-but-wrong hash manifest — strictly worse than a conflict, because a conflict
* is visible and a wrong manifest is not. Git also invokes the driver once **per
* conflicted path** (20 in this repo), so a regenerating driver would run the full build
* plus 19 installer spawns up to twenty times per merge.
*
* So it resolves deterministically and without content knowledge: it accepts `%A` (which
* already holds ours verbatim), runs **zero subprocesses**, records the resolved paths
* under the git dir, and prints **one** notice per operation pointing at
* `npm run regen:derived`. Staleness is caught where it already was — by
* `tests/golden-install-parity.test.cjs` in CI.
*
* Every failure path degrades toward *today's* behavior (a normal conflict), never toward
* a silent wrong resolution.
*
* ## Bridge, not a destination
*
* This driver is explicitly temporary. #2724 deletes the artifacts it guards and retires
* it. Keeping it past that point would preserve the problem it exists to relieve.
*
* node scripts/git-merge-regen-driver.cjs --install # register in .git/config
* node scripts/git-merge-regen-driver.cjs --uninstall
* node scripts/git-merge-regen-driver.cjs --status
*/
const fs = require('node:fs');
const path = require('node:path');
const cp = require('node:child_process');
const { runMain, ExitError } = require('./lib/cli-exit.cjs');
const REPO_ROOT = path.join(__dirname, '..');
const MARKER_NAME = 'gsd-regen-pending.json';
/** Bounded per the repo's unbounded-subprocess rule (5-30s for git). */
const GIT_TIMEOUT_MS = 15_000;
/**
* A single git operation's driver invocations land milliseconds apart, so this window is
* ~4 orders of magnitude wider than it needs to be. It exists only so a *later* operation
* does not inherit the previous one's silence.
*/
const NOTICE_WINDOW_MS = 60_000;
const ACTION = Object.freeze({
ACCEPT_OURS: 'accept_ours',
DECLINE: 'decline',
});
const REASON = Object.freeze({
OK_RESOLVED: 'ok_resolved',
FAIL_BAD_ARGV: 'fail_bad_argv',
FAIL_OURS_UNREADABLE: 'fail_ours_unreadable',
});
const GITDIR_SOURCE = Object.freeze({
DIRECTORY: 'directory',
GITFILE: 'gitfile',
UNRESOLVED: 'unresolved',
});
/**
* Locate the git dir from `cwd` without spawning git — the driver runs up to twenty times
* per merge, so a subprocess per invocation is not affordable.
*
* Handles both shapes: `.git` as a directory, and `.git` as a pointer file
* (`gitdir: <path>`) in a linked worktree or submodule. Never throws; an unresolvable git
* dir is a degraded-but-correct state, not an error.
*
* @param {string} cwd
* @returns {{gitDir: string|null, source: string}}
*/
function resolveGitDir(cwd) {
const unresolved = { gitDir: null, source: GITDIR_SOURCE.UNRESOLVED };
const dotGit = path.join(cwd, '.git');
let stat;
try {
stat = fs.statSync(dotGit);
} catch {
return unresolved;
}
if (stat.isDirectory()) return { gitDir: dotGit, source: GITDIR_SOURCE.DIRECTORY };
let raw;
try {
raw = fs.readFileSync(dotGit, 'utf8');
} catch {
return unresolved;
}
// Anchored /m with an explicit trailing-whitespace eat: `$` under /m sits before the
// \n, so a CRLF checkout would otherwise carry the \r into the path.
const match = /^gitdir:\s*(.*?)\s*$/m.exec(raw);
if (!match || match[1] === '') return unresolved;
return { gitDir: path.resolve(cwd, match[1]), source: GITDIR_SOURCE.GITFILE };
}
/**
* Read the pending-resolution marker, treating anything unusable as absent.
*
* Valid JSON is not the same as a usable marker: `0`, `"str"`, `[]`, `null` and `true` all
* parse. So does an object whose `startedAt` or `count` is a string. Every one of those
* means "no previous invocation I can trust" — reset, do not throw.
*
* @returns {{startedAt: number, count: number}|null}
*/
function readMarker(markerPath) {
let parsed;
try {
parsed = JSON.parse(fs.readFileSync(markerPath, 'utf8'));
} catch {
return null;
}
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) return null;
if (!Number.isFinite(parsed.startedAt)) return null;
if (!Number.isFinite(parsed.count) || parsed.count < 0) return null;
return { startedAt: parsed.startedAt, count: parsed.count };
}
function decline(reason) {
return {
action: ACTION.DECLINE,
reason,
exitCode: 1,
notice: false,
pendingCount: 0,
};
}
/**
* Decide how to resolve one conflicted path, and record it.
*
* Deliberately NOT named `plan*` like `planInstall`: that prefix promises purity, and this
* function reads and writes the marker file. The name says both halves out loud.
*
* @param {object} opts
* @param {string[]} opts.argv exactly what git supplies: [%O, %A, %B, %L]. Any further
* entry is ignored — see planInstall on why `%P` is deliberately not registered.
* @param {string|null} opts.gitDir from resolveGitDir; null means marker-less (degraded)
* @param {number} opts.now injected clock — never Date.now() inline, so tests are
* deterministic and never assert on elapsed wall-clock
* @returns {{action: string, reason: string, exitCode: number, notice: boolean,
* pendingCount: number}}
*/
function resolveAndRecord({ argv, gitDir, now }) {
if (!Array.isArray(argv) || argv.length < 3) return decline(REASON.FAIL_BAD_ARGV);
const oursPath = argv[1];
if (typeof oursPath !== 'string' || oursPath.trim() === '') {
return decline(REASON.FAIL_BAD_ARGV);
}
// %A is the one input the driver's contract depends on. If it is not there, we do not
// know what "ours" is, so we hand the conflict back to git rather than inventing one.
try {
fs.statSync(oursPath);
} catch {
return decline(REASON.FAIL_OURS_UNREADABLE);
}
const markerPath = gitDir ? path.join(gitDir, MARKER_NAME) : null;
const previous = markerPath ? readMarker(markerPath) : null;
const sameOperation = previous !== null && now - previous.startedAt <= NOTICE_WINDOW_MS;
const startedAt = sameOperation ? previous.startedAt : now;
const pendingCount = sameOperation ? previous.count + 1 : 1;
if (markerPath) {
// A diagnostic must never fail a merge: a read-only .git degrades to a repeated
// notice, which is noisy but correct.
try {
fs.writeFileSync(markerPath, `${JSON.stringify({ startedAt, count: pendingCount })}\n`);
} catch {
/* degraded, not failed */
}
}
return {
action: ACTION.ACCEPT_OURS,
reason: REASON.OK_RESOLVED,
exitCode: 0,
notice: !sameOperation,
pendingCount,
};
}
/**
* The `.git/config` entries that register this driver.
*
* ## Why `%P` is NOT passed — do not "helpfully" add it back
*
* Git does **not** invoke a merge driver with an argv array. It substitutes `%O %A %B %L
* %P` textually into this string and runs the whole thing through a shell. Quoting a
* placeholder does not make it safe: inside POSIX double quotes `$(…)` and backticks still
* execute, and a `"` in the value ends the quoting outright.
*
* `%O`, `%A` and `%B` are git-generated temp names (`.merge_file_XXXXXX`) and `%L` is an
* integer, so none of them are attacker-controlled. **`%P` is the file's own path**, which
* any contributor chooses freely. A branch that renames a covered fixture to
* `evil$(touch PWNED).json` would execute that command on the machine of every maintainer
* who merges it — silently, since the merge still reports success. Verified by reproduction
* against a real `git merge`, not by inspection.
*
* So the driver takes no attacker-controlled argument at all, and records a count rather
* than path names. A filter would have been a guess about shell grammar; passing nothing is
* a property.
*
* Paths are normalized to forward slashes **unconditionally** — a backslash path can reach a
* config value on any platform, and git shells this command everywhere including Windows.
*
* @param {{repoRoot: string}} opts
* @returns {{entries: Array<{key: string, value: string}>}}
*/
function planInstall({ repoRoot }) {
const script = path
.join(repoRoot, 'scripts', 'git-merge-regen-driver.cjs')
.replace(/\\/g, '/');
return {
entries: [
{
key: 'merge.gsd-regen.name',
value: 'gsd-regen — keep ours for generated artifacts; regenerate with npm run regen:derived',
},
{
key: 'merge.gsd-regen.driver',
value: `node "${script}" "%O" "%A" "%B" "%L"`,
},
],
};
}
function gitConfig(args, cwd = REPO_ROOT) {
const r = cp.spawnSync('git', ['config', ...args], {
cwd,
encoding: 'utf8',
timeout: GIT_TIMEOUT_MS,
});
if (r.error && r.error.code === 'ETIMEDOUT') {
throw new ExitError(1, `git config timed out after ${GIT_TIMEOUT_MS}ms`);
}
return r;
}
function runInstall({ repoRoot = REPO_ROOT } = {}) {
const { entries } = planInstall({ repoRoot });
for (const { key, value } of entries) {
const r = gitConfig([key, value], repoRoot);
if (r.status !== 0) throw new ExitError(1, `git config ${key} failed: ${r.stderr}`);
}
process.stdout.write(
'Registered the gsd-regen merge driver in this clone.\n' +
'Conflicts on the generated parity manifests and size baselines now resolve to your\n' +
'branch’s copy; run `npm run regen:derived` afterwards to recompute them.\n' +
'This is a bridge for #2721 and is retired by #2724.\n',
);
return 0;
}
function runUninstall({ repoRoot = REPO_ROOT } = {}) {
for (const key of ['merge.gsd-regen.driver', 'merge.gsd-regen.name']) {
// exit 5 == "was not set"; uninstalling something absent is success here
gitConfig(['--unset-all', key], repoRoot);
}
process.stdout.write('Removed the gsd-regen merge driver from this clone.\n');
return 0;
}
/**
* @returns {{registered: boolean, pendingCount: number}} the same object it prints, so
* callers and tests consume the structure rather than re-parsing the rendered JSON.
* A count, not path names: the driver is never handed the conflicted path, by design
* (see planInstall).
*/
function statusOf({ repoRoot = REPO_ROOT } = {}) {
const registered = gitConfig(['--get', 'merge.gsd-regen.driver'], repoRoot).status === 0;
const { gitDir } = resolveGitDir(repoRoot);
const marker = gitDir ? readMarker(path.join(gitDir, MARKER_NAME)) : null;
return { registered, pendingCount: marker ? marker.count : 0 };
}
function runStatus({ repoRoot = REPO_ROOT } = {}) {
process.stdout.write(JSON.stringify(statusOf({ repoRoot }), null, 2) + '\n');
return 0;
}
function runDriver(argv) {
const { gitDir } = resolveGitDir(process.cwd());
const plan = resolveAndRecord({ argv, gitDir, now: Date.now() });
if (plan.action === ACTION.DECLINE) {
process.stderr.write(
`gsd-regen: declined (${plan.reason}) — leaving this path as a normal conflict.\n`,
);
return plan.exitCode;
}
if (plan.notice) {
process.stderr.write(
'gsd-regen: kept your branch’s copy of the generated parity/size artifacts.\n' +
'gsd-regen: these files cannot be line-merged — their only correct value is recomputed.\n' +
'gsd-regen: run `npm run regen:derived` before committing.\n' +
'gsd-regen: (bridge for #2721; retired by #2724)\n',
);
}
return plan.exitCode;
}
function main() {
const argv = process.argv.slice(2);
const flags = argv.filter((a) => a.startsWith('--'));
if (flags.length > 0) {
if (flags.length > 1 || argv.length > 1) {
throw new ExitError(2, 'usage: git-merge-regen-driver.cjs [--install|--uninstall|--status]');
}
switch (flags[0]) {
case '--install':
return runInstall();
case '--uninstall':
return runUninstall();
case '--status':
return runStatus();
default:
throw new ExitError(
2,
`unknown flag ${flags[0]}\nusage: git-merge-regen-driver.cjs [--install|--uninstall|--status]`,
);
}
}
return runDriver(argv);
}
module.exports = {
ACTION,
REASON,
GITDIR_SOURCE,
NOTICE_WINDOW_MS,
MARKER_NAME,
resolveGitDir,
resolveAndRecord,
planInstall,
runInstall,
runUninstall,
runStatus,
statusOf,
};
if (require.main === module) runMain(main);

View File

@@ -1,68 +0,0 @@
#!/usr/bin/env node
'use strict';
/**
* @file update-size-baseline.cjs
*
* Regenerates the committed per-file workflow size baseline
* (`tests/workflow-size-baseline.json`) from the current workflow files.
*
* Run via `npm run size:baseline` whenever a workflow file legitimately grows
* or shrinks. Growth must still be justified in the PR; this script only
* records the new reality so the CI guard (issue #1074) can diff against it.
*
* Idempotent: running it twice with no file changes produces no diff.
*/
const fs = require('fs');
const path = require('path');
const { measureMdFiles, WORKFLOWS_DIR } = require('./workflow-size.cjs');
const BASELINE_PATH = path.join(__dirname, '..', 'tests', 'workflow-size-baseline.json');
const AGENTS_DIR = path.join(__dirname, '..', 'agents');
const AGENT_BASELINE_PATH = path.join(__dirname, '..', 'tests', 'agent-size-baseline.json');
const isGsdAgent = (f) => f.startsWith('gsd-');
/**
* Serialize a size map to the on-disk baseline format: keys sorted, 2-space
* indent, trailing newline (so the file is a stable, minimal-diff artifact).
*
* @param {Object<string, number>} sizes
* @returns {string}
*/
function serializeBaseline(sizes) {
const sorted = {};
for (const key of Object.keys(sizes).sort()) sorted[key] = sizes[key];
return JSON.stringify(sorted, null, 2) + '\n';
}
/**
* Write a baseline file from the measured `.md` sizes in a directory.
*
* @param {object} [opts]
* @param {string} [opts.dir] - Directory to measure (default: workflows).
* @param {string} [opts.outPath] - Baseline file to write (default: workflow).
* @param {function(string): boolean} [opts.predicate] - Filename filter.
* @returns {{ outPath: string, count: number, content: string }}
*/
function generateBaseline({ dir = WORKFLOWS_DIR, outPath = BASELINE_PATH, predicate } = {}) {
const sizes = measureMdFiles(dir, predicate);
const content = serializeBaseline(sizes);
fs.writeFileSync(outPath, content);
return { outPath, count: Object.keys(sizes).length, content };
}
if (require.main === module) {
const targets = [
{ label: 'workflow', dir: WORKFLOWS_DIR, outPath: BASELINE_PATH },
{ label: 'agent', dir: AGENTS_DIR, outPath: AGENT_BASELINE_PATH, predicate: isGsdAgent },
];
for (const t of targets) {
const { outPath, count } = generateBaseline(t);
process.stdout.write(
`Wrote ${count} ${t.label} sizes to ${path.relative(process.cwd(), outPath)}\n`
);
}
}
module.exports = { generateBaseline, serializeBaseline, BASELINE_PATH, AGENT_BASELINE_PATH };

View File

@@ -5,10 +5,13 @@
*
* Single source of truth for measuring workflow `.md` file sizes in bytes.
*
* Shared by `tests/workflow-size-budget.test.cjs` (the CI guard) and
* `scripts/update-size-baseline.cjs` (the baseline generator) so the two can
* never disagree on HOW a file is measured. A divergence between the generator
* and the guard would silently mis-record the baseline (issue #1074).
* Shared by `tests/workflow-size-budget.test.cjs` / `tests/agent-size-budget.test.cjs`
* (the tier hard-cap guards), `tests/helpers/emitted-runtime.cjs`'s `currentSizes()`
* (the differential attribution check's size ratchet, ADR-2719 Phase 4), and
* `scripts/gen-emitted-baseline.cjs` (the baseline publisher) so none of them can
* disagree on HOW a file is measured (issue #1074). `scripts/update-size-baseline.cjs`,
* the original third consumer, was removed by #2724 along with the per-file baseline
* it generated.
*/
const fs = require('fs');

View File

@@ -1,36 +0,0 @@
{
"gsd-advisor-researcher.md": 4727,
"gsd-ai-researcher.md": 5943,
"gsd-assumptions-analyzer.md": 4646,
"gsd-code-fixer.md": 36640,
"gsd-code-reviewer.md": 16870,
"gsd-codebase-mapper.md": 21614,
"gsd-debug-session-manager.md": 19751,
"gsd-debugger.md": 57197,
"gsd-doc-classifier.md": 11717,
"gsd-doc-synthesizer.md": 13154,
"gsd-doc-verifier.md": 12403,
"gsd-doc-writer.md": 38924,
"gsd-domain-researcher.md": 7032,
"gsd-eval-auditor.md": 12496,
"gsd-eval-planner.md": 7008,
"gsd-executor.md": 48872,
"gsd-framework-selector.md": 6778,
"gsd-integration-checker.md": 15238,
"gsd-intel-updater.md": 18166,
"gsd-mempalace-curator.md": 4325,
"gsd-nyquist-auditor.md": 7345,
"gsd-pattern-mapper.md": 12487,
"gsd-phase-researcher.md": 40866,
"gsd-plan-checker.md": 46363,
"gsd-planner.md": 49311,
"gsd-project-researcher.md": 22242,
"gsd-research-synthesizer.md": 13847,
"gsd-roadmapper.md": 22273,
"gsd-security-auditor.md": 9431,
"gsd-ui-auditor.md": 17249,
"gsd-ui-checker.md": 14118,
"gsd-ui-researcher.md": 19557,
"gsd-user-profiler.md": 8516,
"gsd-verifier.md": 49140
}

View File

@@ -43,12 +43,10 @@ const assert = require('node:assert/strict');
const fs = require('fs');
const os = require('node:os');
const path = require('path');
const { assertFileBaseline } = require('../scripts/lib/allowlist-ratchet.cjs');
const { lfByteCount, measureMdFiles } = require('../scripts/workflow-size.cjs');
const { lfByteCount } = require('../scripts/workflow-size.cjs');
const { cleanup } = require('./helpers.cjs');
const AGENTS_DIR = path.join(__dirname, '..', 'agents');
const BASELINE_PATH = path.join(__dirname, 'agent-size-baseline.json');
const isGsdAgent = (f) => f.startsWith('gsd-');
// Tier HARD CAPS (#1074, bytes) — absolute red lines, not high-water-hugging
@@ -132,25 +130,16 @@ describe('SIZE: agent hard-cap boundary fixtures (#1074 — negative proof)', ()
});
});
describe('SIZE: per-agent baseline (issue #1074)', () => {
// Per-agent exact-size ratchet — the primary anti-creep guard. Guards EVERY
// agent by name against tests/agent-size-baseline.json. Growth fails with the
// file and delta; shrinkage fails as a stale snapshot. Fix: `npm run
// size:baseline` plus a PR justification for genuine growth (or extraction).
test('every agent matches its committed baseline', () => {
const baseline = JSON.parse(fs.readFileSync(BASELINE_PATH, 'utf-8'));
const current = measureMdFiles(AGENTS_DIR, isGsdAgent);
assertFileBaseline({
label: 'agent-size',
current,
baseline,
fail: assert.fail,
updateHint:
'Run `npm run size:baseline` to update tests/agent-size-baseline.json, ' +
'then justify any growth in your PR (or extract shared boilerplate to gsd-core/references/).',
});
});
});
// A prior "SIZE: per-agent baseline (issue #1074)" describe block lived here,
// asserting every agent's exact byte count against the committed
// `tests/agent-size-baseline.json` snapshot. #2724 (ADR-2719 Phase 4) deletes that
// snapshot: it was a pure function of the source tree, and its purpose — "growth
// must be noticed and justified" — is now served by the same differential machine
// that replaced the golden-install-parity fixtures (tests/emitted-attribution.test.cjs's
// real-tree test, via `emitted-diff.cjs`'s size ratchet: growth is reported with its
// exact byte delta and requires an entry in tests/emitted-drift-ack.json, ADR-2719 §4 /
// must-have 6). The tier hard caps above are unaffected — they are independent of the
// deleted baseline and remain the outer bound.
describe('SIZE: every agent is classified', () => {
test('every agent falls in exactly one tier', () => {

View File

@@ -609,43 +609,47 @@ describe('test-full shard matrix parity (#1212)', () => {
});
});
describe('golden-install-parity selection (#1691 drift guard)', () => {
describe('emitted-provenance selection (#1691 drift guard, retargeted by #2724)', () => {
// Regression: a src/*.cts-only edit recompiles bin/lib/*.cjs (changing installed
// hashes), but the scoped CI lane was not re-running golden-install-parity —
// causing golden fixtures to silently drift (#1691 milestone/roadmap cts change).
// Both the 'TS runtime sources' and 'installer and package layout' rules must now
// select tests/golden-install-parity.test.cjs.
// hashes), but the scoped CI lane was not re-running the drift guard — causing
// emitted state to silently drift (#1691 milestone/roadmap cts change). Both the
// 'TS runtime sources' and 'installer and package layout' rules must select
// tests/emitted-provenance.test.cjs. Originally asserted against
// tests/golden-install-parity.test.cjs, deleted by #2724 (ADR-2719 Phase 4); the
// differential attribution check is the sole replacement, so this now asserts
// its selection directly instead of "travels with the golden".
test('src/*.cts change selects golden-install-parity (TS runtime sources rule)', () => {
test('src/*.cts change selects emitted-provenance (TS runtime sources rule)', () => {
const result = scopeFor(['src/milestone.cts']);
assert.strictEqual(result.code_changed, true,
`expected code_changed=true for src/ change, got: ${JSON.stringify(result)}`);
assert.ok(
result.targeted_tests.includes('tests/golden-install-parity.test.cjs'),
`expected golden-install-parity in targeted_tests for src/*.cts change, got: ${JSON.stringify(result.targeted_tests)}`,
result.targeted_tests.includes('tests/emitted-provenance.test.cjs'),
`expected emitted-provenance in targeted_tests for src/*.cts change, got: ${JSON.stringify(result.targeted_tests)}`,
);
});
test('bin/install.js change selects golden-install-parity (installer and package layout rule)', () => {
test('bin/install.js change selects emitted-provenance (installer and package layout rule)', () => {
const result = scopeFor(['bin/install.js']);
assert.strictEqual(result.code_changed, true,
`expected code_changed=true for bin/ change, got: ${JSON.stringify(result)}`);
assert.ok(
result.targeted_tests.includes('tests/golden-install-parity.test.cjs'),
`expected golden-install-parity in targeted_tests for bin/install.js change, got: ${JSON.stringify(result.targeted_tests)}`,
result.targeted_tests.includes('tests/emitted-provenance.test.cjs'),
`expected emitted-provenance in targeted_tests for bin/install.js change, got: ${JSON.stringify(result.targeted_tests)}`,
);
});
});
describe('shipped install content (golden-parity drift guard, #2267)', () => {
describe('shipped install content (emitted-attribution drift guard, #2267, retargeted by #2724)', () => {
// #2266 regression: hooks/gsd-statusline.js changed installed output but no
// RULES entry selected golden-install-parity, so stale golden fixtures merged
// to `next` undetected. The installer emits hooks/*, commands/*, agents/*,
// skills/*, gsd-core/workflows/*, gsd-core/templates/*, gsd-core/references/*,
// RULES entry selected the drift guard, so stale emitted state merged to `next`
// undetected. The installer emits hooks/*, commands/*, agents/*, skills/*,
// gsd-core/workflows/*, gsd-core/templates/*, gsd-core/references/*,
// gsd-core/bin/shared/*.json, and a handful of shipped scripts/* files — every
// one of those paths must additionally select golden-install-parity AND the
// one of those paths must additionally select the emitted gates AND the
// install-tree snapshot (union semantics: this rule ADDS to whatever
// content-specific rule already matched the path).
// content-specific rule already matched the path). Originally asserted the now-
// deleted tests/golden-install-parity.test.cjs (#2724, ADR-2719 Phase 4).
// One path per prefix the rule handles — every installed-source dir the
// installer emits. gsd-core/contexts/ is the regression for the review miss
// (a real shipped dir that the initial enumeration omitted).
@@ -667,13 +671,13 @@ describe('shipped install content (golden-parity drift guard, #2267)', () => {
];
for (const file of SHIPPED_PATHS) {
test(`${file} selects golden-install-parity + golden-install-tree`, () => {
test(`${file} selects emitted-provenance + golden-install-tree`, () => {
const result = scopeFor([file]);
assert.strictEqual(result.code_changed, true,
`expected code_changed=true for ${file}, got: ${JSON.stringify(result)}`);
assert.ok(
result.targeted_tests.includes('tests/golden-install-parity.test.cjs'),
`expected golden-install-parity in targeted_tests for ${file}, got: ${JSON.stringify(result.targeted_tests)}`,
result.targeted_tests.includes('tests/emitted-provenance.test.cjs'),
`expected emitted-provenance in targeted_tests for ${file}, got: ${JSON.stringify(result.targeted_tests)}`,
);
assert.ok(
result.targeted_tests.includes('tests/golden-install-tree.test.cjs'),
@@ -682,13 +686,13 @@ describe('shipped install content (golden-parity drift guard, #2267)', () => {
});
}
test('docs/ change does NOT select golden-install-parity (negative case)', () => {
test('docs/ change does NOT select emitted-provenance (negative case)', () => {
const result = scopeFor(['docs/usage.md']);
assert.strictEqual(result.code_changed, false,
`expected code_changed=false for docs-only change, got: ${JSON.stringify(result)}`);
assert.ok(
!result.targeted_tests.includes('tests/golden-install-parity.test.cjs'),
`docs-only change must NOT select golden-install-parity, got: ${JSON.stringify(result.targeted_tests)}`,
!result.targeted_tests.includes('tests/emitted-provenance.test.cjs'),
`docs-only change must NOT select emitted-provenance, got: ${JSON.stringify(result.targeted_tests)}`,
);
});
@@ -696,9 +700,9 @@ describe('shipped install content (golden-parity drift guard, #2267)', () => {
// The rule allowlists only 3 named scripts + scripts/changeset|lib/. A
// sibling script that is code but NOT installed verbatim must NOT pull in
// the install-tree snapshot — proving this is not a blanket 'scripts/'
// prefix that would re-run the golden on every script edit. Assert on
// golden-install-TREE (the rule's dedicated test), not parity: many scripts/
// paths legitimately select parity via the installer rule's
// prefix that would re-run the guard on every script edit. Assert on
// golden-install-TREE (the rule's dedicated test), not the emitted gates: many
// scripts/ paths legitimately select those via the installer rule's
// path.includes('install') substring.
const result = scopeFor(['scripts/build-hooks.js']);
assert.ok(
@@ -708,40 +712,38 @@ describe('shipped install content (golden-parity drift guard, #2267)', () => {
});
});
describe('differential attribution gates travel with golden-parity (#2758)', () => {
// #2758: the golden-parity rules ran tests/golden-install-parity.test.cjs on a
// shipped-content-only PR — the archetypal emitted ripple — but selected neither
// tests/emitted-provenance.test.cjs nor tests/emitted-attribution.test.cjs. Fix:
// every rule that selects the golden also selects both emitted gates, so the
// differential travels with the golden everywhere the golden travels (the
// ADR-2719 dual-run premise: both green, fixtures untouched, until Phase 4).
describe('the two emitted gates always travel together (#2758, simplified by #2724)', () => {
// #2758: a shipped-content-only PR — the archetypal emitted ripple — must select
// BOTH tests/emitted-provenance.test.cjs and tests/emitted-attribution.test.cjs.
// Originally phrased as "gates travel with the golden" during the #2723 dual-run
// window; #2724 (ADR-2719 Phase 4) deleted tests/golden-install-parity.test.cjs,
// so there is no longer a third file for the gates to travel alongside — this
// now asserts the pairing directly, on the same rule table.
const { RULES } = require('../scripts/ci-test-scope.cjs');
const GOLDEN = 'tests/golden-install-parity.test.cjs';
const GATES = ['tests/emitted-provenance.test.cjs', 'tests/emitted-attribution.test.cjs'];
test('every RULES entry selecting golden-install-parity also selects both emitted gates', () => {
const goldenRules = RULES.filter(r => r.tests.includes(GOLDEN));
test('every RULES entry selecting one emitted gate selects both', () => {
const partial = RULES.filter(r => GATES.some(g => r.tests.includes(g)));
// Guards the guard: if this count ever drops to 0, the assertion below is
// vacuously true and would silently stop meaning anything.
assert.ok(
goldenRules.length >= 3,
`expected at least 3 RULES entries selecting ${GOLDEN}, found ${goldenRules.length}: ` +
`${goldenRules.map(r => r.name).join(', ')}`,
partial.length >= 3,
`expected at least 3 RULES entries selecting an emitted gate, found ${partial.length}: ` +
`${partial.map(r => r.name).join(', ')}`,
);
const offenders = goldenRules.filter(r => !GATES.every(g => r.tests.includes(g)));
const offenders = partial.filter(r => !GATES.every(g => r.tests.includes(g)));
assert.deepStrictEqual(
offenders.map(r => r.name),
[],
`rule(s) select ${GOLDEN} without both emitted gates: ${offenders.map(r => r.name).join(', ')}`,
`rule(s) select one emitted gate without the other: ${offenders.map(r => r.name).join(', ')}`,
);
});
test('a pure shipped-content path selects both emitted gates alongside the golden', () => {
test('a pure shipped-content path selects both emitted gates', () => {
// #2758 AC: "a pure shipped-content path (e.g. gsd-core/workflows/plan-phase.md)
// selects the differential." The archetypal emitted ripple.
const result = scopeFor(['gsd-core/workflows/plan-phase.md']);
assert.strictEqual(result.code_changed, true);
assert.ok(result.targeted_tests.includes(GOLDEN));
for (const g of GATES) {
assert.ok(
result.targeted_tests.includes(g),

View File

@@ -1,25 +1,26 @@
'use strict';
/**
* emitted-attribution.test.cjs — the differential attribution check (#2723,
* ADR-2719 §1/§3/§4/§5/§6, epic #2719 Phase 3).
* emitted-attribution.test.cjs — the differential attribution check (#2723/#2724,
* ADR-2719 §1/§3/§4/§5/§6, epic #2719 Phases 3-4).
*
* Runs BESIDE tests/golden-install-parity.test.cjs — both green, fixtures untouched.
* Any PR where the golden fails and this passes is a Phase 2 provenance-table hole;
* that disagreement is the entire point of the dual-run window, and Phase 4 (#2724)
* must not land until it has been observed on real PRs.
* This is the SOLE gate for emitted-artifact propagation (#2724, Phase 4 cutover).
* `tests/golden-install-parity.test.cjs` — the committed path->hash fixtures it dual-ran
* beside during Phase 3 — is deleted. The dual-run window it ran on real PRs (#2412,
* #2566, #2728) surfaced two real defects (#2750, #2760), both now fixed and merged; no
* disagreement between the two checks was ever observed once both landed correctly.
*
* The law: every emitted path whose hash moved between `next` HEAD and PR HEAD must be
* attributable — through the Phase 2 table — to a path the PR actually changed.
* Unattributable deltas fail with the paths NAMED. The only way through is a committed
* acknowledgment, never a flag (a contributor facing a red gate sets a flag, which is
* what UPDATE_GOLDEN=1 is today).
* what UPDATE_GOLDEN=1 used to be, before #2724 removed it).
*
* Structure: the pure law is exercised against synthetic manifests, which is what makes
* the four failing-first criteria practical to assert at all — and then the final test
* runs that same law against the REAL tree: 19 actual installer spawns for the current
* side, `git show origin/next:<fixture>` for the baseline side, real `git diff` for the
* changed paths, and the real `tests/emitted-drift-ack.json`.
* side, `resolveBaseline()` (env / cache / in-job build) for the baseline side, real
* `git diff` for the changed paths, and the real `tests/emitted-drift-ack.json`.
*
* That last test is load-bearing. Without it this file would be interface-only — every
* assertion true of hand-built inputs and none of the repo — which is the
@@ -42,8 +43,7 @@ const {
resolveChangedPaths,
resolveBase,
baseRefCandidates,
baselineManifestsAtRef,
baselineSizesAtRef,
buildBaselineAtRef,
currentManifests,
currentSizes,
readAckFile,
@@ -54,11 +54,13 @@ const {
FAMILY_REASON,
touchesRuntimeRegistry,
reconcileFamilies,
safeDirArgs,
} = require('./helpers/emitted-runtime.cjs');
const { EXPECTED_MANIFEST_COUNT, loadManifests } = require('./helpers/emitted-provenance.cjs');
const {
ACK_VERSION,
NEW_FILE_CAP,
sourceSatisfiedBy,
parseAck,
diffEmitted,
@@ -68,12 +70,17 @@ const {
const {
BASELINE_ENV,
BASELINE_VERSION,
DEFAULT_CACHE_PATH,
resolveBaseline,
} = require('./helpers/emitted-baseline.cjs');
const SHA_A = 'a'.repeat(40);
const SHA_B = 'b'.repeat(40);
/** This checkout's own root — used to build a synthetic commit in-place (see
* `buildBaselineAtRef resolves a baseline via the in-job build...` below). */
const REPO_ROOT = path.join(__dirname, '..');
/** A real emitted key + its real source, so rows assert the shape production uses. */
const WORKFLOW_KEY = 'gsd-core/workflows/plan-phase.md';
const WORKFLOW_SRC = 'gsd-core/workflows/plan-phase.md';
@@ -553,6 +560,70 @@ test('shrinkage is reported but needs no ack', () => {
assert.ok(r.ok, 'shrinkage is not creep — gating it would punish what the ratchet wants');
});
// ─── New-file cap (ADR-1610 Decision point 3, revived after #2724) ───────────
//
// tests/workflow-size-baseline.json used to double as the "has this file been
// baselined before" signal a NEW_FILE_CAP check keyed off. #2724 deleted it without
// reviving that check anywhere — a brand-new workflow/agent file (present in
// sizeCurrent, absent from sizeBaseline) got zero size scrutiny at all, silently
// loosening the bound from 32768 (ADR-1610) to whichever tier cap it happened to
// fall under (DEFAULT_CAP = 40960, nearly 8 KiB looser) with nothing in CI to say so.
// A file in that gap risks silent truncation at the Codex `project_doc_max_bytes`
// anchor. Not ack-able — same as the tier hard caps, the fix is extraction.
test('a brand-new file at exactly the cap is accepted (limit)', () => {
const r = diffEmitted({
baseline: mf({}), current: mf({}), changedPaths: [],
sizeBaseline: {}, sizeCurrent: { 'new-workflow.md': NEW_FILE_CAP },
});
assert.deepEqual(r.newFileCapExceeded, []);
assert.ok(r.ok, `exactly ${NEW_FILE_CAP} bytes must be accepted`);
});
test('a brand-new file one byte over the cap is rejected (limit+1)', () => {
const r = diffEmitted({
baseline: mf({}), current: mf({}), changedPaths: [],
sizeBaseline: {}, sizeCurrent: { 'new-workflow.md': NEW_FILE_CAP + 1 },
});
assert.deepEqual(r.newFileCapExceeded, [
{ name: 'new-workflow.md', bytes: NEW_FILE_CAP + 1, cap: NEW_FILE_CAP },
]);
assert.ok(!r.ok, `${NEW_FILE_CAP + 1} bytes must be rejected`);
assert.match(formatReport(r), /new-workflow\.md is 32769 bytes/);
});
test('a brand-new file one byte under the cap is accepted (limit-1)', () => {
const r = diffEmitted({
baseline: mf({}), current: mf({}), changedPaths: [],
sizeBaseline: {}, sizeCurrent: { 'new-workflow.md': NEW_FILE_CAP - 1 },
});
assert.deepEqual(r.newFileCapExceeded, []);
assert.ok(r.ok, `${NEW_FILE_CAP - 1} bytes must be accepted`);
});
test('the new-file cap is not ack-able (extraction, not acknowledgment, is the fix)', () => {
const r = diffEmitted({
baseline: mf({}), current: mf({}), changedPaths: [],
sizeBaseline: {}, sizeCurrent: { 'new-workflow.md': NEW_FILE_CAP + 1 },
ack: { version: ACK_VERSION, paths: { 'new-workflow.md': { reason: 'trying to bypass it' } } },
});
assert.equal(r.newFileCapExceeded.length, 1, 'an ack entry must not exempt the new-file cap');
assert.ok(!r.ok);
});
test('an existing (baselined) file is governed by growth, not the new-file cap', () => {
// A file already IN sizeBaseline is not "new" even if it happens to sit above
// NEW_FILE_CAP — that is the tier hard cap's job, not this one's.
const r = diffEmitted({
baseline: mf({}), current: mf({}), changedPaths: [],
sizeBaseline: { 'old.md': NEW_FILE_CAP + 5000 },
sizeCurrent: { 'old.md': NEW_FILE_CAP + 5000 },
});
assert.deepEqual(r.newFileCapExceeded, []);
assert.deepEqual(r.grown, []);
assert.ok(r.ok);
});
// ─── Baseline resolution + staleness ─────────────────────────────────────────
const goodBaseline = (sha) => ({
@@ -677,6 +748,104 @@ test('an unreadable baseline surfaces an error', () => {
assert.match(r.errors.join('\n'), /injected read failure/);
});
// ─── buildBaselineAtRef: the in-job build must bootstrap without its own generator ──
test(
'buildBaselineAtRef resolves a baseline via the in-job build even when the generator '
+ 'script is absent at the ref (#2767 regression)',
{ timeout: 300_000 },
(t) => {
// Mirrors "differential attribution over the real tree": install output is
// platform-specific on Windows, and this drives the same heavy worktree +
// build:lib + 19-installer pipeline.
if (process.platform === 'win32') {
t.skip('emitted parity is asserted on macOS + Linux; Windows install output is platform-specific');
return;
}
// Hermetic by construction (#2767 review finding B). This test used to resolve a
// real base ref (typically `origin/next`) and skip unless that ref, checked via
// `git cat-file -e`, still LACKED scripts/gen-emitted-baseline.cjs — the file THIS
// PR adds. That was true only until this PR merged: after merge every resolvable
// base ref carries the file, the precondition is permanently false, and the test
// would skip forever, losing all regression value silently (a skip reads as green).
// It also depended on `origin/next` being resolvable at all, which the gsd-test
// runner's shallow clone + base/head merge does not guarantee (no remote-tracking
// refs) — the same non-hermetic-history failure mode "baseline families are
// enumerated from the ref, not from the current registry" (above) was rewritten to
// avoid, by building its own throwaway git repo instead of reaching for this
// repo's history.
//
// That precedent doesn't directly transplant here: `buildBaselineAtRef` needs a
// REAL, buildable gsd-core tree (`npm run build:lib`, the compiled `bin/lib/*.cjs`,
// `node_modules`) to produce a real manifest — a minimal from-scratch repo has none
// of that. So instead of a from-scratch repo, this synthesizes the missing-generator
// condition IN-PLACE with git plumbing: read this checkout's own HEAD tree into a
// scratch index (a temp `GIT_INDEX_FILE`, never the real `.git/index`), remove just
// `scripts/gen-emitted-baseline.cjs` from that index, write the resulting tree, and
// commit it as a child of HEAD. The result is one loose commit object — a real,
// buildable tree identical to HEAD's except missing the one file under test — that
// is never referenced by any branch, tag, or ref, so it is not checked out, not
// pushed, and needs no cleanup beyond the scratch index directory itself. The real
// working tree, HEAD, and index of this checkout are never touched.
const tmpIndexDir = createTempDir('emitted-baseline-synth-index-');
t.after(() => cleanup(tmpIndexDir));
const tmpIndexFile = path.join(tmpIndexDir, 'index');
const gitEnv = {
...process.env,
GIT_INDEX_FILE: tmpIndexFile,
GIT_AUTHOR_NAME: 'GSD Test', GIT_AUTHOR_EMAIL: 'test@example.invalid',
GIT_COMMITTER_NAME: 'GSD Test', GIT_COMMITTER_EMAIL: 'test@example.invalid',
};
// `-c safe.directory=<REPO_ROOT>` via the shared `safeDirArgs` (emitted-runtime.cjs):
// the remote runner mounts this repo at a path owned by a different uid, and git's
// dubious-ownership protection refuses every operation there otherwise — this test
// proved that the hard way (#2767 review) when its first `git rev-parse HEAD` failed
// closed. Reusing the SAME helper `buildBaselineAtRef` now uses (below) rather than
// hand-rolling the flag here keeps the fix from silently diverging per call site.
const run = (...args) => execFileSync('git', [...safeDirArgs(REPO_ROOT), ...args], {
cwd: REPO_ROOT, encoding: 'utf8', timeout: 30_000, env: gitEnv, stdio: ['ignore', 'pipe', 'pipe'],
}).trim();
const headSha = run('rev-parse', 'HEAD');
run('read-tree', 'HEAD');
run('update-index', '--force-remove', 'scripts/gen-emitted-baseline.cjs');
const syntheticTree = run('write-tree');
const syntheticSha = run(
'commit-tree', syntheticTree, '-p', headSha, '-m',
'synthetic: missing scripts/gen-emitted-baseline.cjs (#2767 test fixture — unreferenced, never pushed)',
);
// Precondition, ASSERTED not assumed: the synthetic commit truly lacks the file —
// otherwise this test would prove nothing.
assert.throws(
() => execFileSync('git', [...safeDirArgs(REPO_ROOT), 'cat-file', '-e', `${syntheticSha}:scripts/gen-emitted-baseline.cjs`], {
cwd: REPO_ROOT, encoding: 'utf8', timeout: 30_000, stdio: 'pipe',
}),
/./,
'the synthetic ref must genuinely lack the generator script for this test to prove anything',
);
// The actual regression assertion: this must NOT throw "Cannot find module", and
// must produce a well-formed baseline artifact measuring the SYNTHETIC ref, not the
// caller's own tree. Before the #2767 fix, `buildBaselineAtRef` unconditionally ran
// `<worktreeDir>/scripts/gen-emitted-baseline.cjs` — the checked-out WORKTREE'S OWN
// copy — which fails closed with `Cannot find module` for exactly this ref shape.
const artifact = buildBaselineAtRef(syntheticSha, { cwd: REPO_ROOT });
assert.equal(artifact.version, BASELINE_VERSION);
assert.equal(
artifact.sha, syntheticSha,
'the artifact must report the REF\'s sha, not the caller checkout\'s',
);
assert.ok(artifact.manifests && typeof artifact.manifests === 'object');
assert.ok(
Object.keys(artifact.manifests).length >= MINIMUM_MANIFEST_FAMILIES,
`expected at least ${MINIMUM_MANIFEST_FAMILIES} manifest families, got ${Object.keys(artifact.manifests).length}`,
);
assert.ok(artifact.sizes && Object.keys(artifact.sizes).length > 0, 'sizes must be non-empty');
},
);
test('readAckFile: absent is legal, malformed and unreadable are not', () => {
const tmp = fs.mkdtempSync(path.join(require('node:os').tmpdir(), 'gsd-ack-'));
try {
@@ -1125,6 +1294,10 @@ test('baseline families are enumerated from the ref, not from the current regist
// clone and fails in the runner, which is exactly what it did.
const repo = createTempDir('emitted-baseline-ref');
t.after(() => cleanup(repo));
// No `safeDirArgs` needed here (unlike the #2767 fix above): `repo` is a directory
// this same process just created with `mkdtempSync` + `git init`, so its owner is
// always the uid running the test regardless of container — it is never the
// externally-mounted repo path the dubious-ownership check reacts to.
const run = (...args) => execFileSync('git', args, { cwd: repo, encoding: 'utf8', timeout: 30_000 });
run('init', '--quiet', '-b', 'main');
@@ -1225,15 +1398,19 @@ test('property: reported added/dropped are exactly the set differences', () => {
// Everything above exercises the pure law against synthetic input, which is what makes
// the acceptance criteria practical to assert at all. This block is what stops the
// phase from being interface-only: it builds the CURRENT emitted manifests for real
// (one installer spawn per runtime), reads the BASELINE from `origin/next`, resolves
// the changed paths with real git, reads the real ack file, and runs the conservation
// law over all of it.
// (one installer spawn per runtime), resolves the BASELINE via `resolveBaseline()`,
// resolves the changed paths with real git, reads the real ack file, and runs the
// conservation law over all of it.
//
// Baseline source note: `git show origin/next:<fixture>` — next's RECORDED emitted
// state. Deliberately not the working-tree fixtures, which are whatever this PR's
// author regenerated; comparing against those would be vacuous. Phase 4 (#2724)
// deletes the fixtures and swaps in resolveBaseline's cache path, which is already
// implemented and tested above.
// Baseline source note (#2724, post-cutover): the committed golden fixtures this test
// used to read via `git show origin/next:<fixture>` are deleted. `resolveBaseline()`'s
// documented precedence takes over: `GSD_EMITTED_BASELINE` env (CI's PR-lane cache
// restore, keyed on the PR's base sha) -> the on-disk cache at
// `.gsd-cache/emitted-baseline.json` (populated by CI's push-to-next publish step,
// scripts/gen-emitted-baseline.cjs) -> an in-job build (a throwaway `git worktree`
// checked out at `base`, running the same script there — slow but never absent). Never
// the working-tree fixtures, which would be whatever this PR's author regenerated;
// comparing against those would be vacuous.
test('differential attribution over the real tree', { timeout: 900_000 }, async (t) => {
if (process.platform === 'win32') {
@@ -1271,13 +1448,26 @@ test('differential attribution over the real tree', { timeout: 900_000 }, async
const { ref: base, sha: baseSha } = resolved;
assert.match(baseSha, /^[0-9a-f]{40}$/);
const baseline = baselineManifestsAtRef(base);
// Phase 4 (#2724): the golden fixtures this used to read via `baselineManifestsAtRef`
// (git show <base>:<fixture>) are deleted, so the baseline now comes through
// `resolveBaseline()`'s documented precedence: GSD_EMITTED_BASELINE env (CI's PR-lane
// cache restore) -> the on-disk cache (CI's push-to-next publish step) -> an in-job
// build at `base` (a throwaway git worktree + scripts/gen-emitted-baseline.cjs) ->
// explicit failure. The build fallback is deliberately the slow path — it exists so a
// cache miss degrades rather than fails outright (ADR-2719 §5).
const readBaselineJson = (p) => (fs.existsSync(p) ? JSON.parse(fs.readFileSync(p, 'utf8')) : null);
const resolvedBaseline = resolveBaseline({
expectedSha: baseSha,
readJson: readBaselineJson,
buildFallback: () => buildBaselineAtRef(base),
});
assert.ok(
baseline && Object.keys(baseline).length > 0,
`no baseline manifests found at ${base}. During the dual-run window these come from the ` +
'committed golden fixtures at that ref; after Phase 4 they come from the cached ' +
'baseline artifact via resolveBaseline().',
resolvedBaseline.ok,
`no usable emitted baseline for ${base}@${baseSha.slice(0, 12)} (tried env, ` +
`${DEFAULT_CACHE_PATH}, and an in-job build):\n ${(resolvedBaseline.errors || []).join('\n ')}`,
);
const baseline = resolvedBaseline.baseline;
assert.ok(baseline && Object.keys(baseline).length > 0, `resolved baseline via ${resolvedBaseline.via} has no families`);
const changedPaths = resolveChangedPaths(base);
const ack = readAckFile();
@@ -1308,7 +1498,7 @@ test('differential attribution over the real tree', { timeout: 900_000 }, async
current,
changedPaths,
ack,
sizeBaseline: baselineSizesAtRef(base),
sizeBaseline: resolvedBaseline.sizeBaseline,
sizeCurrent: currentSizes(),
});

View File

@@ -34,12 +34,12 @@ const fs = require('node:fs');
const path = require('node:path');
const fc = require('fast-check');
const { cleanup } = require('./helpers.cjs');
const {
EXPECTED_MANIFEST_COUNT,
PROVENANCE_RULES,
COMMANDS_SRC,
CLINE_BODY_SRC,
HOOKS_WINDOWS_SHIM_SRC,
KIMI_ROOT_AGENT_SRC,
AGENT_TRANSFORM_SRCS,
stripSkillPrefix,
@@ -100,9 +100,10 @@ test('every attributed source exists in the repo (identity/rewrite/derived rules
// points at the wrong place. A source path that does not exist is proof the rule
// is wrong, and it is how the three real bugs in this table were found.
const missing = [];
const missingTransforms = [];
for (const { runtime, file, keys } of manifests()) {
for (const rel of keys) {
const { ruleId, kind, sources } = attributeEmittedPath(rel, runtime);
const { ruleId, kind, sources, transforms } = attributeEmittedPath(rel, runtime);
if (kind === 'synthesized') {
assert.equal(sources.length, 0, `synthesized rule "${ruleId}" must have no sources`);
continue;
@@ -116,9 +117,23 @@ test('every attributed source exists in the repo (identity/rewrite/derived rules
const full = path.join(REPO_ROOT, src);
if (!fs.existsSync(full)) missing.push(`${file}: ${rel} -> ${src} (rule ${ruleId})`);
}
// Same existence gate for `transforms` (#2757/#2767). This is what actually
// exercises a FUNCTION-valued transforms field (e.g. hooks-built's `.cmd`
// special-case) against every REAL emitted key on the platform that emits
// it — the static "every declared transform path exists" test below cannot
// do this for a function, since it never invokes it.
for (const t of transforms) {
const full = path.join(REPO_ROOT, t);
if (!fs.existsSync(full)) missingTransforms.push(`${file}: ${rel} -> ${t} (rule ${ruleId})`);
}
}
}
assert.deepEqual(missing, [], `attributed sources that do not exist:\n ${missing.slice(0, 10).join('\n ')}`);
assert.deepEqual(
missingTransforms,
[],
`attributed transforms that do not exist:\n ${missingTransforms.slice(0, 10).join('\n ')}`,
);
});
// ─── Spot-checks: known emitted/source pairs (#2722 "add spot-check tests") ──
@@ -251,6 +266,57 @@ test('spot-check: hooks attribute to repo source, not the dist build artifact',
assert.deepEqual(reg.sources, [CLINE_BODY_SRC]);
});
test('spot-check: Windows-only .cmd shim is code-derived from its generator, not from the .js hook it wraps (#3426/#2767)', () => {
// Regression coverage for the windows-latest-only CI failure: the shim is emitted
// ONLY when the installer actually runs on win32 (ensureCodexHooksJsonSessionStart /
// ensureCodexHooksJsonEvent), so this drives attributeEmittedPath directly rather
// than through `manifests()` — that keeps the test meaningful on every OS this
// suite runs on, not just the one CI lane that happens to emit the key for real.
//
// Verified empirically: zero `.cmd` files are tracked anywhere in the repo
// (`git ls-files | grep '\\.cmd$'` is empty), so the original generic `hooks-built`
// attribution (source = the emitted path itself) resolved every `.cmd` shim to a
// file that exists on no platform — exactly the false-attribution class "every
// attributed source exists" exists to catch, and it only fired on windows-latest
// because that is the only lane where the key is ever actually emitted.
//
// A SECOND false-attribution then replaced the first (caught by isolated review,
// #2767): pointing `sources` at `hooks/<name>.js` asserts the wrapped script's
// BYTES flow into the `.cmd` bytes. Traced against buildCodexHookWindowsShimIR
// (src/runtime-hooks-surface.cts), they do not — the `.cmd` bytes are
// `@ECHO OFF\r\n@SETLOCAL\r\n@<runner> <script> %*\r\n`, built from the install-time
// interpreter token and the absolute install path, plus a hardcoded literal
// filename baked into that same source file. Only the `.js` file's NAME flows in;
// its content never does. `sources` must therefore point at the SAME file as
// `transforms` (HOOKS_WINDOWS_SHIM_SRC) — the `code-derived` shape used elsewhere
// in this table — not at the wrapped script.
for (const name of ['gsd-check-update', 'gsd-context-monitor']) {
const got = attributeEmittedPath(`hooks/${name}.cmd`, 'codex');
assert.equal(got.ruleId, 'hooks-built');
assert.deepEqual(got.sources, [HOOKS_WINDOWS_SHIM_SRC]);
assert.ok(
!got.sources.includes(`hooks/${name}.cmd`),
'a .cmd shim must never attribute to itself — no .cmd file is ever tracked in the repo',
);
assert.ok(
!got.sources.includes(`hooks/${name}.js`),
'a .cmd shim must not attribute to the wrapped .js script — its CONTENT never flows into the .cmd bytes, only its NAME (a literal inside HOOKS_WINDOWS_SHIM_SRC) does',
);
assert.deepEqual(got.transforms, [HOOKS_WINDOWS_SHIM_SRC]);
assert.ok(
fs.existsSync(path.join(REPO_ROOT, HOOKS_WINDOWS_SHIM_SRC)),
'the declared source/transform path must exist',
);
}
// A plain (non-.cmd) hook is unaffected: still a straight identity-shaped copy
// sourced from the repo hook it was built from, still no transform (the shim
// generator cannot move a plain hook's bytes).
const plain = attributeEmittedPath('hooks/gsd-statusline.js', 'claude');
assert.deepEqual(plain.sources, ['hooks/gsd-statusline.js']);
assert.deepEqual(plain.transforms, []);
});
test('spot-check: cline rules are code-derived (attributable), not exempt', () => {
for (const rel of ['.clinerules/gsd.md', '.clinerules/hooks/PreToolUse']) {
const got = attributeEmittedPath(rel, 'cline');
@@ -298,6 +364,38 @@ test('a rule with no transforms field still returns an empty array, never undefi
assert.deepEqual(got.transforms, [], 'absence of transforms must be a stable empty array, not undefined');
});
test('a FUNCTION-valued transforms field is invoked with (match, ctx) and its array is returned', () => {
// hooks-built's `.cmd` special-case exercises this in production, but this test
// pins the general contract with an injected rule so it does not depend on
// hooks-built's specific pattern surviving a future refactor.
const rules = [{
id: 'fn-transforms-probe',
kind: 'derived',
roots: ['probe'],
pattern: /^(.+)$/,
sources: (m) => [`probe/${m[1]}`],
transforms: (m, ctx) => [`transform-for-${m[1]}-on-${ctx.runtime}`],
}];
const got = attributeEmittedPath('probe/thing.txt', 'claude', rules);
assert.deepEqual(got.transforms, ['transform-for-thing.txt-on-claude']);
});
test('a FUNCTION-valued transforms field that returns a non-array throws, naming the rule', () => {
const rules = [{
id: 'bad-fn-transforms',
kind: 'derived',
roots: ['probe'],
pattern: /^(.+)$/,
sources: (m) => [`probe/${m[1]}`],
transforms: () => 'not-an-array',
}];
assert.throws(
() => attributeEmittedPath('probe/thing.txt', 'claude', rules),
(err) => err.message.includes('bad-fn-transforms') && err.message.includes('array'),
'a malformed transforms() return value must fail loud and name the rule',
);
});
test('every declared transform path exists in the repo', () => {
// Same philosophy as "every attributed source exists in the repo": a transform path
// that does not exist is proof the rule (or the design's own suggested files) is
@@ -305,6 +403,11 @@ test('every declared transform path exists in the repo', () => {
// design: it does not exist in this tree.
const missing = [];
for (const rule of PROVENANCE_RULES) {
// Function-valued transforms (#2767, e.g. hooks-built's `.cmd` special-case) vary
// per match and can't be enumerated statically without one — they are checked
// against every REAL emitted key instead, by "every attributed source exists in
// the repo" above (which now also asserts transform-path existence).
if (typeof rule.transforms === 'function') continue;
for (const t of rule.transforms || []) {
if (!fs.existsSync(path.join(REPO_ROOT, t))) missing.push(`${rule.id}: ${t}`);
}
@@ -330,6 +433,21 @@ test('assertNoIdentityTransforms rejects an identity rule declaring transforms,
);
});
test('assertNoIdentityTransforms rejects a FUNCTION-valued transforms on an identity rule (#2767)', () => {
// hooks-built's `.cmd` special-case (this PR) proved `transforms` can legally be a
// function on a `derived` rule. This pins the other half: the function form must be
// rejected on `identity` exactly like the array form is — an identity copy's bytes
// can only move when its source moves, regardless of which shape declares otherwise.
const corrupted = PROVENANCE_RULES.map((r) => (
r.id === 'scripts-verbatim' ? { ...r, transforms: () => ['scripts/build-hooks.js'] } : r
));
assert.throws(
() => assertNoIdentityTransforms(corrupted),
(err) => err.message.includes('scripts-verbatim') && err.message.includes('identity'),
'a function-valued transforms on an identity rule must be named and rejected',
);
});
test('assertNoIdentityTransforms does not throw when transforms is absent or empty', () => {
const emptyArray = PROVENANCE_RULES.map((r) => (
r.id === 'scripts-verbatim' ? { ...r, transforms: [] } : r
@@ -578,52 +696,59 @@ test('partial failure names only the offending key (limit+1)', () => {
// ─── Hostile input ───────────────────────────────────────────────────────────
test('non-object manifest JSON is rejected, not silently treated as empty', () => {
const tmp = fs.mkdtempSync(path.join(require('node:os').tmpdir(), 'gsd-prov-'));
try {
// Each of these parses cleanly but has no keys — treating them as "no paths"
// would let the entire guard pass vacuously on a corrupt fixture.
for (const [name, body] of [
['zero.json', '0'],
['str.json', '"a string"'],
['arr.json', '[]'],
['null.json', 'null'],
['bool.json', 'true'],
]) {
fs.writeFileSync(path.join(tmp, name), body);
assert.throws(
() => loadManifests(tmp),
(err) => err.message.includes(name) && err.message.includes('path->hash'),
`${name} must be rejected with a message naming the file`,
);
fs.unlinkSync(path.join(tmp, name));
}
// #2724 (ADR-2719 Phase 4): loadManifests() used to read committed fixture JSON off
// disk (`fs.readFileSync` over `tests/fixtures/golden-install-parity/*.json`), which
// is what made these two hostile-input tests injectable — write a bad file, point
// the loader at the temp dir. That fixture directory is deleted; loadManifests()
// now builds every manifest for real (install + hash), so the injection seam moved
// to loadManifests()'s own {families, install, build, clean} parameters instead.
// Present but empty.
fs.writeFileSync(path.join(tmp, 'empty.json'), '');
assert.throws(() => loadManifests(tmp), /empty\.json is empty/);
fs.unlinkSync(path.join(tmp, 'empty.json'));
const FAKE_FAMILY = [{ name: 'fake', runtime: 'fake', scope: 'global' }];
const fakeInstall = () => ({ configDir: '/fake/config', root: '/fake/root' });
// Valid JSON object is accepted.
fs.writeFileSync(path.join(tmp, 'ok.json'), '{"scripts/lib/cli-exit.cjs":"deadbeef"}');
assert.equal(loadManifests(tmp).length, 1);
} finally {
cleanup(tmp);
test('a non-object build result is rejected, not silently treated as empty', () => {
// Each of these "parses" cleanly but has no keys — treating them as "no paths"
// would let the entire guard pass vacuously on a corrupt build.
for (const bad of [0, 'a string', [], null, true]) {
let cleaned = false;
assert.throws(
() => loadManifests({
families: FAKE_FAMILY,
install: fakeInstall,
build: () => bad,
clean: () => { cleaned = true; },
}),
(err) => err.message.includes('fake') && err.message.includes('path->hash'),
`${JSON.stringify(bad)} must be rejected with a message naming the family`,
);
assert.ok(cleaned, 'clean() must still run when build() returns a bad value');
}
// A valid object is accepted.
const result = loadManifests({
families: FAKE_FAMILY,
install: fakeInstall,
build: () => ({ 'scripts/lib/cli-exit.cjs': 'deadbeef' }),
clean: () => {},
});
assert.equal(result.length, 1);
assert.deepEqual(result[0], { file: 'fake.json', runtime: 'fake', keys: ['scripts/lib/cli-exit.cjs'] });
});
test('unreadable fixture surfaces an error', () => {
// Deterministic fs monkeypatch restored in `finally` — NEVER chmod 0o000, which
// root bypasses (the test would silently pass with zero coverage in root CI).
const orig = fs.readFileSync;
try {
fs.readFileSync = () => { throw new Error('injected read failure'); };
assert.throws(() => loadManifests(), /injected read failure/);
} finally {
fs.readFileSync = orig;
}
// Restoration is real, not assumed.
assert.equal(loadManifests().length, EXPECTED_MANIFEST_COUNT);
test('a build failure surfaces an error, and clean() still runs', () => {
let cleaned = false;
assert.throws(
() => loadManifests({
families: FAKE_FAMILY,
install: fakeInstall,
build: () => { throw new Error('injected build failure'); },
clean: () => { cleaned = true; },
}),
/injected build failure/,
);
// The `finally` around build() must run clean() even when build() throws —
// an install left behind on every hostile build is a real resource leak.
assert.ok(cleaned, 'clean() must run even when build() throws');
});
// ─── Table invariants ────────────────────────────────────────────────────────

View File

@@ -1,444 +0,0 @@
{
".gsd-profile": "0e716a5fef4e6dc1",
".gsd/defaults.json": "3f87862c1f6b7d30",
"agents/gsd-advisor-researcher.md": "45af60c237748ee1",
"agents/gsd-ai-researcher.md": "ba8898d9e739a501",
"agents/gsd-assumptions-analyzer.md": "00a02fdcbaa8d833",
"agents/gsd-code-fixer.md": "6937a1f20beaa1c6",
"agents/gsd-code-reviewer.md": "a700d295bbf110a9",
"agents/gsd-codebase-mapper.md": "aa06b807bd7a5e3e",
"agents/gsd-debug-session-manager.md": "58cead58ae6f455a",
"agents/gsd-debugger.md": "9c8f34fc022b2616",
"agents/gsd-doc-classifier.md": "fca19595590391df",
"agents/gsd-doc-synthesizer.md": "0e5184bbcf0dca02",
"agents/gsd-doc-verifier.md": "888c6ac870cb91a6",
"agents/gsd-doc-writer.md": "d4400c8dab4a9efc",
"agents/gsd-domain-researcher.md": "1db46cac3f4d9889",
"agents/gsd-eval-auditor.md": "1b8391f1aafb067f",
"agents/gsd-eval-planner.md": "3d10fd11147f6857",
"agents/gsd-executor.md": "5c31f63a3e9559a0",
"agents/gsd-framework-selector.md": "daa62c79619c76bf",
"agents/gsd-integration-checker.md": "0643cd2d779b131c",
"agents/gsd-intel-updater.md": "26c1f1e028c6346a",
"agents/gsd-mempalace-curator.md": "dafdc4394d514a93",
"agents/gsd-nyquist-auditor.md": "805a1404d03629f1",
"agents/gsd-pattern-mapper.md": "e62ee90d39084802",
"agents/gsd-phase-researcher.md": "cff1196c8e8bb4fa",
"agents/gsd-plan-checker.md": "893e88036b4ad419",
"agents/gsd-planner.md": "e916e99dab32a95b",
"agents/gsd-project-researcher.md": "85de7f562872ee9b",
"agents/gsd-research-synthesizer.md": "18a2e1b30ff7ae3a",
"agents/gsd-roadmapper.md": "7a8465ac6d4dd29e",
"agents/gsd-security-auditor.md": "7730a026680cb821",
"agents/gsd-ui-auditor.md": "f777f9c7bf62788c",
"agents/gsd-ui-checker.md": "216af34b01e277aa",
"agents/gsd-ui-researcher.md": "5f86de1decbd16d2",
"agents/gsd-user-profiler.md": "25d65f6458454764",
"agents/gsd-verifier.md": "134de2aa70d323b4",
"gsd-core/.gsd-runtime": "54e851f5dd76ba94",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "ea841e2865248e74",
"gsd-core/bin/gsd-tools.cjs": "14e050d487a715e6",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "8bc541aabc2e143c",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "51b5d0ba5b1e98d9",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "425dd69c629230e7",
"gsd-core/references/api-coverage.md": "53d290a68f83c7d0",
"gsd-core/references/artifact-types.md": "e176817364a7cbf4",
"gsd-core/references/autonomous-smart-discuss.md": "efd80aca449032ad",
"gsd-core/references/checkpoints.md": "130bb6ef705fc065",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "0c8a4b3dee1f6666",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-bug-taxonomy.md": "4c13da220b6a4261",
"gsd-core/references/debugger-fix-acceptance.md": "87d367e4e864910e",
"gsd-core/references/debugger-philosophy.md": "459a8ac647c4ce9c",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "745e517012e03d23",
"gsd-core/references/debugger-sbfl.md": "de9cd1bd0e1485c6",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
"gsd-core/references/domain-probes.md": "762b965e84035b72",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "89c8d04ce0d31d0d",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-quota-recovery.md": "713cf7681f57e7ce",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "826cf9315e592a1d",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "43e867720e736464",
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
"gsd-core/references/git-integration.md": "9e6076a137f9e156",
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
"gsd-core/references/gsd-run-resolver.md": "c11c191ffad86a9f",
"gsd-core/references/honest-verifier.md": "a31a4bf42d82d5e9",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "fc72060a71580bc6",
"gsd-core/references/model-profiles.md": "6568ca29b6ee00d8",
"gsd-core/references/mvp-concepts.md": "3464783eaaef5c10",
"gsd-core/references/offer-next.md": "dff6b2a56a2946cd",
"gsd-core/references/phase-argument-parsing.md": "e5bbb985f3bc3e34",
"gsd-core/references/planner-antipatterns.md": "88a0cd714d33fe34",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "1ed614dfba72f2a3",
"gsd-core/references/planner-guidance.md": "a6a2435b0e5b2871",
"gsd-core/references/planner-human-verify-mode.md": "676e43b03af6b25b",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "90cb2ecd1f3eb4d8",
"gsd-core/references/planner-mvp-mode.md": "cdac9dde7cd8fa84",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "74acbf4a873a01e4",
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "a5fa9b0aec6f321d",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "e1cf3b27e936e07d",
"gsd-core/references/project-skills-discovery.md": "d8701bc00a470923",
"gsd-core/references/questioning.md": "8f26dfe5794b1e6e",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "a602b41bfa081fdf",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "a857fc444baec27a",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "558870a1c4bc4c29",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "5a308e4beeabd013",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "2e476a78c8dab51b",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "827c1badf3e6df41",
"gsd-core/references/ui-brand.md": "48717bcfcd63bd27",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "6a1245050b21df01",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "8e023a908d968af1",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "a3e2d5166d16a37b",
"gsd-core/references/verification-patterns.md": "de7ebb43dea1d20f",
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
"gsd-core/references/workstream-flag.md": "225910640adbb76d",
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "72e93b7f650d9bae",
"gsd-core/templates/README.md": "28160dd8b0631652",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "e4d0f1c48727fce3",
"gsd-core/templates/claude-md.md": "8797c0c7da927c8e",
"gsd-core/templates/codebase/architecture.md": "282db635ba093b1a",
"gsd-core/templates/codebase/concerns.md": "e66c584daa636fc5",
"gsd-core/templates/codebase/conventions.md": "c5f0324730852701",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "6c505bdf5af338c8",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "593d4e6d20fdde7c",
"gsd-core/templates/continue-here.md": "8b1dce4832c7922b",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "8c18a89e25929d8e",
"gsd-core/templates/dev-preferences.md": "95048a71063d980b",
"gsd-core/templates/discovery.md": "e4ab738326eb70e0",
"gsd-core/templates/discussion-log.md": "da4e8e266efdc6c2",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "31f627d456ab14b0",
"gsd-core/templates/planner-subagent-prompt.md": "6c9f1b23ee3dc05f",
"gsd-core/templates/project.md": "fae14114f2b79b10",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "b454f96fdf8b1d3d",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "8734f0df4df3a34b",
"gsd-core/templates/state.md": "a45a134631efe3f9",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "85f4d37fcee6852b",
"gsd-core/templates/user-profile.md": "52abe2af968e8533",
"gsd-core/templates/user-setup.md": "1da2382725db080f",
"gsd-core/templates/verification-report.md": "78ab9264ce63ed7e",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "8cc2e884a021b79b",
"gsd-core/workflows/add-phase.md": "820572da6367308c",
"gsd-core/workflows/add-tests.md": "6eb1897c448bbd21",
"gsd-core/workflows/add-todo.md": "69af1e11021d6765",
"gsd-core/workflows/ai-integration-phase.md": "95585dbc4065f09c",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "fa1c3b3cb96b9031",
"gsd-core/workflows/audit-milestone.md": "3bfd8fd204d97a68",
"gsd-core/workflows/audit-uat.md": "ea8ddd910ed16ba4",
"gsd-core/workflows/autonomous.md": "4c772d7c708706d1",
"gsd-core/workflows/check-todos.md": "d0c7e3e4df580256",
"gsd-core/workflows/cleanup.md": "260c5e46afc1c174",
"gsd-core/workflows/code-review-fix.md": "5a28df1688f34e72",
"gsd-core/workflows/code-review.md": "faff151cfc12fe8e",
"gsd-core/workflows/complete-milestone.md": "f54214679be6a98a",
"gsd-core/workflows/debug.md": "9b63abb371ca9097",
"gsd-core/workflows/diagnose-issues.md": "1a70a1bcd3b98511",
"gsd-core/workflows/discovery-phase.md": "222887a5b2094a50",
"gsd-core/workflows/discuss-phase-assumptions.md": "525a4d2dda3ea615",
"gsd-core/workflows/discuss-phase-power.md": "5c0d1ca6abda0383",
"gsd-core/workflows/discuss-phase.md": "c0a977154470b7f5",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "ab0c68941386998b",
"gsd-core/workflows/discuss-phase/modes/all.md": "e5fe9c9c1e2bec1a",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "da0788f3be7f8105",
"gsd-core/workflows/discuss-phase/modes/auto.md": "c412dfbb5d536935",
"gsd-core/workflows/discuss-phase/modes/batch.md": "6946597770e2d448",
"gsd-core/workflows/discuss-phase/modes/chain.md": "a6f486a303c9bd53",
"gsd-core/workflows/discuss-phase/modes/default.md": "4c5ba5975dcc1e9c",
"gsd-core/workflows/discuss-phase/modes/power.md": "96822b22c42d75e8",
"gsd-core/workflows/discuss-phase/modes/text.md": "c384c22ffff4dc02",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "da6bf5281bf7d2bf",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "2b56ec2868cbddb4",
"gsd-core/workflows/do.md": "6be997df35e9e82b",
"gsd-core/workflows/docs-update.md": "53dd4148dd0f4c90",
"gsd-core/workflows/edit-phase.md": "fc932e82ba1f585a",
"gsd-core/workflows/eval-review.md": "610775f4968f7807",
"gsd-core/workflows/execute-phase.md": "a20deff10f1a9c7b",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "1832b97d0923fa67",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "0404bcd32f47715e",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "13aa54f8279960ae",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "476f88892510a09e",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "5c6fcb36e16f5bf7",
"gsd-core/workflows/explore.md": "965e1c0ede05f40c",
"gsd-core/workflows/extract-learnings.md": "82f8b60ab36e4818",
"gsd-core/workflows/fast.md": "568e6c3ec00b6e00",
"gsd-core/workflows/forensics.md": "b64f0309b8c3fde1",
"gsd-core/workflows/graduation.md": "c892887f212c9cff",
"gsd-core/workflows/health.md": "8202d3532bde3952",
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
"gsd-core/workflows/help/modes/full.md": "4d35519480fe338c",
"gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69",
"gsd-core/workflows/import.md": "91314267f921961b",
"gsd-core/workflows/inbox.md": "923bf25e18a71698",
"gsd-core/workflows/ingest-docs.md": "a0ae5398022c8730",
"gsd-core/workflows/insert-phase.md": "cdd83cf77d0f7485",
"gsd-core/workflows/list-phase-assumptions.md": "e7b5e35c9452e3b3",
"gsd-core/workflows/list-seeds.md": "3a8b612306ecf9c3",
"gsd-core/workflows/list-workspaces.md": "f6b1bc9fa13cc155",
"gsd-core/workflows/manager.md": "7cd083b4f5b721b6",
"gsd-core/workflows/map-codebase.md": "19f186f82b4f0b01",
"gsd-core/workflows/milestone-summary.md": "c4620853fe489126",
"gsd-core/workflows/mvp-phase.md": "3675856fb091e68a",
"gsd-core/workflows/new-milestone.md": "9d9935f346190a0c",
"gsd-core/workflows/new-project.md": "750dcb2c591fbbdf",
"gsd-core/workflows/new-workspace.md": "2310910fea2368db",
"gsd-core/workflows/next.md": "2efc12058dee2d29",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "3ce09c0aa0a20599",
"gsd-core/workflows/onboard.md": "af12b0573b14ce7f",
"gsd-core/workflows/pause-work.md": "564de32981a24337",
"gsd-core/workflows/plan-milestone-gaps.md": "dd6a4b3a8b05ab6e",
"gsd-core/workflows/plan-phase.md": "165e3fcee7184009",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "ab0b22244c3389aa",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261",
"gsd-core/workflows/plan-review-convergence.md": "bd6f71b3c63a2411",
"gsd-core/workflows/plant-seed.md": "1dddbafe892d8cf3",
"gsd-core/workflows/pr-branch.md": "dc5598ae8accdecd",
"gsd-core/workflows/profile-user.md": "3a3f8e417de0074c",
"gsd-core/workflows/progress.md": "9fb8c93970e0b4aa",
"gsd-core/workflows/quick.md": "82c394ebc1a034cb",
"gsd-core/workflows/reapply-patches.md": "4dcd6117d0a507ca",
"gsd-core/workflows/remove-phase.md": "23b9eb0858a2535e",
"gsd-core/workflows/remove-workspace.md": "1058d1d3160eb120",
"gsd-core/workflows/resume-project.md": "98e2cf8908e73a52",
"gsd-core/workflows/review.md": "0c3c483764110a1c",
"gsd-core/workflows/scan.md": "5230ac0e5f876f6d",
"gsd-core/workflows/secure-phase.md": "63a7b808a8b81e36",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "6d25100a9de15b31",
"gsd-core/workflows/settings-integrations.md": "e1fda52e8c9afa5f",
"gsd-core/workflows/settings.md": "9b7e0a34f4f41a80",
"gsd-core/workflows/ship.md": "668ea5179629e722",
"gsd-core/workflows/sketch-wrap-up.md": "0f842a609851a401",
"gsd-core/workflows/sketch.md": "c42d993c1e9a6240",
"gsd-core/workflows/smart-entry.md": "6d887ca5d9df9185",
"gsd-core/workflows/spec-phase.md": "978462218855c213",
"gsd-core/workflows/spike-wrap-up.md": "8db41edc87cb7886",
"gsd-core/workflows/spike.md": "a6daeb0b927563a3",
"gsd-core/workflows/stats.md": "b64bda5c0a1a06fb",
"gsd-core/workflows/sync-skills.md": "8326a7ff0411b077",
"gsd-core/workflows/thread.md": "31201839d0530e89",
"gsd-core/workflows/transition.md": "d3486f115d808175",
"gsd-core/workflows/ui-phase.md": "97072787afd14ebc",
"gsd-core/workflows/ui-review.md": "1b03d7b20d80406e",
"gsd-core/workflows/ultraplan-phase.md": "d8e92b0b7214eba6",
"gsd-core/workflows/undo.md": "a2c65d90d5761f71",
"gsd-core/workflows/update.md": "c0d21c81e93571bb",
"gsd-core/workflows/validate-phase.md": "08f11923d7576e46",
"gsd-core/workflows/verify-phase.md": "913acaef091797d7",
"gsd-core/workflows/verify-work.md": "d7d1aff3cb9876f8",
"hooks/gsd-check-update-worker.js": "fa301e6366270d5f",
"hooks/gsd-check-update.js": "4617a98bf529e4c3",
"hooks/gsd-config-reload.js": "96546e0e8bb47904",
"hooks/gsd-context-monitor.js": "31a4d99fd3b260ad",
"hooks/gsd-cursor-post-tool.js": "9168e0a09de1972a",
"hooks/gsd-cursor-pre-tool.js": "873998b25e308c29",
"hooks/gsd-cursor-session-start.js": "c72f669cc24c72e3",
"hooks/gsd-cursor-stop.js": "80de723949cee847",
"hooks/gsd-cursor-subagent-start.js": "699a2da2e3c5763e",
"hooks/gsd-cursor-subagent-stop.js": "4bbf22917da4d389",
"hooks/gsd-ensure-canonical-path.js": "64d092d7e4a01211",
"hooks/gsd-graphify-update.sh": "81d716df76159e60",
"hooks/gsd-phase-boundary.sh": "4f3daad099fcdd50",
"hooks/gsd-prompt-guard.js": "696a0f65b9535cd1",
"hooks/gsd-read-guard.js": "54e1dcaaffe47693",
"hooks/gsd-read-injection-scanner.js": "66dc137d0a079940",
"hooks/gsd-session-state.sh": "e54379ba86bf1b6d",
"hooks/gsd-statusline.js": "ba8422027f710711",
"hooks/gsd-update-banner.js": "55143a25f978f301",
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
"hooks/gsd-workflow-guard.js": "56414206bc13b3dc",
"hooks/gsd-worktree-path-guard.js": "5f64275e48fb8284",
"hooks/lib/cursor-workspace.js": "45061acd75d55a28",
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
"hooks/managed-hooks-registry.cjs": "82a4121cbcb82756",
"mcp_config.json": "9956d6a6e88a49e1",
"package.json": "dbf8353f77358bc1",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7",
"skills/gsd-add-tests/SKILL.md": "95cd3eb1698fc79b",
"skills/gsd-ai-integration-phase/SKILL.md": "df6dad8e87226f35",
"skills/gsd-audit-fix/SKILL.md": "e5e30c307bca6c89",
"skills/gsd-audit-milestone/SKILL.md": "f701c229ac380077",
"skills/gsd-audit-uat/SKILL.md": "8b304b54e1c587d1",
"skills/gsd-autonomous/SKILL.md": "5610d6fceff3774e",
"skills/gsd-capture/SKILL.md": "c554bbadc3885b8f",
"skills/gsd-cleanup/SKILL.md": "c3ed4f3abf6945b6",
"skills/gsd-code-review/SKILL.md": "9aa941f7cfa5f185",
"skills/gsd-complete-milestone/SKILL.md": "169568f9004be781",
"skills/gsd-config/SKILL.md": "4b099e45ec600133",
"skills/gsd-debug/SKILL.md": "168a98458c3b41db",
"skills/gsd-discuss-phase/SKILL.md": "3fb922bfac348f8d",
"skills/gsd-docs-update/SKILL.md": "b50b433dfe6208ef",
"skills/gsd-eval-review/SKILL.md": "32bb1f952e4b905e",
"skills/gsd-execute-phase/SKILL.md": "eddbad8efb90ab66",
"skills/gsd-explore/SKILL.md": "8e3a822f314389af",
"skills/gsd-extract-learnings/SKILL.md": "1d913b8cecc42506",
"skills/gsd-fast/SKILL.md": "d62c1699462f6e74",
"skills/gsd-forensics/SKILL.md": "352bd1d8b4c26c3b",
"skills/gsd-graphify/SKILL.md": "5b812b9ed52f8d9a",
"skills/gsd-health/SKILL.md": "9acfbd91df231ada",
"skills/gsd-help/SKILL.md": "75a119a393b6c65b",
"skills/gsd-import/SKILL.md": "72f38b97d8397dba",
"skills/gsd-inbox/SKILL.md": "4ec0198966ac4f7d",
"skills/gsd-ingest-docs/SKILL.md": "f4e43968af317ed8",
"skills/gsd-manager/SKILL.md": "6e51785860784d8c",
"skills/gsd-map-codebase/SKILL.md": "552f914f43b2181c",
"skills/gsd-mempalace-capture/SKILL.md": "0f8eae8ef21ea89a",
"skills/gsd-mempalace-recall/SKILL.md": "2d95e385fee26dee",
"skills/gsd-milestone-summary/SKILL.md": "2955ab3e3a444ca3",
"skills/gsd-mvp-phase/SKILL.md": "1cf7622d655840ac",
"skills/gsd-new-milestone/SKILL.md": "f97a28dd1e2b9317",
"skills/gsd-new-project/SKILL.md": "31b46764278d1c1a",
"skills/gsd-next/SKILL.md": "e7e03391c0e3a235",
"skills/gsd-ns-context/SKILL.md": "e791bc60e4cf124e",
"skills/gsd-ns-ideate/SKILL.md": "b85f270e8415f595",
"skills/gsd-ns-manage/SKILL.md": "d55c53b5b0513033",
"skills/gsd-ns-project/SKILL.md": "905eff81dbb98b38",
"skills/gsd-ns-review/SKILL.md": "2e30158e112d173c",
"skills/gsd-ns-workflow/SKILL.md": "529e21833a6a8831",
"skills/gsd-onboard/SKILL.md": "1447665c64c8ade8",
"skills/gsd-pause-work/SKILL.md": "9d3cc6bd70b03df1",
"skills/gsd-phase/SKILL.md": "00676bbea61410bf",
"skills/gsd-plan-phase/SKILL.md": "84e89f076dc6bef3",
"skills/gsd-plan-review-convergence/SKILL.md": "79d264b132ca360d",
"skills/gsd-pr-branch/SKILL.md": "5e050db73988f9a8",
"skills/gsd-profile-user/SKILL.md": "10f2ff4be2e7d55f",
"skills/gsd-progress/SKILL.md": "df0d06cf9d5963d0",
"skills/gsd-quick/SKILL.md": "c18b11b12ba134fa",
"skills/gsd-resume-work/SKILL.md": "fa2ee37470c6ae07",
"skills/gsd-review-backlog/SKILL.md": "d8a150558cc9326a",
"skills/gsd-review/SKILL.md": "1abcf1f6a7b73ab2",
"skills/gsd-secure-phase/SKILL.md": "47a4ecd2aa680fda",
"skills/gsd-settings/SKILL.md": "fda7af8331acd352",
"skills/gsd-ship/SKILL.md": "4529b04a357cdacd",
"skills/gsd-sketch/SKILL.md": "eea837cc70ef1238",
"skills/gsd-spec-phase/SKILL.md": "6b35d59f65e2e607",
"skills/gsd-spike/SKILL.md": "63b5093cbc7978ca",
"skills/gsd-stats/SKILL.md": "1cef40c0a0e7b19b",
"skills/gsd-surface/SKILL.md": "19e018ebe4c89857",
"skills/gsd-thread/SKILL.md": "4d91aab9f5ed4ca7",
"skills/gsd-ui-phase/SKILL.md": "b2412418ebf0dfb8",
"skills/gsd-ui-review/SKILL.md": "e49734488684fd9a",
"skills/gsd-ultraplan-phase/SKILL.md": "c71b716028d9ca24",
"skills/gsd-undo/SKILL.md": "c03cd1ab3c78cec4",
"skills/gsd-update/SKILL.md": "536ee29e2c205cdd",
"skills/gsd-validate-phase/SKILL.md": "4c9058e7240bc28b",
"skills/gsd-verify-work/SKILL.md": "82bd049e7ea36a5a",
"skills/gsd-workspace/SKILL.md": "f0d1512b46227344",
"skills/gsd-workstreams/SKILL.md": "737841783c7fdd4f"
}

View File

@@ -1,515 +0,0 @@
{
".gsd-profile": "0e716a5fef4e6dc1",
".gsd/defaults.json": "de00bae0761140d7",
"agents/gsd-advisor-researcher.md": "e5be2680b690c198",
"agents/gsd-ai-researcher.md": "f3baf9025a5bc4b1",
"agents/gsd-assumptions-analyzer.md": "b3219da6b194fdef",
"agents/gsd-code-fixer.md": "68b2d2faccfdd8a3",
"agents/gsd-code-reviewer.md": "bc8a6f2e1f787ff5",
"agents/gsd-codebase-mapper.md": "d369048683978297",
"agents/gsd-debug-session-manager.md": "7ac3a457c926082d",
"agents/gsd-debugger.md": "584692481a9f5e0f",
"agents/gsd-doc-classifier.md": "262a94b947a4e2aa",
"agents/gsd-doc-synthesizer.md": "01f90ea9b0d05d7d",
"agents/gsd-doc-verifier.md": "b3433e0db51e1c60",
"agents/gsd-doc-writer.md": "376011bd99026bf7",
"agents/gsd-domain-researcher.md": "671c9ea949889c4a",
"agents/gsd-eval-auditor.md": "fcaec7b00f94c435",
"agents/gsd-eval-planner.md": "a4a5b4b3f7828ba3",
"agents/gsd-executor.md": "0fd0329cfa05519d",
"agents/gsd-framework-selector.md": "4b77eebbe9288d80",
"agents/gsd-integration-checker.md": "fa53e2d78be1de74",
"agents/gsd-intel-updater.md": "fa40e685d7441ace",
"agents/gsd-mempalace-curator.md": "78f4894a9d5f44b1",
"agents/gsd-nyquist-auditor.md": "230e6667411ccf2f",
"agents/gsd-pattern-mapper.md": "43c6021cf7caabfa",
"agents/gsd-phase-researcher.md": "f1f6fd6a3e67c7a8",
"agents/gsd-plan-checker.md": "d9aca5f75d649fc0",
"agents/gsd-planner.md": "5143e54864af6a63",
"agents/gsd-project-researcher.md": "4531b7cc8f5e5f7d",
"agents/gsd-research-synthesizer.md": "4a4f68e6c75b133a",
"agents/gsd-roadmapper.md": "bb2f57695dbab32c",
"agents/gsd-security-auditor.md": "4db2c41181ad1f97",
"agents/gsd-ui-auditor.md": "dcd5712e6b160a53",
"agents/gsd-ui-checker.md": "5c27ec0d88ef87c2",
"agents/gsd-ui-researcher.md": "bcc591f2dfebdb60",
"agents/gsd-user-profiler.md": "622220df0654b6bf",
"agents/gsd-verifier.md": "b310112ee195819b",
"commands/gsd-add-tests.md": "3608d0cf4b515103",
"commands/gsd-ai-integration-phase.md": "cbc59ad7a5064b26",
"commands/gsd-audit-fix.md": "1b805946362c4f19",
"commands/gsd-audit-milestone.md": "046573a643714178",
"commands/gsd-audit-uat.md": "d3de44d1c3e59b57",
"commands/gsd-autonomous.md": "44598590349df325",
"commands/gsd-capture.md": "a4e4537bae4c90d3",
"commands/gsd-cleanup.md": "313e0443e1ae1557",
"commands/gsd-code-review.md": "1a32afb26a3a2926",
"commands/gsd-complete-milestone.md": "7f62fe57c67173fb",
"commands/gsd-config.md": "e00bef4533ce1648",
"commands/gsd-debug.md": "6ca109f930fe4b5a",
"commands/gsd-discuss-phase.md": "d5fc70a10ecf4c03",
"commands/gsd-docs-update.md": "58252664de1cc9d8",
"commands/gsd-eval-review.md": "b24d1b556dccf306",
"commands/gsd-execute-phase.md": "6db2b511bdfc7ee6",
"commands/gsd-explore.md": "cf09cdbd70a5320c",
"commands/gsd-extract-learnings.md": "46bfbbbb66207a43",
"commands/gsd-fast.md": "aceb53156d0dea5b",
"commands/gsd-forensics.md": "1be3c723d76f089a",
"commands/gsd-graphify.md": "ae5de1d629fcfa72",
"commands/gsd-health.md": "1a2707c6bc28c8fe",
"commands/gsd-help.md": "0d8c5a849465d771",
"commands/gsd-import.md": "5931425062f516ec",
"commands/gsd-inbox.md": "c218298db8b36e31",
"commands/gsd-ingest-docs.md": "6718b04c597a5428",
"commands/gsd-manager.md": "8f4ae79774902293",
"commands/gsd-map-codebase.md": "e4e170d4ef2d46c6",
"commands/gsd-mempalace-capture.md": "63c35058ba60209f",
"commands/gsd-mempalace-recall.md": "38716c0983a3ef9c",
"commands/gsd-milestone-summary.md": "ff5e11e6b33d4b5e",
"commands/gsd-mvp-phase.md": "ffc5905aed8f450a",
"commands/gsd-new-milestone.md": "82d075372a862d9a",
"commands/gsd-new-project.md": "56552a324cff669e",
"commands/gsd-next.md": "d9f43d56e1bca2ca",
"commands/gsd-ns-context.md": "011c44e7aa46e64a",
"commands/gsd-ns-ideate.md": "edc5e543512dd48a",
"commands/gsd-ns-manage.md": "0409d810e499357f",
"commands/gsd-ns-project.md": "ff67e85bc6f7fc5a",
"commands/gsd-ns-review.md": "3766ed10827882a0",
"commands/gsd-ns-workflow.md": "c3b3c046a74ec0ee",
"commands/gsd-onboard.md": "1e8acf7be31834be",
"commands/gsd-pause-work.md": "4fb032f72238fe33",
"commands/gsd-phase.md": "4920d15d779329eb",
"commands/gsd-plan-phase.md": "e6c1bcd1da345fa5",
"commands/gsd-plan-review-convergence.md": "4523045c95d4cd52",
"commands/gsd-pr-branch.md": "e168fcd545d72d0d",
"commands/gsd-profile-user.md": "ffd9c2feb4c69f11",
"commands/gsd-progress.md": "0b4d5b73a6c5e958",
"commands/gsd-quick.md": "a6124a2443394092",
"commands/gsd-resume-work.md": "e54b929de88b11ce",
"commands/gsd-review-backlog.md": "6e8a0417fab95cd3",
"commands/gsd-review.md": "87d9b3f0705afb5e",
"commands/gsd-secure-phase.md": "a2320ecca4cb160b",
"commands/gsd-settings.md": "53b90624a70fd530",
"commands/gsd-ship.md": "81136d903d261b33",
"commands/gsd-sketch.md": "0c44d54d15c8f96f",
"commands/gsd-spec-phase.md": "8bb332566911dfd9",
"commands/gsd-spike.md": "a99190d9496c6ac0",
"commands/gsd-stats.md": "58b4d86a5390e243",
"commands/gsd-surface.md": "12078dca898a6c16",
"commands/gsd-thread.md": "51be0cdeb925ab28",
"commands/gsd-ui-phase.md": "75d4be44797ccef7",
"commands/gsd-ui-review.md": "9191082973068dbf",
"commands/gsd-ultraplan-phase.md": "a0cfcc5970e77341",
"commands/gsd-undo.md": "c62f376b4a0af5b1",
"commands/gsd-update.md": "bda7815908d9977b",
"commands/gsd-validate-phase.md": "948bdde83cc66341",
"commands/gsd-verify-work.md": "1cb62ea69b117acb",
"commands/gsd-workspace.md": "dd1bc09d2b768e0b",
"commands/gsd-workstreams.md": "52ab9c585d3a00f3",
"gsd-core/.gsd-runtime": "ba737a9959aad238",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "51bc64467ab30f62",
"gsd-core/bin/gsd-tools.cjs": "e1996ac045ff5fde",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "5ab875054b1adda9",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "f827de93dde124eb",
"gsd-core/references/api-coverage.md": "913654a1cdb3baf1",
"gsd-core/references/artifact-types.md": "a6d2e1f9453ffbf5",
"gsd-core/references/autonomous-smart-discuss.md": "2fc710cde0ec7785",
"gsd-core/references/checkpoints.md": "c2fe89c42ca88349",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "6749084395889c6a",
"gsd-core/references/continuation-format.md": "ce73e57d053ab8a7",
"gsd-core/references/debugger-bug-taxonomy.md": "78fb8c1711acc971",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "fdf55a6cee9b1792",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "67d019d23e17f934",
"gsd-core/references/domain-probes.md": "62d23ed1992c48a9",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "5687eba25a078561",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242",
"gsd-core/references/execute-phase-quota-recovery.md": "c4ca0ee3875b6e02",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "e69f5993ab944d80",
"gsd-core/references/gates.md": "bd79c7f90c8cb8d7",
"gsd-core/references/git-integration.md": "77bf9dff38b2c9d4",
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
"gsd-core/references/gsd-run-resolver.md": "e71eb728b84641b1",
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "3a05d03ea27c3a31",
"gsd-core/references/model-profiles.md": "e067ad3df6770db1",
"gsd-core/references/mvp-concepts.md": "72f7e8b1f8ae7118",
"gsd-core/references/offer-next.md": "689740e4c2ed16f4",
"gsd-core/references/phase-argument-parsing.md": "e5bbb985f3bc3e34",
"gsd-core/references/planner-antipatterns.md": "013ad54062399dad",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "6aeffd9097e25e22",
"gsd-core/references/planner-guidance.md": "96486cac2f7885e6",
"gsd-core/references/planner-human-verify-mode.md": "56d05e841630b3f4",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "d75786c2d3e6ff5c",
"gsd-core/references/planner-reviews.md": "dda0193a0fbd4947",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "ab3b698fe23bab9b",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "605dc3f5a118ff3b",
"gsd-core/references/project-skills-discovery.md": "c155e03dce8dc3c2",
"gsd-core/references/questioning.md": "a8c988cab05f4651",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "62930e66cc979c1a",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "ae64e44f2f132bc2",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "0bbbb0735b6080fa",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "5e400dc05a15e972",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "ef519bff8c8bd572",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "41069529ef776e39",
"gsd-core/references/ui-brand.md": "48717bcfcd63bd27",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "6a1245050b21df01",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "b50416fe57c1b321",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "8213de9bd62283b6",
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
"gsd-core/references/workstream-flag.md": "ca99ca79e716f0f5",
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
"gsd-core/templates/DEBUG.md": "c8768312f4c1e438",
"gsd-core/templates/README.md": "93d3426fc64e2c12",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "9e296471b97ebcec",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "6f0fe4214dff6dd1",
"gsd-core/templates/claude-md.md": "d1d333e4b963c0d2",
"gsd-core/templates/codebase/architecture.md": "6be88214162fdd89",
"gsd-core/templates/codebase/concerns.md": "efa26d1fb5132f25",
"gsd-core/templates/codebase/conventions.md": "c2e07698dad6b364",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "222997133232a6f5",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "69b01e7909ea3f66",
"gsd-core/templates/continue-here.md": "f522a51b6895fba8",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "920656683dedb869",
"gsd-core/templates/dev-preferences.md": "88d0a65ec0993a3a",
"gsd-core/templates/discovery.md": "9a0e0935cc825dbc",
"gsd-core/templates/discussion-log.md": "cac1b48ec0f4dcb8",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "b811bf951092df2f",
"gsd-core/templates/planner-subagent-prompt.md": "ebf29dbb27042370",
"gsd-core/templates/project.md": "4f311fb1b05b823b",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "88ce0920417091d0",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "26d55bce940f0288",
"gsd-core/templates/state.md": "4d123aa6cea167fe",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "85f4d37fcee6852b",
"gsd-core/templates/user-profile.md": "20749f23e4c413fc",
"gsd-core/templates/user-setup.md": "78b7d718b6e8d67c",
"gsd-core/templates/verification-report.md": "dd5faa6254183731",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "1bc7377b105194fc",
"gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8",
"gsd-core/workflows/add-tests.md": "7e7268602f9e1b2a",
"gsd-core/workflows/add-todo.md": "5dc04cfaa0b6b072",
"gsd-core/workflows/ai-integration-phase.md": "308378c9044a52e1",
"gsd-core/workflows/analyze-dependencies.md": "52942af10f140717",
"gsd-core/workflows/audit-fix.md": "7650bcb334e622a6",
"gsd-core/workflows/audit-milestone.md": "6174b6f87844973c",
"gsd-core/workflows/audit-uat.md": "fcfbec501620b564",
"gsd-core/workflows/autonomous.md": "aed5e67104346cc2",
"gsd-core/workflows/check-todos.md": "c484e472cff0e4e3",
"gsd-core/workflows/cleanup.md": "df79d1dc7b84d736",
"gsd-core/workflows/code-review-fix.md": "9fef1cf740c7c155",
"gsd-core/workflows/code-review.md": "22b53c0d29508d57",
"gsd-core/workflows/complete-milestone.md": "8f98d7b05793cf4a",
"gsd-core/workflows/debug.md": "3f0218b051c1afb1",
"gsd-core/workflows/diagnose-issues.md": "7ec385c89a3672d4",
"gsd-core/workflows/discovery-phase.md": "0aa8d8d872b53858",
"gsd-core/workflows/discuss-phase-assumptions.md": "9c8b6b66df026e33",
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
"gsd-core/workflows/discuss-phase.md": "5c5e8d8c2c9d95aa",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653",
"gsd-core/workflows/discuss-phase/modes/all.md": "fa70d79066562e54",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "da0788f3be7f8105",
"gsd-core/workflows/discuss-phase/modes/auto.md": "d06f0bea2ba0b240",
"gsd-core/workflows/discuss-phase/modes/batch.md": "6946597770e2d448",
"gsd-core/workflows/discuss-phase/modes/chain.md": "5502a67de7776853",
"gsd-core/workflows/discuss-phase/modes/default.md": "67d1b67f61f03966",
"gsd-core/workflows/discuss-phase/modes/power.md": "fdc7a728eaaa2261",
"gsd-core/workflows/discuss-phase/modes/text.md": "da6d45207da4a988",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "eeebda60636d1ad0",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "90df4f1fe248cdf3",
"gsd-core/workflows/docs-update.md": "fba7329f525c9463",
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
"gsd-core/workflows/eval-review.md": "c2933259ff7fb6ac",
"gsd-core/workflows/execute-phase.md": "d9ecf8b35ae4a771",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "f7782680c2b8ad6b",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "ab70374e44eb85cd",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "334bb2053908a049",
"gsd-core/workflows/explore.md": "3f3b4f83e23349bc",
"gsd-core/workflows/extract-learnings.md": "ab26f2cbb14efef2",
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
"gsd-core/workflows/forensics.md": "0d500a3f5ab26913",
"gsd-core/workflows/graduation.md": "973dcebcd17e1b10",
"gsd-core/workflows/health.md": "c25b5e5f62874c31",
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
"gsd-core/workflows/help/modes/full.md": "84468010d1ee078e",
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
"gsd-core/workflows/import.md": "57abe514a9b0f6ac",
"gsd-core/workflows/inbox.md": "a7d439981775bc29",
"gsd-core/workflows/ingest-docs.md": "781799b47d282b37",
"gsd-core/workflows/insert-phase.md": "08dca838d831bb5b",
"gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3",
"gsd-core/workflows/list-seeds.md": "b687f2a843032d65",
"gsd-core/workflows/list-workspaces.md": "7f94e18b5c549453",
"gsd-core/workflows/manager.md": "c18fab593344253d",
"gsd-core/workflows/map-codebase.md": "51aebfe0523f3bcf",
"gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043",
"gsd-core/workflows/mvp-phase.md": "58a952b4715db283",
"gsd-core/workflows/new-milestone.md": "8164a9abc301f143",
"gsd-core/workflows/new-project.md": "7b2ac462000156ba",
"gsd-core/workflows/new-workspace.md": "bbeb706c7a697617",
"gsd-core/workflows/next.md": "4e1eb6b46d15798d",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "5a99eb396c744619",
"gsd-core/workflows/onboard.md": "f29c4fbef3b473fd",
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
"gsd-core/workflows/plan-phase.md": "4dfd63c95b80741a",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5",
"gsd-core/workflows/plan-review-convergence.md": "db69460dd4df0d29",
"gsd-core/workflows/plant-seed.md": "9596db80ab282c6f",
"gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b",
"gsd-core/workflows/profile-user.md": "59e5066c5c66572a",
"gsd-core/workflows/progress.md": "46c83ad61b3c4a84",
"gsd-core/workflows/quick.md": "f0f5588861a18005",
"gsd-core/workflows/reapply-patches.md": "39050f72601aec89",
"gsd-core/workflows/remove-phase.md": "df9a45f0b1880999",
"gsd-core/workflows/remove-workspace.md": "f67860c795fb4bfe",
"gsd-core/workflows/resume-project.md": "f28da1200e4545f4",
"gsd-core/workflows/review.md": "8724993cbc91bcc5",
"gsd-core/workflows/scan.md": "0583dac337623f82",
"gsd-core/workflows/secure-phase.md": "00225810eaed265b",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44",
"gsd-core/workflows/settings-integrations.md": "effcef778d4a855f",
"gsd-core/workflows/settings.md": "85ceb482dc713169",
"gsd-core/workflows/ship.md": "ca94c87c80a70c27",
"gsd-core/workflows/sketch-wrap-up.md": "5f5ebb6a80d610c6",
"gsd-core/workflows/sketch.md": "efc5a794b4bd6e78",
"gsd-core/workflows/smart-entry.md": "004b4060eab97cb9",
"gsd-core/workflows/spec-phase.md": "fa8669b75392cf6c",
"gsd-core/workflows/spike-wrap-up.md": "8467dadf2af758e6",
"gsd-core/workflows/spike.md": "a159bf4018564cb2",
"gsd-core/workflows/stats.md": "76a42cbeaf6007c2",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "927e7eeefd2fcf5c",
"gsd-core/workflows/transition.md": "aea486bb7a0e80e7",
"gsd-core/workflows/ui-phase.md": "450d14bf2494990a",
"gsd-core/workflows/ui-review.md": "387f7cefc849dba1",
"gsd-core/workflows/ultraplan-phase.md": "0fb8291153e3937d",
"gsd-core/workflows/undo.md": "1712417bade30b30",
"gsd-core/workflows/update.md": "b0a12ed14e5cc441",
"gsd-core/workflows/validate-phase.md": "171ff4aa9b392475",
"gsd-core/workflows/verify-phase.md": "d26a2c3269340caf",
"gsd-core/workflows/verify-work.md": "bc9dcabfc5be2e81",
"hooks/gsd-check-update-worker.js": "cc1ef5f840f9dfc9",
"hooks/gsd-check-update.js": "7b3a7983d5f1f5d3",
"hooks/gsd-config-reload.js": "96546e0e8bb47904",
"hooks/gsd-context-monitor.js": "493e24c139c61129",
"hooks/gsd-cursor-post-tool.js": "9168e0a09de1972a",
"hooks/gsd-cursor-pre-tool.js": "873998b25e308c29",
"hooks/gsd-cursor-session-start.js": "c72f669cc24c72e3",
"hooks/gsd-cursor-stop.js": "80de723949cee847",
"hooks/gsd-cursor-subagent-start.js": "699a2da2e3c5763e",
"hooks/gsd-cursor-subagent-stop.js": "4bbf22917da4d389",
"hooks/gsd-ensure-canonical-path.js": "d569f5f3578e93e5",
"hooks/gsd-graphify-update.sh": "81d716df76159e60",
"hooks/gsd-phase-boundary.sh": "4f3daad099fcdd50",
"hooks/gsd-prompt-guard.js": "696a0f65b9535cd1",
"hooks/gsd-read-guard.js": "54e1dcaaffe47693",
"hooks/gsd-read-injection-scanner.js": "0fb57708a3c10ab1",
"hooks/gsd-session-state.sh": "e54379ba86bf1b6d",
"hooks/gsd-statusline.js": "85141ec6a067fce2",
"hooks/gsd-update-banner.js": "55143a25f978f301",
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
"hooks/gsd-workflow-guard.js": "56414206bc13b3dc",
"hooks/gsd-worktree-path-guard.js": "97c2f736d085fe8e",
"hooks/lib/cursor-workspace.js": "45061acd75d55a28",
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
"hooks/managed-hooks-registry.cjs": "29a8d4fa81378d7d",
"package.json": "dbf8353f77358bc1",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7",
"skills/gsd-ns-context/SKILL.md": "90ff2716402f8f61",
"skills/gsd-ns-context/skills/docs-update/SKILL.md": "e7ab14a984f7462c",
"skills/gsd-ns-context/skills/extract-learnings/SKILL.md": "48846bf26ccaf0e7",
"skills/gsd-ns-context/skills/graphify/SKILL.md": "3d6341614add6ccd",
"skills/gsd-ns-context/skills/map-codebase/SKILL.md": "2017007dcd69d153",
"skills/gsd-ns-context/skills/mempalace-capture/SKILL.md": "9923f0164d27f27f",
"skills/gsd-ns-context/skills/mempalace-recall/SKILL.md": "646e59e76acd548f",
"skills/gsd-ns-ideate/SKILL.md": "d70360a5f7e8ac90",
"skills/gsd-ns-ideate/skills/capture/SKILL.md": "74651f6959cfbbd3",
"skills/gsd-ns-ideate/skills/explore/SKILL.md": "bb8413dc283a5bb1",
"skills/gsd-ns-ideate/skills/sketch/SKILL.md": "3c1218159bbf4eb0",
"skills/gsd-ns-ideate/skills/spec-phase/SKILL.md": "2f88d0fc0c1abefe",
"skills/gsd-ns-ideate/skills/spike/SKILL.md": "799932a60c21fddc",
"skills/gsd-ns-manage/SKILL.md": "123d32471bc44cee",
"skills/gsd-ns-manage/skills/cleanup/SKILL.md": "cc78257dc49e91ab",
"skills/gsd-ns-manage/skills/config/SKILL.md": "c99f48d175be9c5a",
"skills/gsd-ns-manage/skills/health/SKILL.md": "f3c7f00b39802522",
"skills/gsd-ns-manage/skills/help/SKILL.md": "fefeb84914e1ab94",
"skills/gsd-ns-manage/skills/inbox/SKILL.md": "9a9224c09c095438",
"skills/gsd-ns-manage/skills/manager/SKILL.md": "e810eb24d1b0cb42",
"skills/gsd-ns-manage/skills/pause-work/SKILL.md": "c3e1186348abbaca",
"skills/gsd-ns-manage/skills/pr-branch/SKILL.md": "b5be687b86830368",
"skills/gsd-ns-manage/skills/resume-work/SKILL.md": "753c45ba8c91e640",
"skills/gsd-ns-manage/skills/settings/SKILL.md": "8751c29421208a00",
"skills/gsd-ns-manage/skills/ship/SKILL.md": "7498424e965545e1",
"skills/gsd-ns-manage/skills/stats/SKILL.md": "0bce39e8f3b64f5e",
"skills/gsd-ns-manage/skills/surface/SKILL.md": "ca10834ce41967c9",
"skills/gsd-ns-manage/skills/thread/SKILL.md": "fbe591e8162f8b1c",
"skills/gsd-ns-manage/skills/undo/SKILL.md": "5ffc86a2c67aa9df",
"skills/gsd-ns-manage/skills/update/SKILL.md": "c8165b8085ba106a",
"skills/gsd-ns-manage/skills/workspace/SKILL.md": "98cc03aa8c735e9d",
"skills/gsd-ns-manage/skills/workstreams/SKILL.md": "94d00b5116523f36",
"skills/gsd-ns-project/SKILL.md": "ae47130ec878de8c",
"skills/gsd-ns-project/skills/audit-milestone/SKILL.md": "6d4c77390c549fc7",
"skills/gsd-ns-project/skills/complete-milestone/SKILL.md": "0af489daf6fd3f16",
"skills/gsd-ns-project/skills/import/SKILL.md": "a3cfa7abc5ddd26d",
"skills/gsd-ns-project/skills/ingest-docs/SKILL.md": "53e838f8f509d0ac",
"skills/gsd-ns-project/skills/milestone-summary/SKILL.md": "18dc0c134cb62657",
"skills/gsd-ns-project/skills/new-milestone/SKILL.md": "a94ff34b09e17a98",
"skills/gsd-ns-project/skills/new-project/SKILL.md": "81f681f54ca61f90",
"skills/gsd-ns-project/skills/onboard/SKILL.md": "1f5b29c75a91be4f",
"skills/gsd-ns-project/skills/profile-user/SKILL.md": "68b015a40d386bff",
"skills/gsd-ns-project/skills/review-backlog/SKILL.md": "0f25310aa0cd48f6",
"skills/gsd-ns-review/SKILL.md": "d7567fd9a75a5c21",
"skills/gsd-ns-review/skills/audit-fix/SKILL.md": "c085b5f9585e7fc8",
"skills/gsd-ns-review/skills/audit-uat/SKILL.md": "abbb16c85efd493d",
"skills/gsd-ns-review/skills/code-review/SKILL.md": "36dbfd5aa2d3c3c7",
"skills/gsd-ns-review/skills/debug/SKILL.md": "4b9bde6d213185f0",
"skills/gsd-ns-review/skills/eval-review/SKILL.md": "61d28536af6794c9",
"skills/gsd-ns-review/skills/forensics/SKILL.md": "e68fc285c39dad5e",
"skills/gsd-ns-review/skills/review/SKILL.md": "3d1cbf005e02c948",
"skills/gsd-ns-review/skills/secure-phase/SKILL.md": "ff7949b3261c09fa",
"skills/gsd-ns-review/skills/ui-phase/SKILL.md": "d0e75ee06eaa0165",
"skills/gsd-ns-review/skills/ui-review/SKILL.md": "bdab072171d79877",
"skills/gsd-ns-review/skills/validate-phase/SKILL.md": "8972b413eb712cae",
"skills/gsd-ns-workflow/SKILL.md": "9c03c167c9af062a",
"skills/gsd-ns-workflow/skills/add-tests/SKILL.md": "851084b695ab8328",
"skills/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "125533edf40cb047",
"skills/gsd-ns-workflow/skills/autonomous/SKILL.md": "1565a532889d3ea3",
"skills/gsd-ns-workflow/skills/discuss-phase/SKILL.md": "94ac4065ceeee80b",
"skills/gsd-ns-workflow/skills/execute-phase/SKILL.md": "67c9a6189f045de0",
"skills/gsd-ns-workflow/skills/fast/SKILL.md": "34b741cc323f5f15",
"skills/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "f259f089a8d07a54",
"skills/gsd-ns-workflow/skills/next/SKILL.md": "e7409245f1a0f9de",
"skills/gsd-ns-workflow/skills/phase/SKILL.md": "fe5b26417ee466be",
"skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "3e0237a7433e99b0",
"skills/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "32b4344ec427afce",
"skills/gsd-ns-workflow/skills/progress/SKILL.md": "68bda87136db9fb3",
"skills/gsd-ns-workflow/skills/quick/SKILL.md": "014dec52d85dcb0e",
"skills/gsd-ns-workflow/skills/spec-phase/SKILL.md": "2f88d0fc0c1abefe",
"skills/gsd-ns-workflow/skills/ultraplan-phase/SKILL.md": "8673b6e4fc14d0ec",
"skills/gsd-ns-workflow/skills/verify-work/SKILL.md": "b92b0e8428a8e80c"
}

View File

@@ -1,442 +0,0 @@
{
".gsd-profile": "0e716a5fef4e6dc1",
"agents/gsd-advisor-researcher.md": "c81b55d567dcd99e",
"agents/gsd-ai-researcher.md": "27c7df941b01cc13",
"agents/gsd-assumptions-analyzer.md": "d796f8245bbe05d2",
"agents/gsd-code-fixer.md": "c6148e5511d02459",
"agents/gsd-code-reviewer.md": "e2c45baa8c0b5f6d",
"agents/gsd-codebase-mapper.md": "39d22382c5897858",
"agents/gsd-debug-session-manager.md": "cd8e20170b1ee7a0",
"agents/gsd-debugger.md": "d6785173fbeee901",
"agents/gsd-doc-classifier.md": "a76778bdde1c7f72",
"agents/gsd-doc-synthesizer.md": "8b0b6fc187c9d353",
"agents/gsd-doc-verifier.md": "4232dcf9076e3566",
"agents/gsd-doc-writer.md": "22264239fa0ee611",
"agents/gsd-domain-researcher.md": "f1e03df842ddfb95",
"agents/gsd-eval-auditor.md": "d0f45fff7370bb0b",
"agents/gsd-eval-planner.md": "9cc049b82897daa4",
"agents/gsd-executor.md": "b5262908713115ab",
"agents/gsd-framework-selector.md": "85005d716f9d98f7",
"agents/gsd-integration-checker.md": "17a8ee731986564d",
"agents/gsd-intel-updater.md": "4953a465db9dadc1",
"agents/gsd-mempalace-curator.md": "77b53f1b155242b4",
"agents/gsd-nyquist-auditor.md": "f86a28f5c164a0d3",
"agents/gsd-pattern-mapper.md": "b45b5e106775bec1",
"agents/gsd-phase-researcher.md": "4772d9eada32e8bd",
"agents/gsd-plan-checker.md": "b3f510f1257ff383",
"agents/gsd-planner.md": "a22751cc49456236",
"agents/gsd-project-researcher.md": "d7f355894519f9fe",
"agents/gsd-research-synthesizer.md": "1c738df9932d325a",
"agents/gsd-roadmapper.md": "453e9471ad27c7ea",
"agents/gsd-security-auditor.md": "4551e5f621cf13ff",
"agents/gsd-ui-auditor.md": "a0b09cc8e4645956",
"agents/gsd-ui-checker.md": "33ffdc73d2105a24",
"agents/gsd-ui-researcher.md": "4b36852c839f1134",
"agents/gsd-user-profiler.md": "d40584599906f3b7",
"agents/gsd-verifier.md": "5280f380566a4eb6",
"commands/gsd-add-tests.md": "057e3e440989e681",
"commands/gsd-ai-integration-phase.md": "e1f1e0bd6c50506d",
"commands/gsd-audit-fix.md": "ebdcc267a2bebaab",
"commands/gsd-audit-milestone.md": "319caced85c69ff3",
"commands/gsd-audit-uat.md": "99c9af1b2a2c600a",
"commands/gsd-autonomous.md": "c256989da0d3e736",
"commands/gsd-capture.md": "d3f4353483df3637",
"commands/gsd-cleanup.md": "110473269dabd608",
"commands/gsd-code-review.md": "d2f3160f3a1a790a",
"commands/gsd-complete-milestone.md": "561b8e6bf35ee6e9",
"commands/gsd-config.md": "24d7e8cb8237456e",
"commands/gsd-debug.md": "488ec45a06eb7afa",
"commands/gsd-discuss-phase.md": "e50613dc10e1bab5",
"commands/gsd-docs-update.md": "e314a24fd3926ace",
"commands/gsd-eval-review.md": "c636c832d9a7f5c0",
"commands/gsd-execute-phase.md": "a2c4ad3e635c280a",
"commands/gsd-explore.md": "6d5e1f5f14b2d380",
"commands/gsd-extract-learnings.md": "e43d320cb3ed1aaa",
"commands/gsd-fast.md": "5357a1cf3f363dd2",
"commands/gsd-forensics.md": "b816a6cd5ea304f8",
"commands/gsd-graphify.md": "a07ffe1827c512e1",
"commands/gsd-health.md": "253680291c74b8ed",
"commands/gsd-help.md": "eb2c387f97c59e66",
"commands/gsd-import.md": "bcd7c5018b6c96b2",
"commands/gsd-inbox.md": "e829f45bfe8b4ca5",
"commands/gsd-ingest-docs.md": "ded9013d0de7e77b",
"commands/gsd-manager.md": "72d5b31b88f77703",
"commands/gsd-map-codebase.md": "ecd69887996ae561",
"commands/gsd-mempalace-capture.md": "7ec09056410d8e63",
"commands/gsd-mempalace-recall.md": "38716c0983a3ef9c",
"commands/gsd-milestone-summary.md": "908509042caf5beb",
"commands/gsd-mvp-phase.md": "1ef0d7c2871be49a",
"commands/gsd-new-milestone.md": "0ec387159e1f7182",
"commands/gsd-new-project.md": "d68b36481d09bfd4",
"commands/gsd-next.md": "e976ddf80b6cb425",
"commands/gsd-ns-context.md": "011c44e7aa46e64a",
"commands/gsd-ns-ideate.md": "edc5e543512dd48a",
"commands/gsd-ns-manage.md": "0409d810e499357f",
"commands/gsd-ns-project.md": "ff67e85bc6f7fc5a",
"commands/gsd-ns-review.md": "3766ed10827882a0",
"commands/gsd-ns-workflow.md": "c3b3c046a74ec0ee",
"commands/gsd-onboard.md": "d0d9405bc73899bd",
"commands/gsd-pause-work.md": "01dbaebfefacd252",
"commands/gsd-phase.md": "e8c226d2694692a5",
"commands/gsd-plan-phase.md": "a893b7e30eaed754",
"commands/gsd-plan-review-convergence.md": "cb6a8e074c0ab0cd",
"commands/gsd-pr-branch.md": "382c23a6a644c0e4",
"commands/gsd-profile-user.md": "adbc5b025b30e836",
"commands/gsd-progress.md": "75a6dc71b74c54c2",
"commands/gsd-quick.md": "fe2f6655e67a4223",
"commands/gsd-resume-work.md": "cb393bc9f46dcc15",
"commands/gsd-review-backlog.md": "434ebe7b63c107e0",
"commands/gsd-review.md": "e990b7adb72472f9",
"commands/gsd-secure-phase.md": "ca4c23a332ca6204",
"commands/gsd-settings.md": "ed3fe2f6c845226d",
"commands/gsd-ship.md": "35a93b86512a7dff",
"commands/gsd-sketch.md": "c35f09bf0698c0c9",
"commands/gsd-spec-phase.md": "383b4928c4df4bf1",
"commands/gsd-spike.md": "98d789db7ca53873",
"commands/gsd-stats.md": "a9c0e3f338bd61a5",
"commands/gsd-surface.md": "20bbba15eac52024",
"commands/gsd-thread.md": "1b78c7b75b53ad4e",
"commands/gsd-ui-phase.md": "67a759b3973f961f",
"commands/gsd-ui-review.md": "9b4ecf2d40bdc476",
"commands/gsd-ultraplan-phase.md": "4b42890e7d7a0c30",
"commands/gsd-undo.md": "e3cf64bb9562a0d8",
"commands/gsd-update.md": "23342d312e49a125",
"commands/gsd-validate-phase.md": "36c1a57cf7e1e724",
"commands/gsd-verify-work.md": "246ac304c4dfde48",
"commands/gsd-workspace.md": "5928e93b8ab475ac",
"commands/gsd-workstreams.md": "52ab9c585d3a00f3",
"gsd-core/.gsd-runtime": "98038b25280788a4",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "51bc64467ab30f62",
"gsd-core/bin/gsd-tools.cjs": "e1996ac045ff5fde",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "5ab875054b1adda9",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "f827de93dde124eb",
"gsd-core/references/api-coverage.md": "53d290a68f83c7d0",
"gsd-core/references/artifact-types.md": "251040866a3a1818",
"gsd-core/references/autonomous-smart-discuss.md": "2fc710cde0ec7785",
"gsd-core/references/checkpoints.md": "c2fe89c42ca88349",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "3565d2150c2124e1",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-bug-taxonomy.md": "78fb8c1711acc971",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "fdf55a6cee9b1792",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
"gsd-core/references/domain-probes.md": "762b965e84035b72",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "36f44960a5c1dc45",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-quota-recovery.md": "713cf7681f57e7ce",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "099c8d52e3562336",
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
"gsd-core/references/git-integration.md": "5c70ef3203b7c9ce",
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
"gsd-core/references/gsd-run-resolver.md": "1541604e8301ff6d",
"gsd-core/references/honest-verifier.md": "809f3488bc5a79d0",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "c4ac0d783b10f282",
"gsd-core/references/model-profiles.md": "c249163663bbea53",
"gsd-core/references/mvp-concepts.md": "3464783eaaef5c10",
"gsd-core/references/offer-next.md": "e483957e308f1022",
"gsd-core/references/phase-argument-parsing.md": "e5bbb985f3bc3e34",
"gsd-core/references/planner-antipatterns.md": "013ad54062399dad",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "1ed614dfba72f2a3",
"gsd-core/references/planner-guidance.md": "782fa05092be3ffa",
"gsd-core/references/planner-human-verify-mode.md": "56d05e841630b3f4",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "add55e135dd968da",
"gsd-core/references/planner-mvp-mode.md": "98bcd2020c30cbd2",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "74acbf4a873a01e4",
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "2dc9cc2ac26ccdcd",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "2d3b728f8ef5cf6e",
"gsd-core/references/project-skills-discovery.md": "c155e03dce8dc3c2",
"gsd-core/references/questioning.md": "a8c988cab05f4651",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "62930e66cc979c1a",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "a857fc444baec27a",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "0bbbb0735b6080fa",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "c0331cc8b7df24a8",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "ea15fb1a274ed7c4",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "827c1badf3e6df41",
"gsd-core/references/ui-brand.md": "48717bcfcd63bd27",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "6a1245050b21df01",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "b50416fe57c1b321",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "a3e2d5166d16a37b",
"gsd-core/references/verification-patterns.md": "cfaf338f42b1111e",
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
"gsd-core/references/workstream-flag.md": "ca99ca79e716f0f5",
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "0944156249103c16",
"gsd-core/templates/README.md": "90d2617778373147",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "e4d0f1c48727fce3",
"gsd-core/templates/claude-md.md": "d8f0fe8dba3bb28a",
"gsd-core/templates/codebase/architecture.md": "6be88214162fdd89",
"gsd-core/templates/codebase/concerns.md": "efa26d1fb5132f25",
"gsd-core/templates/codebase/conventions.md": "c2e07698dad6b364",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "d34c1d0eb4f15ed6",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "69b01e7909ea3f66",
"gsd-core/templates/continue-here.md": "f522a51b6895fba8",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "8c18a89e25929d8e",
"gsd-core/templates/dev-preferences.md": "95048a71063d980b",
"gsd-core/templates/discovery.md": "e4ab738326eb70e0",
"gsd-core/templates/discussion-log.md": "cac1b48ec0f4dcb8",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "974daa528c2ce3f1",
"gsd-core/templates/planner-subagent-prompt.md": "6c9f1b23ee3dc05f",
"gsd-core/templates/project.md": "ae1f68db042c2522",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "fa6dfb2ff2e8d273",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "7dc900c355098d8b",
"gsd-core/templates/state.md": "73e424b8c70b765c",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "85f4d37fcee6852b",
"gsd-core/templates/user-profile.md": "20749f23e4c413fc",
"gsd-core/templates/user-setup.md": "78b7d718b6e8d67c",
"gsd-core/templates/verification-report.md": "dd5faa6254183731",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "8d05775f367d1e48",
"gsd-core/workflows/add-phase.md": "b3c61dc9b4d799ed",
"gsd-core/workflows/add-tests.md": "040ed419b025f233",
"gsd-core/workflows/add-todo.md": "5f85e6eb5b1136d2",
"gsd-core/workflows/ai-integration-phase.md": "bb2ea9e09ffee8a2",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "25fee59ee209ec62",
"gsd-core/workflows/audit-milestone.md": "3a7d5069d6ad910a",
"gsd-core/workflows/audit-uat.md": "1c4a02a8c1ab930f",
"gsd-core/workflows/autonomous.md": "e2cfff95bc98501c",
"gsd-core/workflows/check-todos.md": "d36898ef5423b4ee",
"gsd-core/workflows/cleanup.md": "8490f912cd609049",
"gsd-core/workflows/code-review-fix.md": "34e600bb6c905b88",
"gsd-core/workflows/code-review.md": "c08a59f66f2e297a",
"gsd-core/workflows/complete-milestone.md": "529119d0ff9664d9",
"gsd-core/workflows/debug.md": "3f307270fc329c39",
"gsd-core/workflows/diagnose-issues.md": "517bc4b60d4b81c4",
"gsd-core/workflows/discovery-phase.md": "6d691c38a911e27d",
"gsd-core/workflows/discuss-phase-assumptions.md": "d5fac9d437bd65a6",
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
"gsd-core/workflows/discuss-phase.md": "ff2563dc378c5e5c",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "f64ece6d53b6d432",
"gsd-core/workflows/discuss-phase/modes/all.md": "fa70d79066562e54",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "da0788f3be7f8105",
"gsd-core/workflows/discuss-phase/modes/auto.md": "d0d68b06bcd43bcf",
"gsd-core/workflows/discuss-phase/modes/batch.md": "6946597770e2d448",
"gsd-core/workflows/discuss-phase/modes/chain.md": "94548620da9708dd",
"gsd-core/workflows/discuss-phase/modes/default.md": "67d1b67f61f03966",
"gsd-core/workflows/discuss-phase/modes/power.md": "dfcf239382e9bd67",
"gsd-core/workflows/discuss-phase/modes/text.md": "b62c9085d4dc2963",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "eeebda60636d1ad0",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "0f7b639ff37660b5",
"gsd-core/workflows/docs-update.md": "dc44aa6aab38535d",
"gsd-core/workflows/edit-phase.md": "dbbb6191f5a8b65e",
"gsd-core/workflows/eval-review.md": "c0cf2d0c5dd9df36",
"gsd-core/workflows/execute-phase.md": "3a1457523d8cf965",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "9a1f3deffb4dab14",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "ea0ebff5ac00fee6",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "a7f9b9a45303382f",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "b14d7fa2c4ec2406",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "724d726833e222ed",
"gsd-core/workflows/explore.md": "fabe8e5553de16c0",
"gsd-core/workflows/extract-learnings.md": "3778273aaba5d477",
"gsd-core/workflows/fast.md": "7f7687b920d79b29",
"gsd-core/workflows/forensics.md": "857d7b064f4cca21",
"gsd-core/workflows/graduation.md": "7a1d9e1327dce4e7",
"gsd-core/workflows/health.md": "dddcdd72162d23b5",
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
"gsd-core/workflows/help/modes/full.md": "1b30f768b9551f7d",
"gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9",
"gsd-core/workflows/import.md": "2a4013c380ce3acc",
"gsd-core/workflows/inbox.md": "47e718a37c7a738f",
"gsd-core/workflows/ingest-docs.md": "115e3b18febdd5cd",
"gsd-core/workflows/insert-phase.md": "ae977afd1509dc86",
"gsd-core/workflows/list-phase-assumptions.md": "2a6b6a5acfb7742c",
"gsd-core/workflows/list-seeds.md": "7576156b91e9abee",
"gsd-core/workflows/list-workspaces.md": "90caeeb11cec0128",
"gsd-core/workflows/manager.md": "9dcb5eaf64f86627",
"gsd-core/workflows/map-codebase.md": "e9e1e18ed59012dc",
"gsd-core/workflows/milestone-summary.md": "99636900c216c8d2",
"gsd-core/workflows/mvp-phase.md": "88cf363abd25f41e",
"gsd-core/workflows/new-milestone.md": "99a1dca3d86a16b6",
"gsd-core/workflows/new-project.md": "26f3680b17330514",
"gsd-core/workflows/new-workspace.md": "8ec67b5bc4c3f95a",
"gsd-core/workflows/next.md": "cbb891feeeff0c5f",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "a2cc926854a5666c",
"gsd-core/workflows/onboard.md": "f7d0dbcfd94ab130",
"gsd-core/workflows/pause-work.md": "da902807d2213204",
"gsd-core/workflows/plan-milestone-gaps.md": "7679fac068d1009d",
"gsd-core/workflows/plan-phase.md": "b4f63c7f924f915d",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "b810f9f2374e23a5",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261",
"gsd-core/workflows/plan-review-convergence.md": "df545a376a37f33d",
"gsd-core/workflows/plant-seed.md": "727991ecd521b617",
"gsd-core/workflows/pr-branch.md": "513f6cff722eff2d",
"gsd-core/workflows/profile-user.md": "7a7786eb43efda0d",
"gsd-core/workflows/progress.md": "01079a85cbc41ffe",
"gsd-core/workflows/quick.md": "edd9f4c7b3026c01",
"gsd-core/workflows/reapply-patches.md": "44a96b52b975e9bb",
"gsd-core/workflows/remove-phase.md": "8effc8742d58a11a",
"gsd-core/workflows/remove-workspace.md": "64b73daff58b9aec",
"gsd-core/workflows/resume-project.md": "af9761bcec0f6fe9",
"gsd-core/workflows/review.md": "73f78512f2c33aed",
"gsd-core/workflows/scan.md": "4cb3b0e2736ebaaf",
"gsd-core/workflows/secure-phase.md": "afb4f0a565d99715",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "94d61da368e9f85b",
"gsd-core/workflows/settings-integrations.md": "9e0108e01e78832c",
"gsd-core/workflows/settings.md": "a1a35e58da33b23b",
"gsd-core/workflows/ship.md": "543ce4997a00999c",
"gsd-core/workflows/sketch-wrap-up.md": "d52a5462bafda830",
"gsd-core/workflows/sketch.md": "9bc12018344f8110",
"gsd-core/workflows/smart-entry.md": "70445afde3a9ead6",
"gsd-core/workflows/spec-phase.md": "ec4d7e4e83bb001d",
"gsd-core/workflows/spike-wrap-up.md": "4bdfaf9d05c63e7c",
"gsd-core/workflows/spike.md": "0ec1ff41fefe5012",
"gsd-core/workflows/stats.md": "3953356f476b5053",
"gsd-core/workflows/sync-skills.md": "5624d529dae1ad79",
"gsd-core/workflows/thread.md": "14a9d195572a198f",
"gsd-core/workflows/transition.md": "42c46f7bdf3d97cc",
"gsd-core/workflows/ui-phase.md": "774439a4584a89eb",
"gsd-core/workflows/ui-review.md": "7f4e2c13f5b301a2",
"gsd-core/workflows/ultraplan-phase.md": "b926ba7e4de0c76d",
"gsd-core/workflows/undo.md": "71ee46d4ab85e5c4",
"gsd-core/workflows/update.md": "47431df1f75a9fdb",
"gsd-core/workflows/validate-phase.md": "0690727a090d9247",
"gsd-core/workflows/verify-phase.md": "90773de32a966c85",
"gsd-core/workflows/verify-work.md": "8f1ef09cb0fcbe2f",
"hooks/gsd-check-update-worker.js": "a530efdb5fdc0da3",
"hooks/gsd-check-update.js": "25cde66a12d6b886",
"hooks/gsd-config-reload.js": "96546e0e8bb47904",
"hooks/gsd-context-monitor.js": "f2ac6a1033d140de",
"hooks/gsd-cursor-post-tool.js": "8a8a249c0642cc71",
"hooks/gsd-cursor-pre-tool.js": "8cb8e8f895edaec9",
"hooks/gsd-cursor-session-start.js": "c78754e3516853e4",
"hooks/gsd-cursor-stop.js": "c46dc9be21b75f50",
"hooks/gsd-cursor-subagent-start.js": "ec1ea84a9a589b0a",
"hooks/gsd-cursor-subagent-stop.js": "8ee488d826bf3c37",
"hooks/gsd-ensure-canonical-path.js": "b4b3b88a0e493b16",
"hooks/gsd-graphify-update.sh": "81d716df76159e60",
"hooks/gsd-phase-boundary.sh": "4f3daad099fcdd50",
"hooks/gsd-prompt-guard.js": "696a0f65b9535cd1",
"hooks/gsd-read-guard.js": "54e1dcaaffe47693",
"hooks/gsd-read-injection-scanner.js": "18b32bb7401058da",
"hooks/gsd-session-state.sh": "e54379ba86bf1b6d",
"hooks/gsd-statusline.js": "bc03b97ef19328c0",
"hooks/gsd-update-banner.js": "b457746cb76c1957",
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
"hooks/gsd-workflow-guard.js": "41c59d9765ac36ae",
"hooks/gsd-worktree-path-guard.js": "f65356c80c9805b2",
"hooks/lib/cursor-workspace.js": "45061acd75d55a28",
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
"hooks/managed-hooks-registry.cjs": "1d955ec5d64e8a5f",
"package.json": "dbf8353f77358bc1",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7"
}

View File

@@ -1,442 +0,0 @@
{
".gsd-profile": "0e716a5fef4e6dc1",
"agents/gsd-advisor-researcher.md": "6f1f17e206e2c0c4",
"agents/gsd-ai-researcher.md": "e2236ee7b717c925",
"agents/gsd-assumptions-analyzer.md": "f94fdd67f70b4a5d",
"agents/gsd-code-fixer.md": "3d5f67cfd24ac452",
"agents/gsd-code-reviewer.md": "d626a828e8de3648",
"agents/gsd-codebase-mapper.md": "7b9d1f97d593e300",
"agents/gsd-debug-session-manager.md": "0d99579bf29cd355",
"agents/gsd-debugger.md": "064815a723abac0c",
"agents/gsd-doc-classifier.md": "a636ae9594b25770",
"agents/gsd-doc-synthesizer.md": "dfb95eedfb3789bf",
"agents/gsd-doc-verifier.md": "4232dcf9076e3566",
"agents/gsd-doc-writer.md": "8cb62907c6458111",
"agents/gsd-domain-researcher.md": "5f7d366251b957fe",
"agents/gsd-eval-auditor.md": "fea2759beff0a642",
"agents/gsd-eval-planner.md": "112f6730f23854e3",
"agents/gsd-executor.md": "74e35ceab5fc727f",
"agents/gsd-framework-selector.md": "c350ee693cb1aa4e",
"agents/gsd-integration-checker.md": "c8b4e65dee89c8ea",
"agents/gsd-intel-updater.md": "5b41e05f90ce89d9",
"agents/gsd-mempalace-curator.md": "77b53f1b155242b4",
"agents/gsd-nyquist-auditor.md": "0bc0cdad7b3a0013",
"agents/gsd-pattern-mapper.md": "b45b5e106775bec1",
"agents/gsd-phase-researcher.md": "85217c69c1ed2ac6",
"agents/gsd-plan-checker.md": "670e4ad7132a66ca",
"agents/gsd-planner.md": "cef4c830e0fa2bd8",
"agents/gsd-project-researcher.md": "f468e96f8339d1e0",
"agents/gsd-research-synthesizer.md": "7be02e47f4fd901b",
"agents/gsd-roadmapper.md": "8a7f1f1256a6aed5",
"agents/gsd-security-auditor.md": "757f72894f79f11b",
"agents/gsd-ui-auditor.md": "40c0dcc15bcfb9fb",
"agents/gsd-ui-checker.md": "8126405043f99cb6",
"agents/gsd-ui-researcher.md": "9e3ac030767167e0",
"agents/gsd-user-profiler.md": "003276f85792cfda",
"agents/gsd-verifier.md": "d1fe290d4673e379",
"gsd-core/.gsd-runtime": "98038b25280788a4",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "51bc64467ab30f62",
"gsd-core/bin/gsd-tools.cjs": "e1996ac045ff5fde",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "5ab875054b1adda9",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "f827de93dde124eb",
"gsd-core/references/api-coverage.md": "53d290a68f83c7d0",
"gsd-core/references/artifact-types.md": "8bd01fd75a2ba70e",
"gsd-core/references/autonomous-smart-discuss.md": "2fc710cde0ec7785",
"gsd-core/references/checkpoints.md": "c2fe89c42ca88349",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "b2c7b1703642a342",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-bug-taxonomy.md": "78fb8c1711acc971",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "fdf55a6cee9b1792",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
"gsd-core/references/domain-probes.md": "762b965e84035b72",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "5687eba25a078561",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-quota-recovery.md": "713cf7681f57e7ce",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "099c8d52e3562336",
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
"gsd-core/references/git-integration.md": "5c70ef3203b7c9ce",
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
"gsd-core/references/gsd-run-resolver.md": "e71eb728b84641b1",
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "3a05d03ea27c3a31",
"gsd-core/references/model-profiles.md": "c249163663bbea53",
"gsd-core/references/mvp-concepts.md": "3464783eaaef5c10",
"gsd-core/references/offer-next.md": "8f98bc9d5956a004",
"gsd-core/references/phase-argument-parsing.md": "e5bbb985f3bc3e34",
"gsd-core/references/planner-antipatterns.md": "013ad54062399dad",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "1ed614dfba72f2a3",
"gsd-core/references/planner-guidance.md": "140b1266eeb096cb",
"gsd-core/references/planner-human-verify-mode.md": "56d05e841630b3f4",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "74acbf4a873a01e4",
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "2dc9cc2ac26ccdcd",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "52872d5393ea9daf",
"gsd-core/references/project-skills-discovery.md": "c155e03dce8dc3c2",
"gsd-core/references/questioning.md": "a8c988cab05f4651",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "62930e66cc979c1a",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "a857fc444baec27a",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "0bbbb0735b6080fa",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "5e400dc05a15e972",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "ef519bff8c8bd572",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "827c1badf3e6df41",
"gsd-core/references/ui-brand.md": "48717bcfcd63bd27",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "6a1245050b21df01",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "b50416fe57c1b321",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "a3e2d5166d16a37b",
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
"gsd-core/references/workstream-flag.md": "ca99ca79e716f0f5",
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "0944156249103c16",
"gsd-core/templates/README.md": "90d2617778373147",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "e4d0f1c48727fce3",
"gsd-core/templates/claude-md.md": "d8f0fe8dba3bb28a",
"gsd-core/templates/codebase/architecture.md": "6be88214162fdd89",
"gsd-core/templates/codebase/concerns.md": "efa26d1fb5132f25",
"gsd-core/templates/codebase/conventions.md": "c2e07698dad6b364",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "222997133232a6f5",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "69b01e7909ea3f66",
"gsd-core/templates/continue-here.md": "f522a51b6895fba8",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "8c18a89e25929d8e",
"gsd-core/templates/dev-preferences.md": "95048a71063d980b",
"gsd-core/templates/discovery.md": "e4ab738326eb70e0",
"gsd-core/templates/discussion-log.md": "cac1b48ec0f4dcb8",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "213ccd947451ff2b",
"gsd-core/templates/planner-subagent-prompt.md": "6c9f1b23ee3dc05f",
"gsd-core/templates/project.md": "ae1f68db042c2522",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "fa6dfb2ff2e8d273",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "7dc900c355098d8b",
"gsd-core/templates/state.md": "73e424b8c70b765c",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "85f4d37fcee6852b",
"gsd-core/templates/user-profile.md": "20749f23e4c413fc",
"gsd-core/templates/user-setup.md": "78b7d718b6e8d67c",
"gsd-core/templates/verification-report.md": "dd5faa6254183731",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "485c4b6673ddf832",
"gsd-core/workflows/add-phase.md": "b2c06b7ed648658c",
"gsd-core/workflows/add-tests.md": "5168c1de6321484c",
"gsd-core/workflows/add-todo.md": "1841baacd58b7593",
"gsd-core/workflows/ai-integration-phase.md": "164ed8e703474267",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "7650bcb334e622a6",
"gsd-core/workflows/audit-milestone.md": "97877a45e3689b5f",
"gsd-core/workflows/audit-uat.md": "e11db0d74c2a7405",
"gsd-core/workflows/autonomous.md": "b26d23f3eb102969",
"gsd-core/workflows/check-todos.md": "166cc8d4f308b064",
"gsd-core/workflows/cleanup.md": "df79d1dc7b84d736",
"gsd-core/workflows/code-review-fix.md": "02eb79bb83321034",
"gsd-core/workflows/code-review.md": "0781664b59c27fd3",
"gsd-core/workflows/complete-milestone.md": "c3798c50670f6801",
"gsd-core/workflows/debug.md": "5050e2771e837615",
"gsd-core/workflows/diagnose-issues.md": "4a22064390778eab",
"gsd-core/workflows/discovery-phase.md": "89a3084e40430039",
"gsd-core/workflows/discuss-phase-assumptions.md": "b22d4c158b8a217e",
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
"gsd-core/workflows/discuss-phase.md": "df56c8cd170b2150",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653",
"gsd-core/workflows/discuss-phase/modes/all.md": "fa70d79066562e54",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "da0788f3be7f8105",
"gsd-core/workflows/discuss-phase/modes/auto.md": "d06f0bea2ba0b240",
"gsd-core/workflows/discuss-phase/modes/batch.md": "6946597770e2d448",
"gsd-core/workflows/discuss-phase/modes/chain.md": "ecdb88a9aa70d5bf",
"gsd-core/workflows/discuss-phase/modes/default.md": "67d1b67f61f03966",
"gsd-core/workflows/discuss-phase/modes/power.md": "fdc7a728eaaa2261",
"gsd-core/workflows/discuss-phase/modes/text.md": "b62c9085d4dc2963",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "eeebda60636d1ad0",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "97a456ceda9d4513",
"gsd-core/workflows/docs-update.md": "7a0be3529a99b11f",
"gsd-core/workflows/edit-phase.md": "8323bfe10faa0c0a",
"gsd-core/workflows/eval-review.md": "02cefe2dbdd0af52",
"gsd-core/workflows/execute-phase.md": "4bc5300e8b3aa889",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "d2020c5e01c7bd7f",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "ab70374e44eb85cd",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "da0c2286b1aed11d",
"gsd-core/workflows/explore.md": "9348b54b526b8938",
"gsd-core/workflows/extract-learnings.md": "13929ce8a04013e0",
"gsd-core/workflows/fast.md": "41a6568b873aef99",
"gsd-core/workflows/forensics.md": "c01da0178fb97b21",
"gsd-core/workflows/graduation.md": "973dcebcd17e1b10",
"gsd-core/workflows/health.md": "a0ec33a0401a4dbe",
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
"gsd-core/workflows/help/modes/full.md": "d15064afbbd07067",
"gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9",
"gsd-core/workflows/import.md": "6d9f45d10ac15d3e",
"gsd-core/workflows/inbox.md": "e47920b4495b019a",
"gsd-core/workflows/ingest-docs.md": "36da388c7bb5b36d",
"gsd-core/workflows/insert-phase.md": "964ca91863a8749a",
"gsd-core/workflows/list-phase-assumptions.md": "2a6b6a5acfb7742c",
"gsd-core/workflows/list-seeds.md": "5a46337f55ae8453",
"gsd-core/workflows/list-workspaces.md": "418570fbc8b938da",
"gsd-core/workflows/manager.md": "441d052077bee516",
"gsd-core/workflows/map-codebase.md": "1997d3da64546ebd",
"gsd-core/workflows/milestone-summary.md": "ad8e69fcb3463ce4",
"gsd-core/workflows/mvp-phase.md": "58a952b4715db283",
"gsd-core/workflows/new-milestone.md": "5f418c8e37e485d3",
"gsd-core/workflows/new-project.md": "6d845574ed6f7d80",
"gsd-core/workflows/new-workspace.md": "63ab4cb51ad88df4",
"gsd-core/workflows/next.md": "f6aeff5f3f9fea15",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "42b66686b2c102cb",
"gsd-core/workflows/onboard.md": "0f0af11294d31715",
"gsd-core/workflows/pause-work.md": "5716362557f44ce4",
"gsd-core/workflows/plan-milestone-gaps.md": "1b43d12812f7bc1e",
"gsd-core/workflows/plan-phase.md": "52940b65ba6655b8",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261",
"gsd-core/workflows/plan-review-convergence.md": "ddfd8e3ba2bdd974",
"gsd-core/workflows/plant-seed.md": "3dd79b65ad08e456",
"gsd-core/workflows/pr-branch.md": "ab157cd8e49621dd",
"gsd-core/workflows/profile-user.md": "84fff69a630033ed",
"gsd-core/workflows/progress.md": "1b56219777ea078c",
"gsd-core/workflows/quick.md": "adc8f6f22db5482e",
"gsd-core/workflows/reapply-patches.md": "ba9406b60f2c4041",
"gsd-core/workflows/remove-phase.md": "ada8a0546c686483",
"gsd-core/workflows/remove-workspace.md": "015cde237c75be39",
"gsd-core/workflows/resume-project.md": "7f8dc986f0f35d96",
"gsd-core/workflows/review.md": "9f271477cf84c34b",
"gsd-core/workflows/scan.md": "6b49ce7bcc615145",
"gsd-core/workflows/secure-phase.md": "93565460878833d6",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "339def28c34b0797",
"gsd-core/workflows/settings-integrations.md": "9c9db643112b2371",
"gsd-core/workflows/settings.md": "d3f05e22f21bfb3a",
"gsd-core/workflows/ship.md": "8fdad757ea7512f1",
"gsd-core/workflows/sketch-wrap-up.md": "121ed4b8127abf04",
"gsd-core/workflows/sketch.md": "ac7a5265c6970bdf",
"gsd-core/workflows/smart-entry.md": "99c73236890605a1",
"gsd-core/workflows/spec-phase.md": "d935df4ab9dd4f7c",
"gsd-core/workflows/spike-wrap-up.md": "e2704024992b3fee",
"gsd-core/workflows/spike.md": "a5b1e3c15271f21e",
"gsd-core/workflows/stats.md": "e7852c5d8f2b05a9",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "3b2c560d7189576d",
"gsd-core/workflows/transition.md": "fb35a3de7feaa056",
"gsd-core/workflows/ui-phase.md": "01c47ee2137ae445",
"gsd-core/workflows/ui-review.md": "32605a52b3dd47b3",
"gsd-core/workflows/ultraplan-phase.md": "328664400a001fd5",
"gsd-core/workflows/undo.md": "894deb5d28769ac9",
"gsd-core/workflows/update.md": "c4518a3d865a19cd",
"gsd-core/workflows/validate-phase.md": "7a5c50a462022479",
"gsd-core/workflows/verify-phase.md": "b8cca6ef3be502b9",
"gsd-core/workflows/verify-work.md": "e63397816868c9e3",
"hooks/gsd-check-update-worker.js": "a530efdb5fdc0da3",
"hooks/gsd-check-update.js": "25cde66a12d6b886",
"hooks/gsd-config-reload.js": "96546e0e8bb47904",
"hooks/gsd-context-monitor.js": "f2ac6a1033d140de",
"hooks/gsd-cursor-post-tool.js": "8a8a249c0642cc71",
"hooks/gsd-cursor-pre-tool.js": "8cb8e8f895edaec9",
"hooks/gsd-cursor-session-start.js": "c78754e3516853e4",
"hooks/gsd-cursor-stop.js": "c46dc9be21b75f50",
"hooks/gsd-cursor-subagent-start.js": "ec1ea84a9a589b0a",
"hooks/gsd-cursor-subagent-stop.js": "8ee488d826bf3c37",
"hooks/gsd-ensure-canonical-path.js": "b4b3b88a0e493b16",
"hooks/gsd-graphify-update.sh": "81d716df76159e60",
"hooks/gsd-phase-boundary.sh": "4f3daad099fcdd50",
"hooks/gsd-prompt-guard.js": "696a0f65b9535cd1",
"hooks/gsd-read-guard.js": "54e1dcaaffe47693",
"hooks/gsd-read-injection-scanner.js": "18b32bb7401058da",
"hooks/gsd-session-state.sh": "e54379ba86bf1b6d",
"hooks/gsd-statusline.js": "bc03b97ef19328c0",
"hooks/gsd-update-banner.js": "b457746cb76c1957",
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
"hooks/gsd-workflow-guard.js": "41c59d9765ac36ae",
"hooks/gsd-worktree-path-guard.js": "f65356c80c9805b2",
"hooks/lib/cursor-workspace.js": "45061acd75d55a28",
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
"hooks/managed-hooks-registry.cjs": "1d955ec5d64e8a5f",
"package.json": "dbf8353f77358bc1",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7",
"skills/gsd-add-tests/SKILL.md": "6661195a66f25ae8",
"skills/gsd-ai-integration-phase/SKILL.md": "e58f7e9b779b8cee",
"skills/gsd-audit-fix/SKILL.md": "d47c757ad361e503",
"skills/gsd-audit-milestone/SKILL.md": "edb6a0cc6305d724",
"skills/gsd-audit-uat/SKILL.md": "f3cb11adb6dab54f",
"skills/gsd-autonomous/SKILL.md": "fb57d2c08ea9e8bc",
"skills/gsd-capture/SKILL.md": "05fa421c95fbad2d",
"skills/gsd-cleanup/SKILL.md": "ea0ddedf403f309d",
"skills/gsd-code-review/SKILL.md": "051da89e9f09932a",
"skills/gsd-complete-milestone/SKILL.md": "f6799a5a713be7bb",
"skills/gsd-config/SKILL.md": "f830f8c9887064de",
"skills/gsd-debug/SKILL.md": "42de44884d97d86d",
"skills/gsd-discuss-phase/SKILL.md": "99e764f6fb1f5dd4",
"skills/gsd-docs-update/SKILL.md": "3d41e81ec571de60",
"skills/gsd-eval-review/SKILL.md": "b6b6059061388363",
"skills/gsd-execute-phase/SKILL.md": "cd7d2b134924d57b",
"skills/gsd-explore/SKILL.md": "7ee5c455f37093be",
"skills/gsd-extract-learnings/SKILL.md": "8d38e55e5f8b774b",
"skills/gsd-fast/SKILL.md": "5f3f8b0c3f564d14",
"skills/gsd-forensics/SKILL.md": "4ef11f4cf902186f",
"skills/gsd-graphify/SKILL.md": "20804d74e63f594d",
"skills/gsd-health/SKILL.md": "ab21123ba99ec255",
"skills/gsd-help/SKILL.md": "503130b761263411",
"skills/gsd-import/SKILL.md": "e0c88bc1ceed0dd2",
"skills/gsd-inbox/SKILL.md": "d05a099c0be02c60",
"skills/gsd-ingest-docs/SKILL.md": "eb85e654917a503a",
"skills/gsd-manager/SKILL.md": "1370d93741e47828",
"skills/gsd-map-codebase/SKILL.md": "cf65e61890448285",
"skills/gsd-mempalace-capture/SKILL.md": "175c5441158a0a9c",
"skills/gsd-mempalace-recall/SKILL.md": "c3f412d5a64f3921",
"skills/gsd-milestone-summary/SKILL.md": "33d51a325d314f3a",
"skills/gsd-mvp-phase/SKILL.md": "f9a1348c6c297579",
"skills/gsd-new-milestone/SKILL.md": "24c97f2814d30501",
"skills/gsd-new-project/SKILL.md": "e4d930027074d3b6",
"skills/gsd-next/SKILL.md": "13e394affe675498",
"skills/gsd-ns-context/SKILL.md": "3102e7ad9b60f182",
"skills/gsd-ns-ideate/SKILL.md": "c2c129408a046d22",
"skills/gsd-ns-manage/SKILL.md": "8d786e01fa28a7bb",
"skills/gsd-ns-project/SKILL.md": "76c77b121ad68b6c",
"skills/gsd-ns-review/SKILL.md": "4111ea56e820479f",
"skills/gsd-ns-workflow/SKILL.md": "4282c40a5e6e8bbe",
"skills/gsd-onboard/SKILL.md": "46460b479b7524bf",
"skills/gsd-pause-work/SKILL.md": "35e8a148e44f5361",
"skills/gsd-phase/SKILL.md": "00be96e7ae36c6f0",
"skills/gsd-plan-phase/SKILL.md": "295e3211497cb5a8",
"skills/gsd-plan-review-convergence/SKILL.md": "53242a6abe90c405",
"skills/gsd-pr-branch/SKILL.md": "c5e26f2c6dff1355",
"skills/gsd-profile-user/SKILL.md": "894eb2850ecd2dde",
"skills/gsd-progress/SKILL.md": "9b288501db99c7ea",
"skills/gsd-quick/SKILL.md": "bd5e4cb79bc41611",
"skills/gsd-resume-work/SKILL.md": "e23d2fb963d47d04",
"skills/gsd-review-backlog/SKILL.md": "1708aab6cb919223",
"skills/gsd-review/SKILL.md": "17cf20dd9a4796ff",
"skills/gsd-secure-phase/SKILL.md": "a6adf4729b606d5a",
"skills/gsd-settings/SKILL.md": "6d9fbddb0b00fd46",
"skills/gsd-ship/SKILL.md": "9f7929947aac3c27",
"skills/gsd-sketch/SKILL.md": "e531174c131acc85",
"skills/gsd-spec-phase/SKILL.md": "7e4dfa2070b7d9d1",
"skills/gsd-spike/SKILL.md": "04d5f50d8d4a1c1a",
"skills/gsd-stats/SKILL.md": "5403a46852241fa8",
"skills/gsd-surface/SKILL.md": "4b9c977a74a975ed",
"skills/gsd-thread/SKILL.md": "a76c70c368f82dee",
"skills/gsd-ui-phase/SKILL.md": "7c9404102a9b9d74",
"skills/gsd-ui-review/SKILL.md": "ef8f643abff1486b",
"skills/gsd-ultraplan-phase/SKILL.md": "a6c5aeacfa9bcbf1",
"skills/gsd-undo/SKILL.md": "0ad1218f55c94e4b",
"skills/gsd-update/SKILL.md": "25328e1ae7b51c98",
"skills/gsd-validate-phase/SKILL.md": "70375e2381319d2b",
"skills/gsd-verify-work/SKILL.md": "7ab3c2c1d008abd6",
"skills/gsd-workspace/SKILL.md": "047c3f4247bc869e",
"skills/gsd-workstreams/SKILL.md": "f4e54cb9b1ca0442"
}

View File

@@ -1,418 +0,0 @@
{
".agents/AGENTS.md": "4393766ace757e9d",
".clinerules/gsd.md": "d72c089c31c1fef3",
".clinerules/hooks/PreToolUse": "7271c83ab8a80911",
".gsd-profile": "0e716a5fef4e6dc1",
".gsd/defaults.json": "267b26d00031ac1f",
"agents/gsd-advisor-researcher.md": "e5be2680b690c198",
"agents/gsd-ai-researcher.md": "49ebcbe6985b86c9",
"agents/gsd-assumptions-analyzer.md": "b3219da6b194fdef",
"agents/gsd-code-fixer.md": "6aa74a2fb2ad244a",
"agents/gsd-code-reviewer.md": "e5ec12d4d409e800",
"agents/gsd-codebase-mapper.md": "efedbf9228fc9dc6",
"agents/gsd-debug-session-manager.md": "a9142cfb9932383d",
"agents/gsd-debugger.md": "427daaf994a596ba",
"agents/gsd-doc-classifier.md": "5011d7358d2b2848",
"agents/gsd-doc-synthesizer.md": "e59cdd669876582d",
"agents/gsd-doc-verifier.md": "b60290c9d9f6d8d2",
"agents/gsd-doc-writer.md": "27655a8cfdeb97ee",
"agents/gsd-domain-researcher.md": "0fecdaea86466a56",
"agents/gsd-eval-auditor.md": "36c44303085df2f8",
"agents/gsd-eval-planner.md": "3ddea88a69b4da3f",
"agents/gsd-executor.md": "b7270d3e755f6058",
"agents/gsd-framework-selector.md": "564669d479433f15",
"agents/gsd-integration-checker.md": "1bbbdd3d420b994e",
"agents/gsd-intel-updater.md": "42c40fffbc720d0b",
"agents/gsd-mempalace-curator.md": "78f4894a9d5f44b1",
"agents/gsd-nyquist-auditor.md": "4f9bba7b9762835d",
"agents/gsd-pattern-mapper.md": "b526065fd2efa19c",
"agents/gsd-phase-researcher.md": "c507db2ba66038f4",
"agents/gsd-plan-checker.md": "70ccc072a52cc4ce",
"agents/gsd-planner.md": "4aaa7d9fab92a01e",
"agents/gsd-project-researcher.md": "049f816c6caa4316",
"agents/gsd-research-synthesizer.md": "2f7dcbff50371d4c",
"agents/gsd-roadmapper.md": "bbb23d3097911516",
"agents/gsd-security-auditor.md": "38935b2d0c532c29",
"agents/gsd-ui-auditor.md": "9338efa31b9b7b99",
"agents/gsd-ui-checker.md": "151d12b4e007cbbf",
"agents/gsd-ui-researcher.md": "1bb303f3a3c4dfc9",
"agents/gsd-user-profiler.md": "622220df0654b6bf",
"agents/gsd-verifier.md": "403502d1071ef8df",
"gsd-core/.gsd-runtime": "98d4891544955482",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "476aa24e8c4f03cf",
"gsd-core/bin/gsd-tools.cjs": "44fca1b82643e3ad",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "59f782556e4e611f",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "f827de93dde124eb",
"gsd-core/references/api-coverage.md": "913654a1cdb3baf1",
"gsd-core/references/artifact-types.md": "a6d2e1f9453ffbf5",
"gsd-core/references/autonomous-smart-discuss.md": "2fc710cde0ec7785",
"gsd-core/references/checkpoints.md": "f66fb7d5b435682d",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "20caa988a2bca07a",
"gsd-core/references/continuation-format.md": "ce73e57d053ab8a7",
"gsd-core/references/debugger-bug-taxonomy.md": "63521aea0206d4ac",
"gsd-core/references/debugger-fix-acceptance.md": "1057d70f7f2d654a",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "98872822b7f1ef08",
"gsd-core/references/debugger-sbfl.md": "6e4975ee50973c23",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "67d019d23e17f934",
"gsd-core/references/domain-probes.md": "62d23ed1992c48a9",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "5687eba25a078561",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "e9582246dbc617e0",
"gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242",
"gsd-core/references/execute-phase-quota-recovery.md": "c4ca0ee3875b6e02",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "742bb890af014c87",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "e69f5993ab944d80",
"gsd-core/references/gates.md": "bd79c7f90c8cb8d7",
"gsd-core/references/git-integration.md": "f5403e1470e46e69",
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
"gsd-core/references/gsd-run-resolver.md": "07544d9a957fc2ca",
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "3a05d03ea27c3a31",
"gsd-core/references/model-profiles.md": "1794ad3d9854129e",
"gsd-core/references/mvp-concepts.md": "72f7e8b1f8ae7118",
"gsd-core/references/offer-next.md": "689740e4c2ed16f4",
"gsd-core/references/phase-argument-parsing.md": "e5bbb985f3bc3e34",
"gsd-core/references/planner-antipatterns.md": "013ad54062399dad",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "6aeffd9097e25e22",
"gsd-core/references/planner-guidance.md": "96486cac2f7885e6",
"gsd-core/references/planner-human-verify-mode.md": "0519ef5438b2ed30",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "e469016f2d51b5bc",
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "d75786c2d3e6ff5c",
"gsd-core/references/planner-reviews.md": "dda0193a0fbd4947",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "fe89ba623a93d84b",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "605dc3f5a118ff3b",
"gsd-core/references/project-skills-discovery.md": "76b9d6526741fd0e",
"gsd-core/references/questioning.md": "a8c988cab05f4651",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "62930e66cc979c1a",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "ae64e44f2f132bc2",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "987c665ef6c15e73",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "be4f9fe09213210b",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "ef519bff8c8bd572",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "41069529ef776e39",
"gsd-core/references/ui-brand.md": "48717bcfcd63bd27",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "6a1245050b21df01",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "b50416fe57c1b321",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "8213de9bd62283b6",
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
"gsd-core/references/workstream-flag.md": "19340c1a3be74ad2",
"gsd-core/references/worktree-branch-check.md": "f99ec1acb76014f5",
"gsd-core/references/worktree-path-safety.md": "8e5b4d542d2d9853",
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
"gsd-core/templates/DEBUG.md": "c8768312f4c1e438",
"gsd-core/templates/README.md": "004c355d4b02b145",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "9e296471b97ebcec",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "6f0fe4214dff6dd1",
"gsd-core/templates/claude-md.md": "c9fea2d8afa17d80",
"gsd-core/templates/codebase/architecture.md": "6be88214162fdd89",
"gsd-core/templates/codebase/concerns.md": "efa26d1fb5132f25",
"gsd-core/templates/codebase/conventions.md": "c2e07698dad6b364",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "988307dc093216d1",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "69b01e7909ea3f66",
"gsd-core/templates/continue-here.md": "f522a51b6895fba8",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "920656683dedb869",
"gsd-core/templates/dev-preferences.md": "88d0a65ec0993a3a",
"gsd-core/templates/discovery.md": "9a0e0935cc825dbc",
"gsd-core/templates/discussion-log.md": "cac1b48ec0f4dcb8",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "b811bf951092df2f",
"gsd-core/templates/planner-subagent-prompt.md": "ebf29dbb27042370",
"gsd-core/templates/project.md": "4f311fb1b05b823b",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "88ce0920417091d0",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "26d55bce940f0288",
"gsd-core/templates/state.md": "4d123aa6cea167fe",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "85f4d37fcee6852b",
"gsd-core/templates/user-profile.md": "20749f23e4c413fc",
"gsd-core/templates/user-setup.md": "78b7d718b6e8d67c",
"gsd-core/templates/verification-report.md": "dd5faa6254183731",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "6c4393113fa9d209",
"gsd-core/workflows/add-phase.md": "2558614a81b9e977",
"gsd-core/workflows/add-tests.md": "0dd47f73dd3ca32a",
"gsd-core/workflows/add-todo.md": "13a465fa41ba5aec",
"gsd-core/workflows/ai-integration-phase.md": "670b0a143b1ccf98",
"gsd-core/workflows/analyze-dependencies.md": "52942af10f140717",
"gsd-core/workflows/audit-fix.md": "3db85a39cd17e98c",
"gsd-core/workflows/audit-milestone.md": "cdccd915ab3b0369",
"gsd-core/workflows/audit-uat.md": "1fb7b2ab9d587c8f",
"gsd-core/workflows/autonomous.md": "dbdbc526853b4a7f",
"gsd-core/workflows/check-todos.md": "5f6b887a365ce692",
"gsd-core/workflows/cleanup.md": "6ed44dc47fd9972b",
"gsd-core/workflows/code-review-fix.md": "a0847c55a6e295b9",
"gsd-core/workflows/code-review.md": "7c6d960f104c34c5",
"gsd-core/workflows/complete-milestone.md": "85be65035bcd4e41",
"gsd-core/workflows/debug.md": "3c669867e6306b22",
"gsd-core/workflows/diagnose-issues.md": "873902ec4e4bf869",
"gsd-core/workflows/discovery-phase.md": "0fa751163960abc2",
"gsd-core/workflows/discuss-phase-assumptions.md": "710c72d4e7187e8a",
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
"gsd-core/workflows/discuss-phase.md": "a290d5ee19607bb7",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "250de9aae90daebc",
"gsd-core/workflows/discuss-phase/modes/all.md": "fa70d79066562e54",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "da0788f3be7f8105",
"gsd-core/workflows/discuss-phase/modes/auto.md": "d6392f268422768c",
"gsd-core/workflows/discuss-phase/modes/batch.md": "6946597770e2d448",
"gsd-core/workflows/discuss-phase/modes/chain.md": "1b26642897eebb36",
"gsd-core/workflows/discuss-phase/modes/default.md": "67d1b67f61f03966",
"gsd-core/workflows/discuss-phase/modes/power.md": "fdc7a728eaaa2261",
"gsd-core/workflows/discuss-phase/modes/text.md": "e38583ffc6743580",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "eeebda60636d1ad0",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "6b3cad91b3bd1419",
"gsd-core/workflows/docs-update.md": "5f953a0d4c0f3cad",
"gsd-core/workflows/edit-phase.md": "9c9fadc047c61d74",
"gsd-core/workflows/eval-review.md": "f67caf4dba0586d1",
"gsd-core/workflows/execute-phase.md": "b8c122c15467a6d8",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "1b3558cb8f41b65a",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "e01459552d587863",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "35612890c1173577",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "26825e1aacf224d0",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "204a0ac94a4bb545",
"gsd-core/workflows/explore.md": "db9e1a79dbe88090",
"gsd-core/workflows/extract-learnings.md": "9a39a7b2b7592141",
"gsd-core/workflows/fast.md": "e4f74a454b6ca5e8",
"gsd-core/workflows/forensics.md": "9fc65a8eed5d8bfc",
"gsd-core/workflows/graduation.md": "68d83a47e9cfaa7a",
"gsd-core/workflows/health.md": "ac50e6c68edc2667",
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
"gsd-core/workflows/help/modes/default.md": "86f7a14ad06e2f6f",
"gsd-core/workflows/help/modes/full.md": "602610e03d46f391",
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
"gsd-core/workflows/import.md": "df36af1592df5e70",
"gsd-core/workflows/inbox.md": "2e584f45e52f26f5",
"gsd-core/workflows/ingest-docs.md": "1ca9c5c3f14a7afb",
"gsd-core/workflows/insert-phase.md": "147f0009ec74b589",
"gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3",
"gsd-core/workflows/list-seeds.md": "25050c5e1b2b7176",
"gsd-core/workflows/list-workspaces.md": "8f0707ecbc395856",
"gsd-core/workflows/manager.md": "2988de4db361ceae",
"gsd-core/workflows/map-codebase.md": "b928e6525dc9ad03",
"gsd-core/workflows/milestone-summary.md": "20e56b9e3902e1d2",
"gsd-core/workflows/mvp-phase.md": "a95d43689a43163c",
"gsd-core/workflows/new-milestone.md": "1ec5c9ad4c611b02",
"gsd-core/workflows/new-project.md": "276ced215e4508e0",
"gsd-core/workflows/new-workspace.md": "dc67033c5ad37f97",
"gsd-core/workflows/next.md": "090a6db8989952dd",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "5a99eb396c744619",
"gsd-core/workflows/onboard.md": "f29c4fbef3b473fd",
"gsd-core/workflows/pause-work.md": "3530607514b0ac00",
"gsd-core/workflows/plan-milestone-gaps.md": "bafdc6945cd2bd87",
"gsd-core/workflows/plan-phase.md": "36c8d7bf34528c6c",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "4b0a2cb0f4f28179",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "090c31e22b1508fe",
"gsd-core/workflows/plan-review-convergence.md": "47193d4e29b3f64a",
"gsd-core/workflows/plant-seed.md": "94b54ead506385d3",
"gsd-core/workflows/pr-branch.md": "9923878a4f6a2d91",
"gsd-core/workflows/profile-user.md": "4c51320e7caa09ca",
"gsd-core/workflows/progress.md": "53b4310b873d233e",
"gsd-core/workflows/quick.md": "ee587f96e9f5b8fa",
"gsd-core/workflows/reapply-patches.md": "eb4272145a117904",
"gsd-core/workflows/remove-phase.md": "e336350f8113a328",
"gsd-core/workflows/remove-workspace.md": "79d3669cc9eb0b10",
"gsd-core/workflows/resume-project.md": "e23981178fa37b3d",
"gsd-core/workflows/review.md": "9f7d0f99ed40205b",
"gsd-core/workflows/scan.md": "d54e06f1ae992358",
"gsd-core/workflows/secure-phase.md": "81df9857cf75e0f3",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "69f3a19bf2c61160",
"gsd-core/workflows/settings-integrations.md": "a2682897e663fec4",
"gsd-core/workflows/settings.md": "17a5de032a64eb22",
"gsd-core/workflows/ship.md": "c95e39057dab8c51",
"gsd-core/workflows/sketch-wrap-up.md": "1f44789553180d84",
"gsd-core/workflows/sketch.md": "fadc2cbe6763c010",
"gsd-core/workflows/smart-entry.md": "22ef18e897b67907",
"gsd-core/workflows/spec-phase.md": "641208ed90684364",
"gsd-core/workflows/spike-wrap-up.md": "846958e0012a0899",
"gsd-core/workflows/spike.md": "94dd22a21565921c",
"gsd-core/workflows/stats.md": "f9241bb65770c5a4",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "d71b1e815925c5cc",
"gsd-core/workflows/transition.md": "6fa9751b097a3f52",
"gsd-core/workflows/ui-phase.md": "a0055dc46901a28a",
"gsd-core/workflows/ui-review.md": "d4971d478d48c0cb",
"gsd-core/workflows/ultraplan-phase.md": "ceff456b1e9d94d8",
"gsd-core/workflows/undo.md": "8de0e036f58d9b17",
"gsd-core/workflows/update.md": "d8fb48b56d2196c0",
"gsd-core/workflows/validate-phase.md": "23930a6e44c90b90",
"gsd-core/workflows/verify-phase.md": "a8b3c15e7ef9c394",
"gsd-core/workflows/verify-work.md": "a086b73034a72c90",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7",
"skills/gsd-ns-context/SKILL.md": "e278a50f3ecb8f56",
"skills/gsd-ns-context/skills/docs-update/SKILL.md": "d150afd41a25ec08",
"skills/gsd-ns-context/skills/extract-learnings/SKILL.md": "d39269bea995fabc",
"skills/gsd-ns-context/skills/graphify/SKILL.md": "030050fcd08d129d",
"skills/gsd-ns-context/skills/map-codebase/SKILL.md": "fa6a37402430af7d",
"skills/gsd-ns-context/skills/mempalace-capture/SKILL.md": "0f8eae8ef21ea89a",
"skills/gsd-ns-context/skills/mempalace-recall/SKILL.md": "2d95e385fee26dee",
"skills/gsd-ns-ideate/SKILL.md": "c10342345c01c91f",
"skills/gsd-ns-ideate/skills/capture/SKILL.md": "fb53053848bb6695",
"skills/gsd-ns-ideate/skills/explore/SKILL.md": "d8e26a5ed95a4ecc",
"skills/gsd-ns-ideate/skills/sketch/SKILL.md": "e52cfc46eeb203c2",
"skills/gsd-ns-ideate/skills/spec-phase/SKILL.md": "19726b83ca2c3d2d",
"skills/gsd-ns-ideate/skills/spike/SKILL.md": "d407644a84678e58",
"skills/gsd-ns-manage/SKILL.md": "0f4fb6d2f96ed7e9",
"skills/gsd-ns-manage/skills/cleanup/SKILL.md": "a578d6536b9cabc3",
"skills/gsd-ns-manage/skills/config/SKILL.md": "bcc58a5b17d29e82",
"skills/gsd-ns-manage/skills/health/SKILL.md": "74a68e1c1b310bef",
"skills/gsd-ns-manage/skills/help/SKILL.md": "8d01c91265b6357f",
"skills/gsd-ns-manage/skills/inbox/SKILL.md": "34370c6138415209",
"skills/gsd-ns-manage/skills/manager/SKILL.md": "a37ecdbe32952262",
"skills/gsd-ns-manage/skills/pause-work/SKILL.md": "da59910491639404",
"skills/gsd-ns-manage/skills/pr-branch/SKILL.md": "c25b5a3e31ab6f74",
"skills/gsd-ns-manage/skills/resume-work/SKILL.md": "5f0d4d0e86b99180",
"skills/gsd-ns-manage/skills/settings/SKILL.md": "67eff2d16e17403c",
"skills/gsd-ns-manage/skills/ship/SKILL.md": "4ad9695934e069ee",
"skills/gsd-ns-manage/skills/stats/SKILL.md": "25898070fb2a4b20",
"skills/gsd-ns-manage/skills/surface/SKILL.md": "a89b3bde1d2b620a",
"skills/gsd-ns-manage/skills/thread/SKILL.md": "67b5a0451b58c50c",
"skills/gsd-ns-manage/skills/undo/SKILL.md": "88407c6379617c7b",
"skills/gsd-ns-manage/skills/update/SKILL.md": "2666ab7786b69017",
"skills/gsd-ns-manage/skills/workspace/SKILL.md": "c2616b157ec2350b",
"skills/gsd-ns-manage/skills/workstreams/SKILL.md": "737841783c7fdd4f",
"skills/gsd-ns-project/SKILL.md": "fac77a9e770fd655",
"skills/gsd-ns-project/skills/audit-milestone/SKILL.md": "739ed755ad84e58e",
"skills/gsd-ns-project/skills/complete-milestone/SKILL.md": "a69d534b385d6aaf",
"skills/gsd-ns-project/skills/import/SKILL.md": "bc9b615cb141d26f",
"skills/gsd-ns-project/skills/ingest-docs/SKILL.md": "8fce43ae1144b8c3",
"skills/gsd-ns-project/skills/milestone-summary/SKILL.md": "e3636a5e9bbaab1f",
"skills/gsd-ns-project/skills/new-milestone/SKILL.md": "bc8989d97f3161ad",
"skills/gsd-ns-project/skills/new-project/SKILL.md": "ff0d57491df30624",
"skills/gsd-ns-project/skills/onboard/SKILL.md": "56c34282575926d4",
"skills/gsd-ns-project/skills/profile-user/SKILL.md": "0406eed4dbd9560c",
"skills/gsd-ns-project/skills/review-backlog/SKILL.md": "d8a150558cc9326a",
"skills/gsd-ns-review/SKILL.md": "c5afe33c212947dd",
"skills/gsd-ns-review/skills/audit-fix/SKILL.md": "2c1f601f2fb52585",
"skills/gsd-ns-review/skills/audit-uat/SKILL.md": "2c450432b6fd1c3e",
"skills/gsd-ns-review/skills/code-review/SKILL.md": "2d615701a36de114",
"skills/gsd-ns-review/skills/debug/SKILL.md": "2017ee8a5c39357a",
"skills/gsd-ns-review/skills/eval-review/SKILL.md": "c76022e94ee30cb1",
"skills/gsd-ns-review/skills/forensics/SKILL.md": "bbab359eaa388d34",
"skills/gsd-ns-review/skills/review/SKILL.md": "befdc84f5a0acf03",
"skills/gsd-ns-review/skills/secure-phase/SKILL.md": "ceded474164b4e2d",
"skills/gsd-ns-review/skills/ui-phase/SKILL.md": "c35f175ccc747d56",
"skills/gsd-ns-review/skills/ui-review/SKILL.md": "48267dc071481a89",
"skills/gsd-ns-review/skills/validate-phase/SKILL.md": "62dc6ae62bb38c16",
"skills/gsd-ns-workflow/SKILL.md": "0cb9c23c065fe448",
"skills/gsd-ns-workflow/skills/add-tests/SKILL.md": "addc3a220961a9c7",
"skills/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "0b1553cb7f4c8f7a",
"skills/gsd-ns-workflow/skills/autonomous/SKILL.md": "37dc7b78ceb74803",
"skills/gsd-ns-workflow/skills/discuss-phase/SKILL.md": "fedb2e2c77ff82ae",
"skills/gsd-ns-workflow/skills/execute-phase/SKILL.md": "e249a35959e49e99",
"skills/gsd-ns-workflow/skills/fast/SKILL.md": "3eae6536d09c2532",
"skills/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "6c2beccceb46fda1",
"skills/gsd-ns-workflow/skills/next/SKILL.md": "3856471d0f64bf09",
"skills/gsd-ns-workflow/skills/phase/SKILL.md": "4e1363db6013a1e5",
"skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "90d3631e4ed4204f",
"skills/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "a7be67e1bd14b5fb",
"skills/gsd-ns-workflow/skills/progress/SKILL.md": "493f467c22d55b6b",
"skills/gsd-ns-workflow/skills/quick/SKILL.md": "605e596c680cbb1c",
"skills/gsd-ns-workflow/skills/spec-phase/SKILL.md": "19726b83ca2c3d2d",
"skills/gsd-ns-workflow/skills/ultraplan-phase/SKILL.md": "8606e89121ffaba3",
"skills/gsd-ns-workflow/skills/verify-work/SKILL.md": "584a3485842de0a4"
}

View File

@@ -1,514 +0,0 @@
{
".gsd-profile": "0e716a5fef4e6dc1",
".gsd/defaults.json": "3abafed57651459c",
"agents/gsd-advisor-researcher.md": "e5be2680b690c198",
"agents/gsd-ai-researcher.md": "93ca6e24f4fd3681",
"agents/gsd-assumptions-analyzer.md": "b3219da6b194fdef",
"agents/gsd-code-fixer.md": "1cf3a9fdade9a470",
"agents/gsd-code-reviewer.md": "5342fcc0da974696",
"agents/gsd-codebase-mapper.md": "0c8f04c738c20a29",
"agents/gsd-debug-session-manager.md": "9f9606259531abf6",
"agents/gsd-debugger.md": "e454548710419254",
"agents/gsd-doc-classifier.md": "c2bf59af9467810b",
"agents/gsd-doc-synthesizer.md": "b2a179bf3c9bd636",
"agents/gsd-doc-verifier.md": "e74d930905a782ea",
"agents/gsd-doc-writer.md": "ed5678dd38c83716",
"agents/gsd-domain-researcher.md": "1c1a800108a2b225",
"agents/gsd-eval-auditor.md": "99012004b14ea602",
"agents/gsd-eval-planner.md": "4ebdd7fe9cbb0cfe",
"agents/gsd-executor.md": "5c9d4b46c025a8af",
"agents/gsd-framework-selector.md": "7726fccc86bfeb50",
"agents/gsd-integration-checker.md": "2d8339790bbb2dc3",
"agents/gsd-intel-updater.md": "c51339956197cbd3",
"agents/gsd-mempalace-curator.md": "78f4894a9d5f44b1",
"agents/gsd-nyquist-auditor.md": "42676eea063d2ec5",
"agents/gsd-pattern-mapper.md": "92cfa2e6c2a06bf3",
"agents/gsd-phase-researcher.md": "6338474da1a5d65e",
"agents/gsd-plan-checker.md": "3fdccb7353c69340",
"agents/gsd-planner.md": "c482d13228f2efd8",
"agents/gsd-project-researcher.md": "e43c59f7f1f2f37a",
"agents/gsd-research-synthesizer.md": "87955470c3c129b2",
"agents/gsd-roadmapper.md": "20b69eff61a7a9fa",
"agents/gsd-security-auditor.md": "bcd9c4859eb5b448",
"agents/gsd-ui-auditor.md": "a26bbc733817959b",
"agents/gsd-ui-checker.md": "25822359044cd708",
"agents/gsd-ui-researcher.md": "e37d9f53ade25d1f",
"agents/gsd-user-profiler.md": "622220df0654b6bf",
"agents/gsd-verifier.md": "107ad9d3193bcafc",
"commands/gsd-add-tests.md": "aa65032141557fb7",
"commands/gsd-ai-integration-phase.md": "6199b7198f928adc",
"commands/gsd-audit-fix.md": "c21ef925131fade7",
"commands/gsd-audit-milestone.md": "accbb975f85df506",
"commands/gsd-audit-uat.md": "f34f9d211780c8e7",
"commands/gsd-autonomous.md": "b2ddf4f71008055a",
"commands/gsd-capture.md": "73066649385d6a30",
"commands/gsd-cleanup.md": "15c306114555468e",
"commands/gsd-code-review.md": "fb1fee97d4ce7aa7",
"commands/gsd-complete-milestone.md": "42b9f738a6ef27bb",
"commands/gsd-config.md": "d2ca72138eb3e185",
"commands/gsd-debug.md": "279b3814e35e57e1",
"commands/gsd-discuss-phase.md": "b0e66df97b3d35b4",
"commands/gsd-docs-update.md": "0bd04559e7daaf8f",
"commands/gsd-eval-review.md": "5c0bf98aee70535f",
"commands/gsd-execute-phase.md": "4c2e81399876492a",
"commands/gsd-explore.md": "8a59d0d0ea3daebd",
"commands/gsd-extract-learnings.md": "727feb914d501f1a",
"commands/gsd-fast.md": "79bf42c66008a6db",
"commands/gsd-forensics.md": "f068866c568749a4",
"commands/gsd-graphify.md": "5e0efaed49aa8384",
"commands/gsd-health.md": "60c111036afc00d2",
"commands/gsd-help.md": "1a617e1b8e383b73",
"commands/gsd-import.md": "00e560b7e4b85523",
"commands/gsd-inbox.md": "eecfcfff57f89975",
"commands/gsd-ingest-docs.md": "ab3e58239c23d61d",
"commands/gsd-manager.md": "bfe9e261fa918876",
"commands/gsd-map-codebase.md": "5093093d42240325",
"commands/gsd-mempalace-capture.md": "abe0eb543cedb9fb",
"commands/gsd-mempalace-recall.md": "6efef238d8c62569",
"commands/gsd-milestone-summary.md": "e3a36fbd695a1833",
"commands/gsd-mvp-phase.md": "671791ba61c4654a",
"commands/gsd-new-milestone.md": "288fa7dfcec18094",
"commands/gsd-new-project.md": "490195d5003d3d17",
"commands/gsd-next.md": "dbec71acc9d5d2a2",
"commands/gsd-ns-context.md": "cc8954f405ae7916",
"commands/gsd-ns-ideate.md": "fd1dd80d705e6e36",
"commands/gsd-ns-manage.md": "5cc012d0be1caabb",
"commands/gsd-ns-project.md": "76672fae61723e55",
"commands/gsd-ns-review.md": "a28dbfd4aba5f74b",
"commands/gsd-ns-workflow.md": "a1b874be9cf16caf",
"commands/gsd-onboard.md": "63283b90aa671229",
"commands/gsd-pause-work.md": "6caa75a7c2b4dd2d",
"commands/gsd-phase.md": "e3ca4958ea20a935",
"commands/gsd-plan-phase.md": "4646767cfd0c240a",
"commands/gsd-plan-review-convergence.md": "da885320edff822b",
"commands/gsd-pr-branch.md": "f5be514b9f69eaf5",
"commands/gsd-profile-user.md": "7a9289910719d828",
"commands/gsd-progress.md": "80f75f428fc0949d",
"commands/gsd-quick.md": "8585535a111660d1",
"commands/gsd-resume-work.md": "9c4ee571a15fefae",
"commands/gsd-review-backlog.md": "41ee0337839b8e9d",
"commands/gsd-review.md": "763f91f5f823fa3a",
"commands/gsd-secure-phase.md": "6daf0c899069ab74",
"commands/gsd-settings.md": "57edae813aae049c",
"commands/gsd-ship.md": "9190bbab8119a365",
"commands/gsd-sketch.md": "4013cb35a4a800be",
"commands/gsd-spec-phase.md": "145f2ab750344022",
"commands/gsd-spike.md": "54c094f40b601688",
"commands/gsd-stats.md": "60f7077e7949d2ad",
"commands/gsd-surface.md": "84d89b840d00b7f0",
"commands/gsd-thread.md": "07da4f657b3efcc1",
"commands/gsd-ui-phase.md": "3b90f3d1c8fa531d",
"commands/gsd-ui-review.md": "4e5fb1e77def9b64",
"commands/gsd-ultraplan-phase.md": "728a2e57e10e6179",
"commands/gsd-undo.md": "a52c89b888e6c1b7",
"commands/gsd-update.md": "58bc4232c21a74ba",
"commands/gsd-validate-phase.md": "a735abb7db023543",
"commands/gsd-verify-work.md": "6edbbb82a1f2aea7",
"commands/gsd-workspace.md": "d765ff60cde657a6",
"commands/gsd-workstreams.md": "884b6c8d648422c7",
"gsd-core/.gsd-runtime": "04e9f0f6433d6d58",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "51bc64467ab30f62",
"gsd-core/bin/gsd-tools.cjs": "e1996ac045ff5fde",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "5ab875054b1adda9",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "f827de93dde124eb",
"gsd-core/references/api-coverage.md": "913654a1cdb3baf1",
"gsd-core/references/artifact-types.md": "a6d2e1f9453ffbf5",
"gsd-core/references/autonomous-smart-discuss.md": "2fc710cde0ec7785",
"gsd-core/references/checkpoints.md": "c2fe89c42ca88349",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "6749084395889c6a",
"gsd-core/references/continuation-format.md": "ce73e57d053ab8a7",
"gsd-core/references/debugger-bug-taxonomy.md": "78fb8c1711acc971",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "fdf55a6cee9b1792",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "67d019d23e17f934",
"gsd-core/references/domain-probes.md": "62d23ed1992c48a9",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "5687eba25a078561",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242",
"gsd-core/references/execute-phase-quota-recovery.md": "c4ca0ee3875b6e02",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "e69f5993ab944d80",
"gsd-core/references/gates.md": "bd79c7f90c8cb8d7",
"gsd-core/references/git-integration.md": "77bf9dff38b2c9d4",
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
"gsd-core/references/gsd-run-resolver.md": "e71eb728b84641b1",
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "3a05d03ea27c3a31",
"gsd-core/references/model-profiles.md": "e067ad3df6770db1",
"gsd-core/references/mvp-concepts.md": "72f7e8b1f8ae7118",
"gsd-core/references/offer-next.md": "689740e4c2ed16f4",
"gsd-core/references/phase-argument-parsing.md": "e5bbb985f3bc3e34",
"gsd-core/references/planner-antipatterns.md": "013ad54062399dad",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "6aeffd9097e25e22",
"gsd-core/references/planner-guidance.md": "96486cac2f7885e6",
"gsd-core/references/planner-human-verify-mode.md": "56d05e841630b3f4",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "d75786c2d3e6ff5c",
"gsd-core/references/planner-reviews.md": "dda0193a0fbd4947",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "ab3b698fe23bab9b",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "605dc3f5a118ff3b",
"gsd-core/references/project-skills-discovery.md": "c155e03dce8dc3c2",
"gsd-core/references/questioning.md": "a8c988cab05f4651",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "62930e66cc979c1a",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "ae64e44f2f132bc2",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "0bbbb0735b6080fa",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "5e400dc05a15e972",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "ef519bff8c8bd572",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "41069529ef776e39",
"gsd-core/references/ui-brand.md": "48717bcfcd63bd27",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "6a1245050b21df01",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "b50416fe57c1b321",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "8213de9bd62283b6",
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
"gsd-core/references/workstream-flag.md": "ca99ca79e716f0f5",
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
"gsd-core/templates/DEBUG.md": "c8768312f4c1e438",
"gsd-core/templates/README.md": "93d3426fc64e2c12",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "9e296471b97ebcec",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "6f0fe4214dff6dd1",
"gsd-core/templates/claude-md.md": "d1d333e4b963c0d2",
"gsd-core/templates/codebase/architecture.md": "6be88214162fdd89",
"gsd-core/templates/codebase/concerns.md": "efa26d1fb5132f25",
"gsd-core/templates/codebase/conventions.md": "c2e07698dad6b364",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "222997133232a6f5",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "69b01e7909ea3f66",
"gsd-core/templates/continue-here.md": "f522a51b6895fba8",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "920656683dedb869",
"gsd-core/templates/dev-preferences.md": "88d0a65ec0993a3a",
"gsd-core/templates/discovery.md": "9a0e0935cc825dbc",
"gsd-core/templates/discussion-log.md": "cac1b48ec0f4dcb8",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "b811bf951092df2f",
"gsd-core/templates/planner-subagent-prompt.md": "ebf29dbb27042370",
"gsd-core/templates/project.md": "4f311fb1b05b823b",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "88ce0920417091d0",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "26d55bce940f0288",
"gsd-core/templates/state.md": "4d123aa6cea167fe",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "85f4d37fcee6852b",
"gsd-core/templates/user-profile.md": "20749f23e4c413fc",
"gsd-core/templates/user-setup.md": "78b7d718b6e8d67c",
"gsd-core/templates/verification-report.md": "dd5faa6254183731",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "1bc7377b105194fc",
"gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8",
"gsd-core/workflows/add-tests.md": "7e7268602f9e1b2a",
"gsd-core/workflows/add-todo.md": "5dc04cfaa0b6b072",
"gsd-core/workflows/ai-integration-phase.md": "308378c9044a52e1",
"gsd-core/workflows/analyze-dependencies.md": "52942af10f140717",
"gsd-core/workflows/audit-fix.md": "7650bcb334e622a6",
"gsd-core/workflows/audit-milestone.md": "6174b6f87844973c",
"gsd-core/workflows/audit-uat.md": "fcfbec501620b564",
"gsd-core/workflows/autonomous.md": "aed5e67104346cc2",
"gsd-core/workflows/check-todos.md": "c484e472cff0e4e3",
"gsd-core/workflows/cleanup.md": "df79d1dc7b84d736",
"gsd-core/workflows/code-review-fix.md": "9fef1cf740c7c155",
"gsd-core/workflows/code-review.md": "22b53c0d29508d57",
"gsd-core/workflows/complete-milestone.md": "8f98d7b05793cf4a",
"gsd-core/workflows/debug.md": "3f0218b051c1afb1",
"gsd-core/workflows/diagnose-issues.md": "8219a1e1213f498e",
"gsd-core/workflows/discovery-phase.md": "0aa8d8d872b53858",
"gsd-core/workflows/discuss-phase-assumptions.md": "9c8b6b66df026e33",
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
"gsd-core/workflows/discuss-phase.md": "02a5381c9a2173be",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653",
"gsd-core/workflows/discuss-phase/modes/all.md": "fa70d79066562e54",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "da0788f3be7f8105",
"gsd-core/workflows/discuss-phase/modes/auto.md": "d06f0bea2ba0b240",
"gsd-core/workflows/discuss-phase/modes/batch.md": "6946597770e2d448",
"gsd-core/workflows/discuss-phase/modes/chain.md": "5502a67de7776853",
"gsd-core/workflows/discuss-phase/modes/default.md": "67d1b67f61f03966",
"gsd-core/workflows/discuss-phase/modes/power.md": "fdc7a728eaaa2261",
"gsd-core/workflows/discuss-phase/modes/text.md": "da6d45207da4a988",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "eeebda60636d1ad0",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "90df4f1fe248cdf3",
"gsd-core/workflows/docs-update.md": "fba7329f525c9463",
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
"gsd-core/workflows/eval-review.md": "c2933259ff7fb6ac",
"gsd-core/workflows/execute-phase.md": "40765d7517891c09",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "f7782680c2b8ad6b",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "ab70374e44eb85cd",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "874689d8678e6186",
"gsd-core/workflows/explore.md": "3f3b4f83e23349bc",
"gsd-core/workflows/extract-learnings.md": "ab26f2cbb14efef2",
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
"gsd-core/workflows/forensics.md": "0d500a3f5ab26913",
"gsd-core/workflows/graduation.md": "973dcebcd17e1b10",
"gsd-core/workflows/health.md": "c25b5e5f62874c31",
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
"gsd-core/workflows/help/modes/full.md": "56178cea79dd6ffe",
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
"gsd-core/workflows/import.md": "57abe514a9b0f6ac",
"gsd-core/workflows/inbox.md": "a7d439981775bc29",
"gsd-core/workflows/ingest-docs.md": "781799b47d282b37",
"gsd-core/workflows/insert-phase.md": "08dca838d831bb5b",
"gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3",
"gsd-core/workflows/list-seeds.md": "b687f2a843032d65",
"gsd-core/workflows/list-workspaces.md": "7f94e18b5c549453",
"gsd-core/workflows/manager.md": "c18fab593344253d",
"gsd-core/workflows/map-codebase.md": "51aebfe0523f3bcf",
"gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043",
"gsd-core/workflows/mvp-phase.md": "58a952b4715db283",
"gsd-core/workflows/new-milestone.md": "8164a9abc301f143",
"gsd-core/workflows/new-project.md": "f4afb433342e7745",
"gsd-core/workflows/new-workspace.md": "bbeb706c7a697617",
"gsd-core/workflows/next.md": "4e1eb6b46d15798d",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "5a99eb396c744619",
"gsd-core/workflows/onboard.md": "f29c4fbef3b473fd",
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
"gsd-core/workflows/plan-phase.md": "9242c6d8c447afa8",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5",
"gsd-core/workflows/plan-review-convergence.md": "db69460dd4df0d29",
"gsd-core/workflows/plant-seed.md": "9596db80ab282c6f",
"gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b",
"gsd-core/workflows/profile-user.md": "1419f1dad1853da0",
"gsd-core/workflows/progress.md": "46c83ad61b3c4a84",
"gsd-core/workflows/quick.md": "8f54f91ff4b56149",
"gsd-core/workflows/reapply-patches.md": "39050f72601aec89",
"gsd-core/workflows/remove-phase.md": "df9a45f0b1880999",
"gsd-core/workflows/remove-workspace.md": "f67860c795fb4bfe",
"gsd-core/workflows/resume-project.md": "f28da1200e4545f4",
"gsd-core/workflows/review.md": "8724993cbc91bcc5",
"gsd-core/workflows/scan.md": "0583dac337623f82",
"gsd-core/workflows/secure-phase.md": "00225810eaed265b",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44",
"gsd-core/workflows/settings-integrations.md": "effcef778d4a855f",
"gsd-core/workflows/settings.md": "85ceb482dc713169",
"gsd-core/workflows/ship.md": "ca94c87c80a70c27",
"gsd-core/workflows/sketch-wrap-up.md": "2aba89ecd8f41a0d",
"gsd-core/workflows/sketch.md": "2913d90416a3c0f0",
"gsd-core/workflows/smart-entry.md": "004b4060eab97cb9",
"gsd-core/workflows/spec-phase.md": "fa8669b75392cf6c",
"gsd-core/workflows/spike-wrap-up.md": "2b004744c52e565c",
"gsd-core/workflows/spike.md": "9d189e302ce51694",
"gsd-core/workflows/stats.md": "76a42cbeaf6007c2",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "927e7eeefd2fcf5c",
"gsd-core/workflows/transition.md": "aea486bb7a0e80e7",
"gsd-core/workflows/ui-phase.md": "f93ee056a8b89033",
"gsd-core/workflows/ui-review.md": "387f7cefc849dba1",
"gsd-core/workflows/ultraplan-phase.md": "0fb8291153e3937d",
"gsd-core/workflows/undo.md": "1712417bade30b30",
"gsd-core/workflows/update.md": "057ac2d783fda3ae",
"gsd-core/workflows/validate-phase.md": "171ff4aa9b392475",
"gsd-core/workflows/verify-phase.md": "d26a2c3269340caf",
"gsd-core/workflows/verify-work.md": "bc9dcabfc5be2e81",
"hooks/gsd-check-update-worker.js": "bdc9324a2f080ddd",
"hooks/gsd-check-update.js": "b7669f605631e506",
"hooks/gsd-config-reload.js": "96546e0e8bb47904",
"hooks/gsd-context-monitor.js": "8d512ba0b08fc4e3",
"hooks/gsd-cursor-post-tool.js": "9168e0a09de1972a",
"hooks/gsd-cursor-pre-tool.js": "873998b25e308c29",
"hooks/gsd-cursor-session-start.js": "c72f669cc24c72e3",
"hooks/gsd-cursor-stop.js": "80de723949cee847",
"hooks/gsd-cursor-subagent-start.js": "699a2da2e3c5763e",
"hooks/gsd-cursor-subagent-stop.js": "4bbf22917da4d389",
"hooks/gsd-ensure-canonical-path.js": "434887487ae63ec5",
"hooks/gsd-graphify-update.sh": "81d716df76159e60",
"hooks/gsd-phase-boundary.sh": "4f3daad099fcdd50",
"hooks/gsd-prompt-guard.js": "696a0f65b9535cd1",
"hooks/gsd-read-guard.js": "54e1dcaaffe47693",
"hooks/gsd-read-injection-scanner.js": "5bea3d3fce675489",
"hooks/gsd-session-state.sh": "e54379ba86bf1b6d",
"hooks/gsd-statusline.js": "7cdf1ae0e5b17969",
"hooks/gsd-update-banner.js": "55143a25f978f301",
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
"hooks/gsd-workflow-guard.js": "56414206bc13b3dc",
"hooks/gsd-worktree-path-guard.js": "a1a3d4618b41a804",
"hooks/lib/cursor-workspace.js": "45061acd75d55a28",
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
"hooks/managed-hooks-registry.cjs": "9c0d837594c7b772",
"package.json": "dbf8353f77358bc1",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7",
"skills/gsd-add-tests/SKILL.md": "60dd7f9779d5f493",
"skills/gsd-ai-integration-phase/SKILL.md": "eb9b5d76d91dd2fe",
"skills/gsd-audit-fix/SKILL.md": "309dcbc406750fd6",
"skills/gsd-audit-milestone/SKILL.md": "1f328f0c7448f27c",
"skills/gsd-audit-uat/SKILL.md": "597d4f8cd0fa5240",
"skills/gsd-autonomous/SKILL.md": "faf243b21954b407",
"skills/gsd-capture/SKILL.md": "6de5ad4b9ea3b599",
"skills/gsd-cleanup/SKILL.md": "fa47be0052de815b",
"skills/gsd-code-review/SKILL.md": "86a9df56bbd7ac7b",
"skills/gsd-complete-milestone/SKILL.md": "a0a9e43312160286",
"skills/gsd-config/SKILL.md": "862626bacdeb9e75",
"skills/gsd-debug/SKILL.md": "ecd7e69309a6e6dc",
"skills/gsd-discuss-phase/SKILL.md": "75fec0c03892505a",
"skills/gsd-docs-update/SKILL.md": "bec33cfc810194d9",
"skills/gsd-eval-review/SKILL.md": "65e26f5ec8ff57cc",
"skills/gsd-execute-phase/SKILL.md": "40e479d06dbd8da4",
"skills/gsd-explore/SKILL.md": "fc2d0fd090e7090d",
"skills/gsd-extract-learnings/SKILL.md": "778faa10f3c33788",
"skills/gsd-fast/SKILL.md": "6c81b52c310d43fa",
"skills/gsd-forensics/SKILL.md": "6c69cbd255d3a33a",
"skills/gsd-graphify/SKILL.md": "579180d7ea6e24cf",
"skills/gsd-health/SKILL.md": "e60400c5acb8248c",
"skills/gsd-help/SKILL.md": "98a2eeba302621d2",
"skills/gsd-import/SKILL.md": "f3d3ad26dfdfbd53",
"skills/gsd-inbox/SKILL.md": "0eb81a1b2e1835d3",
"skills/gsd-ingest-docs/SKILL.md": "2df55e0ec95d57d9",
"skills/gsd-manager/SKILL.md": "816db4d4ed618537",
"skills/gsd-map-codebase/SKILL.md": "b304ec25e9a95c93",
"skills/gsd-mempalace-capture/SKILL.md": "b6aee382ec1a6c2b",
"skills/gsd-mempalace-recall/SKILL.md": "70c8491f53f4161b",
"skills/gsd-milestone-summary/SKILL.md": "9eb030a1ac307fa1",
"skills/gsd-mvp-phase/SKILL.md": "236fcdd69f47d101",
"skills/gsd-new-milestone/SKILL.md": "be371ad30631385e",
"skills/gsd-new-project/SKILL.md": "793f7177d3bd026b",
"skills/gsd-next/SKILL.md": "43c805425b88bf75",
"skills/gsd-ns-context/SKILL.md": "305b9b6248e8cc95",
"skills/gsd-ns-ideate/SKILL.md": "c63a1aed61888b35",
"skills/gsd-ns-manage/SKILL.md": "6a5b711b5103c566",
"skills/gsd-ns-project/SKILL.md": "3711ce904d20ca66",
"skills/gsd-ns-review/SKILL.md": "98f1f3b3caf1a279",
"skills/gsd-ns-workflow/SKILL.md": "b77682820700300b",
"skills/gsd-onboard/SKILL.md": "6ad789a03124cd4f",
"skills/gsd-pause-work/SKILL.md": "e2de20b7539e78d4",
"skills/gsd-phase/SKILL.md": "f87211f779315ced",
"skills/gsd-plan-phase/SKILL.md": "ae3f6a76c08f7782",
"skills/gsd-plan-review-convergence/SKILL.md": "1b1526f5d7a34306",
"skills/gsd-pr-branch/SKILL.md": "87bb3306488565fb",
"skills/gsd-profile-user/SKILL.md": "ee8e8547298006b8",
"skills/gsd-progress/SKILL.md": "88c8229b673004e3",
"skills/gsd-quick/SKILL.md": "b895cb9835f3fc0e",
"skills/gsd-resume-work/SKILL.md": "f8bc8b92dffd07b7",
"skills/gsd-review-backlog/SKILL.md": "c0c743e1376c2eff",
"skills/gsd-review/SKILL.md": "e47c285346aaba06",
"skills/gsd-secure-phase/SKILL.md": "bd36a3157c28df37",
"skills/gsd-settings/SKILL.md": "fbe736decd04a85d",
"skills/gsd-ship/SKILL.md": "8d40fc9f9436d2c3",
"skills/gsd-sketch/SKILL.md": "0686257acc865e0b",
"skills/gsd-spec-phase/SKILL.md": "96a095cd634129d8",
"skills/gsd-spike/SKILL.md": "d4af42b801139876",
"skills/gsd-stats/SKILL.md": "7d1fbadcae5f0b67",
"skills/gsd-surface/SKILL.md": "1b840c8ddd76b9c7",
"skills/gsd-thread/SKILL.md": "18ddd2aa60997949",
"skills/gsd-ui-phase/SKILL.md": "132ccf2ddc9e24e0",
"skills/gsd-ui-review/SKILL.md": "7e8cf0bcee9859cd",
"skills/gsd-ultraplan-phase/SKILL.md": "212a60a2df7bbb71",
"skills/gsd-undo/SKILL.md": "ebaca8bea34afd2e",
"skills/gsd-update/SKILL.md": "fd60247c80431aa9",
"skills/gsd-validate-phase/SKILL.md": "5216ef11d14f109b",
"skills/gsd-verify-work/SKILL.md": "d467197419fdbdf5",
"skills/gsd-workspace/SKILL.md": "7fcacf69b4c07655",
"skills/gsd-workstreams/SKILL.md": "b84ca1f541d6dfd1"
}

View File

@@ -1,451 +0,0 @@
{
".agents/skills/gsd-add-tests/SKILL.md": "77b8cc2260347f34",
".agents/skills/gsd-ai-integration-phase/SKILL.md": "a7d2527fdacdfca8",
".agents/skills/gsd-audit-fix/SKILL.md": "dcf56fbc7dddfa05",
".agents/skills/gsd-audit-milestone/SKILL.md": "5f0c7c1212a1aab9",
".agents/skills/gsd-audit-uat/SKILL.md": "60e3113cd4f79d30",
".agents/skills/gsd-autonomous/SKILL.md": "814575ceee96bf7f",
".agents/skills/gsd-capture/SKILL.md": "24c497365eb1dc88",
".agents/skills/gsd-cleanup/SKILL.md": "a98cf0c1a9cd043f",
".agents/skills/gsd-code-review/SKILL.md": "8d437487fdf22dd8",
".agents/skills/gsd-complete-milestone/SKILL.md": "4db2dfdb992f1ddc",
".agents/skills/gsd-config/SKILL.md": "d461419ef4715e8a",
".agents/skills/gsd-debug/SKILL.md": "0b6f9657b8d951b3",
".agents/skills/gsd-discuss-phase/SKILL.md": "9576325fe81d2fa3",
".agents/skills/gsd-docs-update/SKILL.md": "cb3b313895cb02c2",
".agents/skills/gsd-eval-review/SKILL.md": "0047cb3cf40d1e56",
".agents/skills/gsd-execute-phase/SKILL.md": "2f74b8bf59526a07",
".agents/skills/gsd-explore/SKILL.md": "0114f763a0b23e1b",
".agents/skills/gsd-extract-learnings/SKILL.md": "386a4dc07b1531bb",
".agents/skills/gsd-fast/SKILL.md": "f56a7f5dcd552e1d",
".agents/skills/gsd-forensics/SKILL.md": "8e316475309e0244",
".agents/skills/gsd-graphify/SKILL.md": "89b024ca307dbef2",
".agents/skills/gsd-health/SKILL.md": "6236cb12b1ad87a0",
".agents/skills/gsd-help/SKILL.md": "dcec9a38b65a3fe7",
".agents/skills/gsd-import/SKILL.md": "2bfbdb1d8e968e92",
".agents/skills/gsd-inbox/SKILL.md": "6cb4b0a7d204a57f",
".agents/skills/gsd-ingest-docs/SKILL.md": "89d7a1600280cea0",
".agents/skills/gsd-manager/SKILL.md": "30871970a7f114fd",
".agents/skills/gsd-map-codebase/SKILL.md": "9e8075f7e40f71b0",
".agents/skills/gsd-mempalace-capture/SKILL.md": "90e246d2fcb69742",
".agents/skills/gsd-mempalace-recall/SKILL.md": "af823f0ba710ae9f",
".agents/skills/gsd-milestone-summary/SKILL.md": "bc764a054f502fb9",
".agents/skills/gsd-mvp-phase/SKILL.md": "0510a25c1812c14e",
".agents/skills/gsd-new-milestone/SKILL.md": "6a0f49871aa109ce",
".agents/skills/gsd-new-project/SKILL.md": "2b0ed171caff620f",
".agents/skills/gsd-next/SKILL.md": "e5bbd32e2ddf7898",
".agents/skills/gsd-ns-context/SKILL.md": "701f9c8b888da86d",
".agents/skills/gsd-ns-ideate/SKILL.md": "9d7fadf4e720d0f7",
".agents/skills/gsd-ns-manage/SKILL.md": "7796f26fef6f37ed",
".agents/skills/gsd-ns-project/SKILL.md": "334d912c373dd510",
".agents/skills/gsd-ns-review/SKILL.md": "b8c0e8c006750d9e",
".agents/skills/gsd-ns-workflow/SKILL.md": "74cfe054960e3d3a",
".agents/skills/gsd-onboard/SKILL.md": "405f1bafd7923f63",
".agents/skills/gsd-pause-work/SKILL.md": "035ba2eb44694897",
".agents/skills/gsd-phase/SKILL.md": "fcaf25f68fb69aa9",
".agents/skills/gsd-plan-phase/SKILL.md": "2e32fc011f5a967a",
".agents/skills/gsd-plan-review-convergence/SKILL.md": "d2a06c49143781a7",
".agents/skills/gsd-pr-branch/SKILL.md": "ec4b400d07d513ae",
".agents/skills/gsd-profile-user/SKILL.md": "2121b67e7a15bab5",
".agents/skills/gsd-progress/SKILL.md": "c437575d9db40ec5",
".agents/skills/gsd-quick/SKILL.md": "2903daf3d7a7721d",
".agents/skills/gsd-resume-work/SKILL.md": "ae8d0d364e4253e7",
".agents/skills/gsd-review-backlog/SKILL.md": "e7f1864923ac2364",
".agents/skills/gsd-review/SKILL.md": "7da0004c99fa4bb0",
".agents/skills/gsd-secure-phase/SKILL.md": "c9e188e7245d1737",
".agents/skills/gsd-settings/SKILL.md": "300cd125bcf6ed36",
".agents/skills/gsd-ship/SKILL.md": "a4e4754b1ec4acc1",
".agents/skills/gsd-sketch/SKILL.md": "aeb24dbbb9fdf53b",
".agents/skills/gsd-spec-phase/SKILL.md": "8f83fab7e9bf7cf2",
".agents/skills/gsd-spike/SKILL.md": "c1cf5ac37ab91f5a",
".agents/skills/gsd-stats/SKILL.md": "baf175aeb2ab443d",
".agents/skills/gsd-surface/SKILL.md": "aa799cd1fcd19314",
".agents/skills/gsd-thread/SKILL.md": "dcf2f37027521f34",
".agents/skills/gsd-ui-phase/SKILL.md": "f5566a58fb643a93",
".agents/skills/gsd-ui-review/SKILL.md": "cc4621cf9f34c203",
".agents/skills/gsd-ultraplan-phase/SKILL.md": "a3102b7aa3358374",
".agents/skills/gsd-undo/SKILL.md": "eda2192b937bc7bf",
".agents/skills/gsd-update/SKILL.md": "c6cef6debd103e68",
".agents/skills/gsd-validate-phase/SKILL.md": "0e628cd8455f5127",
".agents/skills/gsd-verify-work/SKILL.md": "7025ea9c3bb18bc4",
".agents/skills/gsd-workspace/SKILL.md": "d7e1436cd4b79c54",
".agents/skills/gsd-workstreams/SKILL.md": "88c2e54d79078ba3",
".gsd-profile": "0e716a5fef4e6dc1",
".gsd/defaults.json": "5ca58f5ff7ef0b92",
"agents/gsd-advisor-researcher.md": "eea6d1604aaf305c",
"agents/gsd-advisor-researcher.toml": "144f037c79aa9c26",
"agents/gsd-ai-researcher.md": "303be751c91da4c8",
"agents/gsd-ai-researcher.toml": "5a16e952628fdeb0",
"agents/gsd-assumptions-analyzer.md": "21ee3cd4095f7cf8",
"agents/gsd-assumptions-analyzer.toml": "9460360826f33ab1",
"agents/gsd-code-fixer.md": "4fa4dbb501513bc3",
"agents/gsd-code-fixer.toml": "c8286e7d68753288",
"agents/gsd-code-reviewer.md": "854d93fb1e91fca4",
"agents/gsd-code-reviewer.toml": "66420d6e6ffd14eb",
"agents/gsd-codebase-mapper.md": "7a1560013a0182d0",
"agents/gsd-codebase-mapper.toml": "98041d44c9d9f69e",
"agents/gsd-debug-session-manager.md": "fc82168262151338",
"agents/gsd-debug-session-manager.toml": "b477ba74d03ed5c8",
"agents/gsd-debugger.md": "b2a4aff97b1b87e3",
"agents/gsd-debugger.toml": "dcf71d070a325e67",
"agents/gsd-doc-classifier.md": "2745bc04d7b93666",
"agents/gsd-doc-classifier.toml": "3fe5ec83f62b586e",
"agents/gsd-doc-synthesizer.md": "4f545f2e916458ad",
"agents/gsd-doc-synthesizer.toml": "5b3b3badcc1e3219",
"agents/gsd-doc-verifier.md": "42d07e55a2e571ce",
"agents/gsd-doc-verifier.toml": "c0b7ac150730b954",
"agents/gsd-doc-writer.md": "0a3557268f169722",
"agents/gsd-doc-writer.toml": "d21d67f9ba074156",
"agents/gsd-domain-researcher.md": "fbd2f916f265c106",
"agents/gsd-domain-researcher.toml": "a49ddec9005b4bf5",
"agents/gsd-eval-auditor.md": "2810917e02e5547c",
"agents/gsd-eval-auditor.toml": "9b81d61b3c5f722d",
"agents/gsd-eval-planner.md": "73f2ad2ff2797a51",
"agents/gsd-eval-planner.toml": "09468ad1a34ac468",
"agents/gsd-executor.md": "c357dad443b0bdf0",
"agents/gsd-executor.toml": "5d3156365295b12d",
"agents/gsd-framework-selector.md": "ebae32430887d2e0",
"agents/gsd-framework-selector.toml": "637e4e021b7ec380",
"agents/gsd-integration-checker.md": "9cc875676cf7d741",
"agents/gsd-integration-checker.toml": "53f3cfac6fbd6447",
"agents/gsd-intel-updater.md": "8e5453421c92c0fd",
"agents/gsd-intel-updater.toml": "94888d7182fd2fb5",
"agents/gsd-mempalace-curator.md": "60a8ec0e990ba777",
"agents/gsd-mempalace-curator.toml": "015f156ad7d2dd0f",
"agents/gsd-nyquist-auditor.md": "554dbb4a01760a9d",
"agents/gsd-nyquist-auditor.toml": "b3d7214b42fb67fa",
"agents/gsd-pattern-mapper.md": "efbcfa7c5de4027f",
"agents/gsd-pattern-mapper.toml": "48a17baa3d7d142c",
"agents/gsd-phase-researcher.md": "87d74324e7708ea0",
"agents/gsd-phase-researcher.toml": "44a3d510cd0ce3bd",
"agents/gsd-plan-checker.md": "9ba8ea7643f0a7f5",
"agents/gsd-plan-checker.toml": "03488397d892ea09",
"agents/gsd-planner.md": "932266ed67ea0947",
"agents/gsd-planner.toml": "8fd81d2367979851",
"agents/gsd-project-researcher.md": "959f2e57c3d69ed8",
"agents/gsd-project-researcher.toml": "f395e8e8c4baf1ed",
"agents/gsd-research-synthesizer.md": "497f85adf53259ef",
"agents/gsd-research-synthesizer.toml": "053616d4941a1458",
"agents/gsd-roadmapper.md": "e15d82d7781dbff3",
"agents/gsd-roadmapper.toml": "0b17f618eafe9be8",
"agents/gsd-security-auditor.md": "d7b62f9a93cfbf78",
"agents/gsd-security-auditor.toml": "e991aa6e7c70f813",
"agents/gsd-ui-auditor.md": "abbf560bc8d5069c",
"agents/gsd-ui-auditor.toml": "5e9dd62a12a16a1e",
"agents/gsd-ui-checker.md": "b65d350a4e0564e9",
"agents/gsd-ui-checker.toml": "3815693c6649f9f5",
"agents/gsd-ui-researcher.md": "e18cc90fadc5ab2e",
"agents/gsd-ui-researcher.toml": "7a38aff7b13d9e37",
"agents/gsd-user-profiler.md": "1bf5033c929181c1",
"agents/gsd-user-profiler.toml": "b9c244bb8fbf8140",
"agents/gsd-verifier.md": "c924485d9feb6a8d",
"agents/gsd-verifier.toml": "e37a57b02a7647a9",
"config.toml": "aa0b484a070f603c",
"gsd-core/.gsd-runtime": "243b0dc9b847e66c",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "51bc64467ab30f62",
"gsd-core/bin/gsd-tools.cjs": "e1996ac045ff5fde",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "51b5d0ba5b1e98d9",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "425dd69c629230e7",
"gsd-core/references/api-coverage.md": "3e87a58d0cd6518a",
"gsd-core/references/artifact-types.md": "3218cafb0c92dc32",
"gsd-core/references/autonomous-smart-discuss.md": "4156025334411073",
"gsd-core/references/checkpoints.md": "d52116f59e92ca43",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "8bde1f8516046fa7",
"gsd-core/references/continuation-format.md": "e64c0da2b3d0f2f0",
"gsd-core/references/debugger-bug-taxonomy.md": "49f94fe75cabba52",
"gsd-core/references/debugger-fix-acceptance.md": "b2732420bdbcadcd",
"gsd-core/references/debugger-philosophy.md": "459a8ac647c4ce9c",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "097c2da83d697566",
"gsd-core/references/debugger-sbfl.md": "391e732abf32786a",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "ee363ec47be68922",
"gsd-core/references/doc-conflict-engine.md": "257aba80c93854d4",
"gsd-core/references/domain-probes.md": "4901deac8eac0f49",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "5687eba25a078561",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "a483199612e216f1",
"gsd-core/references/execute-phase-quota-recovery.md": "885cbb5843f4f066",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "95e55087876a0d96",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "2d3efd04749f56d4",
"gsd-core/references/gates.md": "11fd2bdf27df57a5",
"gsd-core/references/git-integration.md": "94715b69448bb818",
"gsd-core/references/git-planning-commit.md": "5aad099c51135a0f",
"gsd-core/references/gsd-run-resolver.md": "e71eb728b84641b1",
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "11d144acecab34fb",
"gsd-core/references/model-profiles.md": "bd90862f68007f2e",
"gsd-core/references/mvp-concepts.md": "23201c8118fb074a",
"gsd-core/references/offer-next.md": "449c021d2552df02",
"gsd-core/references/phase-argument-parsing.md": "531176f66da49c98",
"gsd-core/references/planner-antipatterns.md": "88a0cd714d33fe34",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "ccd62140264bed71",
"gsd-core/references/planner-guidance.md": "5f62d3f50b8fc42b",
"gsd-core/references/planner-human-verify-mode.md": "3a625b42d9cb93ee",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "c23fee2f4c9bd9a9",
"gsd-core/references/planner-reviews.md": "7889bfa28e82156b",
"gsd-core/references/planner-revision.md": "2ebf1a714d1ec4bf",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "bf430b3ea2bf44ff",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "f0e320677bcd8e19",
"gsd-core/references/project-skills-discovery.md": "d3a8f760d63ea3b9",
"gsd-core/references/questioning.md": "8f26dfe5794b1e6e",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "a602b41bfa081fdf",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "1a677abcfba49da4",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "1919d07d3db600da",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "5e400dc05a15e972",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "ef519bff8c8bd572",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "347c33b2d5646c93",
"gsd-core/references/ui-brand.md": "37a2dc822a4b77c4",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "865f7ba442795487",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "8e023a908d968af1",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "0c8cac962c2bb105",
"gsd-core/references/verification-patterns.md": "ac45d99076067f17",
"gsd-core/references/verify-mvp-mode.md": "78faa99df1668aab",
"gsd-core/references/workstream-flag.md": "c764d9cbdf6faff4",
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "6411a4789f481c15",
"gsd-core/templates/DEBUG.md": "0be1256352e79375",
"gsd-core/templates/README.md": "dc13994dabe139a2",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "59a3d4f6c4afbfc9",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "dae6246879d09d13",
"gsd-core/templates/claude-md.md": "dd1a9011684f9753",
"gsd-core/templates/codebase/architecture.md": "282db635ba093b1a",
"gsd-core/templates/codebase/concerns.md": "e66c584daa636fc5",
"gsd-core/templates/codebase/conventions.md": "c5f0324730852701",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "5b5dd37145241462",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "593d4e6d20fdde7c",
"gsd-core/templates/continue-here.md": "8b1dce4832c7922b",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "a3948171649b686a",
"gsd-core/templates/dev-preferences.md": "975e1534eea2f695",
"gsd-core/templates/discovery.md": "7afefd109c2d5316",
"gsd-core/templates/discussion-log.md": "da4e8e266efdc6c2",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "56c67fdc5d31b556",
"gsd-core/templates/planner-subagent-prompt.md": "a48a5a2ebd5a9f47",
"gsd-core/templates/project.md": "c6005bd88a346a3e",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "1485bc6d64c5d8ec",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "34cb8124f37c9b14",
"gsd-core/templates/state.md": "3bac0c4a26c094f9",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "c95dfa4653791314",
"gsd-core/templates/user-profile.md": "52abe2af968e8533",
"gsd-core/templates/user-setup.md": "1da2382725db080f",
"gsd-core/templates/verification-report.md": "78ab9264ce63ed7e",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "62431b27424ff1ff",
"gsd-core/workflows/add-phase.md": "d7a401b48271964f",
"gsd-core/workflows/add-tests.md": "f2f30978099144d3",
"gsd-core/workflows/add-todo.md": "fc26decc33e3e6a4",
"gsd-core/workflows/ai-integration-phase.md": "e83102e5bd9b7c50",
"gsd-core/workflows/analyze-dependencies.md": "f799abc00907377f",
"gsd-core/workflows/audit-fix.md": "677638d4081117c5",
"gsd-core/workflows/audit-milestone.md": "b2b735ae6557f5ad",
"gsd-core/workflows/audit-uat.md": "2564078edb15b5e9",
"gsd-core/workflows/autonomous.md": "47bf003aefcf806b",
"gsd-core/workflows/check-todos.md": "a9a6c39859451fa7",
"gsd-core/workflows/cleanup.md": "2f7d77d1b13d0410",
"gsd-core/workflows/code-review-fix.md": "63a0f94622f1e20a",
"gsd-core/workflows/code-review.md": "b450f53af43cb606",
"gsd-core/workflows/complete-milestone.md": "bd3d10386edf1121",
"gsd-core/workflows/debug.md": "b8caa6ef11a4feb5",
"gsd-core/workflows/diagnose-issues.md": "1ee3c02cf691c1db",
"gsd-core/workflows/discovery-phase.md": "ae93d9d808c8c018",
"gsd-core/workflows/discuss-phase-assumptions.md": "a7df65a8c0b4abe1",
"gsd-core/workflows/discuss-phase-power.md": "3f8b83dc6be2e9d5",
"gsd-core/workflows/discuss-phase.md": "7c9df6656b81fda9",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653",
"gsd-core/workflows/discuss-phase/modes/all.md": "42e58e1f499f7824",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "c824ef897199b730",
"gsd-core/workflows/discuss-phase/modes/auto.md": "d48968f75a2056b7",
"gsd-core/workflows/discuss-phase/modes/batch.md": "21ee55869eaa7ece",
"gsd-core/workflows/discuss-phase/modes/chain.md": "862a2c45a6096400",
"gsd-core/workflows/discuss-phase/modes/default.md": "4c5ba5975dcc1e9c",
"gsd-core/workflows/discuss-phase/modes/power.md": "55b61b7dc83a58b2",
"gsd-core/workflows/discuss-phase/modes/text.md": "6e1c6f4d8fdd0be3",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "da6bf5281bf7d2bf",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "2b56ec2868cbddb4",
"gsd-core/workflows/do.md": "b30d5b8eca60ef79",
"gsd-core/workflows/docs-update.md": "2b0db5c092ac573d",
"gsd-core/workflows/edit-phase.md": "e592a4d85ce5380f",
"gsd-core/workflows/eval-review.md": "4d367d1e028629bd",
"gsd-core/workflows/execute-phase.md": "4d94ef7b8cf41b80",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "cd8678d082d6e191",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "ab70374e44eb85cd",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "e4723e1669f7c508",
"gsd-core/workflows/explore.md": "d12f68770c65093a",
"gsd-core/workflows/extract-learnings.md": "44efe9756da774f9",
"gsd-core/workflows/fast.md": "e4ed60f96a7b3ac8",
"gsd-core/workflows/forensics.md": "2e8a01b5b44e65f3",
"gsd-core/workflows/graduation.md": "973dcebcd17e1b10",
"gsd-core/workflows/health.md": "6fedf96650e0f1e5",
"gsd-core/workflows/help.md": "08e1349950c5602a",
"gsd-core/workflows/help/modes/brief.md": "da44b130d1afe556",
"gsd-core/workflows/help/modes/default.md": "4bb3082d28026eea",
"gsd-core/workflows/help/modes/full.md": "8cd7914e402b9edb",
"gsd-core/workflows/help/modes/topic.md": "b7c7e4a8800bc3ea",
"gsd-core/workflows/import.md": "a81daf70f8603666",
"gsd-core/workflows/inbox.md": "ddb6832b7e0ad46b",
"gsd-core/workflows/ingest-docs.md": "78261210c823bcfa",
"gsd-core/workflows/insert-phase.md": "5e23bd8d55b388c7",
"gsd-core/workflows/list-phase-assumptions.md": "4d245f6ea899bcb9",
"gsd-core/workflows/list-seeds.md": "0a2d9fd5b06b8ded",
"gsd-core/workflows/list-workspaces.md": "bb74607336897b94",
"gsd-core/workflows/manager.md": "5f9365147f53e3f5",
"gsd-core/workflows/map-codebase.md": "9b6ede881432a8d1",
"gsd-core/workflows/milestone-summary.md": "a53b30a84f904b50",
"gsd-core/workflows/mvp-phase.md": "85fea39f30f8c698",
"gsd-core/workflows/new-milestone.md": "f37160cbe1606b77",
"gsd-core/workflows/new-project.md": "9e5142a0e4dbfd42",
"gsd-core/workflows/new-workspace.md": "2d9dc09dd7739921",
"gsd-core/workflows/next.md": "19dceee48dbf6e34",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "664da466ab989f9d",
"gsd-core/workflows/onboard.md": "f022a379ede13512",
"gsd-core/workflows/pause-work.md": "a217770ecafcb2e0",
"gsd-core/workflows/plan-milestone-gaps.md": "73d46f77c50a0690",
"gsd-core/workflows/plan-phase.md": "c6c3a4faf0b2aa2c",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "d838b87563feedf6",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "f10975692cbd036e",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "f5edc589cab52a7b",
"gsd-core/workflows/plan-review-convergence.md": "b4e8d6a46e62d68a",
"gsd-core/workflows/plant-seed.md": "25b0c824f7eff40e",
"gsd-core/workflows/pr-branch.md": "d13e1cc81de40896",
"gsd-core/workflows/profile-user.md": "6d23d0594082c78a",
"gsd-core/workflows/progress.md": "e57d5a148df38508",
"gsd-core/workflows/quick.md": "74c2046a98f99004",
"gsd-core/workflows/reapply-patches.md": "26297b84736e66a4",
"gsd-core/workflows/remove-phase.md": "9ee0fddd11a0d9d4",
"gsd-core/workflows/remove-workspace.md": "d0160c5d05bcb2bb",
"gsd-core/workflows/resume-project.md": "9965f87eb278f7f8",
"gsd-core/workflows/review.md": "f2d0cf16167cb107",
"gsd-core/workflows/scan.md": "93da00ba119f3488",
"gsd-core/workflows/secure-phase.md": "70b2db8ee9697fdb",
"gsd-core/workflows/session-report.md": "dd8fa011c9394075",
"gsd-core/workflows/settings-advanced.md": "2431433811616f76",
"gsd-core/workflows/settings-integrations.md": "d6d222af8690d09b",
"gsd-core/workflows/settings.md": "3c8bd45b123b5db6",
"gsd-core/workflows/ship.md": "0a6314edbb01a345",
"gsd-core/workflows/sketch-wrap-up.md": "07724a390fbb43f6",
"gsd-core/workflows/sketch.md": "3f6ed885d2ee5528",
"gsd-core/workflows/smart-entry.md": "2914f9d54d365931",
"gsd-core/workflows/spec-phase.md": "3dd8ae6137492d80",
"gsd-core/workflows/spike-wrap-up.md": "ace265c114298376",
"gsd-core/workflows/spike.md": "1f70a13fe2080da7",
"gsd-core/workflows/stats.md": "6dfc500555849d74",
"gsd-core/workflows/sync-skills.md": "e2b793963799f8ce",
"gsd-core/workflows/thread.md": "3eef3b6baf50fbfa",
"gsd-core/workflows/transition.md": "de3c63b3f62e6988",
"gsd-core/workflows/ui-phase.md": "e9cf501439c68a96",
"gsd-core/workflows/ui-review.md": "a743920f2135ce3b",
"gsd-core/workflows/ultraplan-phase.md": "0bafc2af27be4591",
"gsd-core/workflows/undo.md": "bd29a3a4fbc3fdc2",
"gsd-core/workflows/update.md": "79e0f4924b92d85b",
"gsd-core/workflows/validate-phase.md": "52ba0281ba743566",
"gsd-core/workflows/verify-phase.md": "ce508f9c2242b91f",
"gsd-core/workflows/verify-work.md": "ecc416d545e55a71",
"hooks/gsd-check-update.js": "ef48957eb6ac6a10",
"hooks/gsd-context-monitor.js": "ec76b23f45d29b02",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7"
}

View File

@@ -1,416 +0,0 @@
{
".gsd-profile": "0e716a5fef4e6dc1",
".gsd/defaults.json": "56eda2d6c407679d",
"agents/gsd-advisor-researcher.agent.md": "1fb10242ff7fb1c9",
"agents/gsd-ai-researcher.agent.md": "8e9c3a2ddd179bb1",
"agents/gsd-assumptions-analyzer.agent.md": "cdabed4777a842fe",
"agents/gsd-code-fixer.agent.md": "8f39aacb760aab57",
"agents/gsd-code-reviewer.agent.md": "fa1e7c421c78eae1",
"agents/gsd-codebase-mapper.agent.md": "347d66bb17975c3e",
"agents/gsd-debug-session-manager.agent.md": "a43baa522459203d",
"agents/gsd-debugger.agent.md": "f7d0307490617a8a",
"agents/gsd-doc-classifier.agent.md": "aea81c0ba00e06cf",
"agents/gsd-doc-synthesizer.agent.md": "6ae32e4db005696d",
"agents/gsd-doc-verifier.agent.md": "0230208ae7ab1a08",
"agents/gsd-doc-writer.agent.md": "37ea4932a4b80355",
"agents/gsd-domain-researcher.agent.md": "d603239b3e9fe428",
"agents/gsd-eval-auditor.agent.md": "3c03009564de55c8",
"agents/gsd-eval-planner.agent.md": "14751876fc2b5f16",
"agents/gsd-executor.agent.md": "79770a630b4f9e58",
"agents/gsd-framework-selector.agent.md": "cafeec0b3489be45",
"agents/gsd-integration-checker.agent.md": "30439b804927acc7",
"agents/gsd-intel-updater.agent.md": "238c1a886f35a25c",
"agents/gsd-mempalace-curator.agent.md": "9e5290ea4c4ac211",
"agents/gsd-nyquist-auditor.agent.md": "6463a50d90ada125",
"agents/gsd-pattern-mapper.agent.md": "b1f488b0fa6a2395",
"agents/gsd-phase-researcher.agent.md": "03cfb510a766fe93",
"agents/gsd-plan-checker.agent.md": "0d68eb258b85e24e",
"agents/gsd-planner.agent.md": "aaef800d164c3475",
"agents/gsd-project-researcher.agent.md": "d73bdbe986ffa8a6",
"agents/gsd-research-synthesizer.agent.md": "f03eed4aa89e47c5",
"agents/gsd-roadmapper.agent.md": "322048cf8ddcb4e5",
"agents/gsd-security-auditor.agent.md": "464cfbe9aafcd5af",
"agents/gsd-ui-auditor.agent.md": "92f50549e84ef482",
"agents/gsd-ui-checker.agent.md": "47d8cf3486009e11",
"agents/gsd-ui-researcher.agent.md": "0746daeb54f83008",
"agents/gsd-user-profiler.agent.md": "ae16a248e18dd42b",
"agents/gsd-verifier.agent.md": "b8fd5f43eac96078",
"copilot-instructions.md": "1fb04111759f1645",
"gsd-core/.gsd-runtime": "d0bcfb0a7f01f8c9",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "ea841e2865248e74",
"gsd-core/bin/gsd-tools.cjs": "14e050d487a715e6",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "10226e9512dd44bf",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "51b5d0ba5b1e98d9",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "425dd69c629230e7",
"gsd-core/references/api-coverage.md": "53d290a68f83c7d0",
"gsd-core/references/artifact-types.md": "f992de8b2b1a4420",
"gsd-core/references/autonomous-smart-discuss.md": "efd80aca449032ad",
"gsd-core/references/checkpoints.md": "d26b11ab5ece9e61",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "371da06bb42df63b",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-bug-taxonomy.md": "ddfb2bbc1f3de50a",
"gsd-core/references/debugger-fix-acceptance.md": "812922e2b5db9410",
"gsd-core/references/debugger-philosophy.md": "459a8ac647c4ce9c",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "62089f91dfa470bd",
"gsd-core/references/debugger-sbfl.md": "5bb65a8653bf2e06",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
"gsd-core/references/domain-probes.md": "762b965e84035b72",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "5b91dca815b765e0",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-quota-recovery.md": "713cf7681f57e7ce",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "1eb1e1e552ebd17b",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "43e867720e736464",
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
"gsd-core/references/git-integration.md": "657a93c539c16cab",
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
"gsd-core/references/gsd-run-resolver.md": "fca7e30efb0afe3f",
"gsd-core/references/honest-verifier.md": "08b1e82f59c18078",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "9f6dd88b2bc08921",
"gsd-core/references/model-profiles.md": "6568ca29b6ee00d8",
"gsd-core/references/mvp-concepts.md": "3464783eaaef5c10",
"gsd-core/references/offer-next.md": "220b59815223d1b7",
"gsd-core/references/phase-argument-parsing.md": "e5bbb985f3bc3e34",
"gsd-core/references/planner-antipatterns.md": "88a0cd714d33fe34",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "1ed614dfba72f2a3",
"gsd-core/references/planner-guidance.md": "ccb2eab7d941313c",
"gsd-core/references/planner-human-verify-mode.md": "5262b23d822d9541",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "641b6c1ce4dd0c8c",
"gsd-core/references/planner-mvp-mode.md": "355d8a9ff2b2b67e",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "74acbf4a873a01e4",
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "6ab82d1d7a354521",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "55178368c9d049d2",
"gsd-core/references/project-skills-discovery.md": "625f6e30257e10ee",
"gsd-core/references/questioning.md": "8f26dfe5794b1e6e",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "a602b41bfa081fdf",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "a857fc444baec27a",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "558870a1c4bc4c29",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "99905f064311ee46",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "c37eebe8fbf89b1c",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "827c1badf3e6df41",
"gsd-core/references/ui-brand.md": "48717bcfcd63bd27",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "6a1245050b21df01",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "8e023a908d968af1",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "a3e2d5166d16a37b",
"gsd-core/references/verification-patterns.md": "a8e13ea38218638b",
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
"gsd-core/references/workstream-flag.md": "225910640adbb76d",
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "72e93b7f650d9bae",
"gsd-core/templates/README.md": "da29c64b438065b3",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "e4d0f1c48727fce3",
"gsd-core/templates/claude-md.md": "f436ae75a9c8518a",
"gsd-core/templates/codebase/architecture.md": "282db635ba093b1a",
"gsd-core/templates/codebase/concerns.md": "e66c584daa636fc5",
"gsd-core/templates/codebase/conventions.md": "c5f0324730852701",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "27318be7b7c984e1",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "593d4e6d20fdde7c",
"gsd-core/templates/continue-here.md": "8b1dce4832c7922b",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "8c18a89e25929d8e",
"gsd-core/templates/dev-preferences.md": "95048a71063d980b",
"gsd-core/templates/discovery.md": "e4ab738326eb70e0",
"gsd-core/templates/discussion-log.md": "da4e8e266efdc6c2",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "e2b07376944c84e8",
"gsd-core/templates/planner-subagent-prompt.md": "6c9f1b23ee3dc05f",
"gsd-core/templates/project.md": "fae14114f2b79b10",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "b454f96fdf8b1d3d",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "8734f0df4df3a34b",
"gsd-core/templates/state.md": "a45a134631efe3f9",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "85f4d37fcee6852b",
"gsd-core/templates/user-profile.md": "52abe2af968e8533",
"gsd-core/templates/user-setup.md": "1da2382725db080f",
"gsd-core/templates/verification-report.md": "78ab9264ce63ed7e",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "98f2dbb7c7cc93c2",
"gsd-core/workflows/add-phase.md": "f4fbfad54be5d46f",
"gsd-core/workflows/add-tests.md": "bc656e055e09138d",
"gsd-core/workflows/add-todo.md": "0f6cdf522df6c87e",
"gsd-core/workflows/ai-integration-phase.md": "beba57424c9b358c",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "8658bba76328a84f",
"gsd-core/workflows/audit-milestone.md": "3b5a9eb5fd4f4ca3",
"gsd-core/workflows/audit-uat.md": "5ea0e30548ed0933",
"gsd-core/workflows/autonomous.md": "39dbe19d74c14e75",
"gsd-core/workflows/check-todos.md": "333b04e0d144596b",
"gsd-core/workflows/cleanup.md": "90d4119b70f32fce",
"gsd-core/workflows/code-review-fix.md": "3dddba6755e75426",
"gsd-core/workflows/code-review.md": "d538c261e31a1457",
"gsd-core/workflows/complete-milestone.md": "c3d961cc123a7492",
"gsd-core/workflows/debug.md": "79b20a238746c28c",
"gsd-core/workflows/diagnose-issues.md": "8311fee5f2d6f3b5",
"gsd-core/workflows/discovery-phase.md": "c97943b1f3d3db96",
"gsd-core/workflows/discuss-phase-assumptions.md": "83c36e990586fa1f",
"gsd-core/workflows/discuss-phase-power.md": "5c0d1ca6abda0383",
"gsd-core/workflows/discuss-phase.md": "31a79ea11c1cdd5f",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "654cdaf1138d5e27",
"gsd-core/workflows/discuss-phase/modes/all.md": "e5fe9c9c1e2bec1a",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "da0788f3be7f8105",
"gsd-core/workflows/discuss-phase/modes/auto.md": "329ac35098e50297",
"gsd-core/workflows/discuss-phase/modes/batch.md": "6946597770e2d448",
"gsd-core/workflows/discuss-phase/modes/chain.md": "c30f4a4bcd174259",
"gsd-core/workflows/discuss-phase/modes/default.md": "4c5ba5975dcc1e9c",
"gsd-core/workflows/discuss-phase/modes/power.md": "9c97731f22d7bce9",
"gsd-core/workflows/discuss-phase/modes/text.md": "c384c22ffff4dc02",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "da6bf5281bf7d2bf",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "2b56ec2868cbddb4",
"gsd-core/workflows/do.md": "ba9dd204343ab48b",
"gsd-core/workflows/docs-update.md": "df1d2f6a653e0bb4",
"gsd-core/workflows/edit-phase.md": "8667c28b22b1599f",
"gsd-core/workflows/eval-review.md": "6fd7f2b0770b48f1",
"gsd-core/workflows/execute-phase.md": "261fb868e55c9289",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "ca37f91f7bd6f05c",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "e0ec3d9748a0fed9",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "25bebed74e645109",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "dc0b96d285327b18",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "c82c959f78a1917d",
"gsd-core/workflows/explore.md": "35431c40bb1b245a",
"gsd-core/workflows/extract-learnings.md": "6ed17a7b6c9f68a6",
"gsd-core/workflows/fast.md": "66821090b6b8ed3b",
"gsd-core/workflows/forensics.md": "459644dce26ee2ef",
"gsd-core/workflows/graduation.md": "343e287b8bfac6b2",
"gsd-core/workflows/health.md": "53f350663df5f7b2",
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
"gsd-core/workflows/help/modes/full.md": "3c11811e5dea5543",
"gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69",
"gsd-core/workflows/import.md": "8395523544bf88cc",
"gsd-core/workflows/inbox.md": "2f4edb2681b84d9c",
"gsd-core/workflows/ingest-docs.md": "3473b15a3387bedf",
"gsd-core/workflows/insert-phase.md": "60a52a63a8b288f6",
"gsd-core/workflows/list-phase-assumptions.md": "e7b5e35c9452e3b3",
"gsd-core/workflows/list-seeds.md": "71dc6f748b1d1c0e",
"gsd-core/workflows/list-workspaces.md": "3c9f76af08ced623",
"gsd-core/workflows/manager.md": "5acdd15485a04ab0",
"gsd-core/workflows/map-codebase.md": "e3f23c4d2f1fe176",
"gsd-core/workflows/milestone-summary.md": "8a53906253984a62",
"gsd-core/workflows/mvp-phase.md": "3c00d29043864af2",
"gsd-core/workflows/new-milestone.md": "3824b311f868ccd8",
"gsd-core/workflows/new-project.md": "bea1d5b4c1973860",
"gsd-core/workflows/new-workspace.md": "a609b382e83c2f10",
"gsd-core/workflows/next.md": "752cb4ce1e5d31a5",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "4a5ee74cf2fc1f54",
"gsd-core/workflows/onboard.md": "357b7ae1367560dd",
"gsd-core/workflows/pause-work.md": "9ce66367be6c40db",
"gsd-core/workflows/plan-milestone-gaps.md": "5cf589802d08bdf3",
"gsd-core/workflows/plan-phase.md": "7159628ad9cf76a9",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "bb052483744f0a6d",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261",
"gsd-core/workflows/plan-review-convergence.md": "972d475548d48809",
"gsd-core/workflows/plant-seed.md": "aac7ffbbec7e7a22",
"gsd-core/workflows/pr-branch.md": "2833905f119b5722",
"gsd-core/workflows/profile-user.md": "e2135bdd20e17620",
"gsd-core/workflows/progress.md": "97f4971366c381ee",
"gsd-core/workflows/quick.md": "d130414be9aaacc5",
"gsd-core/workflows/reapply-patches.md": "8fd59e24b486f180",
"gsd-core/workflows/remove-phase.md": "e262654e319d1bc4",
"gsd-core/workflows/remove-workspace.md": "e7e5b5b1e0cc9d81",
"gsd-core/workflows/resume-project.md": "40db7f350f5866d8",
"gsd-core/workflows/review.md": "09f390a2f11b40d3",
"gsd-core/workflows/scan.md": "485c6ed37c08042f",
"gsd-core/workflows/secure-phase.md": "ccd856701929382d",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "230a658de9c017a6",
"gsd-core/workflows/settings-integrations.md": "58acee11162b4a4e",
"gsd-core/workflows/settings.md": "876e954acd64cb18",
"gsd-core/workflows/ship.md": "f210f33e40b8990a",
"gsd-core/workflows/sketch-wrap-up.md": "f2590cb6ddbfad94",
"gsd-core/workflows/sketch.md": "9cbf5860b6a005e5",
"gsd-core/workflows/smart-entry.md": "93f90cd7a12dbbc7",
"gsd-core/workflows/spec-phase.md": "44bd9c50b42e73fb",
"gsd-core/workflows/spike-wrap-up.md": "a34d1e9ec15ae904",
"gsd-core/workflows/spike.md": "bf51085ab23117d1",
"gsd-core/workflows/stats.md": "1db01bd96aa570fe",
"gsd-core/workflows/sync-skills.md": "eca50ffe8320dba8",
"gsd-core/workflows/thread.md": "c5cbd66223906998",
"gsd-core/workflows/transition.md": "9219cd7c61e3323f",
"gsd-core/workflows/ui-phase.md": "5d4bac0adeed39ac",
"gsd-core/workflows/ui-review.md": "947fa71e7d77e497",
"gsd-core/workflows/ultraplan-phase.md": "7217c34dc9eaf7bb",
"gsd-core/workflows/undo.md": "e168c2eb8f7e105c",
"gsd-core/workflows/update.md": "af2a7e4e8d53abda",
"gsd-core/workflows/validate-phase.md": "688bad3aed86b240",
"gsd-core/workflows/verify-phase.md": "3fcc54a0c46e5e2f",
"gsd-core/workflows/verify-work.md": "a7198047363772d7",
"hooks/gsd-session.json": "3382597f61e3a559",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7",
"skills/gsd-add-tests/SKILL.md": "dfe3f8a07f34c438",
"skills/gsd-ai-integration-phase/SKILL.md": "22593b80a1f3e340",
"skills/gsd-audit-fix/SKILL.md": "ac3e209167e2171a",
"skills/gsd-audit-milestone/SKILL.md": "faa9473569f5fa4b",
"skills/gsd-audit-uat/SKILL.md": "00f0a430a5c43da0",
"skills/gsd-autonomous/SKILL.md": "14495e0ad75bc1fb",
"skills/gsd-capture/SKILL.md": "cbae7b34a19b53bb",
"skills/gsd-cleanup/SKILL.md": "d6eb72a251354d07",
"skills/gsd-code-review/SKILL.md": "bc47a62d7788d723",
"skills/gsd-complete-milestone/SKILL.md": "d92573108882ac2f",
"skills/gsd-config/SKILL.md": "2bbc2d3ee41d5360",
"skills/gsd-debug/SKILL.md": "7abbde8111d8592c",
"skills/gsd-discuss-phase/SKILL.md": "1a6496fbbf49df6d",
"skills/gsd-docs-update/SKILL.md": "abca4017f556ebb6",
"skills/gsd-eval-review/SKILL.md": "8efd5502979365d2",
"skills/gsd-execute-phase/SKILL.md": "40fb582d30596e03",
"skills/gsd-explore/SKILL.md": "410ba39431b4741d",
"skills/gsd-extract-learnings/SKILL.md": "1651508a604db325",
"skills/gsd-fast/SKILL.md": "ee4c04a1f009052a",
"skills/gsd-forensics/SKILL.md": "604425b1aff67ddb",
"skills/gsd-graphify/SKILL.md": "ad09359c401677a5",
"skills/gsd-health/SKILL.md": "f5a554c058adc41a",
"skills/gsd-help/SKILL.md": "effcefa49fba6aca",
"skills/gsd-import/SKILL.md": "1b3dde7a9bbdb928",
"skills/gsd-inbox/SKILL.md": "cb9ed3865b67c04f",
"skills/gsd-ingest-docs/SKILL.md": "10500de29525f6cf",
"skills/gsd-manager/SKILL.md": "9946975bec15e737",
"skills/gsd-map-codebase/SKILL.md": "39e7fd6bcc561f9d",
"skills/gsd-mempalace-capture/SKILL.md": "1ccddd50b3d77a4a",
"skills/gsd-mempalace-recall/SKILL.md": "89523db66f834b2f",
"skills/gsd-milestone-summary/SKILL.md": "5ca1dabfe0cd85f0",
"skills/gsd-mvp-phase/SKILL.md": "60ac3c3fa6a6a19b",
"skills/gsd-new-milestone/SKILL.md": "65670b65fb89d928",
"skills/gsd-new-project/SKILL.md": "4ce68352221126c6",
"skills/gsd-next/SKILL.md": "16507fc39a3a0684",
"skills/gsd-ns-context/SKILL.md": "d61edde87ae53105",
"skills/gsd-ns-ideate/SKILL.md": "ca62cdf78ebe3585",
"skills/gsd-ns-manage/SKILL.md": "9b1b7f6d9b877fcd",
"skills/gsd-ns-project/SKILL.md": "597b8dde8702c22d",
"skills/gsd-ns-review/SKILL.md": "6405d0b1cf3f245d",
"skills/gsd-ns-workflow/SKILL.md": "243287d21663ba87",
"skills/gsd-onboard/SKILL.md": "4d325f3033df2d37",
"skills/gsd-pause-work/SKILL.md": "4f0caa008a8001ff",
"skills/gsd-phase/SKILL.md": "d38c7f9b1d0d2360",
"skills/gsd-plan-phase/SKILL.md": "19d47df062dfc220",
"skills/gsd-plan-review-convergence/SKILL.md": "29e903e25047ebd1",
"skills/gsd-pr-branch/SKILL.md": "9cd9740db385d95a",
"skills/gsd-profile-user/SKILL.md": "052a8e17ecda40f1",
"skills/gsd-progress/SKILL.md": "28b94a19f2bccb78",
"skills/gsd-quick/SKILL.md": "d66072399c0aa371",
"skills/gsd-resume-work/SKILL.md": "e3ab06060bdd9df0",
"skills/gsd-review-backlog/SKILL.md": "2af20161e555fb42",
"skills/gsd-review/SKILL.md": "948c44f78429cb97",
"skills/gsd-secure-phase/SKILL.md": "8666d8933e02c74f",
"skills/gsd-settings/SKILL.md": "4ef66b6dc3a2b8ff",
"skills/gsd-ship/SKILL.md": "ea26e3a839afb372",
"skills/gsd-sketch/SKILL.md": "1187d843efabea37",
"skills/gsd-spec-phase/SKILL.md": "e402110c96d1f44f",
"skills/gsd-spike/SKILL.md": "de84271bdba0ef67",
"skills/gsd-stats/SKILL.md": "e0beaf89d27c8058",
"skills/gsd-surface/SKILL.md": "c6ae441eb5e2e84a",
"skills/gsd-thread/SKILL.md": "8db4d6ebcf0a8898",
"skills/gsd-ui-phase/SKILL.md": "317081b3be7c536f",
"skills/gsd-ui-review/SKILL.md": "dc07bbe9094b6dbe",
"skills/gsd-ultraplan-phase/SKILL.md": "b528b261b43000cc",
"skills/gsd-undo/SKILL.md": "a9675a18d90cf91d",
"skills/gsd-update/SKILL.md": "94e3baab2c32b338",
"skills/gsd-validate-phase/SKILL.md": "6130f42daa172ceb",
"skills/gsd-verify-work/SKILL.md": "da83518143f85525",
"skills/gsd-workspace/SKILL.md": "d5ae2727cb5d9c0c",
"skills/gsd-workstreams/SKILL.md": "c9d172e6f971f846"
}

View File

@@ -1,492 +0,0 @@
{
".gsd-profile": "0e716a5fef4e6dc1",
".gsd/defaults.json": "40c874a6a3dd0469",
"agents/gsd-advisor-researcher.md": "e5be2680b690c198",
"agents/gsd-ai-researcher.md": "abfc97706f16aaaf",
"agents/gsd-assumptions-analyzer.md": "b3219da6b194fdef",
"agents/gsd-code-fixer.md": "76085f4442f268e6",
"agents/gsd-code-reviewer.md": "f29d6edbac0a01b6",
"agents/gsd-codebase-mapper.md": "71113be5f5cacfe9",
"agents/gsd-debug-session-manager.md": "0779ec0e315e7a19",
"agents/gsd-debugger.md": "bd40d58a35995f22",
"agents/gsd-doc-classifier.md": "a6ab02b8f45f9d0b",
"agents/gsd-doc-synthesizer.md": "fd3c18addbc8265d",
"agents/gsd-doc-verifier.md": "9934ec11845d41c3",
"agents/gsd-doc-writer.md": "73b55c50c0a6bd61",
"agents/gsd-domain-researcher.md": "56395dbdabf076f6",
"agents/gsd-eval-auditor.md": "ad2840fd5cd76172",
"agents/gsd-eval-planner.md": "2049dac060d00eda",
"agents/gsd-executor.md": "8c86bf037dc02e8c",
"agents/gsd-framework-selector.md": "4b77eebbe9288d80",
"agents/gsd-integration-checker.md": "5da30584d06b878c",
"agents/gsd-intel-updater.md": "b8971c5d96e63b38",
"agents/gsd-mempalace-curator.md": "78f4894a9d5f44b1",
"agents/gsd-nyquist-auditor.md": "e18b0209cea56a2e",
"agents/gsd-pattern-mapper.md": "1229c215677f740d",
"agents/gsd-phase-researcher.md": "982d59921bed463d",
"agents/gsd-plan-checker.md": "30bc89279d6586b7",
"agents/gsd-planner.md": "1c0d5aaa124f56ab",
"agents/gsd-project-researcher.md": "beeac940d3a10e76",
"agents/gsd-research-synthesizer.md": "6315f016d55176f4",
"agents/gsd-roadmapper.md": "d28e7d4bac46dde2",
"agents/gsd-security-auditor.md": "1e6a10833f556e4c",
"agents/gsd-ui-auditor.md": "d824acc3b2a18c53",
"agents/gsd-ui-checker.md": "c6c24e8066470830",
"agents/gsd-ui-researcher.md": "0f5be5e55501f7e8",
"agents/gsd-user-profiler.md": "622220df0654b6bf",
"agents/gsd-verifier.md": "f618c5051fa5c317",
"commands/gsd-add-tests.md": "1f89b16ab2cca426",
"commands/gsd-ai-integration-phase.md": "99f66291ded1899d",
"commands/gsd-audit-fix.md": "d88502ffa2151cec",
"commands/gsd-audit-milestone.md": "db525e85095d268a",
"commands/gsd-audit-uat.md": "70d1d0f175734d8f",
"commands/gsd-autonomous.md": "b4724d55cb75d902",
"commands/gsd-capture.md": "4071615ec4f8e92d",
"commands/gsd-cleanup.md": "b83caf1561ecd265",
"commands/gsd-code-review.md": "67cc90ca2ed00f06",
"commands/gsd-complete-milestone.md": "203e0b262ac5caff",
"commands/gsd-config.md": "3bc7743f39e28a92",
"commands/gsd-debug.md": "145a7f7f15436296",
"commands/gsd-discuss-phase.md": "3a484d3d237dbfc5",
"commands/gsd-docs-update.md": "d224ab2eeb46d98c",
"commands/gsd-eval-review.md": "bc16912f0a5584da",
"commands/gsd-execute-phase.md": "d0ce08060b83d88c",
"commands/gsd-explore.md": "dad2dfe948cd0d9f",
"commands/gsd-extract-learnings.md": "c4fb98df89e4f380",
"commands/gsd-fast.md": "184dd72f2f00203b",
"commands/gsd-forensics.md": "ff8a9a8f91c2c5e5",
"commands/gsd-graphify.md": "42bd74b6c09a75d6",
"commands/gsd-health.md": "0239b3eafb48000b",
"commands/gsd-help.md": "d7685d97f7fab1d5",
"commands/gsd-import.md": "02134b777c821174",
"commands/gsd-inbox.md": "e6bcee3f863d20db",
"commands/gsd-ingest-docs.md": "9e7f8757b9408c01",
"commands/gsd-manager.md": "f300b708a5487c76",
"commands/gsd-map-codebase.md": "12f705917eb202fb",
"commands/gsd-mempalace-capture.md": "8f5afec4dde75478",
"commands/gsd-mempalace-recall.md": "08c910285469a394",
"commands/gsd-milestone-summary.md": "adfad2cf43fc5aad",
"commands/gsd-mvp-phase.md": "e8debeee627a0bf2",
"commands/gsd-new-milestone.md": "64b997f99b1e6293",
"commands/gsd-new-project.md": "f1a6288e80cc16b0",
"commands/gsd-next.md": "e9d8b7c71627e03b",
"commands/gsd-ns-context.md": "b551dcc549c6a23f",
"commands/gsd-ns-ideate.md": "32f561de74b1bc7b",
"commands/gsd-ns-manage.md": "24445a84bd817c5b",
"commands/gsd-ns-project.md": "525f84d73f5c51e9",
"commands/gsd-ns-review.md": "c8550463fbab5e76",
"commands/gsd-ns-workflow.md": "2c1f1fde3c46bb40",
"commands/gsd-onboard.md": "d9e52f558fc2b90f",
"commands/gsd-pause-work.md": "59630f05f95fff68",
"commands/gsd-phase.md": "9a073dcd0f934f90",
"commands/gsd-plan-phase.md": "a80206719884ab3b",
"commands/gsd-plan-review-convergence.md": "ea3bec0ae494ecc8",
"commands/gsd-pr-branch.md": "ef2eedb0ed4295da",
"commands/gsd-profile-user.md": "0e99de36619c3b7d",
"commands/gsd-progress.md": "44a7c784dc98f735",
"commands/gsd-quick.md": "0061e478a896265d",
"commands/gsd-resume-work.md": "a98b447fffe07e1e",
"commands/gsd-review-backlog.md": "347abbe2fdad79c9",
"commands/gsd-review.md": "14369ea01aff093f",
"commands/gsd-secure-phase.md": "1631b1ecedbee373",
"commands/gsd-settings.md": "8e4a2673e7c96cad",
"commands/gsd-ship.md": "de9d81fe35184ae2",
"commands/gsd-sketch.md": "021add6f8eb7e7f3",
"commands/gsd-spec-phase.md": "7c95987dcd7aa3fb",
"commands/gsd-spike.md": "8102cc426fa1f1b3",
"commands/gsd-stats.md": "eb39e4c4ec8eccea",
"commands/gsd-surface.md": "96a66a3607b253b4",
"commands/gsd-thread.md": "fc5975fdb73eb045",
"commands/gsd-ui-phase.md": "b91b691e1eb007c2",
"commands/gsd-ui-review.md": "2f9842e07e7df4df",
"commands/gsd-ultraplan-phase.md": "2d50a8e37952daeb",
"commands/gsd-undo.md": "5504f2280ad1e6d4",
"commands/gsd-update.md": "1e0e80a3bfeebddf",
"commands/gsd-validate-phase.md": "9c37396572d1d58c",
"commands/gsd-verify-work.md": "86a42f859bc26dd6",
"commands/gsd-workspace.md": "5c40114e6af87e3d",
"commands/gsd-workstreams.md": "112660ceb663c750",
"gsd-core/.gsd-runtime": "0e49decc490cf91d",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "2525f1ae8b086828",
"gsd-core/bin/gsd-tools.cjs": "43676f8f8ba97bdd",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "3d62d178004db5cc",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "f827de93dde124eb",
"gsd-core/references/api-coverage.md": "53d290a68f83c7d0",
"gsd-core/references/artifact-types.md": "8bd01fd75a2ba70e",
"gsd-core/references/autonomous-smart-discuss.md": "273b371c5751f35a",
"gsd-core/references/checkpoints.md": "a44e66095240c46e",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "1aada627aab75f46",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-bug-taxonomy.md": "63c03b8afbd21b8a",
"gsd-core/references/debugger-fix-acceptance.md": "86b7cbde0171fafd",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "d5f1796cde97e7d2",
"gsd-core/references/debugger-sbfl.md": "838445590aab52e3",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
"gsd-core/references/domain-probes.md": "762b965e84035b72",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "692b44ca096f96e6",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "44e31bdae72ed5d5",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-quota-recovery.md": "713cf7681f57e7ce",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "b0e27ed2d8405974",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "099c8d52e3562336",
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
"gsd-core/references/git-integration.md": "9840f521ad6612b5",
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
"gsd-core/references/gsd-run-resolver.md": "e71eb728b84641b1",
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "3a05d03ea27c3a31",
"gsd-core/references/model-profiles.md": "5452b2e19e19f77e",
"gsd-core/references/mvp-concepts.md": "3464783eaaef5c10",
"gsd-core/references/offer-next.md": "1c9ae4014a95d269",
"gsd-core/references/phase-argument-parsing.md": "e562947d1bf5c5a4",
"gsd-core/references/planner-antipatterns.md": "013ad54062399dad",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "1ed614dfba72f2a3",
"gsd-core/references/planner-guidance.md": "140b1266eeb096cb",
"gsd-core/references/planner-human-verify-mode.md": "5e7925ad77d931d1",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "74acbf4a873a01e4",
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "1f52183344323a34",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "8f3eb787e3845e2f",
"gsd-core/references/project-skills-discovery.md": "2d352e05e7773a6b",
"gsd-core/references/questioning.md": "faac32813d1735bd",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "62930e66cc979c1a",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "a857fc444baec27a",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "8ea08f8aa21febda",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "5e400dc05a15e972",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "ef519bff8c8bd572",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "827c1badf3e6df41",
"gsd-core/references/ui-brand.md": "48717bcfcd63bd27",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "6a1245050b21df01",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "b50416fe57c1b321",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "a3e2d5166d16a37b",
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
"gsd-core/references/workstream-flag.md": "19c02b83bd1692bf",
"gsd-core/references/worktree-branch-check.md": "46f222a2e2c2edd7",
"gsd-core/references/worktree-path-safety.md": "66de0b35266c807d",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "0944156249103c16",
"gsd-core/templates/README.md": "83a3d5b593587e83",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "e4d0f1c48727fce3",
"gsd-core/templates/claude-md.md": "d6d7da8b7817a04c",
"gsd-core/templates/codebase/architecture.md": "6be88214162fdd89",
"gsd-core/templates/codebase/concerns.md": "efa26d1fb5132f25",
"gsd-core/templates/codebase/conventions.md": "c2e07698dad6b364",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "762b16f9a6488474",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "69b01e7909ea3f66",
"gsd-core/templates/continue-here.md": "f522a51b6895fba8",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "8c18a89e25929d8e",
"gsd-core/templates/dev-preferences.md": "95048a71063d980b",
"gsd-core/templates/discovery.md": "e4ab738326eb70e0",
"gsd-core/templates/discussion-log.md": "cac1b48ec0f4dcb8",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "213ccd947451ff2b",
"gsd-core/templates/planner-subagent-prompt.md": "6c9f1b23ee3dc05f",
"gsd-core/templates/project.md": "ae1f68db042c2522",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "fa6dfb2ff2e8d273",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "7dc900c355098d8b",
"gsd-core/templates/state.md": "73e424b8c70b765c",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "85f4d37fcee6852b",
"gsd-core/templates/user-profile.md": "20749f23e4c413fc",
"gsd-core/templates/user-setup.md": "78b7d718b6e8d67c",
"gsd-core/templates/verification-report.md": "dd5faa6254183731",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "2926457ed07b4500",
"gsd-core/workflows/add-phase.md": "b2c06b7ed648658c",
"gsd-core/workflows/add-tests.md": "100349c1d23af47f",
"gsd-core/workflows/add-todo.md": "8f2b65d7ce28e4fd",
"gsd-core/workflows/ai-integration-phase.md": "6d4a309d7176d5d5",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "7650bcb334e622a6",
"gsd-core/workflows/audit-milestone.md": "97877a45e3689b5f",
"gsd-core/workflows/audit-uat.md": "e11db0d74c2a7405",
"gsd-core/workflows/autonomous.md": "409a340e36b90331",
"gsd-core/workflows/check-todos.md": "18a405fea9a842dc",
"gsd-core/workflows/cleanup.md": "c0c243aa070b993b",
"gsd-core/workflows/code-review-fix.md": "5d9c72b2233380a5",
"gsd-core/workflows/code-review.md": "55386c37fe68ddeb",
"gsd-core/workflows/complete-milestone.md": "2281ee0a53264ca5",
"gsd-core/workflows/debug.md": "ff3e267a87251ece",
"gsd-core/workflows/diagnose-issues.md": "1b6787debfcb8c56",
"gsd-core/workflows/discovery-phase.md": "13393233272db9b6",
"gsd-core/workflows/discuss-phase-assumptions.md": "c8d792ca34ac9ace",
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
"gsd-core/workflows/discuss-phase.md": "14688ff19ce2184c",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "30612a2de153cb5b",
"gsd-core/workflows/discuss-phase/modes/all.md": "d2a1d16e2508a0cd",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "c824ef897199b730",
"gsd-core/workflows/discuss-phase/modes/auto.md": "7ae3410133d7f580",
"gsd-core/workflows/discuss-phase/modes/batch.md": "c23d5bdbdb60362c",
"gsd-core/workflows/discuss-phase/modes/chain.md": "13d7b2c7d8e5b82e",
"gsd-core/workflows/discuss-phase/modes/default.md": "4ada4fe332c5c985",
"gsd-core/workflows/discuss-phase/modes/power.md": "55b61b7dc83a58b2",
"gsd-core/workflows/discuss-phase/modes/text.md": "adec29a0217b6664",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "eeebda60636d1ad0",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "cd5d01c9ef84ab73",
"gsd-core/workflows/do.md": "53839c6429ae1234",
"gsd-core/workflows/docs-update.md": "b4bf43f3005f2e45",
"gsd-core/workflows/edit-phase.md": "8323bfe10faa0c0a",
"gsd-core/workflows/eval-review.md": "e8a7646e1699a17d",
"gsd-core/workflows/execute-phase.md": "f33882f452e603d0",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "d2020c5e01c7bd7f",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "06b54ecd4015c64c",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "09ea0688882eb30e",
"gsd-core/workflows/explore.md": "9348b54b526b8938",
"gsd-core/workflows/extract-learnings.md": "13929ce8a04013e0",
"gsd-core/workflows/fast.md": "77b49793e26b3323",
"gsd-core/workflows/forensics.md": "a65f817d4a515291",
"gsd-core/workflows/graduation.md": "0c0f4e6258ae482f",
"gsd-core/workflows/health.md": "3da94d58e1d40ed1",
"gsd-core/workflows/help.md": "08e1349950c5602a",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "b88ff431fffe40ae",
"gsd-core/workflows/help/modes/full.md": "e71cafdb92d91d32",
"gsd-core/workflows/help/modes/topic.md": "cee80e0adfa3b06c",
"gsd-core/workflows/import.md": "c0f1b98a78ce3f49",
"gsd-core/workflows/inbox.md": "07404a616a95fe6c",
"gsd-core/workflows/ingest-docs.md": "4b0b471f37b57f78",
"gsd-core/workflows/insert-phase.md": "964ca91863a8749a",
"gsd-core/workflows/list-phase-assumptions.md": "eb986c301d59f620",
"gsd-core/workflows/list-seeds.md": "831ddc27b684e30b",
"gsd-core/workflows/list-workspaces.md": "418570fbc8b938da",
"gsd-core/workflows/manager.md": "c6c3dc3eaa815c51",
"gsd-core/workflows/map-codebase.md": "cde7ab8943dc6a0d",
"gsd-core/workflows/milestone-summary.md": "6c76386b500cc5d3",
"gsd-core/workflows/mvp-phase.md": "f0f7d7d6c2e5435f",
"gsd-core/workflows/new-milestone.md": "34fa4f13da1cd2f3",
"gsd-core/workflows/new-project.md": "d80977d7989a6cf1",
"gsd-core/workflows/new-workspace.md": "4da5355de8f19485",
"gsd-core/workflows/next.md": "8ddf186b8970df72",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "1c1e466c764e3deb",
"gsd-core/workflows/onboard.md": "7d0c7449b84c7997",
"gsd-core/workflows/pause-work.md": "5716362557f44ce4",
"gsd-core/workflows/plan-milestone-gaps.md": "1b43d12812f7bc1e",
"gsd-core/workflows/plan-phase.md": "862053b9255b27d5",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "e06ccd4d4c0703fb",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "3bed01c3c906ac52",
"gsd-core/workflows/plan-review-convergence.md": "b2783918bccc0e27",
"gsd-core/workflows/plant-seed.md": "3c36a48064aa98d1",
"gsd-core/workflows/pr-branch.md": "c67d90c65da47168",
"gsd-core/workflows/profile-user.md": "e1a6ec04051931f7",
"gsd-core/workflows/progress.md": "2dbc495deed1a36d",
"gsd-core/workflows/quick.md": "e1b53ef41d76dbe8",
"gsd-core/workflows/reapply-patches.md": "ba9406b60f2c4041",
"gsd-core/workflows/remove-phase.md": "ada8a0546c686483",
"gsd-core/workflows/remove-workspace.md": "0572a83d71650937",
"gsd-core/workflows/resume-project.md": "7f8dc986f0f35d96",
"gsd-core/workflows/review.md": "907cf2747dfb833d",
"gsd-core/workflows/scan.md": "6b49ce7bcc615145",
"gsd-core/workflows/secure-phase.md": "950db6bc4cfb6803",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "bf8ea69c8f7ae019",
"gsd-core/workflows/settings-integrations.md": "37d4212d83664224",
"gsd-core/workflows/settings.md": "f90f106a9490c7c9",
"gsd-core/workflows/ship.md": "253f80ad6e1bee08",
"gsd-core/workflows/sketch-wrap-up.md": "5be73b7bdf96b539",
"gsd-core/workflows/sketch.md": "64543e59b00637d4",
"gsd-core/workflows/smart-entry.md": "fdc5113754223df8",
"gsd-core/workflows/spec-phase.md": "239b6e6cbddaf8c2",
"gsd-core/workflows/spike-wrap-up.md": "4a3bf1058691e55d",
"gsd-core/workflows/spike.md": "4cb55efeeacc9661",
"gsd-core/workflows/stats.md": "e7852c5d8f2b05a9",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "bf9a944978dad763",
"gsd-core/workflows/transition.md": "fb35a3de7feaa056",
"gsd-core/workflows/ui-phase.md": "b177bba31d448d31",
"gsd-core/workflows/ui-review.md": "7683595f11d98e40",
"gsd-core/workflows/ultraplan-phase.md": "466e01d65c350ef6",
"gsd-core/workflows/undo.md": "052c99f02bb5eb0a",
"gsd-core/workflows/update.md": "1cefe4c58755e05f",
"gsd-core/workflows/validate-phase.md": "3c87426aff05a649",
"gsd-core/workflows/verify-phase.md": "b8cca6ef3be502b9",
"gsd-core/workflows/verify-work.md": "a96c38f2cc9a0a0f",
"hooks/gsd-cursor-post-tool.js": "019d503aee8b4a3f",
"hooks/gsd-cursor-pre-tool.js": "fe274720781fcbb5",
"hooks/gsd-cursor-session-start.js": "928fddd165e17b7b",
"hooks/gsd-cursor-stop.js": "cce2bf0e14e267a1",
"hooks/gsd-cursor-subagent-start.js": "bb004049f0e49aa9",
"hooks/gsd-cursor-subagent-stop.js": "8da03aad6bb05d3f",
"hooks/lib/cursor-workspace.js": "45061acd75d55a28",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7",
"skills/gsd-add-tests/SKILL.md": "1719810d0f8dd79e",
"skills/gsd-ai-integration-phase/SKILL.md": "56ee07ad9596c6f3",
"skills/gsd-audit-fix/SKILL.md": "2d2ee3894efbee1c",
"skills/gsd-audit-milestone/SKILL.md": "d953bd7170402fc3",
"skills/gsd-audit-uat/SKILL.md": "97794348d617f873",
"skills/gsd-autonomous/SKILL.md": "93eaad5fa3cb4d5a",
"skills/gsd-capture/SKILL.md": "0a3e8e1ec622ac20",
"skills/gsd-cleanup/SKILL.md": "1c15f1f846614fdf",
"skills/gsd-code-review/SKILL.md": "20510d2cdc0a087b",
"skills/gsd-complete-milestone/SKILL.md": "409785384c03e9a1",
"skills/gsd-config/SKILL.md": "bfb2c9a68658ea8a",
"skills/gsd-debug/SKILL.md": "9b9bd960dec805a6",
"skills/gsd-discuss-phase/SKILL.md": "528dde84ab54176b",
"skills/gsd-docs-update/SKILL.md": "be12b6b48447df38",
"skills/gsd-eval-review/SKILL.md": "892d1f5fb5665941",
"skills/gsd-execute-phase/SKILL.md": "e866ad459c9b0f5b",
"skills/gsd-explore/SKILL.md": "68c3b41f8203e7d4",
"skills/gsd-extract-learnings/SKILL.md": "9356725f248182f1",
"skills/gsd-fast/SKILL.md": "7348338dca150e4b",
"skills/gsd-forensics/SKILL.md": "dca13ed03d434edc",
"skills/gsd-graphify/SKILL.md": "1dd14bfcdb6d0f1b",
"skills/gsd-health/SKILL.md": "6b18ac9d649f63a8",
"skills/gsd-help/SKILL.md": "d159ee08c7fc95a4",
"skills/gsd-import/SKILL.md": "01ebb01767d47e8b",
"skills/gsd-inbox/SKILL.md": "8f7e1c95413968d5",
"skills/gsd-ingest-docs/SKILL.md": "1a2e87caa9011682",
"skills/gsd-manager/SKILL.md": "8a506b1b8b3841c3",
"skills/gsd-map-codebase/SKILL.md": "74a827b893d70dfa",
"skills/gsd-mempalace-capture/SKILL.md": "ff7e3bcfa0d23d5f",
"skills/gsd-mempalace-recall/SKILL.md": "04364d3012644204",
"skills/gsd-milestone-summary/SKILL.md": "1d0b245b74176236",
"skills/gsd-mvp-phase/SKILL.md": "485356f67c196015",
"skills/gsd-new-milestone/SKILL.md": "882af2f4995929b7",
"skills/gsd-new-project/SKILL.md": "daad247764b4e466",
"skills/gsd-next/SKILL.md": "ef4221025da5ed3a",
"skills/gsd-ns-context/SKILL.md": "adf3509008907983",
"skills/gsd-ns-ideate/SKILL.md": "701590ef59fefa9c",
"skills/gsd-ns-manage/SKILL.md": "2820ca89ec707808",
"skills/gsd-ns-project/SKILL.md": "799f9651be83ec24",
"skills/gsd-ns-review/SKILL.md": "1dac39c855555b0b",
"skills/gsd-ns-workflow/SKILL.md": "975c89ee2846b40c",
"skills/gsd-onboard/SKILL.md": "c7f216749ba4c09c",
"skills/gsd-pause-work/SKILL.md": "7d310e7329b7ae7d",
"skills/gsd-phase/SKILL.md": "49fca93e5f2ccc70",
"skills/gsd-plan-phase/SKILL.md": "848d571bd385a0f4",
"skills/gsd-plan-review-convergence/SKILL.md": "3e13dd1bf82f74c0",
"skills/gsd-pr-branch/SKILL.md": "a8f8838a6aa5e1dd",
"skills/gsd-profile-user/SKILL.md": "3be8d50399836ef2",
"skills/gsd-progress/SKILL.md": "1245ea9e6af6ae25",
"skills/gsd-quick/SKILL.md": "05670e9238811a5f",
"skills/gsd-resume-work/SKILL.md": "6c8b592295a2edc9",
"skills/gsd-review-backlog/SKILL.md": "b1070503042ddb13",
"skills/gsd-review/SKILL.md": "27bb3cfc1f54f650",
"skills/gsd-secure-phase/SKILL.md": "02828a6254eae50e",
"skills/gsd-settings/SKILL.md": "8f32c4a4085bc72a",
"skills/gsd-ship/SKILL.md": "c54eb2511f8e8417",
"skills/gsd-sketch/SKILL.md": "a1ce42548d7287bd",
"skills/gsd-spec-phase/SKILL.md": "7cfdb9fc879d9b6b",
"skills/gsd-spike/SKILL.md": "c9b2e4ab15ade118",
"skills/gsd-stats/SKILL.md": "5796e221ab9ab7ae",
"skills/gsd-surface/SKILL.md": "d219dd20380caa2f",
"skills/gsd-thread/SKILL.md": "a73159bc8269dd68",
"skills/gsd-ui-phase/SKILL.md": "c69cbdf977e2a840",
"skills/gsd-ui-review/SKILL.md": "fbed8745f1abb289",
"skills/gsd-ultraplan-phase/SKILL.md": "749373bb067636fa",
"skills/gsd-undo/SKILL.md": "6ebcaaaea575bf85",
"skills/gsd-update/SKILL.md": "df643c197bd9ad5e",
"skills/gsd-validate-phase/SKILL.md": "10a5d3f8de0d9683",
"skills/gsd-verify-work/SKILL.md": "eec11aab679a8116",
"skills/gsd-workspace/SKILL.md": "c2e42b0b5c105991",
"skills/gsd-workstreams/SKILL.md": "14f44c061fef78f8"
}

View File

@@ -1,445 +0,0 @@
{
".gsd-profile": "0e716a5fef4e6dc1",
".gsd/defaults.json": "c4a285ff34429381",
"agents/gsd-advisor-researcher.md": "f1c4a47d3d8cea72",
"agents/gsd-ai-researcher.md": "08847faf5494ff08",
"agents/gsd-assumptions-analyzer.md": "f11a80795163bb5d",
"agents/gsd-code-fixer.md": "94628312f25decb5",
"agents/gsd-code-reviewer.md": "5ef947ca5baed775",
"agents/gsd-codebase-mapper.md": "4749858e8e97f1d2",
"agents/gsd-debug-session-manager.md": "cc2a5c12354fd0df",
"agents/gsd-debugger.md": "3b00e344e8200dce",
"agents/gsd-doc-classifier.md": "29b563a146c9d22c",
"agents/gsd-doc-synthesizer.md": "652beb928e93fa1d",
"agents/gsd-doc-verifier.md": "d3d8457bdd44bf10",
"agents/gsd-doc-writer.md": "2858a8335170e85c",
"agents/gsd-domain-researcher.md": "412cdbb05ba252ea",
"agents/gsd-eval-auditor.md": "4ffb265063c318e5",
"agents/gsd-eval-planner.md": "03448fc9c5774b56",
"agents/gsd-executor.md": "481d921115690b41",
"agents/gsd-framework-selector.md": "ea9981d65d6b3429",
"agents/gsd-integration-checker.md": "35b4f2969d279871",
"agents/gsd-intel-updater.md": "5fe5edfae2719cb8",
"agents/gsd-mempalace-curator.md": "399e90e473b33814",
"agents/gsd-nyquist-auditor.md": "8bfde4a9a36318aa",
"agents/gsd-pattern-mapper.md": "cea092600aeb3978",
"agents/gsd-phase-researcher.md": "2bd0402f33d757ca",
"agents/gsd-plan-checker.md": "c31dc063b5506aaf",
"agents/gsd-planner.md": "3be8aff696060e6c",
"agents/gsd-project-researcher.md": "425a7df7f37a5c06",
"agents/gsd-research-synthesizer.md": "9d31c87fc2c87ffa",
"agents/gsd-roadmapper.md": "64dce5d5f9fa5654",
"agents/gsd-security-auditor.md": "ed330ecbd9dbc377",
"agents/gsd-ui-auditor.md": "86797e85f718dfac",
"agents/gsd-ui-checker.md": "cfc8a3bac0a0ef5b",
"agents/gsd-ui-researcher.md": "8799b6013e06ae49",
"agents/gsd-user-profiler.md": "ca3bf75581f211a0",
"agents/gsd-verifier.md": "de64454ee98634cd",
"gsd-core/.gsd-runtime": "d53ba9ce30ffd743",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "3a3409215044af9f",
"gsd-core/bin/gsd-tools.cjs": "e2c74ef42f582c9d",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "892f086e846cd8e4",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "f827de93dde124eb",
"gsd-core/references/api-coverage.md": "53d290a68f83c7d0",
"gsd-core/references/artifact-types.md": "8bd01fd75a2ba70e",
"gsd-core/references/autonomous-smart-discuss.md": "2fc710cde0ec7785",
"gsd-core/references/checkpoints.md": "6e4b08a89c485c71",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "6e9dbeb47e90493f",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-bug-taxonomy.md": "fd9b10fffb3bd052",
"gsd-core/references/debugger-fix-acceptance.md": "b04b913d5ea0ac90",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "8318008696c1e0b2",
"gsd-core/references/debugger-sbfl.md": "70e699200f6197e0",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
"gsd-core/references/domain-probes.md": "762b965e84035b72",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "5687eba25a078561",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "4d6ea8e85e88b1fe",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-quota-recovery.md": "713cf7681f57e7ce",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "b13d8860a76b7a41",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "099c8d52e3562336",
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
"gsd-core/references/git-integration.md": "12d23fcbaa7fcf06",
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
"gsd-core/references/gsd-run-resolver.md": "769d1472c989cd54",
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "7135dd5d81246b0e",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "a3fc0f81fbb5121d",
"gsd-core/references/model-profiles.md": "6012c3b53473f04f",
"gsd-core/references/mvp-concepts.md": "3464783eaaef5c10",
"gsd-core/references/offer-next.md": "8f98bc9d5956a004",
"gsd-core/references/phase-argument-parsing.md": "e5bbb985f3bc3e34",
"gsd-core/references/planner-antipatterns.md": "013ad54062399dad",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "1ed614dfba72f2a3",
"gsd-core/references/planner-guidance.md": "140b1266eeb096cb",
"gsd-core/references/planner-human-verify-mode.md": "6cfa61ca5f6c1879",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "8f598e08696843c0",
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "74acbf4a873a01e4",
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "207597aadbb12108",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "52872d5393ea9daf",
"gsd-core/references/project-skills-discovery.md": "0885d973eeac5234",
"gsd-core/references/questioning.md": "a8c988cab05f4651",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "62930e66cc979c1a",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "a857fc444baec27a",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "c6d28ea1a820af7e",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "fba5dfb6ed07bbc2",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "ef519bff8c8bd572",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "827c1badf3e6df41",
"gsd-core/references/ui-brand.md": "48717bcfcd63bd27",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "15ebe63b708d46b8",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "b50416fe57c1b321",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "a3e2d5166d16a37b",
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
"gsd-core/references/workstream-flag.md": "50ddf79d58950730",
"gsd-core/references/worktree-branch-check.md": "ecfbf0e65dd8ccac",
"gsd-core/references/worktree-path-safety.md": "fa79fcdff2aaa5f0",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "0944156249103c16",
"gsd-core/templates/README.md": "89560317a9097a05",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "e4d0f1c48727fce3",
"gsd-core/templates/claude-md.md": "7c778398f79e25a3",
"gsd-core/templates/codebase/architecture.md": "6be88214162fdd89",
"gsd-core/templates/codebase/concerns.md": "efa26d1fb5132f25",
"gsd-core/templates/codebase/conventions.md": "c2e07698dad6b364",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "6f968b6bb6e1982f",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "69b01e7909ea3f66",
"gsd-core/templates/continue-here.md": "f522a51b6895fba8",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "855f2457818b4955",
"gsd-core/templates/dev-preferences.md": "95048a71063d980b",
"gsd-core/templates/discovery.md": "e4ab738326eb70e0",
"gsd-core/templates/discussion-log.md": "cac1b48ec0f4dcb8",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "213ccd947451ff2b",
"gsd-core/templates/planner-subagent-prompt.md": "d2a1373a1d8f53ae",
"gsd-core/templates/project.md": "ae1f68db042c2522",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "fa6dfb2ff2e8d273",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "7dc900c355098d8b",
"gsd-core/templates/state.md": "73e424b8c70b765c",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "85f4d37fcee6852b",
"gsd-core/templates/user-profile.md": "20749f23e4c413fc",
"gsd-core/templates/user-setup.md": "78b7d718b6e8d67c",
"gsd-core/templates/verification-report.md": "dd5faa6254183731",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "79a453a2270483fb",
"gsd-core/workflows/add-phase.md": "2a6452fc51339b9c",
"gsd-core/workflows/add-tests.md": "beaec899e9a70b0e",
"gsd-core/workflows/add-todo.md": "aa7be08f52478922",
"gsd-core/workflows/ai-integration-phase.md": "fc161460e4eb193b",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "7e1d184ffde7aa34",
"gsd-core/workflows/audit-milestone.md": "53b4f196583d0a39",
"gsd-core/workflows/audit-uat.md": "86d9131fccabf2ad",
"gsd-core/workflows/autonomous.md": "b1d848b753564dad",
"gsd-core/workflows/check-todos.md": "ab38b0c7190b93c4",
"gsd-core/workflows/cleanup.md": "c811970042bc4ff1",
"gsd-core/workflows/code-review-fix.md": "d8f074c1ae9ebdf3",
"gsd-core/workflows/code-review.md": "88e6ce8cb2f7310f",
"gsd-core/workflows/complete-milestone.md": "e87bf463430945d6",
"gsd-core/workflows/debug.md": "1784b5f8edd05f2c",
"gsd-core/workflows/diagnose-issues.md": "bc0dd9eb0fc5195a",
"gsd-core/workflows/discovery-phase.md": "56d07842d140f388",
"gsd-core/workflows/discuss-phase-assumptions.md": "5f1e46806c372d23",
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
"gsd-core/workflows/discuss-phase.md": "0aa052ae4ee70bf6",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "624db27cd84c4626",
"gsd-core/workflows/discuss-phase/modes/all.md": "fa70d79066562e54",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "da0788f3be7f8105",
"gsd-core/workflows/discuss-phase/modes/auto.md": "af2d9d6ebb3f69c9",
"gsd-core/workflows/discuss-phase/modes/batch.md": "6946597770e2d448",
"gsd-core/workflows/discuss-phase/modes/chain.md": "eff83e92368c983a",
"gsd-core/workflows/discuss-phase/modes/default.md": "67d1b67f61f03966",
"gsd-core/workflows/discuss-phase/modes/power.md": "fdc7a728eaaa2261",
"gsd-core/workflows/discuss-phase/modes/text.md": "e6d930e2b6769e49",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "eeebda60636d1ad0",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "b30d1efcb0297580",
"gsd-core/workflows/docs-update.md": "c017abde0209656e",
"gsd-core/workflows/edit-phase.md": "7f27003f20e88fb8",
"gsd-core/workflows/eval-review.md": "6d1c9c167f91b0f8",
"gsd-core/workflows/execute-phase.md": "e66dfb357797ab51",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "9b2193de25506b3b",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "4dfefdd56d814d06",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "26ee34c543926402",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "362123fdf99e9980",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "a691e3afe88031b8",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "0c5e0455252b5a46",
"gsd-core/workflows/explore.md": "843e66f101a56dfa",
"gsd-core/workflows/extract-learnings.md": "7f44f65fbf32a427",
"gsd-core/workflows/fast.md": "c801145115755524",
"gsd-core/workflows/forensics.md": "91961b811917c5c4",
"gsd-core/workflows/graduation.md": "938c71f1e7650da0",
"gsd-core/workflows/health.md": "6ea6ceba2568909b",
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "8874dac94eb68ae6",
"gsd-core/workflows/help/modes/full.md": "4df9dedd9a131071",
"gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9",
"gsd-core/workflows/import.md": "ac5993e79d809fd4",
"gsd-core/workflows/inbox.md": "20159d4f9a1fca7f",
"gsd-core/workflows/ingest-docs.md": "1625f5660f6d32c7",
"gsd-core/workflows/insert-phase.md": "a0537c09191121f6",
"gsd-core/workflows/list-phase-assumptions.md": "2a6b6a5acfb7742c",
"gsd-core/workflows/list-seeds.md": "ad1d81683e48c4e1",
"gsd-core/workflows/list-workspaces.md": "1fe28ba52cee1394",
"gsd-core/workflows/manager.md": "f0eb25349617495b",
"gsd-core/workflows/map-codebase.md": "0c956951dc52fd11",
"gsd-core/workflows/milestone-summary.md": "353fffb60749d892",
"gsd-core/workflows/mvp-phase.md": "593faf3ec49b26d0",
"gsd-core/workflows/new-milestone.md": "a2a2e318ca566cd3",
"gsd-core/workflows/new-project.md": "96f95fc63edda4e9",
"gsd-core/workflows/new-workspace.md": "5e4ace6da343b8a8",
"gsd-core/workflows/next.md": "55002eb30ab4193e",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "42b66686b2c102cb",
"gsd-core/workflows/onboard.md": "0f0af11294d31715",
"gsd-core/workflows/pause-work.md": "ae2d5789a95f70fe",
"gsd-core/workflows/plan-milestone-gaps.md": "c86cdc1964256b98",
"gsd-core/workflows/plan-phase.md": "17b40d35982556f3",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "9607e6d03e93c1c2",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "62f8e4f3b475fe5f",
"gsd-core/workflows/plan-review-convergence.md": "3e6356a922e4fe77",
"gsd-core/workflows/plant-seed.md": "4643bc78faaf9005",
"gsd-core/workflows/pr-branch.md": "ecabd55e4eabf229",
"gsd-core/workflows/profile-user.md": "877c2c9b3ab8742c",
"gsd-core/workflows/progress.md": "589f60eb809c0bb9",
"gsd-core/workflows/quick.md": "0c826ca484b1ba41",
"gsd-core/workflows/reapply-patches.md": "158083a310859594",
"gsd-core/workflows/remove-phase.md": "fce799aae3ab2715",
"gsd-core/workflows/remove-workspace.md": "42029a7559f1d8fb",
"gsd-core/workflows/resume-project.md": "a0443839f1f83c2d",
"gsd-core/workflows/review.md": "272f7d8befd51657",
"gsd-core/workflows/scan.md": "b04522820db04e51",
"gsd-core/workflows/secure-phase.md": "4c44df1c96be27ca",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "49be159144d7f426",
"gsd-core/workflows/settings-integrations.md": "75405795c8462a8a",
"gsd-core/workflows/settings.md": "41c0f737bfd311fd",
"gsd-core/workflows/ship.md": "cfee017dc9a3d4e4",
"gsd-core/workflows/sketch-wrap-up.md": "f1ece50ac65ea281",
"gsd-core/workflows/sketch.md": "592283400d70317b",
"gsd-core/workflows/smart-entry.md": "4dc50d4af659c651",
"gsd-core/workflows/spec-phase.md": "6ace28390408475f",
"gsd-core/workflows/spike-wrap-up.md": "367325e6d567b904",
"gsd-core/workflows/spike.md": "176cf0ecfc038581",
"gsd-core/workflows/stats.md": "49a991d0d3905a56",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "5a6759e01763c2a6",
"gsd-core/workflows/transition.md": "bcfaad44668d07fd",
"gsd-core/workflows/ui-phase.md": "22038d7e7952e371",
"gsd-core/workflows/ui-review.md": "aff735457e4d9267",
"gsd-core/workflows/ultraplan-phase.md": "0d103bf2622436f7",
"gsd-core/workflows/undo.md": "0a03405c0345fcf7",
"gsd-core/workflows/update.md": "72caebc54a750df9",
"gsd-core/workflows/validate-phase.md": "1369ec5a7e14a30a",
"gsd-core/workflows/verify-phase.md": "42f0fba74d069537",
"gsd-core/workflows/verify-work.md": "b9f227dcb7df57a4",
"hooks/gsd-check-update-worker.js": "7989cc2bedd1138d",
"hooks/gsd-check-update.js": "25f5ad726f76fc11",
"hooks/gsd-config-reload.js": "880b696458e85e9b",
"hooks/gsd-context-monitor.js": "b829f618e82406de",
"hooks/gsd-cursor-post-tool.js": "8a8a249c0642cc71",
"hooks/gsd-cursor-pre-tool.js": "8cb8e8f895edaec9",
"hooks/gsd-cursor-session-start.js": "c78754e3516853e4",
"hooks/gsd-cursor-stop.js": "c46dc9be21b75f50",
"hooks/gsd-cursor-subagent-start.js": "ec1ea84a9a589b0a",
"hooks/gsd-cursor-subagent-stop.js": "8ee488d826bf3c37",
"hooks/gsd-ensure-canonical-path.js": "7d116d7d65c50b4b",
"hooks/gsd-graphify-update.sh": "81d716df76159e60",
"hooks/gsd-phase-boundary.sh": "4f3daad099fcdd50",
"hooks/gsd-prompt-guard.js": "696a0f65b9535cd1",
"hooks/gsd-read-guard.js": "8284fcbcef0c2062",
"hooks/gsd-read-injection-scanner.js": "e85d29d90ca73ec2",
"hooks/gsd-session-state.sh": "e54379ba86bf1b6d",
"hooks/gsd-statusline.js": "3f59c6becf124608",
"hooks/gsd-update-banner.js": "b457746cb76c1957",
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
"hooks/gsd-workflow-guard.js": "41c59d9765ac36ae",
"hooks/gsd-worktree-path-guard.js": "37dd85a1591a4d8c",
"hooks/lib/cursor-workspace.js": "45061acd75d55a28",
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
"hooks/managed-hooks-registry.cjs": "bc58c3a7609d7eae",
"package.json": "dbf8353f77358bc1",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7",
"skills/gsd/DESCRIPTION.md": "d93e29a1a09cfd11",
"skills/gsd/gsd-ns-context/SKILL.md": "bd883f6319dd2c81",
"skills/gsd/gsd-ns-context/skills/docs-update/SKILL.md": "b059b3045d5daf5c",
"skills/gsd/gsd-ns-context/skills/extract-learnings/SKILL.md": "36e59d6e514dcaf0",
"skills/gsd/gsd-ns-context/skills/graphify/SKILL.md": "169eefd42c444cde",
"skills/gsd/gsd-ns-context/skills/map-codebase/SKILL.md": "9d36eee52586bb34",
"skills/gsd/gsd-ns-context/skills/mempalace-capture/SKILL.md": "b55a640c7bae4c97",
"skills/gsd/gsd-ns-context/skills/mempalace-recall/SKILL.md": "5d06922e0d7ab7d9",
"skills/gsd/gsd-ns-ideate/SKILL.md": "b36bb4700ed6723a",
"skills/gsd/gsd-ns-ideate/skills/capture/SKILL.md": "76fc7c1200124ece",
"skills/gsd/gsd-ns-ideate/skills/explore/SKILL.md": "bb39acf6117cb9ca",
"skills/gsd/gsd-ns-ideate/skills/sketch/SKILL.md": "2d9390383b2cd939",
"skills/gsd/gsd-ns-ideate/skills/spec-phase/SKILL.md": "848cec32c341713c",
"skills/gsd/gsd-ns-ideate/skills/spike/SKILL.md": "a87bf704b753cd06",
"skills/gsd/gsd-ns-manage/SKILL.md": "60bb07572d442561",
"skills/gsd/gsd-ns-manage/skills/cleanup/SKILL.md": "66c29a633fd54751",
"skills/gsd/gsd-ns-manage/skills/config/SKILL.md": "927cf658e1bd1c00",
"skills/gsd/gsd-ns-manage/skills/health/SKILL.md": "4401da73b980a4cc",
"skills/gsd/gsd-ns-manage/skills/help/SKILL.md": "0d4a5bfdc292096e",
"skills/gsd/gsd-ns-manage/skills/inbox/SKILL.md": "842ac7e207845549",
"skills/gsd/gsd-ns-manage/skills/manager/SKILL.md": "e02da9da44a8ddd7",
"skills/gsd/gsd-ns-manage/skills/pause-work/SKILL.md": "761f9ac48e63882f",
"skills/gsd/gsd-ns-manage/skills/pr-branch/SKILL.md": "8e9fc7da5290e7ac",
"skills/gsd/gsd-ns-manage/skills/resume-work/SKILL.md": "1d497e355ddfc0c9",
"skills/gsd/gsd-ns-manage/skills/settings/SKILL.md": "db053a82acb85969",
"skills/gsd/gsd-ns-manage/skills/ship/SKILL.md": "3f7e7023802a185d",
"skills/gsd/gsd-ns-manage/skills/stats/SKILL.md": "847f1a79382e05a3",
"skills/gsd/gsd-ns-manage/skills/surface/SKILL.md": "232dc849db8ec365",
"skills/gsd/gsd-ns-manage/skills/thread/SKILL.md": "12e14ca63fe5a982",
"skills/gsd/gsd-ns-manage/skills/undo/SKILL.md": "cb410bf1813a2d1e",
"skills/gsd/gsd-ns-manage/skills/update/SKILL.md": "433a236998c305b0",
"skills/gsd/gsd-ns-manage/skills/workspace/SKILL.md": "d655afc6f16565ed",
"skills/gsd/gsd-ns-manage/skills/workstreams/SKILL.md": "6893312eaf14dab0",
"skills/gsd/gsd-ns-project/SKILL.md": "6b3af15e7c4441c9",
"skills/gsd/gsd-ns-project/skills/audit-milestone/SKILL.md": "de0556f07d899e50",
"skills/gsd/gsd-ns-project/skills/complete-milestone/SKILL.md": "180cccc09bf99444",
"skills/gsd/gsd-ns-project/skills/import/SKILL.md": "bf781c7a0d83c2cd",
"skills/gsd/gsd-ns-project/skills/ingest-docs/SKILL.md": "a38273c6b6604830",
"skills/gsd/gsd-ns-project/skills/milestone-summary/SKILL.md": "c4bda5737f1137f8",
"skills/gsd/gsd-ns-project/skills/new-milestone/SKILL.md": "384b6754a950e6eb",
"skills/gsd/gsd-ns-project/skills/new-project/SKILL.md": "8f22ba75717b3c88",
"skills/gsd/gsd-ns-project/skills/onboard/SKILL.md": "1d8d06ac1f27dacd",
"skills/gsd/gsd-ns-project/skills/profile-user/SKILL.md": "5a8e01bc7b873a20",
"skills/gsd/gsd-ns-project/skills/review-backlog/SKILL.md": "f3ef97da4e9b1d4c",
"skills/gsd/gsd-ns-review/SKILL.md": "23fbadeca640e2bd",
"skills/gsd/gsd-ns-review/skills/audit-fix/SKILL.md": "4bc3b75acebc3f82",
"skills/gsd/gsd-ns-review/skills/audit-uat/SKILL.md": "c330007f3893f757",
"skills/gsd/gsd-ns-review/skills/code-review/SKILL.md": "9ce2b92032654820",
"skills/gsd/gsd-ns-review/skills/debug/SKILL.md": "d4145201fd86560b",
"skills/gsd/gsd-ns-review/skills/eval-review/SKILL.md": "940e0682291e93f9",
"skills/gsd/gsd-ns-review/skills/forensics/SKILL.md": "e05e2a39a14995b5",
"skills/gsd/gsd-ns-review/skills/review/SKILL.md": "c0d8452082aa1dd5",
"skills/gsd/gsd-ns-review/skills/secure-phase/SKILL.md": "1a70020fcb3c3d4a",
"skills/gsd/gsd-ns-review/skills/ui-phase/SKILL.md": "3207854a4f0fab67",
"skills/gsd/gsd-ns-review/skills/ui-review/SKILL.md": "512c54662616c3f9",
"skills/gsd/gsd-ns-review/skills/validate-phase/SKILL.md": "f2c31c34fc8e24c4",
"skills/gsd/gsd-ns-workflow/SKILL.md": "f54502a2c6bf5495",
"skills/gsd/gsd-ns-workflow/skills/add-tests/SKILL.md": "29e5863322ad6f2d",
"skills/gsd/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "97eb01851d368d50",
"skills/gsd/gsd-ns-workflow/skills/autonomous/SKILL.md": "3c9bc726e13c4916",
"skills/gsd/gsd-ns-workflow/skills/discuss-phase/SKILL.md": "326303209b745eea",
"skills/gsd/gsd-ns-workflow/skills/execute-phase/SKILL.md": "a2e4e6211e09b3c0",
"skills/gsd/gsd-ns-workflow/skills/fast/SKILL.md": "c8517ba44da99147",
"skills/gsd/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "0804dfd4124526ba",
"skills/gsd/gsd-ns-workflow/skills/next/SKILL.md": "1d30cf6061d15168",
"skills/gsd/gsd-ns-workflow/skills/phase/SKILL.md": "610bd06d71198849",
"skills/gsd/gsd-ns-workflow/skills/plan-phase/SKILL.md": "20c30f2aa80a6145",
"skills/gsd/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "9f67e59967b3f5eb",
"skills/gsd/gsd-ns-workflow/skills/progress/SKILL.md": "6ec0e4715dde7ee2",
"skills/gsd/gsd-ns-workflow/skills/quick/SKILL.md": "65e377345e9c49a8",
"skills/gsd/gsd-ns-workflow/skills/spec-phase/SKILL.md": "848cec32c341713c",
"skills/gsd/gsd-ns-workflow/skills/ultraplan-phase/SKILL.md": "3a88dde399df4e63",
"skills/gsd/gsd-ns-workflow/skills/verify-work/SKILL.md": "3bedfdb2aeeb3804"
}

View File

@@ -1,516 +0,0 @@
{
".gsd-profile": "0e716a5fef4e6dc1",
".gsd/defaults.json": "5a791a3c4ae9eb23",
"agents/gsd-advisor-researcher.md": "3296fc4edef47f2e",
"agents/gsd-ai-researcher.md": "9607993fbaafe9ba",
"agents/gsd-assumptions-analyzer.md": "567d823ccd036b39",
"agents/gsd-code-fixer.md": "9652d5b56a2afbf5",
"agents/gsd-code-reviewer.md": "922c08885bc78662",
"agents/gsd-codebase-mapper.md": "1f45939542994a42",
"agents/gsd-debug-session-manager.md": "0c58daac3de75755",
"agents/gsd-debugger.md": "aab7ddbbdc75f6c8",
"agents/gsd-doc-classifier.md": "6256bbc0b887f60f",
"agents/gsd-doc-synthesizer.md": "212aaf89a34b51d7",
"agents/gsd-doc-verifier.md": "8016f792d0766b77",
"agents/gsd-doc-writer.md": "72a21cf92542f6c0",
"agents/gsd-domain-researcher.md": "a3874d80bcbc7380",
"agents/gsd-eval-auditor.md": "630d4cd3bd6ea195",
"agents/gsd-eval-planner.md": "3db12cde12aeb2c1",
"agents/gsd-executor.md": "9ac9bf30383cf94c",
"agents/gsd-framework-selector.md": "ad5f2c6b9bec6270",
"agents/gsd-integration-checker.md": "c503e2f4a3d8ec05",
"agents/gsd-intel-updater.md": "231393da62a45b2e",
"agents/gsd-mempalace-curator.md": "c6a7fe754b6ca5e1",
"agents/gsd-nyquist-auditor.md": "7bc3cc159c7be987",
"agents/gsd-pattern-mapper.md": "6a5408fd11d70391",
"agents/gsd-phase-researcher.md": "94818f28c498bb26",
"agents/gsd-plan-checker.md": "2546e311f7e8e0e8",
"agents/gsd-planner.md": "e6bc5cf0ac9e9c06",
"agents/gsd-project-researcher.md": "60573a38d3dfd9fe",
"agents/gsd-research-synthesizer.md": "1f7cd286c5783c86",
"agents/gsd-roadmapper.md": "277e0a3252553ab7",
"agents/gsd-security-auditor.md": "30b1f87cdfc05de1",
"agents/gsd-ui-auditor.md": "9b988b95d28e56ed",
"agents/gsd-ui-checker.md": "e078ea5a07313976",
"agents/gsd-ui-researcher.md": "cc9578c4f686d926",
"agents/gsd-user-profiler.md": "b8cb09319c517701",
"agents/gsd-verifier.md": "49a733b54fa955c2",
"command/gsd-add-tests.md": "c314f9a6be312bfa",
"command/gsd-ai-integration-phase.md": "9c47e446af993c53",
"command/gsd-audit-fix.md": "4106e9dce9b71585",
"command/gsd-audit-milestone.md": "0f627d956b5030ed",
"command/gsd-audit-uat.md": "119f204ca3cd0cd6",
"command/gsd-autonomous.md": "b85f720c4675d567",
"command/gsd-capture.md": "678c0ff889b2ad77",
"command/gsd-cleanup.md": "36cfddb3528b7c46",
"command/gsd-code-review.md": "a60c5b90d7d40c43",
"command/gsd-complete-milestone.md": "c7f5d90ab35bfff6",
"command/gsd-config.md": "3ec39530e1569ea7",
"command/gsd-debug.md": "aa1b885755bf3469",
"command/gsd-discuss-phase.md": "718155162fa3557a",
"command/gsd-docs-update.md": "d9d1d24eba748102",
"command/gsd-eval-review.md": "6f0737654a3fd4bb",
"command/gsd-execute-phase.md": "ce4cdfb79eaf6403",
"command/gsd-explore.md": "c161fa4bf2caceef",
"command/gsd-extract-learnings.md": "d18cbd1a3a03f845",
"command/gsd-fast.md": "66cc15c968a72270",
"command/gsd-forensics.md": "219d4a8d7241603a",
"command/gsd-graphify.md": "043152b6c9d82538",
"command/gsd-health.md": "4e45942f1cc53493",
"command/gsd-help.md": "4ae69106952f5d23",
"command/gsd-import.md": "8038513633f0470b",
"command/gsd-inbox.md": "1429fc7f556337c3",
"command/gsd-ingest-docs.md": "e655ecf1d4433ba9",
"command/gsd-manager.md": "1cdc133079833552",
"command/gsd-map-codebase.md": "704cb63214f51523",
"command/gsd-mempalace-capture.md": "081236c25ce5b337",
"command/gsd-mempalace-recall.md": "d358cdd89c935877",
"command/gsd-milestone-summary.md": "4ab29b777f62f0bb",
"command/gsd-mvp-phase.md": "273a1c26ca13274b",
"command/gsd-new-milestone.md": "dbf06cebb4c10039",
"command/gsd-new-project.md": "f2763e2ccbb70ebe",
"command/gsd-next.md": "dfdcfb2fd79957fa",
"command/gsd-ns-context.md": "9a2b55b64f2e1e4b",
"command/gsd-ns-ideate.md": "27e7fcdc69eeeb5f",
"command/gsd-ns-manage.md": "eded59052ca4b240",
"command/gsd-ns-project.md": "c56395edb9bc7467",
"command/gsd-ns-review.md": "61fe33e28eb1b961",
"command/gsd-ns-workflow.md": "13c1ab91080c0cc3",
"command/gsd-onboard.md": "3e87a21c9c04f0d7",
"command/gsd-pause-work.md": "04e993b1c9f8322b",
"command/gsd-phase.md": "8f0e98dc6c223229",
"command/gsd-plan-phase.md": "7a7f244d9523bc55",
"command/gsd-plan-review-convergence.md": "b957f86414b6c73f",
"command/gsd-pr-branch.md": "68e724607de3c480",
"command/gsd-profile-user.md": "9704158b2d79cad2",
"command/gsd-progress.md": "cba4805469307416",
"command/gsd-quick.md": "704662b2172df14d",
"command/gsd-resume-work.md": "e4bb44fb2e8076c0",
"command/gsd-review-backlog.md": "1e99d6a7a3806fa5",
"command/gsd-review.md": "1e14af38d6d421b3",
"command/gsd-secure-phase.md": "65eb1cd3fa6430a5",
"command/gsd-settings.md": "9bf5d13f13f7d49c",
"command/gsd-ship.md": "c0ae46a2cbc7a2b4",
"command/gsd-sketch.md": "5237dfdbb55735db",
"command/gsd-spec-phase.md": "8f8e3e109ebb7011",
"command/gsd-spike.md": "fdcb1ae289790818",
"command/gsd-stats.md": "b54c0d533cff9710",
"command/gsd-surface.md": "e2e7898a020a954b",
"command/gsd-thread.md": "9c6a1900b3c57be6",
"command/gsd-ui-phase.md": "efeba2d2381173e3",
"command/gsd-ui-review.md": "35a12e93cddf266c",
"command/gsd-ultraplan-phase.md": "f2cfeb972bbb90f7",
"command/gsd-undo.md": "2522a6a2fbc1d0d2",
"command/gsd-update.md": "6f1d4ce787925990",
"command/gsd-validate-phase.md": "f647bae9dba988bb",
"command/gsd-verify-work.md": "d07409c940a6ff00",
"command/gsd-workspace.md": "9048133312f47fdc",
"command/gsd-workstreams.md": "5e57eed1881c3891",
"gsd-core/.gsd-runtime": "687db6a1b110b149",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "51bc64467ab30f62",
"gsd-core/bin/gsd-tools.cjs": "e1996ac045ff5fde",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "51b5d0ba5b1e98d9",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "425dd69c629230e7",
"gsd-core/references/api-coverage.md": "53d290a68f83c7d0",
"gsd-core/references/artifact-types.md": "8bd01fd75a2ba70e",
"gsd-core/references/autonomous-smart-discuss.md": "3986d58011bf9006",
"gsd-core/references/checkpoints.md": "d52116f59e92ca43",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "b2c7b1703642a342",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-bug-taxonomy.md": "49f94fe75cabba52",
"gsd-core/references/debugger-fix-acceptance.md": "b2732420bdbcadcd",
"gsd-core/references/debugger-philosophy.md": "459a8ac647c4ce9c",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "097c2da83d697566",
"gsd-core/references/debugger-sbfl.md": "391e732abf32786a",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
"gsd-core/references/domain-probes.md": "762b965e84035b72",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "5687eba25a078561",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-quota-recovery.md": "713cf7681f57e7ce",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "43e867720e736464",
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
"gsd-core/references/git-integration.md": "fbdf814a3af9c051",
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
"gsd-core/references/gsd-run-resolver.md": "e71eb728b84641b1",
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "11d144acecab34fb",
"gsd-core/references/model-profiles.md": "6568ca29b6ee00d8",
"gsd-core/references/mvp-concepts.md": "3464783eaaef5c10",
"gsd-core/references/offer-next.md": "8f98bc9d5956a004",
"gsd-core/references/phase-argument-parsing.md": "e5bbb985f3bc3e34",
"gsd-core/references/planner-antipatterns.md": "88a0cd714d33fe34",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "1ed614dfba72f2a3",
"gsd-core/references/planner-guidance.md": "b791ceb40cb79d8c",
"gsd-core/references/planner-human-verify-mode.md": "3a625b42d9cb93ee",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "74acbf4a873a01e4",
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "b7a4fb3d8215ac6a",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "52872d5393ea9daf",
"gsd-core/references/project-skills-discovery.md": "0ada2e0c44531865",
"gsd-core/references/questioning.md": "a083e5e3e16dd802",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "a602b41bfa081fdf",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "a857fc444baec27a",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "558870a1c4bc4c29",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "5e400dc05a15e972",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "ef519bff8c8bd572",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "827c1badf3e6df41",
"gsd-core/references/ui-brand.md": "48717bcfcd63bd27",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "6a1245050b21df01",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "8e023a908d968af1",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "a3e2d5166d16a37b",
"gsd-core/references/verification-patterns.md": "ac45d99076067f17",
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
"gsd-core/references/workstream-flag.md": "225910640adbb76d",
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "72e93b7f650d9bae",
"gsd-core/templates/README.md": "73d3c9689b6efbc9",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "e4d0f1c48727fce3",
"gsd-core/templates/claude-md.md": "f35856254768bf7d",
"gsd-core/templates/codebase/architecture.md": "282db635ba093b1a",
"gsd-core/templates/codebase/concerns.md": "e66c584daa636fc5",
"gsd-core/templates/codebase/conventions.md": "c5f0324730852701",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "5b5dd37145241462",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "593d4e6d20fdde7c",
"gsd-core/templates/continue-here.md": "8b1dce4832c7922b",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "8c18a89e25929d8e",
"gsd-core/templates/dev-preferences.md": "95048a71063d980b",
"gsd-core/templates/discovery.md": "e4ab738326eb70e0",
"gsd-core/templates/discussion-log.md": "da4e8e266efdc6c2",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "2e6fd96c2cc26470",
"gsd-core/templates/planner-subagent-prompt.md": "6c9f1b23ee3dc05f",
"gsd-core/templates/project.md": "fae14114f2b79b10",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "b454f96fdf8b1d3d",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "8734f0df4df3a34b",
"gsd-core/templates/state.md": "a45a134631efe3f9",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "85f4d37fcee6852b",
"gsd-core/templates/user-profile.md": "52abe2af968e8533",
"gsd-core/templates/user-setup.md": "1da2382725db080f",
"gsd-core/templates/verification-report.md": "78ab9264ce63ed7e",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "485c4b6673ddf832",
"gsd-core/workflows/add-phase.md": "b2c06b7ed648658c",
"gsd-core/workflows/add-tests.md": "cb6e4492adfcc5d4",
"gsd-core/workflows/add-todo.md": "edd50462079c77d0",
"gsd-core/workflows/ai-integration-phase.md": "5c0eac04bd0ad2d6",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "677638d4081117c5",
"gsd-core/workflows/audit-milestone.md": "41a36d6b6e85612b",
"gsd-core/workflows/audit-uat.md": "e11db0d74c2a7405",
"gsd-core/workflows/autonomous.md": "fa2e85a195c98636",
"gsd-core/workflows/check-todos.md": "27ab86858d04c7a9",
"gsd-core/workflows/cleanup.md": "1c669fc358db3e19",
"gsd-core/workflows/code-review-fix.md": "de6a7e241942be41",
"gsd-core/workflows/code-review.md": "34b6d139d5109f86",
"gsd-core/workflows/complete-milestone.md": "e507b10f26188186",
"gsd-core/workflows/debug.md": "78026708b07bba3b",
"gsd-core/workflows/diagnose-issues.md": "b64b0ba4ab7716e4",
"gsd-core/workflows/discovery-phase.md": "af5ec483093bcede",
"gsd-core/workflows/discuss-phase-assumptions.md": "e7917dda73e3a94f",
"gsd-core/workflows/discuss-phase-power.md": "5c0d1ca6abda0383",
"gsd-core/workflows/discuss-phase.md": "bd4b26ba168bb51f",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "f8ae26ba4e07672b",
"gsd-core/workflows/discuss-phase/modes/all.md": "5ed71228ac96e728",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "da0788f3be7f8105",
"gsd-core/workflows/discuss-phase/modes/auto.md": "e6d4ef26786946ea",
"gsd-core/workflows/discuss-phase/modes/batch.md": "78f6ef61690acb66",
"gsd-core/workflows/discuss-phase/modes/chain.md": "ecdb88a9aa70d5bf",
"gsd-core/workflows/discuss-phase/modes/default.md": "5d12f2593ae4a813",
"gsd-core/workflows/discuss-phase/modes/power.md": "fdc7a728eaaa2261",
"gsd-core/workflows/discuss-phase/modes/text.md": "daf23a04b101ab38",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "da6bf5281bf7d2bf",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "04e4feee14772275",
"gsd-core/workflows/do.md": "ea068f5a797f2178",
"gsd-core/workflows/docs-update.md": "4bbc9fcc8fea78a0",
"gsd-core/workflows/edit-phase.md": "8323bfe10faa0c0a",
"gsd-core/workflows/eval-review.md": "fb3b8244d66972ee",
"gsd-core/workflows/execute-phase.md": "f0697801da646722",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "b1e6588cd32a6f08",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "ab70374e44eb85cd",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "731d2947b623be4f",
"gsd-core/workflows/explore.md": "e6c94f8b6f083109",
"gsd-core/workflows/extract-learnings.md": "13929ce8a04013e0",
"gsd-core/workflows/fast.md": "41a6568b873aef99",
"gsd-core/workflows/forensics.md": "c01da0178fb97b21",
"gsd-core/workflows/graduation.md": "636df3c43e9b3bca",
"gsd-core/workflows/health.md": "2be3dcec0d4865df",
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
"gsd-core/workflows/help/modes/full.md": "7a8c3e17336bd8d0",
"gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69",
"gsd-core/workflows/import.md": "d753481b47934dee",
"gsd-core/workflows/inbox.md": "f2b38be09a2dee08",
"gsd-core/workflows/ingest-docs.md": "731f118200eb2d94",
"gsd-core/workflows/insert-phase.md": "964ca91863a8749a",
"gsd-core/workflows/list-phase-assumptions.md": "e7b5e35c9452e3b3",
"gsd-core/workflows/list-seeds.md": "5a46337f55ae8453",
"gsd-core/workflows/list-workspaces.md": "418570fbc8b938da",
"gsd-core/workflows/manager.md": "2fadda5e3ebd3c4e",
"gsd-core/workflows/map-codebase.md": "415a1c9ce9da3ab8",
"gsd-core/workflows/milestone-summary.md": "25775eeb4e2747be",
"gsd-core/workflows/mvp-phase.md": "b2f6ba5de4c96180",
"gsd-core/workflows/new-milestone.md": "62a85a1d1c7627d6",
"gsd-core/workflows/new-project.md": "f89cd808d75beb36",
"gsd-core/workflows/new-workspace.md": "00162d8c32428d55",
"gsd-core/workflows/next.md": "7cf4607dc8138d1f",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "f8c2842a2217f776",
"gsd-core/workflows/onboard.md": "c8d9795021d4fce6",
"gsd-core/workflows/pause-work.md": "a6e5336c409fdc8b",
"gsd-core/workflows/plan-milestone-gaps.md": "1b43d12812f7bc1e",
"gsd-core/workflows/plan-phase.md": "05b86da6954ee8dd",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "f10975692cbd036e",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261",
"gsd-core/workflows/plan-review-convergence.md": "2057c9018cdb6d20",
"gsd-core/workflows/plant-seed.md": "107bfe8f5b2a7843",
"gsd-core/workflows/pr-branch.md": "ab157cd8e49621dd",
"gsd-core/workflows/profile-user.md": "645f81d80c4775c4",
"gsd-core/workflows/progress.md": "172e4168e326ca61",
"gsd-core/workflows/quick.md": "e1d6700bef26dff1",
"gsd-core/workflows/reapply-patches.md": "becf9728cdb124c4",
"gsd-core/workflows/remove-phase.md": "ada8a0546c686483",
"gsd-core/workflows/remove-workspace.md": "f5dc82bb63e2efa4",
"gsd-core/workflows/resume-project.md": "7f8dc986f0f35d96",
"gsd-core/workflows/review.md": "cb218a57c772a041",
"gsd-core/workflows/scan.md": "e9e28d23375dfe10",
"gsd-core/workflows/secure-phase.md": "d094bed752dd2c94",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "edd858cd6cfddaf1",
"gsd-core/workflows/settings-integrations.md": "3ec4f77c421b87b4",
"gsd-core/workflows/settings.md": "0e3cf91e952b48a2",
"gsd-core/workflows/ship.md": "ab02688abfa65d9e",
"gsd-core/workflows/sketch-wrap-up.md": "888c0548e63197b3",
"gsd-core/workflows/sketch.md": "75ffbd233fd9a762",
"gsd-core/workflows/smart-entry.md": "2ad5b63a9deea0ce",
"gsd-core/workflows/spec-phase.md": "a5f3de15eeb7ce72",
"gsd-core/workflows/spike-wrap-up.md": "458230d4d7c44b09",
"gsd-core/workflows/spike.md": "30d080d99b2555ca",
"gsd-core/workflows/stats.md": "e7852c5d8f2b05a9",
"gsd-core/workflows/sync-skills.md": "dc7b8b015afa4b3b",
"gsd-core/workflows/thread.md": "3b2c560d7189576d",
"gsd-core/workflows/transition.md": "590128488fe2ad66",
"gsd-core/workflows/ui-phase.md": "39da57b4bd093d83",
"gsd-core/workflows/ui-review.md": "c251d4c9a5ad047e",
"gsd-core/workflows/ultraplan-phase.md": "29245758b8497fa0",
"gsd-core/workflows/undo.md": "774615a01c20e4a3",
"gsd-core/workflows/update.md": "7f0d3148d851b8f6",
"gsd-core/workflows/validate-phase.md": "359983cf0b92e6de",
"gsd-core/workflows/verify-phase.md": "b8cca6ef3be502b9",
"gsd-core/workflows/verify-work.md": "c7b27185e935e056",
"hooks/gsd-check-update-worker.js": "c992bbad91d0e994",
"hooks/gsd-check-update.js": "fdd77abe7ef26a2d",
"hooks/gsd-config-reload.js": "96546e0e8bb47904",
"hooks/gsd-context-monitor.js": "6578822a701b2a94",
"hooks/gsd-cursor-post-tool.js": "9168e0a09de1972a",
"hooks/gsd-cursor-pre-tool.js": "873998b25e308c29",
"hooks/gsd-cursor-session-start.js": "c72f669cc24c72e3",
"hooks/gsd-cursor-stop.js": "80de723949cee847",
"hooks/gsd-cursor-subagent-start.js": "699a2da2e3c5763e",
"hooks/gsd-cursor-subagent-stop.js": "4bbf22917da4d389",
"hooks/gsd-ensure-canonical-path.js": "3ce09b366839d324",
"hooks/gsd-graphify-update.sh": "81d716df76159e60",
"hooks/gsd-phase-boundary.sh": "4f3daad099fcdd50",
"hooks/gsd-prompt-guard.js": "696a0f65b9535cd1",
"hooks/gsd-read-guard.js": "54e1dcaaffe47693",
"hooks/gsd-read-injection-scanner.js": "af1d4cbe4ea912ba",
"hooks/gsd-session-state.sh": "e54379ba86bf1b6d",
"hooks/gsd-statusline.js": "69a706d0d86f0c8d",
"hooks/gsd-update-banner.js": "55143a25f978f301",
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
"hooks/gsd-workflow-guard.js": "56414206bc13b3dc",
"hooks/gsd-worktree-path-guard.js": "9734e43bee1d7d2e",
"hooks/lib/cursor-workspace.js": "45061acd75d55a28",
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
"hooks/managed-hooks-registry.cjs": "b63a879b8b3436bf",
"kilo.json": "13151e97ff23c1aa",
"package.json": "dbf8353f77358bc1",
"plugins/gsd-core.js": "eb1ac14ffd7abfae",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7",
"skills/gsd-add-tests/SKILL.md": "addc3a220961a9c7",
"skills/gsd-ai-integration-phase/SKILL.md": "0b1553cb7f4c8f7a",
"skills/gsd-audit-fix/SKILL.md": "2c1f601f2fb52585",
"skills/gsd-audit-milestone/SKILL.md": "739ed755ad84e58e",
"skills/gsd-audit-uat/SKILL.md": "2c450432b6fd1c3e",
"skills/gsd-autonomous/SKILL.md": "37dc7b78ceb74803",
"skills/gsd-capture/SKILL.md": "6536a7dcc4ef6c46",
"skills/gsd-cleanup/SKILL.md": "a578d6536b9cabc3",
"skills/gsd-code-review/SKILL.md": "c0db8e37e7133bd8",
"skills/gsd-complete-milestone/SKILL.md": "048fd8cf3f502433",
"skills/gsd-config/SKILL.md": "5d6f52a964d06e4d",
"skills/gsd-debug/SKILL.md": "f5ca8a5780d89659",
"skills/gsd-discuss-phase/SKILL.md": "d9465728b0582991",
"skills/gsd-docs-update/SKILL.md": "d150afd41a25ec08",
"skills/gsd-eval-review/SKILL.md": "c76022e94ee30cb1",
"skills/gsd-execute-phase/SKILL.md": "e0a4298151e692b3",
"skills/gsd-explore/SKILL.md": "d8e26a5ed95a4ecc",
"skills/gsd-extract-learnings/SKILL.md": "d39269bea995fabc",
"skills/gsd-fast/SKILL.md": "8773badbed73f5b1",
"skills/gsd-forensics/SKILL.md": "68952d0d846737ff",
"skills/gsd-graphify/SKILL.md": "dfe8264197d8e525",
"skills/gsd-health/SKILL.md": "74a68e1c1b310bef",
"skills/gsd-help/SKILL.md": "8d01c91265b6357f",
"skills/gsd-import/SKILL.md": "f76076ae9fbc8b1d",
"skills/gsd-inbox/SKILL.md": "34370c6138415209",
"skills/gsd-ingest-docs/SKILL.md": "f049f06a6ec7da43",
"skills/gsd-manager/SKILL.md": "a37ecdbe32952262",
"skills/gsd-map-codebase/SKILL.md": "e06d6ac1b7632cbe",
"skills/gsd-mempalace-capture/SKILL.md": "ddb5c1322d6237ad",
"skills/gsd-mempalace-recall/SKILL.md": "2091c48e6e986e28",
"skills/gsd-milestone-summary/SKILL.md": "da645171ca2299d8",
"skills/gsd-mvp-phase/SKILL.md": "eeb0ac0f88647475",
"skills/gsd-new-milestone/SKILL.md": "bc8989d97f3161ad",
"skills/gsd-new-project/SKILL.md": "c08047e101dbac9c",
"skills/gsd-next/SKILL.md": "3856471d0f64bf09",
"skills/gsd-ns-context/SKILL.md": "110fb2227bcde535",
"skills/gsd-ns-ideate/SKILL.md": "d093d59a8519decc",
"skills/gsd-ns-manage/SKILL.md": "2756981de613022e",
"skills/gsd-ns-project/SKILL.md": "56d3d8a321d267f8",
"skills/gsd-ns-review/SKILL.md": "680bdd33c882b049",
"skills/gsd-ns-workflow/SKILL.md": "579b7f0dac74e1fb",
"skills/gsd-onboard/SKILL.md": "0e3cc902f44b41b8",
"skills/gsd-pause-work/SKILL.md": "34366b18a392a717",
"skills/gsd-phase/SKILL.md": "64a241d4f8665aa2",
"skills/gsd-plan-phase/SKILL.md": "163fb90e26285762",
"skills/gsd-plan-review-convergence/SKILL.md": "db311b1dbb0024d1",
"skills/gsd-pr-branch/SKILL.md": "a80da6aa95efc50d",
"skills/gsd-profile-user/SKILL.md": "4ac2c5ea45d17a9d",
"skills/gsd-progress/SKILL.md": "493f467c22d55b6b",
"skills/gsd-quick/SKILL.md": "605e596c680cbb1c",
"skills/gsd-resume-work/SKILL.md": "0c92e4a51d1b6d94",
"skills/gsd-review-backlog/SKILL.md": "27a9dbfe92e5d04c",
"skills/gsd-review/SKILL.md": "a967b30f10269e15",
"skills/gsd-secure-phase/SKILL.md": "ceded474164b4e2d",
"skills/gsd-settings/SKILL.md": "4587e4bef7b8942c",
"skills/gsd-ship/SKILL.md": "4ad9695934e069ee",
"skills/gsd-sketch/SKILL.md": "d062bef61ffe98a7",
"skills/gsd-spec-phase/SKILL.md": "749dee6f739b9b44",
"skills/gsd-spike/SKILL.md": "0938ac1386ca4a58",
"skills/gsd-stats/SKILL.md": "25898070fb2a4b20",
"skills/gsd-surface/SKILL.md": "0672169f8292ed7d",
"skills/gsd-thread/SKILL.md": "d5917840279459f1",
"skills/gsd-ui-phase/SKILL.md": "c35f175ccc747d56",
"skills/gsd-ui-review/SKILL.md": "48267dc071481a89",
"skills/gsd-ultraplan-phase/SKILL.md": "5de4d0d88ce11eb3",
"skills/gsd-undo/SKILL.md": "23c275bc4a127bde",
"skills/gsd-update/SKILL.md": "f2ed6c6d4d89c32c",
"skills/gsd-validate-phase/SKILL.md": "62dc6ae62bb38c16",
"skills/gsd-verify-work/SKILL.md": "9b185c0aa2e000a8",
"skills/gsd-workspace/SKILL.md": "f8eac0ef91888629",
"skills/gsd-workstreams/SKILL.md": "44c62598142837b9"
}

View File

@@ -1,443 +0,0 @@
{
".gsd-profile": "0e716a5fef4e6dc1",
".gsd/defaults.json": "69d7d1cb64e02085",
".kimi/hooks/gsd-check-update-worker.js": "6593f80914f4edee",
".kimi/hooks/gsd-check-update.js": "0f8b9e967af103fb",
".kimi/hooks/gsd-config-reload.js": "96546e0e8bb47904",
".kimi/hooks/gsd-context-monitor.js": "4c0535bc269e130e",
".kimi/hooks/gsd-cursor-post-tool.js": "9168e0a09de1972a",
".kimi/hooks/gsd-cursor-pre-tool.js": "873998b25e308c29",
".kimi/hooks/gsd-cursor-session-start.js": "c72f669cc24c72e3",
".kimi/hooks/gsd-cursor-stop.js": "80de723949cee847",
".kimi/hooks/gsd-cursor-subagent-start.js": "699a2da2e3c5763e",
".kimi/hooks/gsd-cursor-subagent-stop.js": "4bbf22917da4d389",
".kimi/hooks/gsd-ensure-canonical-path.js": "353a5d7bf6697acb",
".kimi/hooks/gsd-graphify-update.sh": "81d716df76159e60",
".kimi/hooks/gsd-phase-boundary.sh": "4f3daad099fcdd50",
".kimi/hooks/gsd-prompt-guard.js": "696a0f65b9535cd1",
".kimi/hooks/gsd-read-guard.js": "54e1dcaaffe47693",
".kimi/hooks/gsd-read-injection-scanner.js": "c97a8a46a07058b2",
".kimi/hooks/gsd-session-state.sh": "e54379ba86bf1b6d",
".kimi/hooks/gsd-statusline.js": "9a92a1986182921a",
".kimi/hooks/gsd-update-banner.js": "55143a25f978f301",
".kimi/hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
".kimi/hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
".kimi/hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
".kimi/hooks/gsd-workflow-guard.js": "56414206bc13b3dc",
".kimi/hooks/gsd-worktree-path-guard.js": "d00a75505429355c",
".kimi/hooks/lib/cursor-workspace.js": "45061acd75d55a28",
".kimi/hooks/lib/git-cmd.js": "268ba15992ca0b23",
".kimi/hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
".kimi/hooks/managed-hooks-registry.cjs": "08ec2585a3f8f132",
".kimi/package.json": "dbf8353f77358bc1",
"agents/gsd-advisor-researcher.md": "f1c4a47d3d8cea72",
"agents/gsd-ai-researcher.md": "2f2da4b89d445860",
"agents/gsd-assumptions-analyzer.md": "f11a80795163bb5d",
"agents/gsd-code-fixer.md": "78549833f0411b0c",
"agents/gsd-code-reviewer.md": "7d94fe8bfa6661aa",
"agents/gsd-codebase-mapper.md": "3941bfc98c091018",
"agents/gsd-debug-session-manager.md": "7065bea4cedab2f6",
"agents/gsd-debugger.md": "7840ed78e3f662a8",
"agents/gsd-doc-classifier.md": "146acf4d176134b5",
"agents/gsd-doc-synthesizer.md": "b1f5e2eb28fa3659",
"agents/gsd-doc-verifier.md": "7ed4d9611f678a95",
"agents/gsd-doc-writer.md": "3ed3dc255d7eca8d",
"agents/gsd-domain-researcher.md": "049f588663814fa2",
"agents/gsd-eval-auditor.md": "54870d3b07433525",
"agents/gsd-eval-planner.md": "552e9fa164c51ce8",
"agents/gsd-executor.md": "ab4f1cbca7c22663",
"agents/gsd-framework-selector.md": "8a795f230436ad2e",
"agents/gsd-integration-checker.md": "c1760a0bbd4f7bf5",
"agents/gsd-intel-updater.md": "944f1d903e2e9e09",
"agents/gsd-mempalace-curator.md": "399e90e473b33814",
"agents/gsd-nyquist-auditor.md": "f2232a1be0835709",
"agents/gsd-pattern-mapper.md": "68ecefd60811a669",
"agents/gsd-phase-researcher.md": "2235f61764d8e969",
"agents/gsd-plan-checker.md": "f3caf89525709445",
"agents/gsd-planner.md": "88acabd0285bb25b",
"agents/gsd-project-researcher.md": "f572892f138734ff",
"agents/gsd-research-synthesizer.md": "29949bf3f049a8f1",
"agents/gsd-roadmapper.md": "840ac933e3b094f9",
"agents/gsd-security-auditor.md": "4b86fa11ebda981e",
"agents/gsd-ui-auditor.md": "76f446c50edf81f8",
"agents/gsd-ui-checker.md": "15949ccab982b71c",
"agents/gsd-ui-researcher.md": "0e8ec8509d476904",
"agents/gsd-user-profiler.md": "ca3bf75581f211a0",
"agents/gsd-verifier.md": "cd5bea62bf704829",
"gsd-core/.gsd-runtime": "9d2afd32abbcfa97",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "51bc64467ab30f62",
"gsd-core/bin/gsd-tools.cjs": "e1996ac045ff5fde",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "5ab875054b1adda9",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "f827de93dde124eb",
"gsd-core/references/api-coverage.md": "913654a1cdb3baf1",
"gsd-core/references/artifact-types.md": "a6d2e1f9453ffbf5",
"gsd-core/references/autonomous-smart-discuss.md": "2fc710cde0ec7785",
"gsd-core/references/checkpoints.md": "c2fe89c42ca88349",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "6749084395889c6a",
"gsd-core/references/continuation-format.md": "ce73e57d053ab8a7",
"gsd-core/references/debugger-bug-taxonomy.md": "78fb8c1711acc971",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "fdf55a6cee9b1792",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "67d019d23e17f934",
"gsd-core/references/domain-probes.md": "62d23ed1992c48a9",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "5687eba25a078561",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242",
"gsd-core/references/execute-phase-quota-recovery.md": "c4ca0ee3875b6e02",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "e69f5993ab944d80",
"gsd-core/references/gates.md": "bd79c7f90c8cb8d7",
"gsd-core/references/git-integration.md": "77bf9dff38b2c9d4",
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
"gsd-core/references/gsd-run-resolver.md": "e71eb728b84641b1",
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "3a05d03ea27c3a31",
"gsd-core/references/model-profiles.md": "e067ad3df6770db1",
"gsd-core/references/mvp-concepts.md": "72f7e8b1f8ae7118",
"gsd-core/references/offer-next.md": "689740e4c2ed16f4",
"gsd-core/references/phase-argument-parsing.md": "e5bbb985f3bc3e34",
"gsd-core/references/planner-antipatterns.md": "013ad54062399dad",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "6aeffd9097e25e22",
"gsd-core/references/planner-guidance.md": "96486cac2f7885e6",
"gsd-core/references/planner-human-verify-mode.md": "56d05e841630b3f4",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "d75786c2d3e6ff5c",
"gsd-core/references/planner-reviews.md": "dda0193a0fbd4947",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "ab3b698fe23bab9b",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "605dc3f5a118ff3b",
"gsd-core/references/project-skills-discovery.md": "c155e03dce8dc3c2",
"gsd-core/references/questioning.md": "a8c988cab05f4651",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "62930e66cc979c1a",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "ae64e44f2f132bc2",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "0bbbb0735b6080fa",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "5e400dc05a15e972",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "ef519bff8c8bd572",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "41069529ef776e39",
"gsd-core/references/ui-brand.md": "48717bcfcd63bd27",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "6a1245050b21df01",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "b50416fe57c1b321",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "8213de9bd62283b6",
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
"gsd-core/references/workstream-flag.md": "ca99ca79e716f0f5",
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
"gsd-core/templates/DEBUG.md": "c8768312f4c1e438",
"gsd-core/templates/README.md": "93d3426fc64e2c12",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "9e296471b97ebcec",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "6f0fe4214dff6dd1",
"gsd-core/templates/claude-md.md": "d1d333e4b963c0d2",
"gsd-core/templates/codebase/architecture.md": "6be88214162fdd89",
"gsd-core/templates/codebase/concerns.md": "efa26d1fb5132f25",
"gsd-core/templates/codebase/conventions.md": "c2e07698dad6b364",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "222997133232a6f5",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "69b01e7909ea3f66",
"gsd-core/templates/continue-here.md": "f522a51b6895fba8",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "920656683dedb869",
"gsd-core/templates/dev-preferences.md": "88d0a65ec0993a3a",
"gsd-core/templates/discovery.md": "9a0e0935cc825dbc",
"gsd-core/templates/discussion-log.md": "cac1b48ec0f4dcb8",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "b811bf951092df2f",
"gsd-core/templates/planner-subagent-prompt.md": "ebf29dbb27042370",
"gsd-core/templates/project.md": "4f311fb1b05b823b",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "88ce0920417091d0",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "26d55bce940f0288",
"gsd-core/templates/state.md": "4d123aa6cea167fe",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "85f4d37fcee6852b",
"gsd-core/templates/user-profile.md": "20749f23e4c413fc",
"gsd-core/templates/user-setup.md": "78b7d718b6e8d67c",
"gsd-core/templates/verification-report.md": "dd5faa6254183731",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "1bc7377b105194fc",
"gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8",
"gsd-core/workflows/add-tests.md": "7e7268602f9e1b2a",
"gsd-core/workflows/add-todo.md": "5dc04cfaa0b6b072",
"gsd-core/workflows/ai-integration-phase.md": "308378c9044a52e1",
"gsd-core/workflows/analyze-dependencies.md": "52942af10f140717",
"gsd-core/workflows/audit-fix.md": "7650bcb334e622a6",
"gsd-core/workflows/audit-milestone.md": "6174b6f87844973c",
"gsd-core/workflows/audit-uat.md": "fcfbec501620b564",
"gsd-core/workflows/autonomous.md": "aed5e67104346cc2",
"gsd-core/workflows/check-todos.md": "c484e472cff0e4e3",
"gsd-core/workflows/cleanup.md": "df79d1dc7b84d736",
"gsd-core/workflows/code-review-fix.md": "9fef1cf740c7c155",
"gsd-core/workflows/code-review.md": "22b53c0d29508d57",
"gsd-core/workflows/complete-milestone.md": "8f98d7b05793cf4a",
"gsd-core/workflows/debug.md": "3f0218b051c1afb1",
"gsd-core/workflows/diagnose-issues.md": "8a93b2aece3d79f0",
"gsd-core/workflows/discovery-phase.md": "0aa8d8d872b53858",
"gsd-core/workflows/discuss-phase-assumptions.md": "9c8b6b66df026e33",
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
"gsd-core/workflows/discuss-phase.md": "0c0465ba668adb33",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653",
"gsd-core/workflows/discuss-phase/modes/all.md": "fa70d79066562e54",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "da0788f3be7f8105",
"gsd-core/workflows/discuss-phase/modes/auto.md": "d06f0bea2ba0b240",
"gsd-core/workflows/discuss-phase/modes/batch.md": "6946597770e2d448",
"gsd-core/workflows/discuss-phase/modes/chain.md": "5502a67de7776853",
"gsd-core/workflows/discuss-phase/modes/default.md": "67d1b67f61f03966",
"gsd-core/workflows/discuss-phase/modes/power.md": "fdc7a728eaaa2261",
"gsd-core/workflows/discuss-phase/modes/text.md": "da6d45207da4a988",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "eeebda60636d1ad0",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "90df4f1fe248cdf3",
"gsd-core/workflows/docs-update.md": "fba7329f525c9463",
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
"gsd-core/workflows/eval-review.md": "c2933259ff7fb6ac",
"gsd-core/workflows/execute-phase.md": "87111d41f6498208",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "f7782680c2b8ad6b",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "ab70374e44eb85cd",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "74de71f01739f7ac",
"gsd-core/workflows/explore.md": "3f3b4f83e23349bc",
"gsd-core/workflows/extract-learnings.md": "ab26f2cbb14efef2",
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
"gsd-core/workflows/forensics.md": "0d500a3f5ab26913",
"gsd-core/workflows/graduation.md": "973dcebcd17e1b10",
"gsd-core/workflows/health.md": "c25b5e5f62874c31",
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
"gsd-core/workflows/help/modes/full.md": "884a607679b95d8c",
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
"gsd-core/workflows/import.md": "57abe514a9b0f6ac",
"gsd-core/workflows/inbox.md": "a7d439981775bc29",
"gsd-core/workflows/ingest-docs.md": "781799b47d282b37",
"gsd-core/workflows/insert-phase.md": "08dca838d831bb5b",
"gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3",
"gsd-core/workflows/list-seeds.md": "b687f2a843032d65",
"gsd-core/workflows/list-workspaces.md": "7f94e18b5c549453",
"gsd-core/workflows/manager.md": "c18fab593344253d",
"gsd-core/workflows/map-codebase.md": "51aebfe0523f3bcf",
"gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043",
"gsd-core/workflows/mvp-phase.md": "58a952b4715db283",
"gsd-core/workflows/new-milestone.md": "8164a9abc301f143",
"gsd-core/workflows/new-project.md": "8d33ff0a282a2a46",
"gsd-core/workflows/new-workspace.md": "bbeb706c7a697617",
"gsd-core/workflows/next.md": "4e1eb6b46d15798d",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "5a99eb396c744619",
"gsd-core/workflows/onboard.md": "f29c4fbef3b473fd",
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
"gsd-core/workflows/plan-phase.md": "8c25006c81b99eed",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5",
"gsd-core/workflows/plan-review-convergence.md": "db69460dd4df0d29",
"gsd-core/workflows/plant-seed.md": "9596db80ab282c6f",
"gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b",
"gsd-core/workflows/profile-user.md": "37af07833c81a0bd",
"gsd-core/workflows/progress.md": "46c83ad61b3c4a84",
"gsd-core/workflows/quick.md": "fcc563eedb118943",
"gsd-core/workflows/reapply-patches.md": "39050f72601aec89",
"gsd-core/workflows/remove-phase.md": "df9a45f0b1880999",
"gsd-core/workflows/remove-workspace.md": "f67860c795fb4bfe",
"gsd-core/workflows/resume-project.md": "f28da1200e4545f4",
"gsd-core/workflows/review.md": "8724993cbc91bcc5",
"gsd-core/workflows/scan.md": "0583dac337623f82",
"gsd-core/workflows/secure-phase.md": "00225810eaed265b",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44",
"gsd-core/workflows/settings-integrations.md": "effcef778d4a855f",
"gsd-core/workflows/settings.md": "85ceb482dc713169",
"gsd-core/workflows/ship.md": "ca94c87c80a70c27",
"gsd-core/workflows/sketch-wrap-up.md": "b767a1d3db129a8a",
"gsd-core/workflows/sketch.md": "5f0a7d3640cdff54",
"gsd-core/workflows/smart-entry.md": "004b4060eab97cb9",
"gsd-core/workflows/spec-phase.md": "fa8669b75392cf6c",
"gsd-core/workflows/spike-wrap-up.md": "da0dcb252c54fa82",
"gsd-core/workflows/spike.md": "a51eaa05bd40e3cf",
"gsd-core/workflows/stats.md": "76a42cbeaf6007c2",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "927e7eeefd2fcf5c",
"gsd-core/workflows/transition.md": "aea486bb7a0e80e7",
"gsd-core/workflows/ui-phase.md": "e262bcd081fab253",
"gsd-core/workflows/ui-review.md": "387f7cefc849dba1",
"gsd-core/workflows/ultraplan-phase.md": "0fb8291153e3937d",
"gsd-core/workflows/undo.md": "1712417bade30b30",
"gsd-core/workflows/update.md": "04cef644f58f24f7",
"gsd-core/workflows/validate-phase.md": "171ff4aa9b392475",
"gsd-core/workflows/verify-phase.md": "d26a2c3269340caf",
"gsd-core/workflows/verify-work.md": "bc9dcabfc5be2e81",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7",
"skills/gsd-add-tests/SKILL.md": "9ca6e30d5db6a6ad",
"skills/gsd-ai-integration-phase/SKILL.md": "da4ae7d9a40e8cf1",
"skills/gsd-audit-fix/SKILL.md": "237d305c47306488",
"skills/gsd-audit-milestone/SKILL.md": "98a151b178864aa5",
"skills/gsd-audit-uat/SKILL.md": "2a8bd6b7f04812a7",
"skills/gsd-autonomous/SKILL.md": "935ac2fcb4761b82",
"skills/gsd-capture/SKILL.md": "240f21aa797cdf6b",
"skills/gsd-cleanup/SKILL.md": "13db60637c9eb3df",
"skills/gsd-code-review/SKILL.md": "70e97fb3c1bc3481",
"skills/gsd-complete-milestone/SKILL.md": "d848ff449f33913b",
"skills/gsd-config/SKILL.md": "c4fe0acbcc31ce80",
"skills/gsd-debug/SKILL.md": "52128dc1598d50bd",
"skills/gsd-discuss-phase/SKILL.md": "4b0144358b18d76e",
"skills/gsd-docs-update/SKILL.md": "7f055c7670d76ddc",
"skills/gsd-eval-review/SKILL.md": "211ea8dac477167e",
"skills/gsd-execute-phase/SKILL.md": "b8bb25d57570d784",
"skills/gsd-explore/SKILL.md": "782f037fe0729c2e",
"skills/gsd-extract-learnings/SKILL.md": "837e58da3df453e8",
"skills/gsd-fast/SKILL.md": "77bd35a9d540054e",
"skills/gsd-forensics/SKILL.md": "a367f70c3fc92f37",
"skills/gsd-graphify/SKILL.md": "186094e3fb368335",
"skills/gsd-health/SKILL.md": "741a7c6e887a232f",
"skills/gsd-help/SKILL.md": "eb28c85cfdcc16bd",
"skills/gsd-import/SKILL.md": "766932cce8d8a17e",
"skills/gsd-inbox/SKILL.md": "3bf4e410df04cb77",
"skills/gsd-ingest-docs/SKILL.md": "6139d3e98a634745",
"skills/gsd-manager/SKILL.md": "4f02cf2b27d360f8",
"skills/gsd-map-codebase/SKILL.md": "49c49fc4ff88b8c1",
"skills/gsd-mempalace-capture/SKILL.md": "aeb01fa8be356ba8",
"skills/gsd-mempalace-recall/SKILL.md": "c6e0195e55cd934c",
"skills/gsd-milestone-summary/SKILL.md": "d2f96bb139402a7a",
"skills/gsd-mvp-phase/SKILL.md": "fe7e70a5296c10dc",
"skills/gsd-new-milestone/SKILL.md": "729100f0360f3cc0",
"skills/gsd-new-project/SKILL.md": "7ef91103638c4736",
"skills/gsd-next/SKILL.md": "bd417a9df6d0b2fb",
"skills/gsd-ns-context/SKILL.md": "89f5bffe6702c0c5",
"skills/gsd-ns-ideate/SKILL.md": "e0c0420f6878906a",
"skills/gsd-ns-manage/SKILL.md": "b7fbe29e45e75f54",
"skills/gsd-ns-project/SKILL.md": "fcb8a93ade9ecc72",
"skills/gsd-ns-review/SKILL.md": "2ff62330379f947f",
"skills/gsd-ns-workflow/SKILL.md": "86272fd655c206bc",
"skills/gsd-onboard/SKILL.md": "814509644f2dd7da",
"skills/gsd-pause-work/SKILL.md": "86886de012e27314",
"skills/gsd-phase/SKILL.md": "7692fa5a0821e51e",
"skills/gsd-plan-phase/SKILL.md": "8038d698f8de6aad",
"skills/gsd-plan-review-convergence/SKILL.md": "28dc35da86b93b10",
"skills/gsd-pr-branch/SKILL.md": "b51ca03728fd5e79",
"skills/gsd-profile-user/SKILL.md": "4a53d59bc19e3f17",
"skills/gsd-progress/SKILL.md": "b0a206e0ad93bf60",
"skills/gsd-quick/SKILL.md": "faf4f26a707fe212",
"skills/gsd-resume-work/SKILL.md": "78a048666a26016a",
"skills/gsd-review-backlog/SKILL.md": "ffc6216cfb6c3002",
"skills/gsd-review/SKILL.md": "6d1bbc8a6184b78a",
"skills/gsd-secure-phase/SKILL.md": "3dc6088c9889d5bb",
"skills/gsd-settings/SKILL.md": "4615c7f527403f9c",
"skills/gsd-ship/SKILL.md": "993a34f93d7bda8c",
"skills/gsd-sketch/SKILL.md": "87f28aee46e5d06e",
"skills/gsd-spec-phase/SKILL.md": "443faa42c1c8cd8c",
"skills/gsd-spike/SKILL.md": "558c0149816f111a",
"skills/gsd-stats/SKILL.md": "1ecd859ba893f7b9",
"skills/gsd-surface/SKILL.md": "68d58321293942f0",
"skills/gsd-thread/SKILL.md": "78e6f1c56c629942",
"skills/gsd-ui-phase/SKILL.md": "cc63649847cc2e50",
"skills/gsd-ui-review/SKILL.md": "18ab050b4723f9a7",
"skills/gsd-ultraplan-phase/SKILL.md": "fb49cef690fb4673",
"skills/gsd-undo/SKILL.md": "a1ab63a1e875ef24",
"skills/gsd-update/SKILL.md": "6ef33a94caa8f63e",
"skills/gsd-validate-phase/SKILL.md": "d502ca602526ceab",
"skills/gsd-verify-work/SKILL.md": "136debbb14db2086",
"skills/gsd-workspace/SKILL.md": "9951bff5391884f8",
"skills/gsd-workstreams/SKILL.md": "cd2ed0019f00302a"
}

View File

@@ -1,479 +0,0 @@
{
".gsd-profile": "0e716a5fef4e6dc1",
".gsd/defaults.json": "fea73a3ad95e3454",
".kimi/hooks/gsd-check-update-worker.js": "6593f80914f4edee",
".kimi/hooks/gsd-check-update.js": "aac7612ee04ff5fe",
".kimi/hooks/gsd-config-reload.js": "96546e0e8bb47904",
".kimi/hooks/gsd-context-monitor.js": "4c0535bc269e130e",
".kimi/hooks/gsd-cursor-post-tool.js": "9168e0a09de1972a",
".kimi/hooks/gsd-cursor-pre-tool.js": "873998b25e308c29",
".kimi/hooks/gsd-cursor-session-start.js": "c72f669cc24c72e3",
".kimi/hooks/gsd-cursor-stop.js": "80de723949cee847",
".kimi/hooks/gsd-cursor-subagent-start.js": "699a2da2e3c5763e",
".kimi/hooks/gsd-cursor-subagent-stop.js": "4bbf22917da4d389",
".kimi/hooks/gsd-ensure-canonical-path.js": "8bd016237c88b738",
".kimi/hooks/gsd-graphify-update.sh": "81d716df76159e60",
".kimi/hooks/gsd-phase-boundary.sh": "4f3daad099fcdd50",
".kimi/hooks/gsd-prompt-guard.js": "696a0f65b9535cd1",
".kimi/hooks/gsd-read-guard.js": "54e1dcaaffe47693",
".kimi/hooks/gsd-read-injection-scanner.js": "c97a8a46a07058b2",
".kimi/hooks/gsd-session-state.sh": "e54379ba86bf1b6d",
".kimi/hooks/gsd-statusline.js": "fb90ca297b60bddf",
".kimi/hooks/gsd-update-banner.js": "55143a25f978f301",
".kimi/hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
".kimi/hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
".kimi/hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
".kimi/hooks/gsd-workflow-guard.js": "56414206bc13b3dc",
".kimi/hooks/gsd-worktree-path-guard.js": "d00a75505429355c",
".kimi/hooks/lib/cursor-workspace.js": "45061acd75d55a28",
".kimi/hooks/lib/git-cmd.js": "268ba15992ca0b23",
".kimi/hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
".kimi/hooks/managed-hooks-registry.cjs": "08ec2585a3f8f132",
".kimi/package.json": "dbf8353f77358bc1",
"agents/gsd.md": "60fee7782ae4f2c6",
"agents/gsd.yaml": "b5f16c9fcf92cbff",
"agents/subagents/gsd-advisor-researcher.md": "81bdc6cbd8fcde40",
"agents/subagents/gsd-advisor-researcher.yaml": "662ced4837207406",
"agents/subagents/gsd-ai-researcher.md": "f4cd2f17d2c3e35f",
"agents/subagents/gsd-ai-researcher.yaml": "59edec2a11eb0a27",
"agents/subagents/gsd-assumptions-analyzer.md": "507b93a7d3375ad3",
"agents/subagents/gsd-assumptions-analyzer.yaml": "e7da772d8c7e3723",
"agents/subagents/gsd-code-fixer.md": "9a397598c2df98f3",
"agents/subagents/gsd-code-fixer.yaml": "41147d668c7e75cb",
"agents/subagents/gsd-code-reviewer.md": "27cee6e8adae57da",
"agents/subagents/gsd-code-reviewer.yaml": "5f2398f56018f50d",
"agents/subagents/gsd-codebase-mapper.md": "91fc76ecb02bbc30",
"agents/subagents/gsd-codebase-mapper.yaml": "bce1c6d15f55c477",
"agents/subagents/gsd-debug-session-manager.md": "089b27a1ddc520bd",
"agents/subagents/gsd-debug-session-manager.yaml": "aab147717b5082e7",
"agents/subagents/gsd-debugger.md": "2021c72a39d56fe5",
"agents/subagents/gsd-debugger.yaml": "6d02d7feb90cad43",
"agents/subagents/gsd-doc-classifier.md": "632dc6c61bafa63e",
"agents/subagents/gsd-doc-classifier.yaml": "a4e9cf7025b57503",
"agents/subagents/gsd-doc-synthesizer.md": "5ab76355a13557be",
"agents/subagents/gsd-doc-synthesizer.yaml": "b4cfc60e11571632",
"agents/subagents/gsd-doc-verifier.md": "6b6eb3998d2167c8",
"agents/subagents/gsd-doc-verifier.yaml": "7200c09cefcd7667",
"agents/subagents/gsd-doc-writer.md": "7021d4512cd1afac",
"agents/subagents/gsd-doc-writer.yaml": "166fa569d11adb9f",
"agents/subagents/gsd-domain-researcher.md": "c29b96a2c40f6e96",
"agents/subagents/gsd-domain-researcher.yaml": "269e21863e94f29f",
"agents/subagents/gsd-eval-auditor.md": "2de50778b9b5a219",
"agents/subagents/gsd-eval-auditor.yaml": "e3d868bd5fefe938",
"agents/subagents/gsd-eval-planner.md": "70f8c5727bfb9876",
"agents/subagents/gsd-eval-planner.yaml": "df8499f7af297ec2",
"agents/subagents/gsd-executor.md": "6cbab4fe3103856a",
"agents/subagents/gsd-executor.yaml": "e29422986636fd64",
"agents/subagents/gsd-framework-selector.md": "a15b7aa1e0576e16",
"agents/subagents/gsd-framework-selector.yaml": "fb52c31cde27b0e3",
"agents/subagents/gsd-integration-checker.md": "6939640ba16c3f3b",
"agents/subagents/gsd-integration-checker.yaml": "3500c65ccbbe432d",
"agents/subagents/gsd-intel-updater.md": "1964fb57cf27be8d",
"agents/subagents/gsd-intel-updater.yaml": "01445ee99bec4b31",
"agents/subagents/gsd-mempalace-curator.md": "62b7c34d6c33ed0b",
"agents/subagents/gsd-mempalace-curator.yaml": "28dd095c371ada3b",
"agents/subagents/gsd-nyquist-auditor.md": "d9dbd1e92e2598c2",
"agents/subagents/gsd-nyquist-auditor.yaml": "48ad300fa775dd5d",
"agents/subagents/gsd-pattern-mapper.md": "eb2d4e838aaeb10c",
"agents/subagents/gsd-pattern-mapper.yaml": "d1e537e77f953fd4",
"agents/subagents/gsd-phase-researcher.md": "897080d9383bd176",
"agents/subagents/gsd-phase-researcher.yaml": "7633c8e82617e7cc",
"agents/subagents/gsd-plan-checker.md": "410639f4c4f16e7a",
"agents/subagents/gsd-plan-checker.yaml": "8295181071121db8",
"agents/subagents/gsd-planner.md": "ddf881be44151dbd",
"agents/subagents/gsd-planner.yaml": "2e83ee194bcd7fbd",
"agents/subagents/gsd-project-researcher.md": "39bc2ec5a8b18283",
"agents/subagents/gsd-project-researcher.yaml": "ce12586b0347e2dc",
"agents/subagents/gsd-research-synthesizer.md": "d384c27f7f045ecd",
"agents/subagents/gsd-research-synthesizer.yaml": "898104ab3bb0b81a",
"agents/subagents/gsd-roadmapper.md": "62359d6876022b48",
"agents/subagents/gsd-roadmapper.yaml": "679772cb14f3a015",
"agents/subagents/gsd-security-auditor.md": "c6108af63b5f481d",
"agents/subagents/gsd-security-auditor.yaml": "924783f1da6777b4",
"agents/subagents/gsd-ui-auditor.md": "e4a319070959ebbc",
"agents/subagents/gsd-ui-auditor.yaml": "3fc98c1d9e8f10fd",
"agents/subagents/gsd-ui-checker.md": "07cd4e382ca55994",
"agents/subagents/gsd-ui-checker.yaml": "c42316006654fae3",
"agents/subagents/gsd-ui-researcher.md": "974f7ecca58c7afa",
"agents/subagents/gsd-ui-researcher.yaml": "15e215874bc2c37d",
"agents/subagents/gsd-user-profiler.md": "c16f94e09e433394",
"agents/subagents/gsd-user-profiler.yaml": "645826a29d079159",
"agents/subagents/gsd-verifier.md": "862e8f8dcb059014",
"agents/subagents/gsd-verifier.yaml": "2d2bd6b37626f382",
"gsd-core/.gsd-runtime": "cb556f5d5cee2779",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "51bc64467ab30f62",
"gsd-core/bin/gsd-tools.cjs": "e1996ac045ff5fde",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "5ab875054b1adda9",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "f827de93dde124eb",
"gsd-core/references/api-coverage.md": "913654a1cdb3baf1",
"gsd-core/references/artifact-types.md": "a6d2e1f9453ffbf5",
"gsd-core/references/autonomous-smart-discuss.md": "2fc710cde0ec7785",
"gsd-core/references/checkpoints.md": "c2fe89c42ca88349",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "6749084395889c6a",
"gsd-core/references/continuation-format.md": "ce73e57d053ab8a7",
"gsd-core/references/debugger-bug-taxonomy.md": "78fb8c1711acc971",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "fdf55a6cee9b1792",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "67d019d23e17f934",
"gsd-core/references/domain-probes.md": "62d23ed1992c48a9",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "5687eba25a078561",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242",
"gsd-core/references/execute-phase-quota-recovery.md": "c4ca0ee3875b6e02",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "e69f5993ab944d80",
"gsd-core/references/gates.md": "bd79c7f90c8cb8d7",
"gsd-core/references/git-integration.md": "77bf9dff38b2c9d4",
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
"gsd-core/references/gsd-run-resolver.md": "e71eb728b84641b1",
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "3a05d03ea27c3a31",
"gsd-core/references/model-profiles.md": "e067ad3df6770db1",
"gsd-core/references/mvp-concepts.md": "72f7e8b1f8ae7118",
"gsd-core/references/offer-next.md": "689740e4c2ed16f4",
"gsd-core/references/phase-argument-parsing.md": "e5bbb985f3bc3e34",
"gsd-core/references/planner-antipatterns.md": "013ad54062399dad",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "6aeffd9097e25e22",
"gsd-core/references/planner-guidance.md": "96486cac2f7885e6",
"gsd-core/references/planner-human-verify-mode.md": "56d05e841630b3f4",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "d75786c2d3e6ff5c",
"gsd-core/references/planner-reviews.md": "dda0193a0fbd4947",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "ab3b698fe23bab9b",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "605dc3f5a118ff3b",
"gsd-core/references/project-skills-discovery.md": "c155e03dce8dc3c2",
"gsd-core/references/questioning.md": "a8c988cab05f4651",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "62930e66cc979c1a",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "ae64e44f2f132bc2",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "0bbbb0735b6080fa",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "5e400dc05a15e972",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "ef519bff8c8bd572",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "41069529ef776e39",
"gsd-core/references/ui-brand.md": "48717bcfcd63bd27",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "6a1245050b21df01",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "b50416fe57c1b321",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "8213de9bd62283b6",
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
"gsd-core/references/workstream-flag.md": "ca99ca79e716f0f5",
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
"gsd-core/templates/DEBUG.md": "c8768312f4c1e438",
"gsd-core/templates/README.md": "93d3426fc64e2c12",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "9e296471b97ebcec",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "6f0fe4214dff6dd1",
"gsd-core/templates/claude-md.md": "d1d333e4b963c0d2",
"gsd-core/templates/codebase/architecture.md": "6be88214162fdd89",
"gsd-core/templates/codebase/concerns.md": "efa26d1fb5132f25",
"gsd-core/templates/codebase/conventions.md": "c2e07698dad6b364",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "222997133232a6f5",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "69b01e7909ea3f66",
"gsd-core/templates/continue-here.md": "f522a51b6895fba8",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "920656683dedb869",
"gsd-core/templates/dev-preferences.md": "88d0a65ec0993a3a",
"gsd-core/templates/discovery.md": "9a0e0935cc825dbc",
"gsd-core/templates/discussion-log.md": "cac1b48ec0f4dcb8",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "b811bf951092df2f",
"gsd-core/templates/planner-subagent-prompt.md": "ebf29dbb27042370",
"gsd-core/templates/project.md": "4f311fb1b05b823b",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "88ce0920417091d0",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "26d55bce940f0288",
"gsd-core/templates/state.md": "4d123aa6cea167fe",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "85f4d37fcee6852b",
"gsd-core/templates/user-profile.md": "20749f23e4c413fc",
"gsd-core/templates/user-setup.md": "78b7d718b6e8d67c",
"gsd-core/templates/verification-report.md": "dd5faa6254183731",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "1bc7377b105194fc",
"gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8",
"gsd-core/workflows/add-tests.md": "7e7268602f9e1b2a",
"gsd-core/workflows/add-todo.md": "5dc04cfaa0b6b072",
"gsd-core/workflows/ai-integration-phase.md": "308378c9044a52e1",
"gsd-core/workflows/analyze-dependencies.md": "52942af10f140717",
"gsd-core/workflows/audit-fix.md": "7650bcb334e622a6",
"gsd-core/workflows/audit-milestone.md": "6174b6f87844973c",
"gsd-core/workflows/audit-uat.md": "fcfbec501620b564",
"gsd-core/workflows/autonomous.md": "aed5e67104346cc2",
"gsd-core/workflows/check-todos.md": "c484e472cff0e4e3",
"gsd-core/workflows/cleanup.md": "df79d1dc7b84d736",
"gsd-core/workflows/code-review-fix.md": "9fef1cf740c7c155",
"gsd-core/workflows/code-review.md": "22b53c0d29508d57",
"gsd-core/workflows/complete-milestone.md": "8f98d7b05793cf4a",
"gsd-core/workflows/debug.md": "3f0218b051c1afb1",
"gsd-core/workflows/diagnose-issues.md": "232f9e87bf60d8b4",
"gsd-core/workflows/discovery-phase.md": "0aa8d8d872b53858",
"gsd-core/workflows/discuss-phase-assumptions.md": "9c8b6b66df026e33",
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
"gsd-core/workflows/discuss-phase.md": "0c0465ba668adb33",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653",
"gsd-core/workflows/discuss-phase/modes/all.md": "fa70d79066562e54",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "da0788f3be7f8105",
"gsd-core/workflows/discuss-phase/modes/auto.md": "d06f0bea2ba0b240",
"gsd-core/workflows/discuss-phase/modes/batch.md": "6946597770e2d448",
"gsd-core/workflows/discuss-phase/modes/chain.md": "5502a67de7776853",
"gsd-core/workflows/discuss-phase/modes/default.md": "67d1b67f61f03966",
"gsd-core/workflows/discuss-phase/modes/power.md": "fdc7a728eaaa2261",
"gsd-core/workflows/discuss-phase/modes/text.md": "da6d45207da4a988",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "eeebda60636d1ad0",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "90df4f1fe248cdf3",
"gsd-core/workflows/docs-update.md": "fba7329f525c9463",
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
"gsd-core/workflows/eval-review.md": "c2933259ff7fb6ac",
"gsd-core/workflows/execute-phase.md": "357e82b83fb4719d",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "f7782680c2b8ad6b",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "ab70374e44eb85cd",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "74de71f01739f7ac",
"gsd-core/workflows/explore.md": "3f3b4f83e23349bc",
"gsd-core/workflows/extract-learnings.md": "ab26f2cbb14efef2",
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
"gsd-core/workflows/forensics.md": "0d500a3f5ab26913",
"gsd-core/workflows/graduation.md": "973dcebcd17e1b10",
"gsd-core/workflows/health.md": "c25b5e5f62874c31",
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
"gsd-core/workflows/help/modes/full.md": "884a607679b95d8c",
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
"gsd-core/workflows/import.md": "57abe514a9b0f6ac",
"gsd-core/workflows/inbox.md": "a7d439981775bc29",
"gsd-core/workflows/ingest-docs.md": "781799b47d282b37",
"gsd-core/workflows/insert-phase.md": "08dca838d831bb5b",
"gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3",
"gsd-core/workflows/list-seeds.md": "b687f2a843032d65",
"gsd-core/workflows/list-workspaces.md": "7f94e18b5c549453",
"gsd-core/workflows/manager.md": "c18fab593344253d",
"gsd-core/workflows/map-codebase.md": "51aebfe0523f3bcf",
"gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043",
"gsd-core/workflows/mvp-phase.md": "58a952b4715db283",
"gsd-core/workflows/new-milestone.md": "8164a9abc301f143",
"gsd-core/workflows/new-project.md": "8d33ff0a282a2a46",
"gsd-core/workflows/new-workspace.md": "bbeb706c7a697617",
"gsd-core/workflows/next.md": "4e1eb6b46d15798d",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "5a99eb396c744619",
"gsd-core/workflows/onboard.md": "f29c4fbef3b473fd",
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
"gsd-core/workflows/plan-phase.md": "8c25006c81b99eed",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5",
"gsd-core/workflows/plan-review-convergence.md": "db69460dd4df0d29",
"gsd-core/workflows/plant-seed.md": "9596db80ab282c6f",
"gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b",
"gsd-core/workflows/profile-user.md": "37af07833c81a0bd",
"gsd-core/workflows/progress.md": "46c83ad61b3c4a84",
"gsd-core/workflows/quick.md": "6cb15abcd8d9ac67",
"gsd-core/workflows/reapply-patches.md": "39050f72601aec89",
"gsd-core/workflows/remove-phase.md": "df9a45f0b1880999",
"gsd-core/workflows/remove-workspace.md": "f67860c795fb4bfe",
"gsd-core/workflows/resume-project.md": "f28da1200e4545f4",
"gsd-core/workflows/review.md": "8724993cbc91bcc5",
"gsd-core/workflows/scan.md": "0583dac337623f82",
"gsd-core/workflows/secure-phase.md": "00225810eaed265b",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44",
"gsd-core/workflows/settings-integrations.md": "effcef778d4a855f",
"gsd-core/workflows/settings.md": "85ceb482dc713169",
"gsd-core/workflows/ship.md": "ca94c87c80a70c27",
"gsd-core/workflows/sketch-wrap-up.md": "b767a1d3db129a8a",
"gsd-core/workflows/sketch.md": "5f0a7d3640cdff54",
"gsd-core/workflows/smart-entry.md": "004b4060eab97cb9",
"gsd-core/workflows/spec-phase.md": "fa8669b75392cf6c",
"gsd-core/workflows/spike-wrap-up.md": "da0dcb252c54fa82",
"gsd-core/workflows/spike.md": "a51eaa05bd40e3cf",
"gsd-core/workflows/stats.md": "76a42cbeaf6007c2",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "927e7eeefd2fcf5c",
"gsd-core/workflows/transition.md": "aea486bb7a0e80e7",
"gsd-core/workflows/ui-phase.md": "e262bcd081fab253",
"gsd-core/workflows/ui-review.md": "387f7cefc849dba1",
"gsd-core/workflows/ultraplan-phase.md": "0fb8291153e3937d",
"gsd-core/workflows/undo.md": "1712417bade30b30",
"gsd-core/workflows/update.md": "04cef644f58f24f7",
"gsd-core/workflows/validate-phase.md": "171ff4aa9b392475",
"gsd-core/workflows/verify-phase.md": "d26a2c3269340caf",
"gsd-core/workflows/verify-work.md": "bc9dcabfc5be2e81",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7",
"skills/gsd-add-tests/SKILL.md": "217fc2587d3e7ec2",
"skills/gsd-ai-integration-phase/SKILL.md": "949c29f9a6f4a256",
"skills/gsd-audit-fix/SKILL.md": "ed585da70ba6da12",
"skills/gsd-audit-milestone/SKILL.md": "ad78e50cef304155",
"skills/gsd-audit-uat/SKILL.md": "b8e73cbb993a30e2",
"skills/gsd-autonomous/SKILL.md": "20b5483ce0cfac1b",
"skills/gsd-capture/SKILL.md": "d229a25109ab5f25",
"skills/gsd-cleanup/SKILL.md": "188302809e37f3a8",
"skills/gsd-code-review/SKILL.md": "f1e4c9d83d367715",
"skills/gsd-complete-milestone/SKILL.md": "d64cf8e60bf953d8",
"skills/gsd-config/SKILL.md": "234548c60b978332",
"skills/gsd-debug/SKILL.md": "71a61812bfd55246",
"skills/gsd-discuss-phase/SKILL.md": "77340d9f1fffa66f",
"skills/gsd-docs-update/SKILL.md": "05f4d618a938d3d4",
"skills/gsd-eval-review/SKILL.md": "6b32f5735b170d73",
"skills/gsd-execute-phase/SKILL.md": "8c92fb28c150b645",
"skills/gsd-explore/SKILL.md": "4ed4085d70b490b5",
"skills/gsd-extract-learnings/SKILL.md": "f16892f054247db9",
"skills/gsd-fast/SKILL.md": "dbf45fa1a88a9a16",
"skills/gsd-forensics/SKILL.md": "3077371ecd612e1d",
"skills/gsd-graphify/SKILL.md": "dc7e931f4acf8bfb",
"skills/gsd-health/SKILL.md": "9aa2cfcd42443dce",
"skills/gsd-help/SKILL.md": "b592e8ac7d2e512f",
"skills/gsd-import/SKILL.md": "8cdba84960d1e5fa",
"skills/gsd-inbox/SKILL.md": "955779a4b1df1c33",
"skills/gsd-ingest-docs/SKILL.md": "6366644e623ae9e4",
"skills/gsd-manager/SKILL.md": "8a11a1beb8e35a9c",
"skills/gsd-map-codebase/SKILL.md": "73ab0afb2398de2c",
"skills/gsd-mempalace-capture/SKILL.md": "aeb01fa8be356ba8",
"skills/gsd-mempalace-recall/SKILL.md": "c6e0195e55cd934c",
"skills/gsd-milestone-summary/SKILL.md": "3ea93ccaa0d4d967",
"skills/gsd-mvp-phase/SKILL.md": "d2f98f1e955797b6",
"skills/gsd-new-milestone/SKILL.md": "52c3cbe5b931985b",
"skills/gsd-new-project/SKILL.md": "d74e7583377e3563",
"skills/gsd-next/SKILL.md": "0a5109eb81fbeb4b",
"skills/gsd-ns-context/SKILL.md": "89f5bffe6702c0c5",
"skills/gsd-ns-ideate/SKILL.md": "e0c0420f6878906a",
"skills/gsd-ns-manage/SKILL.md": "b7fbe29e45e75f54",
"skills/gsd-ns-project/SKILL.md": "fcb8a93ade9ecc72",
"skills/gsd-ns-review/SKILL.md": "2ff62330379f947f",
"skills/gsd-ns-workflow/SKILL.md": "86272fd655c206bc",
"skills/gsd-onboard/SKILL.md": "fd66b3c5b9c6a871",
"skills/gsd-pause-work/SKILL.md": "95017c70ae9dca0d",
"skills/gsd-phase/SKILL.md": "31578c329cc2583e",
"skills/gsd-plan-phase/SKILL.md": "fc4464af5649282f",
"skills/gsd-plan-review-convergence/SKILL.md": "fcac3c24e566438e",
"skills/gsd-pr-branch/SKILL.md": "67f468db29ff2cf1",
"skills/gsd-profile-user/SKILL.md": "19a1d3aba57f6c7c",
"skills/gsd-progress/SKILL.md": "cc46a92b92b989ce",
"skills/gsd-quick/SKILL.md": "e6aa7d96326fc874",
"skills/gsd-resume-work/SKILL.md": "6e83a416db8253e1",
"skills/gsd-review-backlog/SKILL.md": "ffc6216cfb6c3002",
"skills/gsd-review/SKILL.md": "9cb8c2bc78c9bc51",
"skills/gsd-secure-phase/SKILL.md": "9aa4378c6371e5e4",
"skills/gsd-settings/SKILL.md": "dee7f5011c9a46f4",
"skills/gsd-ship/SKILL.md": "b2e10966b6781b95",
"skills/gsd-sketch/SKILL.md": "010431b46e681600",
"skills/gsd-spec-phase/SKILL.md": "23ff63ddf425c1c2",
"skills/gsd-spike/SKILL.md": "aa740909d20a82f2",
"skills/gsd-stats/SKILL.md": "a7e478f76e0b6db1",
"skills/gsd-surface/SKILL.md": "f0356c0fef0b1d4c",
"skills/gsd-thread/SKILL.md": "fb52a782c6e83e03",
"skills/gsd-ui-phase/SKILL.md": "1d7ed00d7970ed51",
"skills/gsd-ui-review/SKILL.md": "39b36951bafe1495",
"skills/gsd-ultraplan-phase/SKILL.md": "766e038ea49f1ca7",
"skills/gsd-undo/SKILL.md": "ce1c97ed1228ff6d",
"skills/gsd-update/SKILL.md": "5ecb292eca7e9563",
"skills/gsd-validate-phase/SKILL.md": "2995d65030d9e441",
"skills/gsd-verify-work/SKILL.md": "9268ea031159f121",
"skills/gsd-workspace/SKILL.md": "0ebfbc00112e3802",
"skills/gsd-workstreams/SKILL.md": "cd2ed0019f00302a"
}

View File

@@ -1,516 +0,0 @@
{
".gsd-profile": "0e716a5fef4e6dc1",
".gsd/defaults.json": "22e30e82b5758469",
"agents/gsd-advisor-researcher.md": "6955bcd8ca353de0",
"agents/gsd-ai-researcher.md": "28a05307dad84020",
"agents/gsd-assumptions-analyzer.md": "45c01017e84ba193",
"agents/gsd-code-fixer.md": "3622ae5d90fb15f6",
"agents/gsd-code-reviewer.md": "2249774416314c57",
"agents/gsd-codebase-mapper.md": "89c6eed5863f1c23",
"agents/gsd-debug-session-manager.md": "8b9638711e768732",
"agents/gsd-debugger.md": "f08bcc712bc98469",
"agents/gsd-doc-classifier.md": "fb776cfbb7e991b0",
"agents/gsd-doc-synthesizer.md": "2389f388d291c2eb",
"agents/gsd-doc-verifier.md": "65bbc2ae6b9ace29",
"agents/gsd-doc-writer.md": "0696a8cdc0028917",
"agents/gsd-domain-researcher.md": "71250e759ca9e723",
"agents/gsd-eval-auditor.md": "c88890105f32ace6",
"agents/gsd-eval-planner.md": "60bddb70a937f796",
"agents/gsd-executor.md": "92a84bdd8895a4bb",
"agents/gsd-framework-selector.md": "1c0a10355e787675",
"agents/gsd-integration-checker.md": "a9de5928e5a5c649",
"agents/gsd-intel-updater.md": "493e07482fa6198a",
"agents/gsd-mempalace-curator.md": "197308371baa53ad",
"agents/gsd-nyquist-auditor.md": "7a7e0d1cbafd6b63",
"agents/gsd-pattern-mapper.md": "7c6d1d9817a9c1e7",
"agents/gsd-phase-researcher.md": "9874110700b41f48",
"agents/gsd-plan-checker.md": "f39aca1ea261d720",
"agents/gsd-planner.md": "50f660afd4ddd599",
"agents/gsd-project-researcher.md": "dae210ae0b3c6e2b",
"agents/gsd-research-synthesizer.md": "e02c6ad5d1b74171",
"agents/gsd-roadmapper.md": "1658a40b20d8b575",
"agents/gsd-security-auditor.md": "64aa435793af52ec",
"agents/gsd-ui-auditor.md": "e810012e685b2466",
"agents/gsd-ui-checker.md": "4f88fd4c9d4c56a3",
"agents/gsd-ui-researcher.md": "ecb617901cb7ad06",
"agents/gsd-user-profiler.md": "d825b4c0a6431f8b",
"agents/gsd-verifier.md": "2460e48bbb991adc",
"commands/gsd-add-tests.md": "b9cd93ed01945f75",
"commands/gsd-ai-integration-phase.md": "038709fe91d897e4",
"commands/gsd-audit-fix.md": "5615403843d5e491",
"commands/gsd-audit-milestone.md": "4c700c081f3918ba",
"commands/gsd-audit-uat.md": "47dce58d5823da8d",
"commands/gsd-autonomous.md": "d6444c6d39585b07",
"commands/gsd-capture.md": "a1085d451e138028",
"commands/gsd-cleanup.md": "66b219076f1e2aa3",
"commands/gsd-code-review.md": "3256032e666821b5",
"commands/gsd-complete-milestone.md": "92ee70af4d6235bb",
"commands/gsd-config.md": "11045b66313fb788",
"commands/gsd-debug.md": "cb6ac21129dff67f",
"commands/gsd-discuss-phase.md": "a2a59956edf33a2c",
"commands/gsd-docs-update.md": "668979b6c56708c0",
"commands/gsd-eval-review.md": "28499776a3fde3ad",
"commands/gsd-execute-phase.md": "da51f21998c75175",
"commands/gsd-explore.md": "7618219025e28c15",
"commands/gsd-extract-learnings.md": "42fd40385c7a7a3b",
"commands/gsd-fast.md": "d1fcda0719ae90be",
"commands/gsd-forensics.md": "051270e8c76c1b13",
"commands/gsd-graphify.md": "1a4ec781f74862e2",
"commands/gsd-health.md": "66d298ed71d57cb0",
"commands/gsd-help.md": "a26c6ba391002635",
"commands/gsd-import.md": "e1bff34deb61c802",
"commands/gsd-inbox.md": "cc850bab897aed1f",
"commands/gsd-ingest-docs.md": "b47c812c247e58a4",
"commands/gsd-manager.md": "86ece154b34b6d1b",
"commands/gsd-map-codebase.md": "9aba6b4eed565912",
"commands/gsd-mempalace-capture.md": "081236c25ce5b337",
"commands/gsd-mempalace-recall.md": "d358cdd89c935877",
"commands/gsd-milestone-summary.md": "86a827271bc647c5",
"commands/gsd-mvp-phase.md": "d45fd76cb9cff3ef",
"commands/gsd-new-milestone.md": "613902b46d2ba6ef",
"commands/gsd-new-project.md": "0086f0de26002219",
"commands/gsd-next.md": "b0ef81652d72d894",
"commands/gsd-ns-context.md": "9a2b55b64f2e1e4b",
"commands/gsd-ns-ideate.md": "27e7fcdc69eeeb5f",
"commands/gsd-ns-manage.md": "eded59052ca4b240",
"commands/gsd-ns-project.md": "c56395edb9bc7467",
"commands/gsd-ns-review.md": "61fe33e28eb1b961",
"commands/gsd-ns-workflow.md": "13c1ab91080c0cc3",
"commands/gsd-onboard.md": "3aafaeb5d3941efe",
"commands/gsd-pause-work.md": "bb5bf91a2e3e480e",
"commands/gsd-phase.md": "6bcda1539f949d5a",
"commands/gsd-plan-phase.md": "cbb349ad7520db85",
"commands/gsd-plan-review-convergence.md": "348d02775fd62977",
"commands/gsd-pr-branch.md": "31fca4f1d6c4ee62",
"commands/gsd-profile-user.md": "725c14ae7203b5b6",
"commands/gsd-progress.md": "001f2754c427a0a9",
"commands/gsd-quick.md": "07c02ab7547aec8e",
"commands/gsd-resume-work.md": "3ac18b2a8cc41066",
"commands/gsd-review-backlog.md": "1e99d6a7a3806fa5",
"commands/gsd-review.md": "97bf8bc6ffff9475",
"commands/gsd-secure-phase.md": "b536ad6e68af3a26",
"commands/gsd-settings.md": "a3d2cb48b06c9b90",
"commands/gsd-ship.md": "062d0bb5656fa31b",
"commands/gsd-sketch.md": "1af54bb16c370798",
"commands/gsd-spec-phase.md": "b92bca076ca2c5c6",
"commands/gsd-spike.md": "1b2fa4b468e831dc",
"commands/gsd-stats.md": "51af934859f87623",
"commands/gsd-surface.md": "e559ca6733ce288f",
"commands/gsd-thread.md": "ae3b000bee0ee1e0",
"commands/gsd-ui-phase.md": "21c9c043d813dc0a",
"commands/gsd-ui-review.md": "ef36603b519e8fe8",
"commands/gsd-ultraplan-phase.md": "d18d13428ae3f8e6",
"commands/gsd-undo.md": "dbbf9423ce795b89",
"commands/gsd-update.md": "df2be717088fe8d0",
"commands/gsd-validate-phase.md": "f320705816d725f3",
"commands/gsd-verify-work.md": "f23fff8e6d71f704",
"commands/gsd-workspace.md": "1e581bdb33bc8f55",
"commands/gsd-workstreams.md": "5e57eed1881c3891",
"gsd-core/.gsd-runtime": "0d74cc0a7af2a416",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "51bc64467ab30f62",
"gsd-core/bin/gsd-tools.cjs": "e1996ac045ff5fde",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "51b5d0ba5b1e98d9",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "425dd69c629230e7",
"gsd-core/references/api-coverage.md": "53d290a68f83c7d0",
"gsd-core/references/artifact-types.md": "218c55caf8aff6df",
"gsd-core/references/autonomous-smart-discuss.md": "3986d58011bf9006",
"gsd-core/references/checkpoints.md": "d52116f59e92ca43",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "876da77377424383",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-bug-taxonomy.md": "49f94fe75cabba52",
"gsd-core/references/debugger-fix-acceptance.md": "b2732420bdbcadcd",
"gsd-core/references/debugger-philosophy.md": "459a8ac647c4ce9c",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "097c2da83d697566",
"gsd-core/references/debugger-sbfl.md": "391e732abf32786a",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
"gsd-core/references/domain-probes.md": "762b965e84035b72",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "47e6193c678eefe5",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-quota-recovery.md": "713cf7681f57e7ce",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "43e867720e736464",
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
"gsd-core/references/git-integration.md": "fbdf814a3af9c051",
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
"gsd-core/references/gsd-run-resolver.md": "4e5af9905e4276e4",
"gsd-core/references/honest-verifier.md": "b67482409f896a10",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "5d0bf1da4e1e7dfb",
"gsd-core/references/model-profiles.md": "6568ca29b6ee00d8",
"gsd-core/references/mvp-concepts.md": "3464783eaaef5c10",
"gsd-core/references/offer-next.md": "6456306b03a6dd5e",
"gsd-core/references/phase-argument-parsing.md": "e5bbb985f3bc3e34",
"gsd-core/references/planner-antipatterns.md": "88a0cd714d33fe34",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "1ed614dfba72f2a3",
"gsd-core/references/planner-guidance.md": "7fe925c09092476b",
"gsd-core/references/planner-human-verify-mode.md": "3a625b42d9cb93ee",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "97f6e67b56c072c1",
"gsd-core/references/planner-mvp-mode.md": "35d30284ea9110c0",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "74acbf4a873a01e4",
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "b7a4fb3d8215ac6a",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "5892b08550d8444e",
"gsd-core/references/project-skills-discovery.md": "c2ba4b8beda7bbcc",
"gsd-core/references/questioning.md": "a083e5e3e16dd802",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "a602b41bfa081fdf",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "a857fc444baec27a",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "558870a1c4bc4c29",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "6905b93872b87d1f",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "fc00fd23895d4535",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "827c1badf3e6df41",
"gsd-core/references/ui-brand.md": "48717bcfcd63bd27",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "6a1245050b21df01",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "8e023a908d968af1",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "a3e2d5166d16a37b",
"gsd-core/references/verification-patterns.md": "3bd98d30eee6c5a1",
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
"gsd-core/references/workstream-flag.md": "225910640adbb76d",
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "72e93b7f650d9bae",
"gsd-core/templates/README.md": "73d3c9689b6efbc9",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "e4d0f1c48727fce3",
"gsd-core/templates/claude-md.md": "a4f5e38984001194",
"gsd-core/templates/codebase/architecture.md": "282db635ba093b1a",
"gsd-core/templates/codebase/concerns.md": "e66c584daa636fc5",
"gsd-core/templates/codebase/conventions.md": "c5f0324730852701",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "bb76f9538f2bc4e0",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "593d4e6d20fdde7c",
"gsd-core/templates/continue-here.md": "8b1dce4832c7922b",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "8c18a89e25929d8e",
"gsd-core/templates/dev-preferences.md": "95048a71063d980b",
"gsd-core/templates/discovery.md": "e4ab738326eb70e0",
"gsd-core/templates/discussion-log.md": "da4e8e266efdc6c2",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "ee8880432b4d1566",
"gsd-core/templates/planner-subagent-prompt.md": "6c9f1b23ee3dc05f",
"gsd-core/templates/project.md": "fae14114f2b79b10",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "b454f96fdf8b1d3d",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "8734f0df4df3a34b",
"gsd-core/templates/state.md": "a45a134631efe3f9",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "85f4d37fcee6852b",
"gsd-core/templates/user-profile.md": "52abe2af968e8533",
"gsd-core/templates/user-setup.md": "1da2382725db080f",
"gsd-core/templates/verification-report.md": "78ab9264ce63ed7e",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "08289088a88d410f",
"gsd-core/workflows/add-phase.md": "739e34f6122e1e61",
"gsd-core/workflows/add-tests.md": "582b03df9cb71fe0",
"gsd-core/workflows/add-todo.md": "2ccd1c97a3636c36",
"gsd-core/workflows/ai-integration-phase.md": "95afc8120daf3828",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "0085e65548706996",
"gsd-core/workflows/audit-milestone.md": "777f67e317f441fe",
"gsd-core/workflows/audit-uat.md": "c800099fab1e1c1b",
"gsd-core/workflows/autonomous.md": "0757a088361be372",
"gsd-core/workflows/check-todos.md": "527cfab62417c719",
"gsd-core/workflows/cleanup.md": "9d510a45aec81ba1",
"gsd-core/workflows/code-review-fix.md": "da8fdf6389d07969",
"gsd-core/workflows/code-review.md": "da6bb2bda95c2afa",
"gsd-core/workflows/complete-milestone.md": "9482dadd0f8902d2",
"gsd-core/workflows/debug.md": "8bd8b4692c0fcf52",
"gsd-core/workflows/diagnose-issues.md": "1e7c760973276b57",
"gsd-core/workflows/discovery-phase.md": "0ef23f38adfb0e6e",
"gsd-core/workflows/discuss-phase-assumptions.md": "d87a8f50f1c60392",
"gsd-core/workflows/discuss-phase-power.md": "5c0d1ca6abda0383",
"gsd-core/workflows/discuss-phase.md": "3a62a8d4c374c69f",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "83ca3ea4fac785af",
"gsd-core/workflows/discuss-phase/modes/all.md": "5ed71228ac96e728",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "da0788f3be7f8105",
"gsd-core/workflows/discuss-phase/modes/auto.md": "ed71852753c6788a",
"gsd-core/workflows/discuss-phase/modes/batch.md": "78f6ef61690acb66",
"gsd-core/workflows/discuss-phase/modes/chain.md": "1558b2ce77a25c75",
"gsd-core/workflows/discuss-phase/modes/default.md": "5d12f2593ae4a813",
"gsd-core/workflows/discuss-phase/modes/power.md": "799fc7e1283b568f",
"gsd-core/workflows/discuss-phase/modes/text.md": "daf23a04b101ab38",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "da6bf5281bf7d2bf",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "04e4feee14772275",
"gsd-core/workflows/do.md": "532afe82bbf9f775",
"gsd-core/workflows/docs-update.md": "55cbaed5020bdd71",
"gsd-core/workflows/edit-phase.md": "1876c855fb0a0a39",
"gsd-core/workflows/eval-review.md": "4f932c3ea3eb807b",
"gsd-core/workflows/execute-phase.md": "983551331e155e7d",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "a15993affd62f4bf",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "f74ce2de21b2d252",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "c4cba01539f0368a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "21f4d9b3abc334ce",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "bb0ce725dcf12aa2",
"gsd-core/workflows/explore.md": "a514b88e98609441",
"gsd-core/workflows/extract-learnings.md": "38b09022eca429d8",
"gsd-core/workflows/fast.md": "12187b242e6af970",
"gsd-core/workflows/forensics.md": "9354cb830152fd28",
"gsd-core/workflows/graduation.md": "589b9b303cff8643",
"gsd-core/workflows/health.md": "05447688e0b332c5",
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
"gsd-core/workflows/help/modes/full.md": "17a82373eff2e59a",
"gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69",
"gsd-core/workflows/import.md": "3cb4f4e0f9e5de3c",
"gsd-core/workflows/inbox.md": "7e46f5d6b0694074",
"gsd-core/workflows/ingest-docs.md": "fd5dde3c99d68de2",
"gsd-core/workflows/insert-phase.md": "858224afbf977c14",
"gsd-core/workflows/list-phase-assumptions.md": "e7b5e35c9452e3b3",
"gsd-core/workflows/list-seeds.md": "9b05425fa7d24827",
"gsd-core/workflows/list-workspaces.md": "dc6d30036c6dc426",
"gsd-core/workflows/manager.md": "eda80c0d3d32dbf6",
"gsd-core/workflows/map-codebase.md": "9794578db9c07fca",
"gsd-core/workflows/milestone-summary.md": "321ea8a6a206f38f",
"gsd-core/workflows/mvp-phase.md": "94360741a1d8d7ce",
"gsd-core/workflows/new-milestone.md": "d3f76f0d65d9a8ba",
"gsd-core/workflows/new-project.md": "8bc9400aade6b943",
"gsd-core/workflows/new-workspace.md": "53f8abf8baca9345",
"gsd-core/workflows/next.md": "8975ad00f87f90dc",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "0d1374f2a2257858",
"gsd-core/workflows/onboard.md": "ca3a59a2e36b829a",
"gsd-core/workflows/pause-work.md": "70c72beca55c080a",
"gsd-core/workflows/plan-milestone-gaps.md": "0a9dacd422cd9533",
"gsd-core/workflows/plan-phase.md": "e6004345ec4c8129",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "3a09141de7f3dedb",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261",
"gsd-core/workflows/plan-review-convergence.md": "216a41c2c24844f7",
"gsd-core/workflows/plant-seed.md": "ac8bbe2d9d52f2c1",
"gsd-core/workflows/pr-branch.md": "929b7cb0c99c7b9e",
"gsd-core/workflows/profile-user.md": "9275d5895237b801",
"gsd-core/workflows/progress.md": "c3d7149133d571a9",
"gsd-core/workflows/quick.md": "38527d9107054ce6",
"gsd-core/workflows/reapply-patches.md": "a0e9b53f90abceb2",
"gsd-core/workflows/remove-phase.md": "dea4661e8f89596f",
"gsd-core/workflows/remove-workspace.md": "21a8581add5f31ae",
"gsd-core/workflows/resume-project.md": "ad9f06a10bab8cc0",
"gsd-core/workflows/review.md": "c775d08988c05be6",
"gsd-core/workflows/scan.md": "bc69d7c058805c47",
"gsd-core/workflows/secure-phase.md": "2731f2e7d0d0a70b",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "252b0d3edc315339",
"gsd-core/workflows/settings-integrations.md": "1c3997dc6953e7eb",
"gsd-core/workflows/settings.md": "a244850ce2f7b8dd",
"gsd-core/workflows/ship.md": "c58cd69d8943e870",
"gsd-core/workflows/sketch-wrap-up.md": "681800323681c5c6",
"gsd-core/workflows/sketch.md": "da82c9be7074545c",
"gsd-core/workflows/smart-entry.md": "c4c780d3aa2124f8",
"gsd-core/workflows/spec-phase.md": "5c4a3001095ca722",
"gsd-core/workflows/spike-wrap-up.md": "30a73aa19a1db271",
"gsd-core/workflows/spike.md": "7462ab0428468932",
"gsd-core/workflows/stats.md": "846cd2808461ccdc",
"gsd-core/workflows/sync-skills.md": "7e2c138cdbef4282",
"gsd-core/workflows/thread.md": "82652edb1883af59",
"gsd-core/workflows/transition.md": "372b6fc7c0c68a89",
"gsd-core/workflows/ui-phase.md": "5d8538230f65e031",
"gsd-core/workflows/ui-review.md": "567784aa43497a66",
"gsd-core/workflows/ultraplan-phase.md": "f4bad8de3fdb49fa",
"gsd-core/workflows/undo.md": "bbb91a18ee896975",
"gsd-core/workflows/update.md": "f032775aef6795bf",
"gsd-core/workflows/validate-phase.md": "865dac4dd2887658",
"gsd-core/workflows/verify-phase.md": "73025aa5d8bf7bd5",
"gsd-core/workflows/verify-work.md": "7bdbe268979a994f",
"hooks/gsd-check-update-worker.js": "385fb7c67810baf6",
"hooks/gsd-check-update.js": "4549451414ffa7d7",
"hooks/gsd-config-reload.js": "96546e0e8bb47904",
"hooks/gsd-context-monitor.js": "91ce47cd2dc3bbe8",
"hooks/gsd-cursor-post-tool.js": "9168e0a09de1972a",
"hooks/gsd-cursor-pre-tool.js": "873998b25e308c29",
"hooks/gsd-cursor-session-start.js": "c72f669cc24c72e3",
"hooks/gsd-cursor-stop.js": "80de723949cee847",
"hooks/gsd-cursor-subagent-start.js": "699a2da2e3c5763e",
"hooks/gsd-cursor-subagent-stop.js": "4bbf22917da4d389",
"hooks/gsd-ensure-canonical-path.js": "2801ae3fef9579bf",
"hooks/gsd-graphify-update.sh": "81d716df76159e60",
"hooks/gsd-phase-boundary.sh": "4f3daad099fcdd50",
"hooks/gsd-prompt-guard.js": "696a0f65b9535cd1",
"hooks/gsd-read-guard.js": "54e1dcaaffe47693",
"hooks/gsd-read-injection-scanner.js": "f31aa0cc6b55149e",
"hooks/gsd-session-state.sh": "e54379ba86bf1b6d",
"hooks/gsd-statusline.js": "982cbb17444935fa",
"hooks/gsd-update-banner.js": "55143a25f978f301",
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
"hooks/gsd-workflow-guard.js": "56414206bc13b3dc",
"hooks/gsd-worktree-path-guard.js": "bfef1802d491bdab",
"hooks/lib/cursor-workspace.js": "45061acd75d55a28",
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
"hooks/managed-hooks-registry.cjs": "bd57cc72f482a14f",
"opencode.json": "2c12c446a88f2f36",
"package.json": "dbf8353f77358bc1",
"plugins/gsd-core.js": "eb1ac14ffd7abfae",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7",
"skills/gsd-add-tests/SKILL.md": "f60794b90b48cbac",
"skills/gsd-ai-integration-phase/SKILL.md": "d2418122ba6f6330",
"skills/gsd-audit-fix/SKILL.md": "740d255df04b6e93",
"skills/gsd-audit-milestone/SKILL.md": "68b57f54877f35a9",
"skills/gsd-audit-uat/SKILL.md": "d73e6e175a711ed9",
"skills/gsd-autonomous/SKILL.md": "b3191d241afe2c87",
"skills/gsd-capture/SKILL.md": "880a3b965d53c689",
"skills/gsd-cleanup/SKILL.md": "e65d36bc64d7ce56",
"skills/gsd-code-review/SKILL.md": "f5c5d139d9f58e30",
"skills/gsd-complete-milestone/SKILL.md": "f794594de6a2e6c8",
"skills/gsd-config/SKILL.md": "6bcfbc815e5abddd",
"skills/gsd-debug/SKILL.md": "fbf869a73b318bfc",
"skills/gsd-discuss-phase/SKILL.md": "b86f39c16163c3ca",
"skills/gsd-docs-update/SKILL.md": "b0377eebbf71f802",
"skills/gsd-eval-review/SKILL.md": "a0da1d2b8b0dec62",
"skills/gsd-execute-phase/SKILL.md": "6d93b3fa856aef8f",
"skills/gsd-explore/SKILL.md": "79a05b06d9854d56",
"skills/gsd-extract-learnings/SKILL.md": "039975449139eb77",
"skills/gsd-fast/SKILL.md": "5b39ef1a6ad40b93",
"skills/gsd-forensics/SKILL.md": "1e0be6b8862ac549",
"skills/gsd-graphify/SKILL.md": "578621183849fe03",
"skills/gsd-health/SKILL.md": "b0bb84935cfbdd61",
"skills/gsd-help/SKILL.md": "326eb69ee18b4265",
"skills/gsd-import/SKILL.md": "23ac1e4e73e175d4",
"skills/gsd-inbox/SKILL.md": "3b2dd319d91dbab4",
"skills/gsd-ingest-docs/SKILL.md": "8f294b4894f782a5",
"skills/gsd-manager/SKILL.md": "cf40f237b4f20aa7",
"skills/gsd-map-codebase/SKILL.md": "73f714297815f74c",
"skills/gsd-mempalace-capture/SKILL.md": "ddb5c1322d6237ad",
"skills/gsd-mempalace-recall/SKILL.md": "2091c48e6e986e28",
"skills/gsd-milestone-summary/SKILL.md": "175366bb500b5e64",
"skills/gsd-mvp-phase/SKILL.md": "0531d0e907af41ce",
"skills/gsd-new-milestone/SKILL.md": "45688741cc4bab41",
"skills/gsd-new-project/SKILL.md": "feef18d69466fdf9",
"skills/gsd-next/SKILL.md": "85fb881a8ac65081",
"skills/gsd-ns-context/SKILL.md": "110fb2227bcde535",
"skills/gsd-ns-ideate/SKILL.md": "d093d59a8519decc",
"skills/gsd-ns-manage/SKILL.md": "2756981de613022e",
"skills/gsd-ns-project/SKILL.md": "56d3d8a321d267f8",
"skills/gsd-ns-review/SKILL.md": "680bdd33c882b049",
"skills/gsd-ns-workflow/SKILL.md": "579b7f0dac74e1fb",
"skills/gsd-onboard/SKILL.md": "ea0b1217e5ecae23",
"skills/gsd-pause-work/SKILL.md": "c7e9ba4f242c4648",
"skills/gsd-phase/SKILL.md": "ee78c0c56c814d84",
"skills/gsd-plan-phase/SKILL.md": "7490d949e7e14028",
"skills/gsd-plan-review-convergence/SKILL.md": "8338cb7e018e3713",
"skills/gsd-pr-branch/SKILL.md": "8fa5a8fa217fe913",
"skills/gsd-profile-user/SKILL.md": "3e6155a64523d59f",
"skills/gsd-progress/SKILL.md": "1dfd9327510e500c",
"skills/gsd-quick/SKILL.md": "a9a971a0d471b64f",
"skills/gsd-resume-work/SKILL.md": "aa6a7d9e88fe26b6",
"skills/gsd-review-backlog/SKILL.md": "27a9dbfe92e5d04c",
"skills/gsd-review/SKILL.md": "4d1897f8d2c65bdf",
"skills/gsd-secure-phase/SKILL.md": "b37a0dbae84dd74a",
"skills/gsd-settings/SKILL.md": "d72a537765bf690a",
"skills/gsd-ship/SKILL.md": "fc88192bae429756",
"skills/gsd-sketch/SKILL.md": "e3fd03e727bc20df",
"skills/gsd-spec-phase/SKILL.md": "332028ed34b85b1f",
"skills/gsd-spike/SKILL.md": "9303cd74a8bf0741",
"skills/gsd-stats/SKILL.md": "2af976632e239069",
"skills/gsd-surface/SKILL.md": "a0cec79a0bbf9c97",
"skills/gsd-thread/SKILL.md": "9ff9979a8213dbf8",
"skills/gsd-ui-phase/SKILL.md": "5eee1bdd13640252",
"skills/gsd-ui-review/SKILL.md": "c99d6725326bfbc4",
"skills/gsd-ultraplan-phase/SKILL.md": "5c28ee1f65be343b",
"skills/gsd-undo/SKILL.md": "4a5d3472c7da4cc9",
"skills/gsd-update/SKILL.md": "268677bd0089ea9b",
"skills/gsd-validate-phase/SKILL.md": "8d29201527e7d9d4",
"skills/gsd-verify-work/SKILL.md": "bea3cee3b2f5170e",
"skills/gsd-workspace/SKILL.md": "f3c295e6b7c2e38a",
"skills/gsd-workstreams/SKILL.md": "44c62598142837b9"
}

View File

@@ -1,339 +0,0 @@
{
".gsd-profile": "0e716a5fef4e6dc1",
".gsd/defaults.json": "615261cfd3ae1c96",
"extensions/gsd.js": "af5deeefff6a0a6a",
"gsd-core/.gsd-runtime": "94e95f0bb38f8e0f",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "51bc64467ab30f62",
"gsd-core/bin/gsd-tools.cjs": "e1996ac045ff5fde",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "5ab875054b1adda9",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "f827de93dde124eb",
"gsd-core/references/api-coverage.md": "913654a1cdb3baf1",
"gsd-core/references/artifact-types.md": "a6d2e1f9453ffbf5",
"gsd-core/references/autonomous-smart-discuss.md": "2fc710cde0ec7785",
"gsd-core/references/checkpoints.md": "c2fe89c42ca88349",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "6749084395889c6a",
"gsd-core/references/continuation-format.md": "ce73e57d053ab8a7",
"gsd-core/references/debugger-bug-taxonomy.md": "78fb8c1711acc971",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "fdf55a6cee9b1792",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "67d019d23e17f934",
"gsd-core/references/domain-probes.md": "62d23ed1992c48a9",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "5687eba25a078561",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242",
"gsd-core/references/execute-phase-quota-recovery.md": "c4ca0ee3875b6e02",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "e69f5993ab944d80",
"gsd-core/references/gates.md": "bd79c7f90c8cb8d7",
"gsd-core/references/git-integration.md": "77bf9dff38b2c9d4",
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
"gsd-core/references/gsd-run-resolver.md": "e71eb728b84641b1",
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "3a05d03ea27c3a31",
"gsd-core/references/model-profiles.md": "e067ad3df6770db1",
"gsd-core/references/mvp-concepts.md": "72f7e8b1f8ae7118",
"gsd-core/references/offer-next.md": "689740e4c2ed16f4",
"gsd-core/references/phase-argument-parsing.md": "e5bbb985f3bc3e34",
"gsd-core/references/planner-antipatterns.md": "013ad54062399dad",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "6aeffd9097e25e22",
"gsd-core/references/planner-guidance.md": "96486cac2f7885e6",
"gsd-core/references/planner-human-verify-mode.md": "56d05e841630b3f4",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "d75786c2d3e6ff5c",
"gsd-core/references/planner-reviews.md": "dda0193a0fbd4947",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "ab3b698fe23bab9b",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "605dc3f5a118ff3b",
"gsd-core/references/project-skills-discovery.md": "c155e03dce8dc3c2",
"gsd-core/references/questioning.md": "a8c988cab05f4651",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "62930e66cc979c1a",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "ae64e44f2f132bc2",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "0bbbb0735b6080fa",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "5e400dc05a15e972",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "ef519bff8c8bd572",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "41069529ef776e39",
"gsd-core/references/ui-brand.md": "48717bcfcd63bd27",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "6a1245050b21df01",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "b50416fe57c1b321",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "8213de9bd62283b6",
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
"gsd-core/references/workstream-flag.md": "ca99ca79e716f0f5",
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
"gsd-core/templates/DEBUG.md": "c8768312f4c1e438",
"gsd-core/templates/README.md": "93d3426fc64e2c12",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "9e296471b97ebcec",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "6f0fe4214dff6dd1",
"gsd-core/templates/claude-md.md": "d1d333e4b963c0d2",
"gsd-core/templates/codebase/architecture.md": "6be88214162fdd89",
"gsd-core/templates/codebase/concerns.md": "efa26d1fb5132f25",
"gsd-core/templates/codebase/conventions.md": "c2e07698dad6b364",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "222997133232a6f5",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "69b01e7909ea3f66",
"gsd-core/templates/continue-here.md": "f522a51b6895fba8",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "920656683dedb869",
"gsd-core/templates/dev-preferences.md": "88d0a65ec0993a3a",
"gsd-core/templates/discovery.md": "9a0e0935cc825dbc",
"gsd-core/templates/discussion-log.md": "cac1b48ec0f4dcb8",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "b811bf951092df2f",
"gsd-core/templates/planner-subagent-prompt.md": "ebf29dbb27042370",
"gsd-core/templates/project.md": "4f311fb1b05b823b",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "88ce0920417091d0",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "26d55bce940f0288",
"gsd-core/templates/state.md": "4d123aa6cea167fe",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "85f4d37fcee6852b",
"gsd-core/templates/user-profile.md": "20749f23e4c413fc",
"gsd-core/templates/user-setup.md": "78b7d718b6e8d67c",
"gsd-core/templates/verification-report.md": "dd5faa6254183731",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "1bc7377b105194fc",
"gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8",
"gsd-core/workflows/add-tests.md": "7e7268602f9e1b2a",
"gsd-core/workflows/add-todo.md": "5dc04cfaa0b6b072",
"gsd-core/workflows/ai-integration-phase.md": "308378c9044a52e1",
"gsd-core/workflows/analyze-dependencies.md": "52942af10f140717",
"gsd-core/workflows/audit-fix.md": "7650bcb334e622a6",
"gsd-core/workflows/audit-milestone.md": "6174b6f87844973c",
"gsd-core/workflows/audit-uat.md": "fcfbec501620b564",
"gsd-core/workflows/autonomous.md": "aed5e67104346cc2",
"gsd-core/workflows/check-todos.md": "c484e472cff0e4e3",
"gsd-core/workflows/cleanup.md": "df79d1dc7b84d736",
"gsd-core/workflows/code-review-fix.md": "9fef1cf740c7c155",
"gsd-core/workflows/code-review.md": "22b53c0d29508d57",
"gsd-core/workflows/complete-milestone.md": "8f98d7b05793cf4a",
"gsd-core/workflows/debug.md": "3f0218b051c1afb1",
"gsd-core/workflows/diagnose-issues.md": "324b8a085cdb07e2",
"gsd-core/workflows/discovery-phase.md": "0aa8d8d872b53858",
"gsd-core/workflows/discuss-phase-assumptions.md": "9c8b6b66df026e33",
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
"gsd-core/workflows/discuss-phase.md": "acfe2baa4c8bebbe",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653",
"gsd-core/workflows/discuss-phase/modes/all.md": "fa70d79066562e54",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "da0788f3be7f8105",
"gsd-core/workflows/discuss-phase/modes/auto.md": "d06f0bea2ba0b240",
"gsd-core/workflows/discuss-phase/modes/batch.md": "6946597770e2d448",
"gsd-core/workflows/discuss-phase/modes/chain.md": "5502a67de7776853",
"gsd-core/workflows/discuss-phase/modes/default.md": "67d1b67f61f03966",
"gsd-core/workflows/discuss-phase/modes/power.md": "fdc7a728eaaa2261",
"gsd-core/workflows/discuss-phase/modes/text.md": "da6d45207da4a988",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "eeebda60636d1ad0",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "90df4f1fe248cdf3",
"gsd-core/workflows/docs-update.md": "fba7329f525c9463",
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
"gsd-core/workflows/eval-review.md": "c2933259ff7fb6ac",
"gsd-core/workflows/execute-phase.md": "be00d0535fa8c720",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "f7782680c2b8ad6b",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "ab70374e44eb85cd",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "3168b13c3758ed84",
"gsd-core/workflows/explore.md": "3f3b4f83e23349bc",
"gsd-core/workflows/extract-learnings.md": "ab26f2cbb14efef2",
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
"gsd-core/workflows/forensics.md": "0d500a3f5ab26913",
"gsd-core/workflows/graduation.md": "973dcebcd17e1b10",
"gsd-core/workflows/health.md": "c25b5e5f62874c31",
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
"gsd-core/workflows/help/modes/full.md": "871af441d1f410c4",
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
"gsd-core/workflows/import.md": "57abe514a9b0f6ac",
"gsd-core/workflows/inbox.md": "a7d439981775bc29",
"gsd-core/workflows/ingest-docs.md": "781799b47d282b37",
"gsd-core/workflows/insert-phase.md": "08dca838d831bb5b",
"gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3",
"gsd-core/workflows/list-seeds.md": "b687f2a843032d65",
"gsd-core/workflows/list-workspaces.md": "7f94e18b5c549453",
"gsd-core/workflows/manager.md": "c18fab593344253d",
"gsd-core/workflows/map-codebase.md": "51aebfe0523f3bcf",
"gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043",
"gsd-core/workflows/mvp-phase.md": "58a952b4715db283",
"gsd-core/workflows/new-milestone.md": "8164a9abc301f143",
"gsd-core/workflows/new-project.md": "c797ba349eede266",
"gsd-core/workflows/new-workspace.md": "bbeb706c7a697617",
"gsd-core/workflows/next.md": "4e1eb6b46d15798d",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "5a99eb396c744619",
"gsd-core/workflows/onboard.md": "f29c4fbef3b473fd",
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
"gsd-core/workflows/plan-phase.md": "1044f21a80a6ddc6",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5",
"gsd-core/workflows/plan-review-convergence.md": "db69460dd4df0d29",
"gsd-core/workflows/plant-seed.md": "9596db80ab282c6f",
"gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b",
"gsd-core/workflows/profile-user.md": "e5c0e0a0dc54dccb",
"gsd-core/workflows/progress.md": "46c83ad61b3c4a84",
"gsd-core/workflows/quick.md": "ca9aa135ceff5fdc",
"gsd-core/workflows/reapply-patches.md": "39050f72601aec89",
"gsd-core/workflows/remove-phase.md": "df9a45f0b1880999",
"gsd-core/workflows/remove-workspace.md": "f67860c795fb4bfe",
"gsd-core/workflows/resume-project.md": "f28da1200e4545f4",
"gsd-core/workflows/review.md": "8724993cbc91bcc5",
"gsd-core/workflows/scan.md": "0583dac337623f82",
"gsd-core/workflows/secure-phase.md": "00225810eaed265b",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44",
"gsd-core/workflows/settings-integrations.md": "effcef778d4a855f",
"gsd-core/workflows/settings.md": "85ceb482dc713169",
"gsd-core/workflows/ship.md": "ca94c87c80a70c27",
"gsd-core/workflows/sketch-wrap-up.md": "838c701bd072ae73",
"gsd-core/workflows/sketch.md": "70df86d9d8eeba0f",
"gsd-core/workflows/smart-entry.md": "004b4060eab97cb9",
"gsd-core/workflows/spec-phase.md": "fa8669b75392cf6c",
"gsd-core/workflows/spike-wrap-up.md": "0b24057c340a8a17",
"gsd-core/workflows/spike.md": "c6e13cbfbf28d128",
"gsd-core/workflows/stats.md": "76a42cbeaf6007c2",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "927e7eeefd2fcf5c",
"gsd-core/workflows/transition.md": "aea486bb7a0e80e7",
"gsd-core/workflows/ui-phase.md": "3413fc28c54a32b1",
"gsd-core/workflows/ui-review.md": "387f7cefc849dba1",
"gsd-core/workflows/ultraplan-phase.md": "0fb8291153e3937d",
"gsd-core/workflows/undo.md": "1712417bade30b30",
"gsd-core/workflows/update.md": "18d6967356ab7794",
"gsd-core/workflows/validate-phase.md": "171ff4aa9b392475",
"gsd-core/workflows/verify-phase.md": "d26a2c3269340caf",
"gsd-core/workflows/verify-work.md": "bc9dcabfc5be2e81",
"hooks/gsd-check-update-worker.js": "55376b5b9335a580",
"hooks/gsd-check-update.js": "a89562537a41f83d",
"hooks/gsd-config-reload.js": "96546e0e8bb47904",
"hooks/gsd-context-monitor.js": "e72cba19eeab9036",
"hooks/gsd-cursor-post-tool.js": "9168e0a09de1972a",
"hooks/gsd-cursor-pre-tool.js": "873998b25e308c29",
"hooks/gsd-cursor-session-start.js": "c72f669cc24c72e3",
"hooks/gsd-cursor-stop.js": "80de723949cee847",
"hooks/gsd-cursor-subagent-start.js": "699a2da2e3c5763e",
"hooks/gsd-cursor-subagent-stop.js": "4bbf22917da4d389",
"hooks/gsd-ensure-canonical-path.js": "62d0819a51b55fc4",
"hooks/gsd-graphify-update.sh": "81d716df76159e60",
"hooks/gsd-phase-boundary.sh": "4f3daad099fcdd50",
"hooks/gsd-prompt-guard.js": "696a0f65b9535cd1",
"hooks/gsd-read-guard.js": "54e1dcaaffe47693",
"hooks/gsd-read-injection-scanner.js": "d9fb19a6cc360d04",
"hooks/gsd-session-state.sh": "e54379ba86bf1b6d",
"hooks/gsd-statusline.js": "b59f79b77f53b2a0",
"hooks/gsd-update-banner.js": "55143a25f978f301",
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
"hooks/gsd-workflow-guard.js": "56414206bc13b3dc",
"hooks/gsd-worktree-path-guard.js": "ea37324fe8dfaf12",
"hooks/lib/cursor-workspace.js": "45061acd75d55a28",
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
"hooks/managed-hooks-registry.cjs": "ac720a2b548ba200",
"package.json": "dbf8353f77358bc1",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7"
}

View File

@@ -1,444 +0,0 @@
{
".gsd-profile": "0e716a5fef4e6dc1",
".gsd/defaults.json": "91b2c6fa9472b9bb",
"agents/gsd-advisor-researcher.md": "692fbf5ed5e233d5",
"agents/gsd-ai-researcher.md": "f32dc6c6ed7e89fd",
"agents/gsd-assumptions-analyzer.md": "6a2e38d685ba0fce",
"agents/gsd-code-fixer.md": "3ed1a27ddc372ef8",
"agents/gsd-code-reviewer.md": "27eeeee6cb600e9b",
"agents/gsd-codebase-mapper.md": "019215e91bf01097",
"agents/gsd-debug-session-manager.md": "ef00dde32e35150f",
"agents/gsd-debugger.md": "41bdbb009989d3a0",
"agents/gsd-doc-classifier.md": "bdf3d54082424e76",
"agents/gsd-doc-synthesizer.md": "96c383b74a60fbbe",
"agents/gsd-doc-verifier.md": "da9ab6f3ec27778a",
"agents/gsd-doc-writer.md": "7b247b42f674c9ba",
"agents/gsd-domain-researcher.md": "bd054bb27beed2a7",
"agents/gsd-eval-auditor.md": "57cc7458ab5de6b7",
"agents/gsd-eval-planner.md": "01b665728dde4ccf",
"agents/gsd-executor.md": "18b780103d9fd511",
"agents/gsd-framework-selector.md": "82ba6abea84226b7",
"agents/gsd-integration-checker.md": "90835dbc7dfa1691",
"agents/gsd-intel-updater.md": "3cc4f6ddd04676ec",
"agents/gsd-mempalace-curator.md": "7a81acfbacc8bbd6",
"agents/gsd-nyquist-auditor.md": "2bf7126001ba3e70",
"agents/gsd-pattern-mapper.md": "83c66c7722e8b165",
"agents/gsd-phase-researcher.md": "284e55a86ae46d7f",
"agents/gsd-plan-checker.md": "e80e6d51017be405",
"agents/gsd-planner.md": "303c956e286d83dd",
"agents/gsd-project-researcher.md": "b5baac64a15c85e2",
"agents/gsd-research-synthesizer.md": "6cd9b501dc97bd50",
"agents/gsd-roadmapper.md": "c357a77ab919e9e5",
"agents/gsd-security-auditor.md": "9e3bc9a62036352c",
"agents/gsd-ui-auditor.md": "47937e784c9ae541",
"agents/gsd-ui-checker.md": "7d708c53a106f748",
"agents/gsd-ui-researcher.md": "e3768304c1c77753",
"agents/gsd-user-profiler.md": "13388a80dc302a66",
"agents/gsd-verifier.md": "76c590718eac86e5",
"gsd-core/.gsd-runtime": "2b626670f713516a",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "6e98d76e955e35a2",
"gsd-core/bin/gsd-tools.cjs": "8c238806b1682a9a",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "be09755fed7ad856",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "f827de93dde124eb",
"gsd-core/references/api-coverage.md": "53d290a68f83c7d0",
"gsd-core/references/artifact-types.md": "8bd01fd75a2ba70e",
"gsd-core/references/autonomous-smart-discuss.md": "2fc710cde0ec7785",
"gsd-core/references/checkpoints.md": "5e2d923303f16667",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "b862a6cda7a5f216",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-bug-taxonomy.md": "47e7929972c06378",
"gsd-core/references/debugger-fix-acceptance.md": "ab6a1cce253944f4",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "07ad93b8bcad3c34",
"gsd-core/references/debugger-sbfl.md": "061b719c754a12d3",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
"gsd-core/references/domain-probes.md": "762b965e84035b72",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "5687eba25a078561",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "8c2e5a596401dd33",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-quota-recovery.md": "713cf7681f57e7ce",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "41d8123374d3838b",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "099c8d52e3562336",
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
"gsd-core/references/git-integration.md": "bd249d9024c39c0d",
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
"gsd-core/references/gsd-run-resolver.md": "10575c928ff9230d",
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "3a05d03ea27c3a31",
"gsd-core/references/model-profiles.md": "0b7e06ed2e4abac8",
"gsd-core/references/mvp-concepts.md": "3464783eaaef5c10",
"gsd-core/references/offer-next.md": "8f98bc9d5956a004",
"gsd-core/references/phase-argument-parsing.md": "e5bbb985f3bc3e34",
"gsd-core/references/planner-antipatterns.md": "013ad54062399dad",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "1ed614dfba72f2a3",
"gsd-core/references/planner-guidance.md": "140b1266eeb096cb",
"gsd-core/references/planner-human-verify-mode.md": "ee0edddeed8eb946",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "3f6f5ee62d86f72d",
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "74acbf4a873a01e4",
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "7eaeb9dc43f0f9f1",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "52872d5393ea9daf",
"gsd-core/references/project-skills-discovery.md": "955696ea2864c826",
"gsd-core/references/questioning.md": "a8c988cab05f4651",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "62930e66cc979c1a",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "a857fc444baec27a",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "a18d7bfad0e10771",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "074038f98f03d222",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "ef519bff8c8bd572",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "827c1badf3e6df41",
"gsd-core/references/ui-brand.md": "48717bcfcd63bd27",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "6a1245050b21df01",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "b50416fe57c1b321",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "a3e2d5166d16a37b",
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
"gsd-core/references/workstream-flag.md": "59804937da1ddaa9",
"gsd-core/references/worktree-branch-check.md": "ea7fc76177f3e50d",
"gsd-core/references/worktree-path-safety.md": "b4111595eabec186",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "0944156249103c16",
"gsd-core/templates/README.md": "f4825d4fa594f2b1",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "e4d0f1c48727fce3",
"gsd-core/templates/claude-md.md": "ec5972ab31c0f5d0",
"gsd-core/templates/codebase/architecture.md": "6be88214162fdd89",
"gsd-core/templates/codebase/concerns.md": "efa26d1fb5132f25",
"gsd-core/templates/codebase/conventions.md": "c2e07698dad6b364",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "fe32daf7235d2a93",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "69b01e7909ea3f66",
"gsd-core/templates/continue-here.md": "f522a51b6895fba8",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "8c18a89e25929d8e",
"gsd-core/templates/dev-preferences.md": "95048a71063d980b",
"gsd-core/templates/discovery.md": "e4ab738326eb70e0",
"gsd-core/templates/discussion-log.md": "cac1b48ec0f4dcb8",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "213ccd947451ff2b",
"gsd-core/templates/planner-subagent-prompt.md": "6c9f1b23ee3dc05f",
"gsd-core/templates/project.md": "ae1f68db042c2522",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "fa6dfb2ff2e8d273",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "7dc900c355098d8b",
"gsd-core/templates/state.md": "73e424b8c70b765c",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "85f4d37fcee6852b",
"gsd-core/templates/user-profile.md": "20749f23e4c413fc",
"gsd-core/templates/user-setup.md": "78b7d718b6e8d67c",
"gsd-core/templates/verification-report.md": "dd5faa6254183731",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "cee41d5fc52d4e37",
"gsd-core/workflows/add-phase.md": "395fb0f9f0385073",
"gsd-core/workflows/add-tests.md": "1f95484dbcd26015",
"gsd-core/workflows/add-todo.md": "38dc89ce5080120f",
"gsd-core/workflows/ai-integration-phase.md": "81f16f3b6d5ef91a",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "7228bc0ab0c21c75",
"gsd-core/workflows/audit-milestone.md": "bba7e11665456e5c",
"gsd-core/workflows/audit-uat.md": "97d441d07e7972b3",
"gsd-core/workflows/autonomous.md": "edd128e7fcbc2027",
"gsd-core/workflows/check-todos.md": "dbc9c401c0922d92",
"gsd-core/workflows/cleanup.md": "48aa7291ace5d413",
"gsd-core/workflows/code-review-fix.md": "43d98fb7602f53f1",
"gsd-core/workflows/code-review.md": "7f912c70db0aa882",
"gsd-core/workflows/complete-milestone.md": "69925bcfd955d31e",
"gsd-core/workflows/debug.md": "65a1aaf1199593a0",
"gsd-core/workflows/diagnose-issues.md": "2ae0a1917a9a8a99",
"gsd-core/workflows/discovery-phase.md": "6ad9da4779d7b6b0",
"gsd-core/workflows/discuss-phase-assumptions.md": "e6a2396964ffe269",
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
"gsd-core/workflows/discuss-phase.md": "8644b72386a51241",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "3102430dfad9c012",
"gsd-core/workflows/discuss-phase/modes/all.md": "fa70d79066562e54",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "da0788f3be7f8105",
"gsd-core/workflows/discuss-phase/modes/auto.md": "20066d66f481e69c",
"gsd-core/workflows/discuss-phase/modes/batch.md": "6946597770e2d448",
"gsd-core/workflows/discuss-phase/modes/chain.md": "22ed6fd00d79ff71",
"gsd-core/workflows/discuss-phase/modes/default.md": "67d1b67f61f03966",
"gsd-core/workflows/discuss-phase/modes/power.md": "fdc7a728eaaa2261",
"gsd-core/workflows/discuss-phase/modes/text.md": "6914c661b95859ee",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "eeebda60636d1ad0",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "2e784b2d6a02ea94",
"gsd-core/workflows/docs-update.md": "03599fe1d110e511",
"gsd-core/workflows/edit-phase.md": "0fb5e0123cfc6f36",
"gsd-core/workflows/eval-review.md": "57a5eaade256fee4",
"gsd-core/workflows/execute-phase.md": "5f70bb011fd5ca0d",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "0e0949db56deebeb",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "2ca3c7397d44613f",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "0b04cc2dcab61107",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "9cbf100b17f4bcb1",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "ea93d7a5c3d483e8",
"gsd-core/workflows/explore.md": "c412905fb86f3f12",
"gsd-core/workflows/extract-learnings.md": "5791168e144ec997",
"gsd-core/workflows/fast.md": "93ed453edddd8c0c",
"gsd-core/workflows/forensics.md": "82800a3138ac1da9",
"gsd-core/workflows/graduation.md": "5d5004de086db1c8",
"gsd-core/workflows/health.md": "c6616e2893731db4",
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "7ca77077085452f5",
"gsd-core/workflows/help/modes/full.md": "4622116177849814",
"gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9",
"gsd-core/workflows/import.md": "ad55808e1dbef2e2",
"gsd-core/workflows/inbox.md": "e8a5db7443c524d6",
"gsd-core/workflows/ingest-docs.md": "51e2ce99f2dd5a99",
"gsd-core/workflows/insert-phase.md": "00a34b792c323959",
"gsd-core/workflows/list-phase-assumptions.md": "2a6b6a5acfb7742c",
"gsd-core/workflows/list-seeds.md": "8d6e1b5d85f64c6f",
"gsd-core/workflows/list-workspaces.md": "5e434933a3db695c",
"gsd-core/workflows/manager.md": "745a2b5080767882",
"gsd-core/workflows/map-codebase.md": "64b641b0fae702cf",
"gsd-core/workflows/milestone-summary.md": "97ddfc40c6bce906",
"gsd-core/workflows/mvp-phase.md": "9d226159c2aaae3d",
"gsd-core/workflows/new-milestone.md": "9754f2ef982755f0",
"gsd-core/workflows/new-project.md": "9560161b645ad784",
"gsd-core/workflows/new-workspace.md": "0b93348ced44810e",
"gsd-core/workflows/next.md": "0899cbefaefda97b",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "42b66686b2c102cb",
"gsd-core/workflows/onboard.md": "0f0af11294d31715",
"gsd-core/workflows/pause-work.md": "be33f84dc1d4822f",
"gsd-core/workflows/plan-milestone-gaps.md": "d98e98486123eb97",
"gsd-core/workflows/plan-phase.md": "ae220eaa7d90e137",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "c22ff5ea46de665a",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "d050d8d551ed1756",
"gsd-core/workflows/plan-review-convergence.md": "0b3451886cd307c3",
"gsd-core/workflows/plant-seed.md": "6b7375b5d52be7c7",
"gsd-core/workflows/pr-branch.md": "cef0f65b16d500b4",
"gsd-core/workflows/profile-user.md": "bb02367a5fc8653c",
"gsd-core/workflows/progress.md": "475eb60a2e739eed",
"gsd-core/workflows/quick.md": "a77e52603415dd41",
"gsd-core/workflows/reapply-patches.md": "de0ee8acfe7245b2",
"gsd-core/workflows/remove-phase.md": "e8ae4fbbfac700f0",
"gsd-core/workflows/remove-workspace.md": "ae520235f4d1f4a5",
"gsd-core/workflows/resume-project.md": "7f20769f302e5427",
"gsd-core/workflows/review.md": "c6d7f9e26af9fbdc",
"gsd-core/workflows/scan.md": "988236984298388d",
"gsd-core/workflows/secure-phase.md": "1fac755d714ce6d3",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "5e05212fb5cba531",
"gsd-core/workflows/settings-integrations.md": "c9fb71d26fd93527",
"gsd-core/workflows/settings.md": "83a13de5926ead14",
"gsd-core/workflows/ship.md": "c5041231ec976644",
"gsd-core/workflows/sketch-wrap-up.md": "89e0eab2af946b04",
"gsd-core/workflows/sketch.md": "6e68bbff5c1e6db0",
"gsd-core/workflows/smart-entry.md": "072ac6efe8aafc38",
"gsd-core/workflows/spec-phase.md": "546b3a8eb1a97013",
"gsd-core/workflows/spike-wrap-up.md": "fe04cb3d30dcbc6c",
"gsd-core/workflows/spike.md": "c83108b751b70307",
"gsd-core/workflows/stats.md": "89a08155b92f4a2d",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "f24b6454c69d064a",
"gsd-core/workflows/transition.md": "a30cba2ad6920641",
"gsd-core/workflows/ui-phase.md": "d63ca02f7553343b",
"gsd-core/workflows/ui-review.md": "957823bde7448147",
"gsd-core/workflows/ultraplan-phase.md": "49921383982474e0",
"gsd-core/workflows/undo.md": "c433a552dab136dc",
"gsd-core/workflows/update.md": "ae8fab8975d203e2",
"gsd-core/workflows/validate-phase.md": "dcd953f03b69c26f",
"gsd-core/workflows/verify-phase.md": "7d8e241350136ca0",
"gsd-core/workflows/verify-work.md": "c7d9113ebe53f885",
"hooks/gsd-check-update-worker.js": "4bb354044e0dff91",
"hooks/gsd-check-update.js": "d2065cb3e725a42a",
"hooks/gsd-config-reload.js": "4f52b8a0120bb1b8",
"hooks/gsd-context-monitor.js": "b71785540277e9d7",
"hooks/gsd-cursor-post-tool.js": "8a8a249c0642cc71",
"hooks/gsd-cursor-pre-tool.js": "8cb8e8f895edaec9",
"hooks/gsd-cursor-session-start.js": "c78754e3516853e4",
"hooks/gsd-cursor-stop.js": "c46dc9be21b75f50",
"hooks/gsd-cursor-subagent-start.js": "ec1ea84a9a589b0a",
"hooks/gsd-cursor-subagent-stop.js": "8ee488d826bf3c37",
"hooks/gsd-ensure-canonical-path.js": "2df5e295b36c3334",
"hooks/gsd-graphify-update.sh": "81d716df76159e60",
"hooks/gsd-phase-boundary.sh": "4f3daad099fcdd50",
"hooks/gsd-prompt-guard.js": "696a0f65b9535cd1",
"hooks/gsd-read-guard.js": "1ea516209ef793c7",
"hooks/gsd-read-injection-scanner.js": "25a3c296a80c69e7",
"hooks/gsd-session-state.sh": "e54379ba86bf1b6d",
"hooks/gsd-statusline.js": "390b3601312345ae",
"hooks/gsd-update-banner.js": "b457746cb76c1957",
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
"hooks/gsd-workflow-guard.js": "41c59d9765ac36ae",
"hooks/gsd-worktree-path-guard.js": "d55016621969e923",
"hooks/lib/cursor-workspace.js": "45061acd75d55a28",
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
"hooks/managed-hooks-registry.cjs": "08741ed76f1d8970",
"package.json": "dbf8353f77358bc1",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7",
"skills/gsd-ns-context/SKILL.md": "654c71262d91650c",
"skills/gsd-ns-context/skills/docs-update/SKILL.md": "3d41e81ec571de60",
"skills/gsd-ns-context/skills/extract-learnings/SKILL.md": "8d38e55e5f8b774b",
"skills/gsd-ns-context/skills/graphify/SKILL.md": "ac3661e6e576188b",
"skills/gsd-ns-context/skills/map-codebase/SKILL.md": "cf65e61890448285",
"skills/gsd-ns-context/skills/mempalace-capture/SKILL.md": "175c5441158a0a9c",
"skills/gsd-ns-context/skills/mempalace-recall/SKILL.md": "c3f412d5a64f3921",
"skills/gsd-ns-ideate/SKILL.md": "4a0d2691054b23e5",
"skills/gsd-ns-ideate/skills/capture/SKILL.md": "05fa421c95fbad2d",
"skills/gsd-ns-ideate/skills/explore/SKILL.md": "7ee5c455f37093be",
"skills/gsd-ns-ideate/skills/sketch/SKILL.md": "e531174c131acc85",
"skills/gsd-ns-ideate/skills/spec-phase/SKILL.md": "7e4dfa2070b7d9d1",
"skills/gsd-ns-ideate/skills/spike/SKILL.md": "04d5f50d8d4a1c1a",
"skills/gsd-ns-manage/SKILL.md": "b6a1480f20b33bfa",
"skills/gsd-ns-manage/skills/cleanup/SKILL.md": "ea0ddedf403f309d",
"skills/gsd-ns-manage/skills/config/SKILL.md": "09a21c976161e5ae",
"skills/gsd-ns-manage/skills/health/SKILL.md": "ab21123ba99ec255",
"skills/gsd-ns-manage/skills/help/SKILL.md": "af56ff76cbd5e248",
"skills/gsd-ns-manage/skills/inbox/SKILL.md": "d05a099c0be02c60",
"skills/gsd-ns-manage/skills/manager/SKILL.md": "1370d93741e47828",
"skills/gsd-ns-manage/skills/pause-work/SKILL.md": "c7ea1020a3b4d06d",
"skills/gsd-ns-manage/skills/pr-branch/SKILL.md": "c5e26f2c6dff1355",
"skills/gsd-ns-manage/skills/resume-work/SKILL.md": "55df1b1adb14530c",
"skills/gsd-ns-manage/skills/settings/SKILL.md": "6d9fbddb0b00fd46",
"skills/gsd-ns-manage/skills/ship/SKILL.md": "bd6cb3b46d57123f",
"skills/gsd-ns-manage/skills/stats/SKILL.md": "5403a46852241fa8",
"skills/gsd-ns-manage/skills/surface/SKILL.md": "ef08f90f89ca373c",
"skills/gsd-ns-manage/skills/thread/SKILL.md": "a76c70c368f82dee",
"skills/gsd-ns-manage/skills/undo/SKILL.md": "0ad1218f55c94e4b",
"skills/gsd-ns-manage/skills/update/SKILL.md": "530b4206d729b56d",
"skills/gsd-ns-manage/skills/workspace/SKILL.md": "047c3f4247bc869e",
"skills/gsd-ns-manage/skills/workstreams/SKILL.md": "f4e54cb9b1ca0442",
"skills/gsd-ns-project/SKILL.md": "5d7ec93b195555e7",
"skills/gsd-ns-project/skills/audit-milestone/SKILL.md": "edb6a0cc6305d724",
"skills/gsd-ns-project/skills/complete-milestone/SKILL.md": "f6799a5a713be7bb",
"skills/gsd-ns-project/skills/import/SKILL.md": "88f83921a85e536b",
"skills/gsd-ns-project/skills/ingest-docs/SKILL.md": "eb85e654917a503a",
"skills/gsd-ns-project/skills/milestone-summary/SKILL.md": "33d51a325d314f3a",
"skills/gsd-ns-project/skills/new-milestone/SKILL.md": "24c97f2814d30501",
"skills/gsd-ns-project/skills/new-project/SKILL.md": "9d5c27ebfa2c4746",
"skills/gsd-ns-project/skills/onboard/SKILL.md": "46460b479b7524bf",
"skills/gsd-ns-project/skills/profile-user/SKILL.md": "78ca46045e85223f",
"skills/gsd-ns-project/skills/review-backlog/SKILL.md": "1708aab6cb919223",
"skills/gsd-ns-review/SKILL.md": "7badceb8627d8154",
"skills/gsd-ns-review/skills/audit-fix/SKILL.md": "d47c757ad361e503",
"skills/gsd-ns-review/skills/audit-uat/SKILL.md": "f3cb11adb6dab54f",
"skills/gsd-ns-review/skills/code-review/SKILL.md": "e862dc22848a6d24",
"skills/gsd-ns-review/skills/debug/SKILL.md": "42de44884d97d86d",
"skills/gsd-ns-review/skills/eval-review/SKILL.md": "b6b6059061388363",
"skills/gsd-ns-review/skills/forensics/SKILL.md": "4ef11f4cf902186f",
"skills/gsd-ns-review/skills/review/SKILL.md": "3202c2f3f3ba6759",
"skills/gsd-ns-review/skills/secure-phase/SKILL.md": "a6adf4729b606d5a",
"skills/gsd-ns-review/skills/ui-phase/SKILL.md": "7c9404102a9b9d74",
"skills/gsd-ns-review/skills/ui-review/SKILL.md": "ef8f643abff1486b",
"skills/gsd-ns-review/skills/validate-phase/SKILL.md": "70375e2381319d2b",
"skills/gsd-ns-workflow/SKILL.md": "5a65f9fb93a71cec",
"skills/gsd-ns-workflow/skills/add-tests/SKILL.md": "6661195a66f25ae8",
"skills/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "e58f7e9b779b8cee",
"skills/gsd-ns-workflow/skills/autonomous/SKILL.md": "fb57d2c08ea9e8bc",
"skills/gsd-ns-workflow/skills/discuss-phase/SKILL.md": "ff522155265107d2",
"skills/gsd-ns-workflow/skills/execute-phase/SKILL.md": "13518a22e020e1bf",
"skills/gsd-ns-workflow/skills/fast/SKILL.md": "5f3f8b0c3f564d14",
"skills/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "f9a1348c6c297579",
"skills/gsd-ns-workflow/skills/next/SKILL.md": "13e394affe675498",
"skills/gsd-ns-workflow/skills/phase/SKILL.md": "1ed640e5f06c7be6",
"skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "1206a0878a082581",
"skills/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "53242a6abe90c405",
"skills/gsd-ns-workflow/skills/progress/SKILL.md": "943538c4ac6bde19",
"skills/gsd-ns-workflow/skills/quick/SKILL.md": "bd5e4cb79bc41611",
"skills/gsd-ns-workflow/skills/spec-phase/SKILL.md": "7e4dfa2070b7d9d1",
"skills/gsd-ns-workflow/skills/ultraplan-phase/SKILL.md": "2d78c7b16aabebce",
"skills/gsd-ns-workflow/skills/verify-work/SKILL.md": "4e7825f61f3cf69c"
}

View File

@@ -1,415 +0,0 @@
{
".gsd-profile": "0e716a5fef4e6dc1",
".gsd/defaults.json": "57cf028821734f24",
"agents/gsd-advisor-researcher.md": "e5be2680b690c198",
"agents/gsd-ai-researcher.md": "abfc97706f16aaaf",
"agents/gsd-assumptions-analyzer.md": "b3219da6b194fdef",
"agents/gsd-code-fixer.md": "5fe29063843be67e",
"agents/gsd-code-reviewer.md": "338c46ab59c4e45f",
"agents/gsd-codebase-mapper.md": "85e624b7494ecdeb",
"agents/gsd-debug-session-manager.md": "774112ac5e5e48a0",
"agents/gsd-debugger.md": "2d6762c3a0974a31",
"agents/gsd-doc-classifier.md": "a6ab02b8f45f9d0b",
"agents/gsd-doc-synthesizer.md": "fd3c18addbc8265d",
"agents/gsd-doc-verifier.md": "e51e50892963ccc7",
"agents/gsd-doc-writer.md": "b0c3ad805b789226",
"agents/gsd-domain-researcher.md": "b80f76874c04e515",
"agents/gsd-eval-auditor.md": "470bf16303ec4d2e",
"agents/gsd-eval-planner.md": "22334fde85723c9d",
"agents/gsd-executor.md": "e47f3ac8cf7384c9",
"agents/gsd-framework-selector.md": "7726fccc86bfeb50",
"agents/gsd-integration-checker.md": "7cd2072984411c7f",
"agents/gsd-intel-updater.md": "83de6ba9172891c3",
"agents/gsd-mempalace-curator.md": "78f4894a9d5f44b1",
"agents/gsd-nyquist-auditor.md": "58efbed3b81b5ede",
"agents/gsd-pattern-mapper.md": "b5d7a4abb1baecb9",
"agents/gsd-phase-researcher.md": "2256f1f82212c757",
"agents/gsd-plan-checker.md": "aaa9e928de1abba9",
"agents/gsd-planner.md": "c99c8a75226d19b7",
"agents/gsd-project-researcher.md": "ddf7794e81300032",
"agents/gsd-research-synthesizer.md": "a124b00271748d07",
"agents/gsd-roadmapper.md": "493ef92b42b12cf4",
"agents/gsd-security-auditor.md": "1e2eea5b2ab16d6e",
"agents/gsd-ui-auditor.md": "771ae08260534d5c",
"agents/gsd-ui-checker.md": "7ecd910efa6eb00e",
"agents/gsd-ui-researcher.md": "9e1a84a55a4cac99",
"agents/gsd-user-profiler.md": "622220df0654b6bf",
"agents/gsd-verifier.md": "6c7e68a4a64cac57",
"gsd-core/.gsd-runtime": "c96852d55ce78a68",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "de4627dff103d527",
"gsd-core/bin/gsd-tools.cjs": "75505dba4a8d897b",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "18d1ff7c7fa0bab1",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "f827de93dde124eb",
"gsd-core/references/api-coverage.md": "53d290a68f83c7d0",
"gsd-core/references/artifact-types.md": "8bd01fd75a2ba70e",
"gsd-core/references/autonomous-smart-discuss.md": "2fc710cde0ec7785",
"gsd-core/references/checkpoints.md": "4d24ce110ed6c746",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "bdff0159e58a8568",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-bug-taxonomy.md": "d0458c690c4487c9",
"gsd-core/references/debugger-fix-acceptance.md": "134f83886c343733",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "4bf1af239ae875f3",
"gsd-core/references/debugger-sbfl.md": "23d7a3bb15bc8b7c",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
"gsd-core/references/domain-probes.md": "762b965e84035b72",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "5687eba25a078561",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "7a1aa0ad7963f809",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-quota-recovery.md": "713cf7681f57e7ce",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "973a3a6a5db7e449",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "099c8d52e3562336",
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
"gsd-core/references/git-integration.md": "1bd40c3f94d712b1",
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
"gsd-core/references/gsd-run-resolver.md": "0534754c2758352a",
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "3a05d03ea27c3a31",
"gsd-core/references/model-profiles.md": "b4527b0f255d193f",
"gsd-core/references/mvp-concepts.md": "3464783eaaef5c10",
"gsd-core/references/offer-next.md": "1c9ae4014a95d269",
"gsd-core/references/phase-argument-parsing.md": "e562947d1bf5c5a4",
"gsd-core/references/planner-antipatterns.md": "013ad54062399dad",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "1ed614dfba72f2a3",
"gsd-core/references/planner-guidance.md": "140b1266eeb096cb",
"gsd-core/references/planner-human-verify-mode.md": "0bb1176995ac1d81",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "9a9383599893ea7e",
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "74acbf4a873a01e4",
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "e333d958ae0179dd",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "52872d5393ea9daf",
"gsd-core/references/project-skills-discovery.md": "2aa2a5388d41a97e",
"gsd-core/references/questioning.md": "a8c988cab05f4651",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "62930e66cc979c1a",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "a857fc444baec27a",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "91208b2d0617c845",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "99be8a3315c75183",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "ef519bff8c8bd572",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "827c1badf3e6df41",
"gsd-core/references/ui-brand.md": "48717bcfcd63bd27",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "6a1245050b21df01",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "b50416fe57c1b321",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "a3e2d5166d16a37b",
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
"gsd-core/references/workstream-flag.md": "77d0e004039fb480",
"gsd-core/references/worktree-branch-check.md": "d20c16a7b42cceee",
"gsd-core/references/worktree-path-safety.md": "34689482908229bc",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "0944156249103c16",
"gsd-core/templates/README.md": "332f65072c3f03ae",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "e4d0f1c48727fce3",
"gsd-core/templates/claude-md.md": "17217a07ab8a6485",
"gsd-core/templates/codebase/architecture.md": "6be88214162fdd89",
"gsd-core/templates/codebase/concerns.md": "efa26d1fb5132f25",
"gsd-core/templates/codebase/conventions.md": "c2e07698dad6b364",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "c9c5df7a8911bca9",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "69b01e7909ea3f66",
"gsd-core/templates/continue-here.md": "f522a51b6895fba8",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "8c18a89e25929d8e",
"gsd-core/templates/dev-preferences.md": "95048a71063d980b",
"gsd-core/templates/discovery.md": "e4ab738326eb70e0",
"gsd-core/templates/discussion-log.md": "cac1b48ec0f4dcb8",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "213ccd947451ff2b",
"gsd-core/templates/planner-subagent-prompt.md": "6c9f1b23ee3dc05f",
"gsd-core/templates/project.md": "ae1f68db042c2522",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "fa6dfb2ff2e8d273",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "7dc900c355098d8b",
"gsd-core/templates/state.md": "73e424b8c70b765c",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "85f4d37fcee6852b",
"gsd-core/templates/user-profile.md": "20749f23e4c413fc",
"gsd-core/templates/user-setup.md": "78b7d718b6e8d67c",
"gsd-core/templates/verification-report.md": "dd5faa6254183731",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "1851e97996d445d5",
"gsd-core/workflows/add-phase.md": "7403cf0bc93a9699",
"gsd-core/workflows/add-tests.md": "0eb1496a1afdff33",
"gsd-core/workflows/add-todo.md": "bc8dcc0faf1e46f8",
"gsd-core/workflows/ai-integration-phase.md": "a45f85a616295092",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "04ca2d8293c07725",
"gsd-core/workflows/audit-milestone.md": "40739a72a0e85e73",
"gsd-core/workflows/audit-uat.md": "6e768b1c208a787a",
"gsd-core/workflows/autonomous.md": "e7702a642488473e",
"gsd-core/workflows/check-todos.md": "31a2b2a5a28a409a",
"gsd-core/workflows/cleanup.md": "ad625e9596e04cda",
"gsd-core/workflows/code-review-fix.md": "65fb541d22e6d7b6",
"gsd-core/workflows/code-review.md": "7b947dbf2d6bab03",
"gsd-core/workflows/complete-milestone.md": "98951eb5783fe72c",
"gsd-core/workflows/debug.md": "a43a8faff556fb16",
"gsd-core/workflows/diagnose-issues.md": "207dcdb85650d239",
"gsd-core/workflows/discovery-phase.md": "7644e2d890a21212",
"gsd-core/workflows/discuss-phase-assumptions.md": "4850f9cd455e6b23",
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
"gsd-core/workflows/discuss-phase.md": "4509657816c5566a",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "c9cd7db62e76ebcb",
"gsd-core/workflows/discuss-phase/modes/all.md": "e698b84ebb2ff56d",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "c824ef897199b730",
"gsd-core/workflows/discuss-phase/modes/auto.md": "6ba5c7b738f44003",
"gsd-core/workflows/discuss-phase/modes/batch.md": "21ee55869eaa7ece",
"gsd-core/workflows/discuss-phase/modes/chain.md": "4739c3d2ef20a76c",
"gsd-core/workflows/discuss-phase/modes/default.md": "67d1b67f61f03966",
"gsd-core/workflows/discuss-phase/modes/power.md": "55b61b7dc83a58b2",
"gsd-core/workflows/discuss-phase/modes/text.md": "e1043e27b50a5e18",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "eeebda60636d1ad0",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "6b56aa4a44ca61fc",
"gsd-core/workflows/docs-update.md": "78cd8efff2717c77",
"gsd-core/workflows/edit-phase.md": "7facd0faa33c8cad",
"gsd-core/workflows/eval-review.md": "263c8971520f632e",
"gsd-core/workflows/execute-phase.md": "695cf3c2b07e8920",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "296b812e8d0e9ce8",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "c1d6db937a51d433",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7d30384e9bf82664",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "90efedae3decaffe",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "3abba98d19b31036",
"gsd-core/workflows/explore.md": "f4d0db08c11545a8",
"gsd-core/workflows/extract-learnings.md": "1ee1ee86b7d8bb43",
"gsd-core/workflows/fast.md": "0f05b1e008ac2fc2",
"gsd-core/workflows/forensics.md": "665546666547875d",
"gsd-core/workflows/graduation.md": "defc0dfcbfeb68d2",
"gsd-core/workflows/health.md": "d4cec6ef023e9833",
"gsd-core/workflows/help.md": "08e1349950c5602a",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "ed7368e0d1b8644a",
"gsd-core/workflows/help/modes/full.md": "244a1c2b87d4d334",
"gsd-core/workflows/help/modes/topic.md": "8a5344e56fa64ab9",
"gsd-core/workflows/import.md": "a957c640a14c7844",
"gsd-core/workflows/inbox.md": "1abe5a3114bbf1c3",
"gsd-core/workflows/ingest-docs.md": "3a40ec243aaaddc2",
"gsd-core/workflows/insert-phase.md": "753fa719f0d41d76",
"gsd-core/workflows/list-phase-assumptions.md": "eb986c301d59f620",
"gsd-core/workflows/list-seeds.md": "74ec072a74f8fdfe",
"gsd-core/workflows/list-workspaces.md": "886e99378a3d19d9",
"gsd-core/workflows/manager.md": "fd834a4236bd1b2e",
"gsd-core/workflows/map-codebase.md": "fff68c1ff8a4ea63",
"gsd-core/workflows/milestone-summary.md": "a0063cfbe08f2250",
"gsd-core/workflows/mvp-phase.md": "c4e49ad83e1413ef",
"gsd-core/workflows/new-milestone.md": "268dbc3e79a9f2a9",
"gsd-core/workflows/new-project.md": "1071df1be5ede34e",
"gsd-core/workflows/new-workspace.md": "89e5df89d54a2f47",
"gsd-core/workflows/next.md": "259c8c42c4ce622b",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "acc9130fb1e94f0b",
"gsd-core/workflows/onboard.md": "015695a7e9cf59bc",
"gsd-core/workflows/pause-work.md": "c20d267e28ce92f0",
"gsd-core/workflows/plan-milestone-gaps.md": "26db7b9329b7ddc8",
"gsd-core/workflows/plan-phase.md": "89eb12b0d0561bcc",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "e06ccd4d4c0703fb",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "778b73a8db6f7c32",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "619946c879f33b9d",
"gsd-core/workflows/plan-review-convergence.md": "ce4685ee46d343d2",
"gsd-core/workflows/plant-seed.md": "622f246ea8e163fa",
"gsd-core/workflows/pr-branch.md": "79fd55b88ea2db9c",
"gsd-core/workflows/profile-user.md": "aa0737531d487f10",
"gsd-core/workflows/progress.md": "1fe098b4d559ba55",
"gsd-core/workflows/quick.md": "efb557fbe8b4db60",
"gsd-core/workflows/reapply-patches.md": "21b38c374f19fd78",
"gsd-core/workflows/remove-phase.md": "a46c2fe853bf4e86",
"gsd-core/workflows/remove-workspace.md": "8ddc5f04f7c48d6c",
"gsd-core/workflows/resume-project.md": "f242e4c8aba18ea2",
"gsd-core/workflows/review.md": "663197fee51897e4",
"gsd-core/workflows/scan.md": "73a9c7810f892ea1",
"gsd-core/workflows/secure-phase.md": "34f5e4d8e31c928d",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "39e66386f6c48025",
"gsd-core/workflows/settings-integrations.md": "8bb1c2bdebbc56e6",
"gsd-core/workflows/settings.md": "db6121276c6f63a4",
"gsd-core/workflows/ship.md": "b78862b054e8064c",
"gsd-core/workflows/sketch-wrap-up.md": "dbec602d104cb951",
"gsd-core/workflows/sketch.md": "6a6e543f2b667278",
"gsd-core/workflows/smart-entry.md": "5631e2e70b02abba",
"gsd-core/workflows/spec-phase.md": "7b8873b0cd3eb9d7",
"gsd-core/workflows/spike-wrap-up.md": "6fe876cb87603bc3",
"gsd-core/workflows/spike.md": "0644cd621b35bedb",
"gsd-core/workflows/stats.md": "e4f84542fb5721ef",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "0582c6be8a78bbd8",
"gsd-core/workflows/transition.md": "45dc17cc631dc485",
"gsd-core/workflows/ui-phase.md": "9fcb76f015e49c36",
"gsd-core/workflows/ui-review.md": "fc37240a571ea55e",
"gsd-core/workflows/ultraplan-phase.md": "77b58ef8af5209bd",
"gsd-core/workflows/undo.md": "0222476f90d97de3",
"gsd-core/workflows/update.md": "489c3a1b41f7de78",
"gsd-core/workflows/validate-phase.md": "2323df09d3192bb5",
"gsd-core/workflows/verify-phase.md": "101bf5a6e15f0b04",
"gsd-core/workflows/verify-work.md": "6bd6621bbc88577e",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7",
"skills/gsd-ns-context/SKILL.md": "9353c36c249db204",
"skills/gsd-ns-context/skills/docs-update/SKILL.md": "26ec00ef228c2bdb",
"skills/gsd-ns-context/skills/extract-learnings/SKILL.md": "1fc6ba92fc18eb86",
"skills/gsd-ns-context/skills/graphify/SKILL.md": "371ce22f2fe319bc",
"skills/gsd-ns-context/skills/map-codebase/SKILL.md": "cfc5310b903d594a",
"skills/gsd-ns-context/skills/mempalace-capture/SKILL.md": "52cb3eacc890c44c",
"skills/gsd-ns-context/skills/mempalace-recall/SKILL.md": "73b0b7a6301cb214",
"skills/gsd-ns-ideate/SKILL.md": "aa399385b735c7c1",
"skills/gsd-ns-ideate/skills/capture/SKILL.md": "3b7fc696b2107bcf",
"skills/gsd-ns-ideate/skills/explore/SKILL.md": "34495849e42be247",
"skills/gsd-ns-ideate/skills/sketch/SKILL.md": "318e76d151f6c3c1",
"skills/gsd-ns-ideate/skills/spec-phase/SKILL.md": "9291f835233fa8da",
"skills/gsd-ns-ideate/skills/spike/SKILL.md": "b84100b5c869880f",
"skills/gsd-ns-manage/SKILL.md": "d44c39486fd6b83d",
"skills/gsd-ns-manage/skills/cleanup/SKILL.md": "1aa3427198e6ee04",
"skills/gsd-ns-manage/skills/config/SKILL.md": "f67d9051f635a030",
"skills/gsd-ns-manage/skills/health/SKILL.md": "2a4f959f80995d1d",
"skills/gsd-ns-manage/skills/help/SKILL.md": "52a981e1a34dd41d",
"skills/gsd-ns-manage/skills/inbox/SKILL.md": "88b260e6166d7b8d",
"skills/gsd-ns-manage/skills/manager/SKILL.md": "ac5c418cee66ee19",
"skills/gsd-ns-manage/skills/pause-work/SKILL.md": "ba8390423acccdeb",
"skills/gsd-ns-manage/skills/pr-branch/SKILL.md": "28d58cf0bb655bbc",
"skills/gsd-ns-manage/skills/resume-work/SKILL.md": "7e1f9d4d1fc60bca",
"skills/gsd-ns-manage/skills/settings/SKILL.md": "e3590bb5e3d0fdf2",
"skills/gsd-ns-manage/skills/ship/SKILL.md": "456609cf127b36dc",
"skills/gsd-ns-manage/skills/stats/SKILL.md": "f5f5f1fbfe65cee8",
"skills/gsd-ns-manage/skills/surface/SKILL.md": "2c92a300547a5a97",
"skills/gsd-ns-manage/skills/thread/SKILL.md": "48894eaf985265b3",
"skills/gsd-ns-manage/skills/undo/SKILL.md": "0deb95bc44edf37c",
"skills/gsd-ns-manage/skills/update/SKILL.md": "ffcd813ad256769b",
"skills/gsd-ns-manage/skills/workspace/SKILL.md": "e942e86d9e284d0f",
"skills/gsd-ns-manage/skills/workstreams/SKILL.md": "2374d16c8b5653d5",
"skills/gsd-ns-project/SKILL.md": "7c5ed3164048d2fe",
"skills/gsd-ns-project/skills/audit-milestone/SKILL.md": "6d9e265675fd6440",
"skills/gsd-ns-project/skills/complete-milestone/SKILL.md": "9a36fb672ddb2334",
"skills/gsd-ns-project/skills/import/SKILL.md": "46f9c44249ddc9e3",
"skills/gsd-ns-project/skills/ingest-docs/SKILL.md": "9254dae5d5104a80",
"skills/gsd-ns-project/skills/milestone-summary/SKILL.md": "a5aa590c17da3075",
"skills/gsd-ns-project/skills/new-milestone/SKILL.md": "827a2fd21878df0b",
"skills/gsd-ns-project/skills/new-project/SKILL.md": "cbbd2ed15bd72d39",
"skills/gsd-ns-project/skills/onboard/SKILL.md": "28a81722a1083234",
"skills/gsd-ns-project/skills/profile-user/SKILL.md": "7ed27739a950999f",
"skills/gsd-ns-project/skills/review-backlog/SKILL.md": "0285f773cc4e3bfe",
"skills/gsd-ns-review/SKILL.md": "a89fa5e8afbb7c56",
"skills/gsd-ns-review/skills/audit-fix/SKILL.md": "c07aea2676e00c7b",
"skills/gsd-ns-review/skills/audit-uat/SKILL.md": "fc192f6cba1a99fd",
"skills/gsd-ns-review/skills/code-review/SKILL.md": "467fee86ac8af71d",
"skills/gsd-ns-review/skills/debug/SKILL.md": "1b9030f4a138bedc",
"skills/gsd-ns-review/skills/eval-review/SKILL.md": "919f1aaad7d9a46a",
"skills/gsd-ns-review/skills/forensics/SKILL.md": "95f2f0a901b7b31a",
"skills/gsd-ns-review/skills/review/SKILL.md": "c35628771471201e",
"skills/gsd-ns-review/skills/secure-phase/SKILL.md": "875a24903352fc0f",
"skills/gsd-ns-review/skills/ui-phase/SKILL.md": "33b2394c085b93e8",
"skills/gsd-ns-review/skills/ui-review/SKILL.md": "6d6b47e51e60afc6",
"skills/gsd-ns-review/skills/validate-phase/SKILL.md": "536619be8c40ff5e",
"skills/gsd-ns-workflow/SKILL.md": "2c85abe6d78c7cf7",
"skills/gsd-ns-workflow/skills/add-tests/SKILL.md": "6e10735c8b18de8a",
"skills/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "8bbad0f4c9624d4e",
"skills/gsd-ns-workflow/skills/autonomous/SKILL.md": "a9d7374b631ae7b3",
"skills/gsd-ns-workflow/skills/discuss-phase/SKILL.md": "d2f1554b9faab0a1",
"skills/gsd-ns-workflow/skills/execute-phase/SKILL.md": "e05fc375d4b5f7b5",
"skills/gsd-ns-workflow/skills/fast/SKILL.md": "08f8ce2ba96921cc",
"skills/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "fef8178c9920c2dd",
"skills/gsd-ns-workflow/skills/next/SKILL.md": "faadd9e2817e7324",
"skills/gsd-ns-workflow/skills/phase/SKILL.md": "df3efcd61f7cc796",
"skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "c6c607b03b043eb1",
"skills/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "b27aad9196476875",
"skills/gsd-ns-workflow/skills/progress/SKILL.md": "37a37d2cdfba46ea",
"skills/gsd-ns-workflow/skills/quick/SKILL.md": "6fd1b96274b23a9f",
"skills/gsd-ns-workflow/skills/spec-phase/SKILL.md": "9291f835233fa8da",
"skills/gsd-ns-workflow/skills/ultraplan-phase/SKILL.md": "a3cd6f98acc738f0",
"skills/gsd-ns-workflow/skills/verify-work/SKILL.md": "25dc4ab4e4a060bc"
}

View File

@@ -1,345 +0,0 @@
{
".gsd-profile": "0e716a5fef4e6dc1",
".gsd/defaults.json": "7a17effa731d8356",
"agents/gsd-advisor-researcher.md": "e5be2680b690c198",
"agents/gsd-ai-researcher.md": "abfc97706f16aaaf",
"agents/gsd-assumptions-analyzer.md": "b3219da6b194fdef",
"agents/gsd-code-fixer.md": "f00d815ec535a168",
"agents/gsd-code-reviewer.md": "efc0d2dee321c654",
"agents/gsd-codebase-mapper.md": "afc125fe279e618f",
"agents/gsd-debug-session-manager.md": "89e8c56d6737fd86",
"agents/gsd-debugger.md": "7f9bd63ccb6e57c2",
"agents/gsd-doc-classifier.md": "a6ab02b8f45f9d0b",
"agents/gsd-doc-synthesizer.md": "fd3c18addbc8265d",
"agents/gsd-doc-verifier.md": "ede2f297b73b5a86",
"agents/gsd-doc-writer.md": "0109294817e475a8",
"agents/gsd-domain-researcher.md": "56395dbdabf076f6",
"agents/gsd-eval-auditor.md": "fb64fc5acf359747",
"agents/gsd-eval-planner.md": "2049dac060d00eda",
"agents/gsd-executor.md": "f7c8d3dba51391b2",
"agents/gsd-framework-selector.md": "4b77eebbe9288d80",
"agents/gsd-integration-checker.md": "4ffb37fb230c2b90",
"agents/gsd-intel-updater.md": "a81d77c143c02108",
"agents/gsd-mempalace-curator.md": "78f4894a9d5f44b1",
"agents/gsd-nyquist-auditor.md": "0ef8609fd897e399",
"agents/gsd-pattern-mapper.md": "ada0c169daa2f0ec",
"agents/gsd-phase-researcher.md": "2a45ebde829555ec",
"agents/gsd-plan-checker.md": "c68b9bd6382a22a7",
"agents/gsd-planner.md": "f9e2d99c4daf51de",
"agents/gsd-project-researcher.md": "f6697b316b5995ba",
"agents/gsd-research-synthesizer.md": "04036f38c1d373ea",
"agents/gsd-roadmapper.md": "fb62e1e3de84b5f9",
"agents/gsd-security-auditor.md": "cacf711cb835300b",
"agents/gsd-ui-auditor.md": "20cc99872e9b998b",
"agents/gsd-ui-checker.md": "56698909c270b130",
"agents/gsd-ui-researcher.md": "c348aa3ff8412ecb",
"agents/gsd-user-profiler.md": "622220df0654b6bf",
"agents/gsd-verifier.md": "4c43a4929c6f8013",
"gsd-core/.gsd-runtime": "fe100af8906532d6",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "5636ca0b726871b2",
"gsd-core/bin/gsd-tools.cjs": "7b24add017befd53",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "849977da771f2b06",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "f827de93dde124eb",
"gsd-core/references/api-coverage.md": "53d290a68f83c7d0",
"gsd-core/references/artifact-types.md": "8bd01fd75a2ba70e",
"gsd-core/references/autonomous-smart-discuss.md": "273b371c5751f35a",
"gsd-core/references/checkpoints.md": "900530adaf675e38",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "7a53f9d14e306e3a",
"gsd-core/references/continuation-format.md": "580287399ad3ba68",
"gsd-core/references/debugger-bug-taxonomy.md": "5d8c0a266a6d61f8",
"gsd-core/references/debugger-fix-acceptance.md": "ddd00cbd78dd3fdf",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "b5d7c4a5804327c3",
"gsd-core/references/debugger-sbfl.md": "071651eaf7414a4c",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "883d0a1b9d9ff96e",
"gsd-core/references/domain-probes.md": "762b965e84035b72",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "692b44ca096f96e6",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "1587345770b19c7f",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-quota-recovery.md": "713cf7681f57e7ce",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "96485eccd4606e54",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "099c8d52e3562336",
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
"gsd-core/references/git-integration.md": "6ec36ea6b868655f",
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
"gsd-core/references/gsd-run-resolver.md": "1bb6a410d6ebfb33",
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "3a05d03ea27c3a31",
"gsd-core/references/model-profiles.md": "09aa53e3f1764a41",
"gsd-core/references/mvp-concepts.md": "3464783eaaef5c10",
"gsd-core/references/offer-next.md": "1c9ae4014a95d269",
"gsd-core/references/phase-argument-parsing.md": "e562947d1bf5c5a4",
"gsd-core/references/planner-antipatterns.md": "013ad54062399dad",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "1ed614dfba72f2a3",
"gsd-core/references/planner-guidance.md": "140b1266eeb096cb",
"gsd-core/references/planner-human-verify-mode.md": "86c8c7052806711f",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "18d50b6d12db830e",
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "74acbf4a873a01e4",
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "6afdf982d6b1663e",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "8f3eb787e3845e2f",
"gsd-core/references/project-skills-discovery.md": "8a03bb1f0960e235",
"gsd-core/references/questioning.md": "faac32813d1735bd",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "62930e66cc979c1a",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "a857fc444baec27a",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "fb3ce4dc193bb32a",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "5ec1ddd3c4134750",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "ef519bff8c8bd572",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "827c1badf3e6df41",
"gsd-core/references/ui-brand.md": "48717bcfcd63bd27",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "6a1245050b21df01",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "b50416fe57c1b321",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "a3e2d5166d16a37b",
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
"gsd-core/references/workstream-flag.md": "481ec11fe3e22236",
"gsd-core/references/worktree-branch-check.md": "6a28b79d092173dd",
"gsd-core/references/worktree-path-safety.md": "0e8a26b9b3424974",
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
"gsd-core/templates/DEBUG.md": "0944156249103c16",
"gsd-core/templates/README.md": "ee35799bf08677f3",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "68d32d1fea14e184",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "e4d0f1c48727fce3",
"gsd-core/templates/claude-md.md": "20be2a0201ab92cd",
"gsd-core/templates/codebase/architecture.md": "6be88214162fdd89",
"gsd-core/templates/codebase/concerns.md": "efa26d1fb5132f25",
"gsd-core/templates/codebase/conventions.md": "c2e07698dad6b364",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "f7e0345b72e84e6e",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "69b01e7909ea3f66",
"gsd-core/templates/continue-here.md": "f522a51b6895fba8",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "8c18a89e25929d8e",
"gsd-core/templates/dev-preferences.md": "95048a71063d980b",
"gsd-core/templates/discovery.md": "e4ab738326eb70e0",
"gsd-core/templates/discussion-log.md": "cac1b48ec0f4dcb8",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "213ccd947451ff2b",
"gsd-core/templates/planner-subagent-prompt.md": "6c9f1b23ee3dc05f",
"gsd-core/templates/project.md": "ae1f68db042c2522",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "fa6dfb2ff2e8d273",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "7dc900c355098d8b",
"gsd-core/templates/state.md": "73e424b8c70b765c",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "85f4d37fcee6852b",
"gsd-core/templates/user-profile.md": "20749f23e4c413fc",
"gsd-core/templates/user-setup.md": "78b7d718b6e8d67c",
"gsd-core/templates/verification-report.md": "dd5faa6254183731",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "61169973a10b1321",
"gsd-core/workflows/add-phase.md": "78cca7f86793f7f8",
"gsd-core/workflows/add-tests.md": "4a244c69af35ede3",
"gsd-core/workflows/add-todo.md": "21cdcf699aac8c64",
"gsd-core/workflows/ai-integration-phase.md": "eab19bf009d39266",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "fd8ba9db9c56dd81",
"gsd-core/workflows/audit-milestone.md": "ffc48dbaca92b927",
"gsd-core/workflows/audit-uat.md": "d496e39402e160de",
"gsd-core/workflows/autonomous.md": "c6638fb24a9f9024",
"gsd-core/workflows/check-todos.md": "c72eec15c87fa877",
"gsd-core/workflows/cleanup.md": "da44b987853e1a74",
"gsd-core/workflows/code-review-fix.md": "07ee5febf2472156",
"gsd-core/workflows/code-review.md": "93d603506d72468a",
"gsd-core/workflows/complete-milestone.md": "3324ec6da5856f21",
"gsd-core/workflows/debug.md": "56c27e13cdb531ee",
"gsd-core/workflows/diagnose-issues.md": "3991fb0ec18050e2",
"gsd-core/workflows/discovery-phase.md": "313c3a5213449309",
"gsd-core/workflows/discuss-phase-assumptions.md": "cee9bb2cd280ab36",
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
"gsd-core/workflows/discuss-phase.md": "ce4e6abce9cb2d4e",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "cb49f485c4a1f09e",
"gsd-core/workflows/discuss-phase/modes/all.md": "d2a1d16e2508a0cd",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "c824ef897199b730",
"gsd-core/workflows/discuss-phase/modes/auto.md": "e98b6efbfd66d409",
"gsd-core/workflows/discuss-phase/modes/batch.md": "c23d5bdbdb60362c",
"gsd-core/workflows/discuss-phase/modes/chain.md": "2f3acba636e436aa",
"gsd-core/workflows/discuss-phase/modes/default.md": "4ada4fe332c5c985",
"gsd-core/workflows/discuss-phase/modes/power.md": "55b61b7dc83a58b2",
"gsd-core/workflows/discuss-phase/modes/text.md": "aeb56fe7b95dd786",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "eeebda60636d1ad0",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "cd5d01c9ef84ab73",
"gsd-core/workflows/do.md": "c2ee0bb845bc1cf1",
"gsd-core/workflows/docs-update.md": "8fd49fe7a89da620",
"gsd-core/workflows/edit-phase.md": "c0ae7d0063f3e789",
"gsd-core/workflows/eval-review.md": "26051580110e6217",
"gsd-core/workflows/execute-phase.md": "383836c8c1d0fa7e",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "3194ecd382690755",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "becb931701890353",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "fb4497767cdf73a3",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "c54d55fad3ab5263",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "2ff04f06b000fe26",
"gsd-core/workflows/explore.md": "e5ff3269f8ee77b6",
"gsd-core/workflows/extract-learnings.md": "894218dd99cf2131",
"gsd-core/workflows/fast.md": "b03b9f595892479a",
"gsd-core/workflows/forensics.md": "3d1ce16b5f605592",
"gsd-core/workflows/graduation.md": "0783b074a1c7013b",
"gsd-core/workflows/health.md": "b629995ffabf5386",
"gsd-core/workflows/help.md": "08e1349950c5602a",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "6a253f1756f74e95",
"gsd-core/workflows/help/modes/full.md": "99bb7fe52937dd41",
"gsd-core/workflows/help/modes/topic.md": "cee80e0adfa3b06c",
"gsd-core/workflows/import.md": "66ba334402aa357a",
"gsd-core/workflows/inbox.md": "556b5a10c580ebad",
"gsd-core/workflows/ingest-docs.md": "83642549c97aa0c1",
"gsd-core/workflows/insert-phase.md": "9aac75665c3a0ee8",
"gsd-core/workflows/list-phase-assumptions.md": "eb986c301d59f620",
"gsd-core/workflows/list-seeds.md": "39162bbefe932b3d",
"gsd-core/workflows/list-workspaces.md": "6950fb740a1e96ab",
"gsd-core/workflows/manager.md": "10e895f5b83168fc",
"gsd-core/workflows/map-codebase.md": "06eb656727c7758d",
"gsd-core/workflows/milestone-summary.md": "1fdbae19ad06a0a3",
"gsd-core/workflows/mvp-phase.md": "0b22d99b2f3aee0b",
"gsd-core/workflows/new-milestone.md": "85610dc440404ae2",
"gsd-core/workflows/new-project.md": "823b42b781f497e0",
"gsd-core/workflows/new-workspace.md": "b503e947ab08ab96",
"gsd-core/workflows/next.md": "727392fe9b42cea8",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "1c1e466c764e3deb",
"gsd-core/workflows/onboard.md": "7d0c7449b84c7997",
"gsd-core/workflows/pause-work.md": "93fcc1c845da6396",
"gsd-core/workflows/plan-milestone-gaps.md": "7880866ee1caf923",
"gsd-core/workflows/plan-phase.md": "746b22884b1dda55",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "e06ccd4d4c0703fb",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "80b1ba493a9a967f",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "3fed4740a91d0443",
"gsd-core/workflows/plan-review-convergence.md": "d9700b18dfb71452",
"gsd-core/workflows/plant-seed.md": "caa8fef75821b24c",
"gsd-core/workflows/pr-branch.md": "acd59f915d018ad4",
"gsd-core/workflows/profile-user.md": "33b150468a6789db",
"gsd-core/workflows/progress.md": "3e4ac518362ba665",
"gsd-core/workflows/quick.md": "f606815b016488fc",
"gsd-core/workflows/reapply-patches.md": "d449a23d3acf6379",
"gsd-core/workflows/remove-phase.md": "e7a6af429b36e77b",
"gsd-core/workflows/remove-workspace.md": "30ca05fe4a3efc25",
"gsd-core/workflows/resume-project.md": "82cfe1b8cb17c085",
"gsd-core/workflows/review.md": "8a9380fa5a5a3b12",
"gsd-core/workflows/scan.md": "a93cb61ed701c91f",
"gsd-core/workflows/secure-phase.md": "646aec1615738a8e",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "2f86ec7b998f9485",
"gsd-core/workflows/settings-integrations.md": "159d0ae32b511129",
"gsd-core/workflows/settings.md": "26fff45b86d827aa",
"gsd-core/workflows/ship.md": "8ddef34295aa8394",
"gsd-core/workflows/sketch-wrap-up.md": "10063f56c2c7f141",
"gsd-core/workflows/sketch.md": "c15716376df41c97",
"gsd-core/workflows/smart-entry.md": "3fed94530109124b",
"gsd-core/workflows/spec-phase.md": "744faedd273da0f7",
"gsd-core/workflows/spike-wrap-up.md": "8029ca4effb5b716",
"gsd-core/workflows/spike.md": "d3190af9c3f57260",
"gsd-core/workflows/stats.md": "d58325fc3fb8d1b6",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "d83a0d0bd0f94c4c",
"gsd-core/workflows/transition.md": "5e2c96544e9981ed",
"gsd-core/workflows/ui-phase.md": "e946cffc791c1439",
"gsd-core/workflows/ui-review.md": "34d330851a6ac9a5",
"gsd-core/workflows/ultraplan-phase.md": "53b77a8edf60acd0",
"gsd-core/workflows/undo.md": "733189fb34cc026b",
"gsd-core/workflows/update.md": "f62a1df3b92e1a0f",
"gsd-core/workflows/validate-phase.md": "d4c093a8e4ae4d95",
"gsd-core/workflows/verify-phase.md": "382490481d794ed5",
"gsd-core/workflows/verify-work.md": "bef318ddc15c0627",
"hooks/gsd-windsurf-pre-command.js": "7467a8a63e354aad",
"hooks/gsd-windsurf-pre-write.js": "1c8a776d7ae2dcce",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7"
}

View File

@@ -1,486 +0,0 @@
{
".gsd-profile": "0e716a5fef4e6dc1",
".gsd/defaults.json": "98c870b9b696a3a5",
"agents/gsd-advisor-researcher.md": "f1c4a47d3d8cea72",
"agents/gsd-ai-researcher.md": "2f2da4b89d445860",
"agents/gsd-assumptions-analyzer.md": "f11a80795163bb5d",
"agents/gsd-code-fixer.md": "78549833f0411b0c",
"agents/gsd-code-reviewer.md": "7d94fe8bfa6661aa",
"agents/gsd-codebase-mapper.md": "3941bfc98c091018",
"agents/gsd-debug-session-manager.md": "7065bea4cedab2f6",
"agents/gsd-debugger.md": "7840ed78e3f662a8",
"agents/gsd-doc-classifier.md": "146acf4d176134b5",
"agents/gsd-doc-synthesizer.md": "b1f5e2eb28fa3659",
"agents/gsd-doc-verifier.md": "7ed4d9611f678a95",
"agents/gsd-doc-writer.md": "3ed3dc255d7eca8d",
"agents/gsd-domain-researcher.md": "049f588663814fa2",
"agents/gsd-eval-auditor.md": "54870d3b07433525",
"agents/gsd-eval-planner.md": "552e9fa164c51ce8",
"agents/gsd-executor.md": "ab4f1cbca7c22663",
"agents/gsd-framework-selector.md": "8a795f230436ad2e",
"agents/gsd-integration-checker.md": "c1760a0bbd4f7bf5",
"agents/gsd-intel-updater.md": "944f1d903e2e9e09",
"agents/gsd-mempalace-curator.md": "399e90e473b33814",
"agents/gsd-nyquist-auditor.md": "f2232a1be0835709",
"agents/gsd-pattern-mapper.md": "68ecefd60811a669",
"agents/gsd-phase-researcher.md": "2235f61764d8e969",
"agents/gsd-plan-checker.md": "f3caf89525709445",
"agents/gsd-planner.md": "88acabd0285bb25b",
"agents/gsd-project-researcher.md": "f572892f138734ff",
"agents/gsd-research-synthesizer.md": "29949bf3f049a8f1",
"agents/gsd-roadmapper.md": "840ac933e3b094f9",
"agents/gsd-security-auditor.md": "4b86fa11ebda981e",
"agents/gsd-ui-auditor.md": "76f446c50edf81f8",
"agents/gsd-ui-checker.md": "15949ccab982b71c",
"agents/gsd-ui-researcher.md": "0e8ec8509d476904",
"agents/gsd-user-profiler.md": "ca3bf75581f211a0",
"agents/gsd-verifier.md": "cd5bea62bf704829",
"commands/gsd-add-tests.md": "51542808862d4aa7",
"commands/gsd-ai-integration-phase.md": "a693c0ade172bc3d",
"commands/gsd-audit-fix.md": "24d7e5478c271584",
"commands/gsd-audit-milestone.md": "192c2d4979ef6a5e",
"commands/gsd-audit-uat.md": "a7ce7c63bf2db68e",
"commands/gsd-autonomous.md": "35ccce06299833cf",
"commands/gsd-capture.md": "b8494f0d0b1aff6a",
"commands/gsd-cleanup.md": "e7b7644ddcefdf01",
"commands/gsd-code-review.md": "1687eabcdf03f643",
"commands/gsd-complete-milestone.md": "0b9066c97cf17898",
"commands/gsd-config.md": "f6532a6cff144abe",
"commands/gsd-debug.md": "9b42a48f5ae6836a",
"commands/gsd-discuss-phase.md": "5a29df7d87aeb5cc",
"commands/gsd-docs-update.md": "4992630ef84a9bfe",
"commands/gsd-eval-review.md": "56a5842110d51254",
"commands/gsd-execute-phase.md": "6bc473253c54343c",
"commands/gsd-explore.md": "99d92deebce81126",
"commands/gsd-extract-learnings.md": "b74c866e71283e49",
"commands/gsd-fast.md": "5ac666f183c840ae",
"commands/gsd-forensics.md": "fd672efe51d65a1a",
"commands/gsd-graphify.md": "43e6dc6f9a38a043",
"commands/gsd-health.md": "5339a925c497c35b",
"commands/gsd-help.md": "9101ee73c245037e",
"commands/gsd-import.md": "8a81293674937978",
"commands/gsd-inbox.md": "da55c1408a6ee6cc",
"commands/gsd-ingest-docs.md": "7a3c21ae5d5d133a",
"commands/gsd-manager.md": "9f54653a7c589b00",
"commands/gsd-map-codebase.md": "709e9572953accc6",
"commands/gsd-mempalace-capture.md": "c0892e814b04350a",
"commands/gsd-mempalace-recall.md": "5ac67fa4b7f2b03b",
"commands/gsd-milestone-summary.md": "f8fa9c357c08b74b",
"commands/gsd-mvp-phase.md": "cba67bcb55250e5f",
"commands/gsd-new-milestone.md": "8d52385b21cadd20",
"commands/gsd-new-project.md": "952d7601b800ad8d",
"commands/gsd-next.md": "7d3a2cb0bd12043a",
"commands/gsd-ns-context.md": "011c44e7aa46e64a",
"commands/gsd-ns-ideate.md": "edc5e543512dd48a",
"commands/gsd-ns-manage.md": "0409d810e499357f",
"commands/gsd-ns-project.md": "ff67e85bc6f7fc5a",
"commands/gsd-ns-review.md": "3766ed10827882a0",
"commands/gsd-ns-workflow.md": "c3b3c046a74ec0ee",
"commands/gsd-onboard.md": "a35340ce39334fc7",
"commands/gsd-pause-work.md": "40a953fcddbedb5d",
"commands/gsd-phase.md": "5dd3d40e3461a973",
"commands/gsd-plan-phase.md": "8ab637314511ea88",
"commands/gsd-plan-review-convergence.md": "f3aab422e0708dae",
"commands/gsd-pr-branch.md": "ab1fcffe92129061",
"commands/gsd-profile-user.md": "37c9ef202669bfd3",
"commands/gsd-progress.md": "13d7e5ba8acc2605",
"commands/gsd-quick.md": "3b9762ba2616ac69",
"commands/gsd-resume-work.md": "ece9c3a5f64e21a6",
"commands/gsd-review-backlog.md": "c5b557d4cb1b223d",
"commands/gsd-review.md": "3e8908603a3c2b28",
"commands/gsd-secure-phase.md": "34f8fb0720708cd1",
"commands/gsd-settings.md": "6f95c7d98a02f13a",
"commands/gsd-ship.md": "141c690957330961",
"commands/gsd-sketch.md": "770df13e2f848d0e",
"commands/gsd-spec-phase.md": "c0e592ef19cc6721",
"commands/gsd-spike.md": "5c85bade6e6b804f",
"commands/gsd-stats.md": "bea8a4f0e6f2ddf3",
"commands/gsd-surface.md": "0317dc3b56ffcce6",
"commands/gsd-thread.md": "56036040a95fc60b",
"commands/gsd-ui-phase.md": "b48b780198ec7a2e",
"commands/gsd-ui-review.md": "2ed61b5729f6e492",
"commands/gsd-ultraplan-phase.md": "08e75b083f5fe3f2",
"commands/gsd-undo.md": "479c579d2bb7c141",
"commands/gsd-update.md": "6f59562ac2d6bee5",
"commands/gsd-validate-phase.md": "22ad3181017f1b0e",
"commands/gsd-verify-work.md": "71aad09ecfd3f844",
"commands/gsd-workspace.md": "611002e4941d5654",
"commands/gsd-workstreams.md": "57a8ef0af8c085d7",
"gsd-core/.gsd-runtime": "d0f601b915afd6bf",
"gsd-core/VERSION": "ef0deccd81a6723c",
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
"gsd-core/bin/ensure-runtime-build.cjs": "51bc64467ab30f62",
"gsd-core/bin/gsd-tools.cjs": "e1996ac045ff5fde",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "3a3581ea768cbe6a",
"gsd-core/bin/shared/config-schema.manifest.json": "377dc46be7b56fe8",
"gsd-core/bin/shared/model-catalog.json": "59f3233132969e27",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "e14346bdbd0ebd64",
"gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904",
"gsd-core/contexts/dev.md": "dcb0de9dce33cf41",
"gsd-core/contexts/research.md": "b3285d8e7209cc3b",
"gsd-core/contexts/review.md": "dc578fdd74bbea11",
"gsd-core/references/agent-contracts.md": "ff65e633c656c0d2",
"gsd-core/references/agent-skills-bootstrap.md": "5ab875054b1adda9",
"gsd-core/references/ai-evals.md": "b5afa786b938671e",
"gsd-core/references/ai-frameworks.md": "f827de93dde124eb",
"gsd-core/references/api-coverage.md": "913654a1cdb3baf1",
"gsd-core/references/artifact-types.md": "a6d2e1f9453ffbf5",
"gsd-core/references/autonomous-smart-discuss.md": "2fc710cde0ec7785",
"gsd-core/references/checkpoints.md": "c2fe89c42ca88349",
"gsd-core/references/common-bug-patterns.md": "a4cfea8954dede29",
"gsd-core/references/context-budget.md": "6749084395889c6a",
"gsd-core/references/continuation-format.md": "ce73e57d053ab8a7",
"gsd-core/references/debugger-bug-taxonomy.md": "78fb8c1711acc971",
"gsd-core/references/debugger-fix-acceptance.md": "5616622f33e00436",
"gsd-core/references/debugger-philosophy.md": "16f0cb55eb457f33",
"gsd-core/references/debugger-prevention.md": "74b6c5556a428efd",
"gsd-core/references/debugger-rca-branching.md": "7dcf3ddbe3591250",
"gsd-core/references/debugger-repro-hardening.md": "fdf55a6cee9b1792",
"gsd-core/references/debugger-sbfl.md": "a7d0cd5940d6d2cd",
"gsd-core/references/debugger-semantic-recall.md": "4add324d495cb25c",
"gsd-core/references/decimal-phase-calculation.md": "46b5ba045852c474",
"gsd-core/references/doc-conflict-engine.md": "67d019d23e17f934",
"gsd-core/references/domain-probes.md": "62d23ed1992c48a9",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/01-round-half-even/requirements.json": "fbc1b355d8625eeb",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json": "66dd60957fee45f0",
"gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json": "47fca61f076835fa",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json": "72d1e29cedc854ec",
"gsd-core/references/edge-probe-fixtures/04-money-rounding/requirements.json": "80f04f5c04fb24cf",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json": "fad67dcc8294f6da",
"gsd-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json": "d38147adb0e5b342",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json": "bc552c01939bf4f8",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json": "30a78ee9ce3473ea",
"gsd-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json": "688ec62c13e08afe",
"gsd-core/references/edge-probe.md": "5687eba25a078561",
"gsd-core/references/execute-mvp-tdd.md": "a98a270a7ab126bc",
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242",
"gsd-core/references/execute-phase-quota-recovery.md": "c4ca0ee3875b6e02",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
"gsd-core/references/few-shot-examples/verifier.md": "5badee4560b14ae8",
"gsd-core/references/gate-prompts.md": "e69f5993ab944d80",
"gsd-core/references/gates.md": "bd79c7f90c8cb8d7",
"gsd-core/references/git-integration.md": "77bf9dff38b2c9d4",
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
"gsd-core/references/gsd-run-resolver.md": "e71eb728b84641b1",
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
"gsd-core/references/model-profile-resolution.md": "3a05d03ea27c3a31",
"gsd-core/references/model-profiles.md": "e067ad3df6770db1",
"gsd-core/references/mvp-concepts.md": "72f7e8b1f8ae7118",
"gsd-core/references/offer-next.md": "689740e4c2ed16f4",
"gsd-core/references/phase-argument-parsing.md": "e5bbb985f3bc3e34",
"gsd-core/references/planner-antipatterns.md": "013ad54062399dad",
"gsd-core/references/planner-chunked.md": "79fe674221e738e6",
"gsd-core/references/planner-gap-closure.md": "76bee257911413e7",
"gsd-core/references/planner-graphify-auto-update.md": "6aeffd9097e25e22",
"gsd-core/references/planner-guidance.md": "96486cac2f7885e6",
"gsd-core/references/planner-human-verify-mode.md": "56d05e841630b3f4",
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
"gsd-core/references/planner-preconditions.md": "4511829607ec9107",
"gsd-core/references/planner-reversibility.md": "d75786c2d3e6ff5c",
"gsd-core/references/planner-reviews.md": "dda0193a0fbd4947",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "ab3b698fe23bab9b",
"gsd-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json": "f10df472f2846cc6",
"gsd-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json": "31e8a781eeffe020",
"gsd-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json": "70a532a7cc1b6ae8",
"gsd-core/references/prohibition-probe.md": "605dc3f5a118ff3b",
"gsd-core/references/project-skills-discovery.md": "c155e03dce8dc3c2",
"gsd-core/references/questioning.md": "a8c988cab05f4651",
"gsd-core/references/research-documentation-lookup.md": "c070007d1d72ab71",
"gsd-core/references/research-philosophy.md": "62930e66cc979c1a",
"gsd-core/references/research-verification-protocol.md": "9c38c9d9a687e679",
"gsd-core/references/reviewer-instances.md": "ae64e44f2f132bc2",
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
"gsd-core/references/runtime-aware-dispatch.md": "0bbbb0735b6080fa",
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
"gsd-core/references/sketch-variant-patterns.md": "66c197aa4fb52810",
"gsd-core/references/specless-probe-fallback.md": "5e400dc05a15e972",
"gsd-core/references/spidr-splitting.md": "074ac154c0e4f906",
"gsd-core/references/tdd.md": "e4708ede157478b6",
"gsd-core/references/thinking-models-debug.md": "2da61022b16c4e7c",
"gsd-core/references/thinking-models-execution.md": "dcc650a8b5f3e049",
"gsd-core/references/thinking-models-planning.md": "ef519bff8c8bd572",
"gsd-core/references/thinking-models-research.md": "5f6bf3f3b889c6e4",
"gsd-core/references/thinking-models-verification.md": "a71a933d51ca3d8d",
"gsd-core/references/thinking-partner.md": "41069529ef776e39",
"gsd-core/references/ui-brand.md": "48717bcfcd63bd27",
"gsd-core/references/ui-consideration-probe.md": "7e019dfaae47f4c4",
"gsd-core/references/universal-anti-patterns.md": "6a1245050b21df01",
"gsd-core/references/untrusted-input-boundary.md": "d33b80d4d348599a",
"gsd-core/references/user-profiling.md": "b50416fe57c1b321",
"gsd-core/references/user-story-template.md": "0cc50e06a144ff8a",
"gsd-core/references/verification-overrides.md": "8213de9bd62283b6",
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
"gsd-core/references/workstream-flag.md": "ca99ca79e716f0f5",
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
"gsd-core/templates/DEBUG.md": "c8768312f4c1e438",
"gsd-core/templates/README.md": "93d3426fc64e2c12",
"gsd-core/templates/SECURITY.md": "b628f7f1c6d2328f",
"gsd-core/templates/UAT.md": "9e296471b97ebcec",
"gsd-core/templates/UI-SPEC.md": "7dd5c7cdc7ece0ec",
"gsd-core/templates/VALIDATION.md": "6f0fe4214dff6dd1",
"gsd-core/templates/claude-md.md": "d1d333e4b963c0d2",
"gsd-core/templates/codebase/architecture.md": "6be88214162fdd89",
"gsd-core/templates/codebase/concerns.md": "efa26d1fb5132f25",
"gsd-core/templates/codebase/conventions.md": "c2e07698dad6b364",
"gsd-core/templates/codebase/integrations.md": "39bd23c71eedd564",
"gsd-core/templates/codebase/stack.md": "116e7e67dd87ddec",
"gsd-core/templates/codebase/structure.md": "222997133232a6f5",
"gsd-core/templates/codebase/testing.md": "76abff7f2050c9ea",
"gsd-core/templates/config.json": "a4b783ef759a0f37",
"gsd-core/templates/context.md": "69b01e7909ea3f66",
"gsd-core/templates/continue-here.md": "f522a51b6895fba8",
"gsd-core/templates/copilot-instructions.md": "aea34bc52ff548ea",
"gsd-core/templates/debug-subagent-prompt.md": "920656683dedb869",
"gsd-core/templates/dev-preferences.md": "88d0a65ec0993a3a",
"gsd-core/templates/discovery.md": "9a0e0935cc825dbc",
"gsd-core/templates/discussion-log.md": "cac1b48ec0f4dcb8",
"gsd-core/templates/milestone-archive.md": "591b6decdc0c0e51",
"gsd-core/templates/milestone.md": "74d2f750ae9f4a9c",
"gsd-core/templates/phase-prompt.md": "b811bf951092df2f",
"gsd-core/templates/planner-subagent-prompt.md": "ebf29dbb27042370",
"gsd-core/templates/project.md": "4f311fb1b05b823b",
"gsd-core/templates/requirements.md": "a44de4c2f146e473",
"gsd-core/templates/research-project/ARCHITECTURE.md": "746b9ef791d758b0",
"gsd-core/templates/research-project/FEATURES.md": "f2b800de5df91b0f",
"gsd-core/templates/research-project/PITFALLS.md": "3ef75fa768422eec",
"gsd-core/templates/research-project/STACK.md": "82c85799ac4dd344",
"gsd-core/templates/research-project/SUMMARY.md": "dceb2f346388839d",
"gsd-core/templates/research.md": "88ce0920417091d0",
"gsd-core/templates/retrospective.md": "03981e30dd760103",
"gsd-core/templates/roadmap.md": "e4e35a9eb5dd4d4f",
"gsd-core/templates/spec.md": "26d55bce940f0288",
"gsd-core/templates/state.md": "4d123aa6cea167fe",
"gsd-core/templates/summary-complex.md": "a5e40574fd8894dc",
"gsd-core/templates/summary-minimal.md": "d5f40260721e307d",
"gsd-core/templates/summary-standard.md": "a4fb6df80f41b545",
"gsd-core/templates/summary.md": "85f4d37fcee6852b",
"gsd-core/templates/user-profile.md": "20749f23e4c413fc",
"gsd-core/templates/user-setup.md": "78b7d718b6e8d67c",
"gsd-core/templates/verification-report.md": "dd5faa6254183731",
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "1bc7377b105194fc",
"gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8",
"gsd-core/workflows/add-tests.md": "7e7268602f9e1b2a",
"gsd-core/workflows/add-todo.md": "5dc04cfaa0b6b072",
"gsd-core/workflows/ai-integration-phase.md": "308378c9044a52e1",
"gsd-core/workflows/analyze-dependencies.md": "52942af10f140717",
"gsd-core/workflows/audit-fix.md": "7650bcb334e622a6",
"gsd-core/workflows/audit-milestone.md": "6174b6f87844973c",
"gsd-core/workflows/audit-uat.md": "fcfbec501620b564",
"gsd-core/workflows/autonomous.md": "aed5e67104346cc2",
"gsd-core/workflows/check-todos.md": "c484e472cff0e4e3",
"gsd-core/workflows/cleanup.md": "df79d1dc7b84d736",
"gsd-core/workflows/code-review-fix.md": "9fef1cf740c7c155",
"gsd-core/workflows/code-review.md": "22b53c0d29508d57",
"gsd-core/workflows/complete-milestone.md": "8f98d7b05793cf4a",
"gsd-core/workflows/debug.md": "3f0218b051c1afb1",
"gsd-core/workflows/diagnose-issues.md": "9a1591d7b17ed778",
"gsd-core/workflows/discovery-phase.md": "0aa8d8d872b53858",
"gsd-core/workflows/discuss-phase-assumptions.md": "9c8b6b66df026e33",
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
"gsd-core/workflows/discuss-phase.md": "d0a67b6f77b4d339",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653",
"gsd-core/workflows/discuss-phase/modes/all.md": "fa70d79066562e54",
"gsd-core/workflows/discuss-phase/modes/analyze.md": "da0788f3be7f8105",
"gsd-core/workflows/discuss-phase/modes/auto.md": "d06f0bea2ba0b240",
"gsd-core/workflows/discuss-phase/modes/batch.md": "6946597770e2d448",
"gsd-core/workflows/discuss-phase/modes/chain.md": "5502a67de7776853",
"gsd-core/workflows/discuss-phase/modes/default.md": "67d1b67f61f03966",
"gsd-core/workflows/discuss-phase/modes/power.md": "fdc7a728eaaa2261",
"gsd-core/workflows/discuss-phase/modes/text.md": "da6d45207da4a988",
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "eeebda60636d1ad0",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "90df4f1fe248cdf3",
"gsd-core/workflows/docs-update.md": "fba7329f525c9463",
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
"gsd-core/workflows/eval-review.md": "c2933259ff7fb6ac",
"gsd-core/workflows/execute-phase.md": "3ffcd069e2aeb62b",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "f7782680c2b8ad6b",
"gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md": "ab70374e44eb85cd",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "4f43b65cf80d8f2e",
"gsd-core/workflows/explore.md": "3f3b4f83e23349bc",
"gsd-core/workflows/extract-learnings.md": "ab26f2cbb14efef2",
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
"gsd-core/workflows/forensics.md": "0d500a3f5ab26913",
"gsd-core/workflows/graduation.md": "973dcebcd17e1b10",
"gsd-core/workflows/health.md": "c25b5e5f62874c31",
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
"gsd-core/workflows/help/modes/full.md": "2a9fa350d21a3062",
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
"gsd-core/workflows/import.md": "57abe514a9b0f6ac",
"gsd-core/workflows/inbox.md": "a7d439981775bc29",
"gsd-core/workflows/ingest-docs.md": "781799b47d282b37",
"gsd-core/workflows/insert-phase.md": "08dca838d831bb5b",
"gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3",
"gsd-core/workflows/list-seeds.md": "b687f2a843032d65",
"gsd-core/workflows/list-workspaces.md": "7f94e18b5c549453",
"gsd-core/workflows/manager.md": "c18fab593344253d",
"gsd-core/workflows/map-codebase.md": "51aebfe0523f3bcf",
"gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043",
"gsd-core/workflows/mvp-phase.md": "58a952b4715db283",
"gsd-core/workflows/new-milestone.md": "8164a9abc301f143",
"gsd-core/workflows/new-project.md": "c8622794a64900e8",
"gsd-core/workflows/new-workspace.md": "bbeb706c7a697617",
"gsd-core/workflows/next.md": "4e1eb6b46d15798d",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "5a99eb396c744619",
"gsd-core/workflows/onboard.md": "f29c4fbef3b473fd",
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
"gsd-core/workflows/plan-phase.md": "c0a589a39100d6f8",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5",
"gsd-core/workflows/plan-review-convergence.md": "db69460dd4df0d29",
"gsd-core/workflows/plant-seed.md": "9596db80ab282c6f",
"gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b",
"gsd-core/workflows/profile-user.md": "74005f062c870393",
"gsd-core/workflows/progress.md": "46c83ad61b3c4a84",
"gsd-core/workflows/quick.md": "47f785430dc5738b",
"gsd-core/workflows/reapply-patches.md": "39050f72601aec89",
"gsd-core/workflows/remove-phase.md": "df9a45f0b1880999",
"gsd-core/workflows/remove-workspace.md": "f67860c795fb4bfe",
"gsd-core/workflows/resume-project.md": "f28da1200e4545f4",
"gsd-core/workflows/review.md": "8724993cbc91bcc5",
"gsd-core/workflows/scan.md": "0583dac337623f82",
"gsd-core/workflows/secure-phase.md": "00225810eaed265b",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44",
"gsd-core/workflows/settings-integrations.md": "effcef778d4a855f",
"gsd-core/workflows/settings.md": "85ceb482dc713169",
"gsd-core/workflows/ship.md": "ca94c87c80a70c27",
"gsd-core/workflows/sketch-wrap-up.md": "86db87b16548117e",
"gsd-core/workflows/sketch.md": "fcd52f8d9076e183",
"gsd-core/workflows/smart-entry.md": "004b4060eab97cb9",
"gsd-core/workflows/spec-phase.md": "fa8669b75392cf6c",
"gsd-core/workflows/spike-wrap-up.md": "d643447e16e95753",
"gsd-core/workflows/spike.md": "242c6ba2176bac83",
"gsd-core/workflows/stats.md": "76a42cbeaf6007c2",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "927e7eeefd2fcf5c",
"gsd-core/workflows/transition.md": "aea486bb7a0e80e7",
"gsd-core/workflows/ui-phase.md": "bae68b9585b238ac",
"gsd-core/workflows/ui-review.md": "387f7cefc849dba1",
"gsd-core/workflows/ultraplan-phase.md": "0fb8291153e3937d",
"gsd-core/workflows/undo.md": "1712417bade30b30",
"gsd-core/workflows/update.md": "8a76f19db5c12935",
"gsd-core/workflows/validate-phase.md": "171ff4aa9b392475",
"gsd-core/workflows/verify-phase.md": "d26a2c3269340caf",
"gsd-core/workflows/verify-work.md": "bc9dcabfc5be2e81",
"scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
"scripts/changeset/lint.cjs": "23cb53f77a6ea180",
"scripts/changeset/new.cjs": "4991e21fd17f5541",
"scripts/changeset/parse.cjs": "c0a9bbc3914aee04",
"scripts/changeset/render.cjs": "e47bc3e1587c3cae",
"scripts/changeset/serialize.cjs": "ac0b8fe6f87cdb0e",
"scripts/fix-slash-commands.cjs": "0519742531ff3529",
"scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7",
"scripts/gen-loop-host-contract.cjs": "c7f15237234811a0",
"scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660",
"scripts/lib/cli-exit.cjs": "612d0c372c75b7e7",
"skills/gsd-ns-context/SKILL.md": "654c71262d91650c",
"skills/gsd-ns-context/skills/docs-update/SKILL.md": "8fb602920a333d73",
"skills/gsd-ns-context/skills/extract-learnings/SKILL.md": "6de7eeaaf4939e5d",
"skills/gsd-ns-context/skills/graphify/SKILL.md": "d54c2b44e8059299",
"skills/gsd-ns-context/skills/map-codebase/SKILL.md": "f48d48b43e2cc4bd",
"skills/gsd-ns-context/skills/mempalace-capture/SKILL.md": "175c5441158a0a9c",
"skills/gsd-ns-context/skills/mempalace-recall/SKILL.md": "c3f412d5a64f3921",
"skills/gsd-ns-ideate/SKILL.md": "4a0d2691054b23e5",
"skills/gsd-ns-ideate/skills/capture/SKILL.md": "c848255c134a860f",
"skills/gsd-ns-ideate/skills/explore/SKILL.md": "168a5b8d52127624",
"skills/gsd-ns-ideate/skills/sketch/SKILL.md": "11ef7d436090ae09",
"skills/gsd-ns-ideate/skills/spec-phase/SKILL.md": "052cfb21eb0ee3d4",
"skills/gsd-ns-ideate/skills/spike/SKILL.md": "3b5e6ea4bf8d81cc",
"skills/gsd-ns-manage/SKILL.md": "b6a1480f20b33bfa",
"skills/gsd-ns-manage/skills/cleanup/SKILL.md": "7579f085459dc393",
"skills/gsd-ns-manage/skills/config/SKILL.md": "2ae550cacdfc08a4",
"skills/gsd-ns-manage/skills/health/SKILL.md": "f766339e1de08cb6",
"skills/gsd-ns-manage/skills/help/SKILL.md": "93b961bb1f1b322b",
"skills/gsd-ns-manage/skills/inbox/SKILL.md": "0b5f4ce8ee98ac3c",
"skills/gsd-ns-manage/skills/manager/SKILL.md": "2f6228d719073d19",
"skills/gsd-ns-manage/skills/pause-work/SKILL.md": "c5454473ffeba05e",
"skills/gsd-ns-manage/skills/pr-branch/SKILL.md": "2976577caa538486",
"skills/gsd-ns-manage/skills/resume-work/SKILL.md": "b0d8628cc6d578ab",
"skills/gsd-ns-manage/skills/settings/SKILL.md": "8fcd8b04bb607ca7",
"skills/gsd-ns-manage/skills/ship/SKILL.md": "eb23c16b4893b035",
"skills/gsd-ns-manage/skills/stats/SKILL.md": "af60a0fed275a90b",
"skills/gsd-ns-manage/skills/surface/SKILL.md": "cf3c08a3fe963be7",
"skills/gsd-ns-manage/skills/thread/SKILL.md": "59e0ea339e45a105",
"skills/gsd-ns-manage/skills/undo/SKILL.md": "22d4462c987b7b66",
"skills/gsd-ns-manage/skills/update/SKILL.md": "01ca0efbdb8f6efa",
"skills/gsd-ns-manage/skills/workspace/SKILL.md": "c6c07625a373e6a3",
"skills/gsd-ns-manage/skills/workstreams/SKILL.md": "f4e54cb9b1ca0442",
"skills/gsd-ns-project/SKILL.md": "5d7ec93b195555e7",
"skills/gsd-ns-project/skills/audit-milestone/SKILL.md": "a6eb7edcfd23c7e4",
"skills/gsd-ns-project/skills/complete-milestone/SKILL.md": "d7f6202222d1b26e",
"skills/gsd-ns-project/skills/import/SKILL.md": "0a734021e0b86481",
"skills/gsd-ns-project/skills/ingest-docs/SKILL.md": "0fadb4f9c69aa61d",
"skills/gsd-ns-project/skills/milestone-summary/SKILL.md": "c77f6c8ce7c57db9",
"skills/gsd-ns-project/skills/new-milestone/SKILL.md": "c7c20da62ac3f6e1",
"skills/gsd-ns-project/skills/new-project/SKILL.md": "e3cfd1fdbc2c3406",
"skills/gsd-ns-project/skills/onboard/SKILL.md": "84519552f7396347",
"skills/gsd-ns-project/skills/profile-user/SKILL.md": "f57ad5e5c5899100",
"skills/gsd-ns-project/skills/review-backlog/SKILL.md": "1708aab6cb919223",
"skills/gsd-ns-review/SKILL.md": "7badceb8627d8154",
"skills/gsd-ns-review/skills/audit-fix/SKILL.md": "e005e777f3b607ef",
"skills/gsd-ns-review/skills/audit-uat/SKILL.md": "cb5f445d66e7f9c4",
"skills/gsd-ns-review/skills/code-review/SKILL.md": "8d3bc8093ac9a676",
"skills/gsd-ns-review/skills/debug/SKILL.md": "1b2864b06019554b",
"skills/gsd-ns-review/skills/eval-review/SKILL.md": "00b35a36a2f16f2f",
"skills/gsd-ns-review/skills/forensics/SKILL.md": "0169426d0dcda2db",
"skills/gsd-ns-review/skills/review/SKILL.md": "d80db8762bec97de",
"skills/gsd-ns-review/skills/secure-phase/SKILL.md": "56ee4246050ba8b5",
"skills/gsd-ns-review/skills/ui-phase/SKILL.md": "fabc841fb1f364cc",
"skills/gsd-ns-review/skills/ui-review/SKILL.md": "444a4366f19899c3",
"skills/gsd-ns-review/skills/validate-phase/SKILL.md": "9e1c7909c089ee46",
"skills/gsd-ns-workflow/SKILL.md": "5a65f9fb93a71cec",
"skills/gsd-ns-workflow/skills/add-tests/SKILL.md": "303c01b7dd9c7614",
"skills/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "f0333bffe02141b7",
"skills/gsd-ns-workflow/skills/autonomous/SKILL.md": "f1c614fed8f4d0a5",
"skills/gsd-ns-workflow/skills/discuss-phase/SKILL.md": "997ae1063e8c3703",
"skills/gsd-ns-workflow/skills/execute-phase/SKILL.md": "b2627b774725a381",
"skills/gsd-ns-workflow/skills/fast/SKILL.md": "0dc6926e16dcc1cb",
"skills/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "3455ea7562a447a2",
"skills/gsd-ns-workflow/skills/next/SKILL.md": "63659cd48a0276f9",
"skills/gsd-ns-workflow/skills/phase/SKILL.md": "b377b03d13db8573",
"skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "a0b43b907671a98e",
"skills/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "84af9aa192ec349f",
"skills/gsd-ns-workflow/skills/progress/SKILL.md": "fb24eab4a0e5f6a3",
"skills/gsd-ns-workflow/skills/quick/SKILL.md": "48629fef2b9ac5b0",
"skills/gsd-ns-workflow/skills/spec-phase/SKILL.md": "052cfb21eb0ee3d4",
"skills/gsd-ns-workflow/skills/ultraplan-phase/SKILL.md": "032c3412fddd02b4",
"skills/gsd-ns-workflow/skills/verify-work/SKILL.md": "a0609b334f4cb9aa"
}

View File

@@ -1,879 +0,0 @@
/**
* Tests for the `gsd-regen` merge driver (#2721, epic #2719, ADR-2719 Phase 1).
*
* Design + behavior table: .gsd/phase/feat-2721-merge-driver-and-regen-derived/40-design.md
* Test matrix: .gsd/phase/feat-2721-merge-driver-and-regen-derived/50-test-matrix.md
*/
'use strict';
const { describe, test } = require('node:test');
const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const cp = require('node:child_process');
const { createTempDir, cleanup } = require('./helpers.cjs');
const REPO_ROOT = path.join(__dirname, '..');
const DRIVER_PATH = path.join(REPO_ROOT, 'scripts', 'git-merge-regen-driver.cjs');
const {
ACTION,
REASON,
GITDIR_SOURCE,
NOTICE_WINDOW_MS,
resolveGitDir,
resolveAndRecord,
planInstall,
} = require(DRIVER_PATH);
// --- helpers ---------------------------------------------------------------
const GIT_TIMEOUT_MS = 30_000;
function git(cwd, args) {
return cp.spawnSync('git', args, {
cwd,
encoding: 'utf8',
timeout: GIT_TIMEOUT_MS,
env: { ...process.env, GIT_CONFIG_NOSYSTEM: '1', HOME: cwd, GIT_TERMINAL_PROMPT: '0' },
});
}
/**
* `git check-attr <attr> -- <path>` in the real repo. Returns the attribute value.
*
* `-c safe.directory=…` is required, not incidental: the test container checks this repo
* out at a path its user does not own, and git then refuses every command with
* "detected dubious ownership in repository at '/work'". `check-attr` is a pure read of
* `.gitattributes` — no hooks, no filters — so scoping the exemption to this one
* invocation is safe. It is deliberately NOT applied to the driver's own production
* `git config` calls, which run in the user's own clone and should keep the protection.
* Forward slashes unconditionally: git wants them in this value on every platform.
*/
function checkAttr(attr, relPath) {
const safeRoot = REPO_ROOT.replace(/\\/g, '/');
const r = cp.spawnSync('git', ['-c', `safe.directory=${safeRoot}`, 'check-attr', attr, '--', relPath], {
cwd: REPO_ROOT,
encoding: 'utf8',
timeout: GIT_TIMEOUT_MS,
});
assert.equal(r.status, 0, `git check-attr failed: ${r.stderr}`);
// Format: "<path>: <attr>: <value>" — the value is everything after the last ": ".
const line = String(r.stdout).trim();
const idx = line.lastIndexOf(': ');
return idx === -1 ? '' : line.slice(idx + 2);
}
/** Replace an fs method with a throwing stub for the duration of `fn`, then restore. */
function withFsFailure(method, fn) {
const original = fs[method];
fs[method] = () => {
throw Object.assign(new Error('injected'), { code: 'EACCES' });
};
try {
return fn();
} finally {
fs[method] = original;
}
}
/** Write an "ours" temp file and return its path — production always receives a real %A. */
function writeOurs(dir, content = 'ours-content\n') {
const p = path.join(dir, '.merge_file_OURS');
fs.writeFileSync(p, content);
return p;
}
/**
* The argv shape git actually supplies under the registered command: [%O, %A, %B, %L].
* `%P` is deliberately NOT registered — see planInstall's comment on shell interpolation.
* `extra` lets one test prove a stray 5th entry (an old registration) is ignored.
*/
function gitArgv(dir, ...extra) {
const o = path.join(dir, '.merge_file_ANC');
const b = path.join(dir, '.merge_file_THEIRS');
fs.writeFileSync(o, '');
fs.writeFileSync(b, 'theirs-content\n');
return [o, writeOurs(dir), b, '7', ...extra];
}
function readMarker(gitDir) {
return JSON.parse(fs.readFileSync(path.join(gitDir, 'gsd-regen-pending.json'), 'utf8'));
}
function seedMarker(gitDir, value) {
fs.mkdirSync(gitDir, { recursive: true });
fs.writeFileSync(
path.join(gitDir, 'gsd-regen-pending.json'),
typeof value === 'string' ? value : JSON.stringify(value),
);
}
const GOLDEN_DIR = path.join(REPO_ROOT, 'tests', 'fixtures', 'golden-install-parity');
const INSTALL_TREE_DIR = path.join(REPO_ROOT, 'tests', 'fixtures', 'install-tree');
function jsonFixturesIn(dir) {
return fs
.readdirSync(dir)
.filter((f) => f.endsWith('.json'))
.sort();
}
// --- .gitattributes scoping (rows 1-10) ------------------------------------
describe('.gitattributes declares the gsd-regen driver for exactly the churning artifacts', () => {
test('goldenParityFixturesDeclareGsdRegenMergeDriver', () => {
assert.equal(
checkAttr('merge', 'tests/fixtures/golden-install-parity/claude.json'),
'gsd-regen',
);
});
test('allNineteenGoldenFixturesDeclareTheDriver', () => {
const fixtures = jsonFixturesIn(GOLDEN_DIR);
assert.ok(fixtures.length > 0, 'expected golden-install-parity fixtures to exist');
for (const f of fixtures) {
assert.equal(
checkAttr('merge', `tests/fixtures/golden-install-parity/${f}`),
'gsd-regen',
`${f} must declare merge=gsd-regen`,
);
}
});
test('workflowSizeBaselineDeclaresTheDriver', () => {
assert.equal(checkAttr('merge', 'tests/workflow-size-baseline.json'), 'gsd-regen');
});
test('agentSizeBaselineDeclaresTheDriver', () => {
assert.equal(checkAttr('merge', 'tests/agent-size-baseline.json'), 'gsd-regen');
});
// NEGATIVE SPACE — ADR-2719 §7 keeps install-tree committed precisely so that
// "the installer stopped shipping X" stays an absolute failure. Capturing it
// with the driver would silently convert that absolute into an auto-resolve.
test('installTreeFixturesAreNotCapturedByTheDriver', () => {
assert.equal(
checkAttr('merge', 'tests/fixtures/install-tree/claude.json'),
'unspecified',
'install-tree must keep normal merge semantics (ADR-2719 §7)',
);
});
test('noInstallTreeFixtureIsCapturedByTheDriver', () => {
const fixtures = jsonFixturesIn(INSTALL_TREE_DIR);
assert.ok(fixtures.length > 0, 'expected install-tree fixtures to exist');
for (const f of fixtures) {
assert.equal(
checkAttr('merge', `tests/fixtures/install-tree/${f}`),
'unspecified',
`${f} must NOT be captured by the driver`,
);
}
});
test('installTreeFixturesAreNotMarkedLinguistGenerated', () => {
assert.equal(
checkAttr('linguist-generated', 'tests/fixtures/install-tree/claude.json'),
'unspecified',
'ADR-2719 §7 keeps install-tree because its diffs are readable',
);
});
test('goldenParityFixturesAreMarkedLinguistGenerated', () => {
assert.equal(
checkAttr('linguist-generated', 'tests/fixtures/golden-install-parity/claude.json'),
'true',
);
});
test('sizeBaselineDeclarationsAreExactPathsNotAGlob', () => {
assert.equal(
checkAttr('merge', 'tests/other-size-baseline.json'),
'unspecified',
'the two baselines are declared by exact path, never by a tests/*-size-baseline.json glob',
);
});
test('driverPatternDoesNotCrossADirectorySeparator', () => {
assert.equal(
checkAttr('merge', 'tests/fixtures/golden-install-parity/sub/nested.json'),
'unspecified',
);
});
});
// --- resolveGitDir (rows 11-19) --------------------------------------------
describe('resolveGitDir', () => {
test('resolvesGitDirWhenDotGitIsADirectory', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
fs.mkdirSync(path.join(dir, '.git'));
const r = resolveGitDir(dir);
assert.equal(r.source, GITDIR_SOURCE.DIRECTORY);
assert.equal(r.gitDir, path.join(dir, '.git'));
});
test('resolvesGitDirFromAWorktreePointerFile', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const target = path.join(dir, 'real-gitdir');
fs.mkdirSync(target);
fs.writeFileSync(path.join(dir, '.git'), `gitdir: ${target}\n`);
const r = resolveGitDir(dir);
assert.equal(r.source, GITDIR_SOURCE.GITFILE);
assert.equal(r.gitDir, target);
});
test('resolvesARelativeWorktreePointerAgainstCwd', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
fs.mkdirSync(path.join(dir, 'nested'));
fs.writeFileSync(path.join(dir, '.git'), 'gitdir: ./nested\n');
const r = resolveGitDir(dir);
assert.equal(r.source, GITDIR_SOURCE.GITFILE);
assert.equal(r.gitDir, path.resolve(dir, './nested'));
});
test('parsesAWorktreePointerWrittenWithCrlf', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const target = path.join(dir, 'real-gitdir');
fs.mkdirSync(target);
fs.writeFileSync(path.join(dir, '.git'), `gitdir: ${target}\r\n`);
const r = resolveGitDir(dir);
assert.equal(r.source, GITDIR_SOURCE.GITFILE);
assert.equal(r.gitDir, target, 'a trailing CR must not become part of the path');
});
test('parsesAWorktreePointerWithNoSpaceAfterTheColon', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const target = path.join(dir, 'real-gitdir');
fs.mkdirSync(target);
fs.writeFileSync(path.join(dir, '.git'), `gitdir:${target}\n`);
assert.equal(resolveGitDir(dir).gitDir, target);
});
test('treatsAnEmptyPointerFileAsUnresolved', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
fs.writeFileSync(path.join(dir, '.git'), '');
const r = resolveGitDir(dir);
assert.equal(r.source, GITDIR_SOURCE.UNRESOLVED);
assert.equal(r.gitDir, null);
});
test('treatsAGarbagePointerFileAsUnresolved', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
fs.writeFileSync(path.join(dir, '.git'), 'this is not a gitdir pointer\n');
assert.equal(resolveGitDir(dir).source, GITDIR_SOURCE.UNRESOLVED);
});
test('treatsAMissingDotGitAsUnresolved', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const r = resolveGitDir(dir);
assert.equal(r.source, GITDIR_SOURCE.UNRESOLVED);
assert.equal(r.gitDir, null);
});
test('treatsAnUnreadablePointerFileAsUnresolved', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
fs.writeFileSync(path.join(dir, '.git'), 'gitdir: somewhere\n');
const r = withFsFailure('readFileSync', () => resolveGitDir(dir));
assert.equal(r.source, GITDIR_SOURCE.UNRESOLVED, 'must degrade, never throw');
});
});
// --- resolveAndRecord: happy & boundary (rows 20-29) -------------------------
describe('resolveAndRecord — resolution and the notice window', () => {
test('acceptsOursAndNoticesOnTheFirstResolution', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const gitDir = path.join(dir, '.git');
fs.mkdirSync(gitDir);
const r = resolveAndRecord({ argv: gitArgv(dir), gitDir, now: 1_000_000 });
assert.equal(r.action, ACTION.ACCEPT_OURS);
assert.equal(r.reason, REASON.OK_RESOLVED);
assert.equal(r.exitCode, 0);
assert.equal(r.notice, true);
assert.equal(r.pendingCount, 1);
});
test('suppressesTheNoticeForASubsequentPathInTheSameOperation', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const gitDir = path.join(dir, '.git');
seedMarker(gitDir, { startedAt: 999_999, count: 1 });
const r = resolveAndRecord({ argv: gitArgv(dir), gitDir, now: 1_000_000 });
assert.equal(r.notice, false);
assert.equal(r.pendingCount, 2, 'the second conflicted path in the same operation');
});
test('treatsAMarkerJustInsideTheWindowAsTheSameOperation', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const gitDir = path.join(dir, '.git');
const now = 5_000_000;
seedMarker(gitDir, { startedAt: now - (NOTICE_WINDOW_MS - 1), count: 1 });
assert.equal(resolveAndRecord({ argv: gitArgv(dir), gitDir, now }).notice, false);
});
test('treatsAMarkerAtExactlyTheWindowAsTheSameOperation', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const gitDir = path.join(dir, '.git');
const now = 5_000_000;
seedMarker(gitDir, { startedAt: now - NOTICE_WINDOW_MS, count: 1 });
assert.equal(
resolveAndRecord({ argv: gitArgv(dir), gitDir, now }).notice,
false,
'the window is inclusive at the limit',
);
});
test('resetsAndRenoticesForAMarkerJustOutsideTheWindow', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const gitDir = path.join(dir, '.git');
const now = 5_000_000;
seedMarker(gitDir, { startedAt: now - (NOTICE_WINDOW_MS + 1), count: 7 });
const r = resolveAndRecord({ argv: gitArgv(dir), gitDir, now });
assert.equal(r.notice, true, 'a later operation must not inherit the previous silence');
assert.equal(r.pendingCount, 1, 'the stale count must reset, not accumulate');
});
test('noticesOnceAcrossAllTwentyArtifactResolutions', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const gitDir = path.join(dir, '.git');
fs.mkdirSync(gitDir);
const notices = [];
for (let i = 0; i < 20; i += 1) {
const r = resolveAndRecord({ argv: gitArgv(dir), gitDir, now: 2_000_000 + i });
notices.push(r.notice);
}
assert.equal(notices.filter(Boolean).length, 1, 'exactly one notice for the whole operation');
assert.equal(readMarker(gitDir).count, 20, 'this repo conflicts on 20 artifacts');
});
test('countsEveryResolutionInTheOperation', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const gitDir = path.join(dir, '.git');
fs.mkdirSync(gitDir);
resolveAndRecord({ argv: gitArgv(dir), gitDir, now: 3_000_000 });
const r = resolveAndRecord({ argv: gitArgv(dir), gitDir, now: 3_000_001 });
assert.equal(r.pendingCount, 2);
});
test('resolvesAnAddAddConflictWhereTheAncestorIsEmpty', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const gitDir = path.join(dir, '.git');
fs.mkdirSync(gitDir);
const argv = gitArgv(dir);
fs.writeFileSync(argv[0], ''); // %O is a 0-byte file in the add/add case
const r = resolveAndRecord({ argv, gitDir, now: 4_000_000 });
assert.equal(r.action, ACTION.ACCEPT_OURS);
assert.equal(r.exitCode, 0);
});
test('resolvesOnTheMinimumThreeArgumentForm', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const gitDir = path.join(dir, '.git');
fs.mkdirSync(gitDir);
const [o, a, b] = gitArgv(dir);
const r = resolveAndRecord({ argv: [o, a, b], gitDir, now: 4_100_000 });
assert.equal(r.action, ACTION.ACCEPT_OURS);
assert.equal(r.pendingCount, 1);
});
// An old registration (or a hand-edited .git/config) may still pass %P. It must be
// inert data, never consumed — the driver's contract does not depend on it.
test('ignoresAStrayFifthArgumentFromAnOldRegistration', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const gitDir = path.join(dir, '.git');
fs.mkdirSync(gitDir);
const r = resolveAndRecord({
argv: gitArgv(dir, 'tests/workflow-size-baseline.json'),
gitDir,
now: 4_200_000,
});
assert.equal(r.action, ACTION.ACCEPT_OURS);
assert.equal(r.pendingCount, 1);
assert.equal(r.realPath, undefined, 'no path is read from argv at all');
});
});
// --- resolveAndRecord: negative & hostile (rows 30-46) -----------------------
describe('resolveAndRecord — degrades toward a normal conflict, never toward a wrong resolution', () => {
const badArgvCases = [
['declinesRatherThanGuessingWhenArgvIsTooShort', (dir) => gitArgv(dir).slice(0, 2)],
['declinesOnEmptyArgv', () => []],
];
for (const [name, build] of badArgvCases) {
test(name, (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const gitDir = path.join(dir, '.git');
fs.mkdirSync(gitDir);
const r = resolveAndRecord({ argv: build(dir), gitDir, now: 6_000_000 });
assert.equal(r.action, ACTION.DECLINE);
assert.equal(r.reason, REASON.FAIL_BAD_ARGV);
assert.equal(r.exitCode, 1, 'a non-zero exit gives git a normal conflict — today’s behavior');
});
}
test('declinesWhenTheOursSideIsMissing', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const gitDir = path.join(dir, '.git');
fs.mkdirSync(gitDir);
const [ancestor, , theirs] = gitArgv(dir);
const neverWritten = path.join(dir, '.merge_file_NEVER_WRITTEN');
const r = resolveAndRecord({
argv: [ancestor, neverWritten, theirs, '7', 'tests/workflow-size-baseline.json'],
gitDir,
now: 6_100_000,
});
assert.equal(r.action, ACTION.DECLINE);
assert.equal(r.reason, REASON.FAIL_OURS_UNREADABLE);
assert.equal(r.exitCode, 1);
});
const blankOursCases = [
['declinesOnAnEmptyOursPath', ''],
['declinesOnAWhitespaceOnlyOursPath', ' '],
];
for (const [name, oursPath] of blankOursCases) {
test(name, (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const gitDir = path.join(dir, '.git');
fs.mkdirSync(gitDir);
const [o, , b] = gitArgv(dir);
const r = resolveAndRecord({ argv: [o, oursPath, b], gitDir, now: 6_200_000 });
assert.equal(r.action, ACTION.DECLINE);
assert.equal(r.reason, REASON.FAIL_BAD_ARGV);
});
}
// Valid JSON that is not a usable marker object. Each must be treated as absent
// (reset + notice) rather than throwing or being read as state.
const hostileMarkers = [
['treatsANumericMarkerAsAbsent', '0'],
['treatsAStringMarkerAsAbsent', '"str"'],
['treatsAnArrayMarkerAsAbsent', '[]'],
['treatsANullMarkerAsAbsent', 'null'],
['treatsABooleanMarkerAsAbsent', 'true'],
['treatsAnEmptyMarkerFileAsAbsent', ''],
['treatsACorruptMarkerAsAbsent', '{not json at all'],
['treatsANonNumericStartedAtAsAbsent', '{"startedAt":"yesterday","count":1}'],
['treatsANonFiniteStartedAtAsAbsent', '{"startedAt":1e999,"count":1}'],
['treatsANonNumericCountAsAbsent', '{"startedAt":1,"count":"three"}'],
['treatsANonFiniteCountAsAbsent', '{"startedAt":1,"count":1e999}'],
['treatsANegativeCountAsAbsent', '{"startedAt":1,"count":-5}'],
['treatsAMissingCountAsAbsent', '{"startedAt":1}'],
];
for (const [name, raw] of hostileMarkers) {
test(name, (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const gitDir = path.join(dir, '.git');
seedMarker(gitDir, raw);
const r = resolveAndRecord({ argv: gitArgv(dir), gitDir, now: 7_000_000 });
assert.equal(r.action, ACTION.ACCEPT_OURS, 'a bad marker must never block the merge');
assert.equal(r.notice, true);
assert.equal(r.pendingCount, 1, 'an unusable marker resets rather than accumulating');
});
}
test('stillResolvesWhenTheMarkerCannotBeWritten', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const gitDir = path.join(dir, '.git');
fs.mkdirSync(gitDir);
const argv = gitArgv(dir);
const r = withFsFailure('writeFileSync', () =>
resolveAndRecord({ argv, gitDir, now: 8_000_000 }),
);
assert.equal(r.action, ACTION.ACCEPT_OURS);
assert.equal(r.exitCode, 0, 'a diagnostic must never fail a merge');
});
test('resolvesAndNoticesEveryTimeWhenTheGitDirIsUnknown', (t) => {
const dir = createTempDir('gsd-regen-');
t.after(() => cleanup(dir));
const first = resolveAndRecord({ argv: gitArgv(dir), gitDir: null, now: 9_000_000 });
const second = resolveAndRecord({ argv: gitArgv(dir), gitDir: null, now: 9_000_001 });
assert.equal(first.action, ACTION.ACCEPT_OURS);
assert.equal(first.exitCode, 0);
assert.equal(first.notice, true);
assert.equal(second.notice, true, 'without a marker there is nothing to dedupe against');
});
});
// --- planInstall (rows 47-50) ----------------------------------------------
describe('planInstall', () => {
test('plansBothMergeDriverConfigEntries', () => {
const keys = planInstall({ repoRoot: '/repo' }).entries.map((e) => e.key);
assert.deepEqual(keys, ['merge.gsd-regen.name', 'merge.gsd-regen.driver']);
});
test('normalizesTheDriverCommandToForwardSlashesOnEveryPlatform', () => {
const { entries } = planInstall({ repoRoot: 'C:\\Users\\dev\\gsd-core' });
const driver = entries.find((e) => e.key === 'merge.gsd-regen.driver').value;
assert.ok(!driver.includes('\\'), `driver command must contain no backslash: ${driver}`);
});
// `driverCommandPassesEveryPlaceholderGitProvides` lived here and asserted that the
// command carried %P. That was the vulnerable behaviour, so the test has been deleted
// rather than relaxed — a test that asserts the old, now-wrong behaviour is worse than
// no test. Its useful half (the four git-generated placeholders ARE passed) is folded
// into `registeredDriverCommandNeverPassesThePlaceholderForTheFilePath`, which asserts
// both directions in one place.
test('plansIdenticalEntriesOnRepeatedInvocation', () => {
assert.deepEqual(planInstall({ repoRoot: '/repo' }), planInstall({ repoRoot: '/repo' }));
});
});
// --- CLI dispatch (rows 62-73) ---------------------------------------------
// CONTRIBUTING.md → "QA Matrix Requirements" / "CLI and command routing" requires a
// negative-input matrix for any command dispatcher: unknown subcommands, duplicate and
// conflicting flags, plus assertions on exit status and the absence of a stack trace.
describe('CLI dispatch', () => {
/** Run the driver as a real child process — its output never touches this test's stdout. */
function runCli(args, cwd = REPO_ROOT) {
return cp.spawnSync(process.execPath, [DRIVER_PATH, ...args], {
cwd,
encoding: 'utf8',
timeout: GIT_TIMEOUT_MS,
});
}
/**
* Swap process.stdout.write for the duration of `fn`. Same monkeypatch-and-restore-in-
* finally shape as withFsFailure — the run* functions print, and leaking that into the
* runner's stream is how a reporter ends up parsing a driver banner as a test result.
*/
function withStdoutSilenced(fn) {
const original = process.stdout.write;
process.stdout.write = () => true;
try {
return fn();
} finally {
process.stdout.write = original;
}
}
/** A stack frame looks like a line beginning with whitespace + "at ". */
function hasStackTrace(text) {
return /^\s+at\s/m.test(String(text));
}
const rejectedInvocations = [
['rejectsAnUnknownFlag', ['--bogus']],
['rejectsTwoConflictingFlags', ['--install', '--status']],
['rejectsADuplicatedFlag', ['--install', '--install']],
['rejectsAFlagCombinedWithAPositionalArgument', ['--status', 'extra']],
];
for (const [name, args] of rejectedInvocations) {
test(name, () => {
const r = runCli(args);
assert.equal(r.status, 2, `${args.join(' ')} must exit 2, got ${r.status}: ${r.stderr}`);
assert.ok(
!hasStackTrace(r.stderr),
`usage errors must not print a stack trace, got: ${r.stderr}`,
);
});
}
test('driverModeWithNoArgumentsDeclinesRatherThanCrashing', () => {
const r = runCli([]);
assert.equal(r.status, 1, 'too-few-args declines, which git reads as a normal conflict');
assert.ok(!hasStackTrace(r.stderr), `expected no stack trace, got: ${r.stderr}`);
});
test('statusEmitsParseableJsonWithTheDocumentedShape', () => {
const r = runCli(['--status']);
assert.equal(r.status, 0);
const report = JSON.parse(r.stdout);
assert.equal(typeof report.registered, 'boolean');
assert.equal(typeof report.pendingCount, 'number');
});
/** A scratch repo so registration never touches the developer's own .git/config. */
function scratchRepo(t) {
const dir = createTempDir('gsd-regen-cli-');
t.after(() => cleanup(dir));
git(dir, ['init', '-q', '.']);
return dir;
}
test('installRegistersBothConfigEntriesAndStatusReportsIt', (t) => {
const dir = scratchRepo(t);
const { statusOf, runInstall } = require(DRIVER_PATH);
assert.equal(statusOf({ repoRoot: dir }).registered, false, 'precondition: not registered');
assert.equal(withStdoutSilenced(() => runInstall({ repoRoot: dir })), 0);
assert.equal(statusOf({ repoRoot: dir }).registered, true);
const driver = git(dir, ['config', '--get', 'merge.gsd-regen.driver']).stdout.trim();
assert.equal(driver, planInstall({ repoRoot: dir }).entries[1].value);
});
test('installIsIdempotent', (t) => {
const dir = scratchRepo(t);
const { statusOf, runInstall } = require(DRIVER_PATH);
withStdoutSilenced(() => runInstall({ repoRoot: dir }));
const first = git(dir, ['config', '--get-all', 'merge.gsd-regen.driver']).stdout;
assert.equal(withStdoutSilenced(() => runInstall({ repoRoot: dir })), 0);
const second = git(dir, ['config', '--get-all', 'merge.gsd-regen.driver']).stdout;
assert.equal(second, first, 'a second install must not append a duplicate value');
assert.equal(statusOf({ repoRoot: dir }).registered, true);
});
test('uninstallRemovesTheRegistration', (t) => {
const dir = scratchRepo(t);
const { statusOf, runInstall, runUninstall } = require(DRIVER_PATH);
withStdoutSilenced(() => runInstall({ repoRoot: dir }));
assert.equal(withStdoutSilenced(() => runUninstall({ repoRoot: dir })), 0);
assert.equal(statusOf({ repoRoot: dir }).registered, false);
});
test('uninstallOnACleanRepoSucceedsRatherThanFailing', (t) => {
const dir = scratchRepo(t);
const { runUninstall, statusOf } = require(DRIVER_PATH);
assert.equal(withStdoutSilenced(() => runUninstall({ repoRoot: dir })), 0);
assert.equal(statusOf({ repoRoot: dir }).registered, false);
});
/**
* REGRESSION — arbitrary command execution via `%P` (isolated security review, #2721).
*
* Git does not invoke a merge driver with an argv array: it substitutes the placeholders
* textually into the configured string and runs the whole thing through a shell. Quoting
* does not save you — `$(…)` executes inside POSIX double quotes. `%O`/`%A`/`%B` are
* git-generated temp names and `%L` is an integer, but `%P` is the file's own path, which
* any contributor names freely. Registering `"%P"` let a branch that renamed a covered
* fixture to `evil$(touch PWNED).json` run that command on the machine of every maintainer
* who merged it — and the merge still reported success, so nothing looked wrong.
*
* The structural assertion is the real guard: it is platform-independent and fails the
* moment someone re-adds the placeholder.
*/
test('registeredDriverCommandNeverPassesThePlaceholderForTheFilePath', () => {
const { entries } = planInstall({ repoRoot: REPO_ROOT });
const driver = entries.find((e) => e.key === 'merge.gsd-regen.driver').value;
assert.ok(
!driver.includes('%P'),
'git shell-interpolates %P — passing it is arbitrary command execution. Do not re-add it.',
);
for (const safe of ['%O', '%A', '%B', '%L']) {
assert.ok(driver.includes(safe), `${safe} is git-generated and must still be passed`);
}
});
test('aFilenameCarryingShellSubstitutionCannotExecuteDuringAMerge', (t) => {
const dir = createTempDir('gsd-regen-inject-');
t.after(() => cleanup(dir));
git(dir, ['init', '-q', '.']);
git(dir, ['config', 'user.email', 'test@example.com']);
git(dir, ['config', 'user.name', 'test']);
// Register the REAL production command string — a hand-rolled one would not regress.
for (const { key, value } of planInstall({ repoRoot: REPO_ROOT }).entries) {
git(dir, ['config', key, value]);
}
fs.writeFileSync(path.join(dir, '.gitattributes'), 'evil*.json merge=gsd-regen\n');
// Written with fs, so this shell never expands it — the payload is the literal name.
const evil = 'evil$(touch PWNED_SENTINEL).json';
const sentinel = path.join(dir, 'PWNED_SENTINEL');
const write = (v) => fs.writeFileSync(path.join(dir, evil), `{"v":${v}}\n`);
write(0);
git(dir, ['add', '-A']);
git(dir, ['commit', '-qm', 'base']);
const base = git(dir, ['rev-parse', 'HEAD']).stdout.trim();
git(dir, ['checkout', '-qb', 'ours']);
write(1);
git(dir, ['add', '-A']);
git(dir, ['commit', '-qm', 'ours']);
git(dir, ['checkout', '-q', base]);
git(dir, ['checkout', '-qb', 'theirs']);
write(2);
git(dir, ['add', '-A']);
git(dir, ['commit', '-qm', 'theirs']);
git(dir, ['checkout', '-q', 'ours']);
git(dir, ['merge', 'theirs', '-m', 'merge']);
assert.equal(
fs.existsSync(sentinel),
false,
'a filename containing $(...) must never execute — see the regression note above',
);
});
});
// --- real-git end-to-end (rows 51-55) — #2721 AC1 --------------------------
describe('gsd-regen driver under real git operations', () => {
/**
* Build a repo whose `derived.json` is a stand-in for a golden fixture: both
* branches edit a DIFFERENT workflow file and both regenerate the artifact, so
* the artifact conflicts while the sources do not. That is exactly the #2721
* scenario (7 of 7 conflicting PRs collide on the identical artifact set).
*/
function buildScenario(t, { register }) {
const dir = createTempDir('gsd-regen-e2e-');
t.after(() => cleanup(dir));
git(dir, ['init', '-q', '.']);
git(dir, ['config', 'user.email', 'test@example.com']);
git(dir, ['config', 'user.name', 'test']);
if (register) {
// Register the REAL production entries. A hand-rolled command string would let the
// end-to-end tests keep passing while planInstall drifted — and would have kept
// registering the %P form these tests exist to prove is gone.
for (const { key, value } of planInstall({ repoRoot: REPO_ROOT }).entries) {
git(dir, ['config', key, value]);
}
}
fs.mkdirSync(path.join(dir, 'workflows'));
fs.writeFileSync(path.join(dir, '.gitattributes'), 'derived.json merge=gsd-regen\n');
fs.writeFileSync(path.join(dir, 'workflows', 'a.md'), 'A0\n');
fs.writeFileSync(path.join(dir, 'workflows', 'b.md'), 'B0\n');
fs.writeFileSync(path.join(dir, 'derived.json'), '{"a":"A0","b":"B0"}\n');
git(dir, ['add', '-A']);
git(dir, ['commit', '-qm', 'base']);
const base = git(dir, ['rev-parse', 'HEAD']).stdout.trim();
git(dir, ['checkout', '-qb', 'ours']);
fs.writeFileSync(path.join(dir, 'workflows', 'a.md'), 'A1\n');
fs.writeFileSync(path.join(dir, 'derived.json'), '{"a":"A1","b":"B0"}\n');
git(dir, ['add', '-A']);
git(dir, ['commit', '-qm', 'ours edits workflow a']);
git(dir, ['checkout', '-q', base]);
git(dir, ['checkout', '-qb', 'theirs']);
fs.writeFileSync(path.join(dir, 'workflows', 'b.md'), 'B1\n');
fs.writeFileSync(path.join(dir, 'derived.json'), '{"a":"A0","b":"B1"}\n');
git(dir, ['add', '-A']);
git(dir, ['commit', '-qm', 'theirs edits workflow b']);
git(dir, ['checkout', '-q', 'ours']);
return dir;
}
test('twoBranchesEditingDifferentWorkflowsMergeCleanlyWithTheDriver', (t) => {
const dir = buildScenario(t, { register: true });
const merge = git(dir, ['merge', 'theirs', '-m', 'merge']);
assert.equal(merge.status, 0, `merge should succeed: ${merge.stdout}${merge.stderr}`);
assert.equal(git(dir, ['ls-files', '-u']).stdout.trim(), '', 'no unmerged index entries');
assert.ok(
!fs.readFileSync(path.join(dir, 'derived.json'), 'utf8').includes('<<<<<<<'),
'the artifact must carry no conflict markers',
);
assert.equal(
fs.readFileSync(path.join(dir, 'workflows', 'b.md'), 'utf8'),
'B1\n',
'the source side of the merge must still be applied normally',
);
});
// Control: proves the test observes the DRIVER, not a trivially-mergeable artifact.
test('theSameTwoBranchesConflictWithoutTheDriver', (t) => {
const dir = buildScenario(t, { register: false });
const merge = git(dir, ['merge', 'theirs', '-m', 'merge']);
assert.notEqual(merge.status, 0, 'without the driver this scenario must conflict');
assert.notEqual(git(dir, ['ls-files', '-u']).stdout.trim(), '');
});
test('resolvesUnderRebaseNotJustMerge', (t) => {
const dir = buildScenario(t, { register: true });
git(dir, ['checkout', '-q', 'theirs']);
const rebase = git(dir, ['rebase', 'ours']);
assert.equal(rebase.status, 0, `rebase should succeed: ${rebase.stdout}${rebase.stderr}`);
assert.equal(git(dir, ['ls-files', '-u']).stdout.trim(), '');
});
test('leavesAOneSidedChangeToGitsTrivialMerge', (t) => {
const dir = buildScenario(t, { register: true });
git(dir, ['checkout', '-q', '-b', 'sideways', 'ours']);
fs.writeFileSync(path.join(dir, 'workflows', 'c.md'), 'C1\n');
git(dir, ['add', '-A']);
git(dir, ['commit', '-qm', 'unrelated']);
const merge = git(dir, ['merge', 'ours', '-m', 'merge']);
assert.equal(merge.status, 0);
assert.equal(
fs.readFileSync(path.join(dir, 'derived.json'), 'utf8'),
'{"a":"A1","b":"B0"}\n',
'a one-sided change is git’s trivial merge — the driver must not be involved',
);
});
test('resolvedArtifactIsExactlyTheOursSide', (t) => {
const dir = buildScenario(t, { register: true });
const ours = fs.readFileSync(path.join(dir, 'derived.json'), 'utf8');
git(dir, ['merge', 'theirs', '-m', 'merge']);
assert.equal(
fs.readFileSync(path.join(dir, 'derived.json'), 'utf8'),
ours,
'the driver invents nothing — it takes ours verbatim and defers to regen:derived',
);
});
});

View File

@@ -1,165 +0,0 @@
'use strict';
/**
* golden-install-parity.test.cjs — ADR-1239 Phase B safety-net harness.
*
* Captures a byte-stable manifest of every file emitted by the installer for
* all 16 runtimes, so a later PR moving installRuntimeArtifacts can prove
* byte-identical output parity.
*
* ## Determinism invariants (empirically established pre-Phase-B)
*
* After replacing every occurrence of the temp root path with the literal
* '<HOME>' in file contents, the install output is byte-identical run-to-run
* for ALL files EXCEPT the volatile metadata files that are EXCLUDED
* from the parity manifest:
* - gsd-file-manifest.json (timestamp + install-time absolute paths)
* - gsd-install-state.json (install-time absolute paths)
* - .gsd-source (#1477, claude-global: install-time source path)
*
* Everything else (≈545–616 files per runtime) is deterministic.
*
* ## UPDATE mode
*
* Run with UPDATE_GOLDEN=1 to (re-)capture fixtures:
* UPDATE_GOLDEN=1 node --test tests/golden-install-parity.test.cjs
*/
const { test, before } = require('node:test');
const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const { execFileSync } = require('node:child_process');
const { cleanup } = require('./helpers.cjs');
const { RUNTIME_META, runMinimalInstall, BUILD_SCRIPT, buildParityManifest } = require('./helpers/install-shared.cjs');
// hooks/dist is gitignored and built (DEFECT.HOOKS-DIST-SCOPED-CI). The scoped
// CI test lane does not run build:hooks, so a real install there emits no hooks/
// dir — making the golden (captured with hooks built) report "removed (N) hooks/…".
// Build it idempotently here so the harness is lane-independent (mirrors the
// pattern in bug-1834-sh-hooks-installed and install-minimal-hooks).
before(() => {
execFileSync(process.execPath, [BUILD_SCRIPT], { encoding: 'utf-8', stdio: 'pipe' });
});
const UPDATE = process.env.UPDATE_GOLDEN === '1';
const FIXTURE_DIR = path.join(__dirname, 'fixtures', 'golden-install-parity');
// The parity-manifest exclusion constants and buildParityManifest builder are
// the canonical single source of truth in tests/helpers/install-shared.cjs
// (issue #2266) — imported above. See that module for the full rationale
// behind each exclusion (VOLATILE_FILES, HOOK_CONFIG_FILES,
// HOOK_CONFIG_RELATIVE_PATHS, EXCLUDED_PREFIXES) and the hash formula.
// scripts/gen-golden-install-parity-zcode.cjs imports the same builder so the
// test harness and the fixture generator can never drift again.
// Ensure the fixture directory exists (needed for UPDATE mode)
if (UPDATE) {
fs.mkdirSync(FIXTURE_DIR, { recursive: true });
}
const runtimes = Object.keys(RUNTIME_META);
for (const runtime of runtimes) {
test(`golden parity — ${runtime}`, async (t) => {
if (process.platform === 'win32') {
t.skip('install output is platform-specific on Windows (backslash paths); parity is asserted on macOS + Linux');
return;
}
const { configDir, root } = runMinimalInstall({ runtime, scope: 'global' });
let actual;
try {
actual = buildParityManifest(configDir, root);
} finally {
cleanup(root);
}
const fixturePath = path.join(FIXTURE_DIR, `${runtime}.json`);
if (UPDATE) {
fs.writeFileSync(fixturePath, JSON.stringify(actual, null, 2) + '\n', 'utf8');
const fileCount = Object.keys(actual).length;
// Report to stdout so the capture run is self-documenting
process.stdout.write(` [UPDATE] ${runtime}: wrote ${fileCount} file hashes → ${fixturePath}\n`);
return;
}
// Assert mode: compare against golden fixture
if (!fs.existsSync(fixturePath)) {
assert.fail(
`Golden fixture missing for runtime '${runtime}': ${fixturePath}\n` +
'Run "npm run gen:golden" to generate the fixtures (or, for humans, UPDATE_GOLDEN=1 node --test tests/golden-install-parity.test.cjs).'
);
}
const golden = JSON.parse(fs.readFileSync(fixturePath, 'utf8'));
const goldenKeys = new Set(Object.keys(golden));
const actualKeys = new Set(Object.keys(actual));
const added = [...actualKeys].filter(k => !goldenKeys.has(k));
const removed = [...goldenKeys].filter(k => !actualKeys.has(k));
const changed = [...actualKeys].filter(k => goldenKeys.has(k) && actual[k] !== golden[k]);
if (added.length > 0 || removed.length > 0 || changed.length > 0) {
const lines = [`Parity mismatch for runtime '${runtime}':`];
if (added.length) lines.push(` added (${added.length}): ${added.join(', ')}`);
if (removed.length) lines.push(` removed (${removed.length}): ${removed.join(', ')}`);
if (changed.length) lines.push(` changed (${changed.length}): ${changed.join(', ')}`);
lines.push('If the change is intentional, run "npm run gen:golden" to regenerate the fixtures (works without node --test; humans may also use UPDATE_GOLDEN=1 node --test).');
assert.deepEqual(actual, golden, lines.join('\n'));
}
});
}
// #2086 (EoS/claude): claude is the reference host and the ONLY runtime with a
// distinct LOCAL "legacy flat-commands" layout (commands/gsd-*.md + agents/gsd-*.md).
// The loop above asserts the GLOBAL skills layout; this asserts the LOCAL
// commands/agents layout is byte-identical too, so folding claude's
// `runtime === 'claude'` branches into descriptor-driven hostBehaviors cannot
// silently change the local install output (AC1: "both scopes"). NOTE: the
// settings.local.json ROUTING itself is excluded here (platform-varying node-runner
// path) — that dimension is covered directly by install.test.cjs's #338 suite.
test('golden parity — claude (local legacy layout)', async (t) => {
if (process.platform === 'win32') {
t.skip('install output is platform-specific on Windows (backslash paths); parity is asserted on macOS + Linux');
return;
}
const { configDir, root } = runMinimalInstall({ runtime: 'claude', scope: 'local' });
let actual;
try {
actual = buildParityManifest(configDir, root);
} finally {
cleanup(root);
}
const fixturePath = path.join(FIXTURE_DIR, 'claude-local.json');
if (UPDATE) {
fs.writeFileSync(fixturePath, JSON.stringify(actual, null, 2) + '\n', 'utf8');
process.stdout.write(` [UPDATE] claude-local: wrote ${Object.keys(actual).length} file hashes → ${fixturePath}\n`);
return;
}
if (!fs.existsSync(fixturePath)) {
assert.fail(
`Golden fixture missing for claude-local: ${fixturePath}\n` +
'Run "npm run gen:golden" to generate the fixtures (or, for humans, UPDATE_GOLDEN=1 node --test tests/golden-install-parity.test.cjs).',
);
}
const golden = JSON.parse(fs.readFileSync(fixturePath, 'utf8'));
const added = Object.keys(actual).filter(k => !(k in golden));
const removed = Object.keys(golden).filter(k => !(k in actual));
const changed = Object.keys(actual).filter(k => k in golden && actual[k] !== golden[k]);
if (added.length || removed.length || changed.length) {
const lines = ['Parity mismatch for claude-local:'];
if (added.length) lines.push(` added (${added.length}): ${added.join(', ')}`);
if (removed.length) lines.push(` removed (${removed.length}): ${removed.join(', ')}`);
if (changed.length) lines.push(` changed (${changed.length}): ${changed.join(', ')}`);
lines.push('If the change is intentional, run "npm run gen:golden" to regenerate the fixtures (works without node --test; humans may also use UPDATE_GOLDEN=1 node --test).');
assert.deepEqual(actual, golden, lines.join('\n'));
}
});

View File

@@ -86,7 +86,7 @@ for (const runtime of runtimes) {
if (!fs.existsSync(fixturePath)) {
assert.fail(
`Install-tree fixture missing for runtime '${runtime}': ${fixturePath}\n` +
'Run "npm run gen:golden" to generate the fixtures (or, for humans, UPDATE_INSTALL_TREE=1 node --test tests/golden-install-tree.test.cjs).'
'Run "npm run gen:install-tree" to generate the fixtures (or, for humans, UPDATE_INSTALL_TREE=1 node --test tests/golden-install-tree.test.cjs).'
);
}
@@ -98,7 +98,7 @@ for (const runtime of runtimes) {
const lines = [`Install-tree mismatch for runtime '${runtime}':`];
if (added.length) lines.push(` added (${added.length}): ${added.join(', ')}`);
if (removed.length) lines.push(` removed (${removed.length}): ${removed.join(', ')}`);
lines.push('If the change is intentional, run "npm run gen:golden" to regenerate the fixtures (works without node --test; humans may also use UPDATE_INSTALL_TREE=1 node --test).');
lines.push('If the change is intentional, run "npm run gen:install-tree" to regenerate the fixtures (works without node --test; humans may also use UPDATE_INSTALL_TREE=1 node --test).');
assert.deepEqual(actual, fixture, lines.join('\n'));
}
});
@@ -132,7 +132,7 @@ test('install tree — claude (local legacy layout)', async (t) => {
if (!fs.existsSync(fixturePath)) {
assert.fail(
`Install-tree fixture missing for claude-local: ${fixturePath}\n` +
'Run "npm run gen:golden" to generate the fixtures (or, for humans, UPDATE_INSTALL_TREE=1 node --test tests/golden-install-tree.test.cjs).',
'Run "npm run gen:install-tree" to generate the fixtures (or, for humans, UPDATE_INSTALL_TREE=1 node --test tests/golden-install-tree.test.cjs).',
);
}
@@ -142,7 +142,7 @@ test('install tree — claude (local legacy layout)', async (t) => {
const lines = ['Install-tree mismatch for claude-local:'];
if (added.length) lines.push(` added (${added.length}): ${added.join(', ')}`);
if (removed.length) lines.push(` removed (${removed.length}): ${removed.join(', ')}`);
lines.push('If the change is intentional, run "npm run gen:golden" to regenerate the fixtures (works without node --test; humans may also use UPDATE_INSTALL_TREE=1 node --test).');
lines.push('If the change is intentional, run "npm run gen:install-tree" to regenerate the fixtures (works without node --test; humans may also use UPDATE_INSTALL_TREE=1 node --test).');
assert.deepEqual(actual, fixture, lines.join('\n'));
}
});

View File

@@ -1,7 +1,8 @@
'use strict';
/**
* golden-parity-single-source.test.cjs — anti-divergence guard (#2266).
* golden-parity-single-source.test.cjs — anti-divergence guard (#2266, carried
* forward by #2724 / ADR-2719 Phase 4).
*
* tests/golden-install-parity.test.cjs and scripts/gen-golden-install-parity-zcode.cjs
* used to each carry their OWN inline copy of buildParityManifest plus its 4
@@ -11,14 +12,20 @@
* test harness's copy had — and shipped broken fixtures three times (#2086,
* #2095, #2100). Phase 1 of the golden-install-parity redesign (#2266)
* consolidated both call sites onto a single canonical implementation in
* tests/helpers/install-shared.cjs.
* tests/helpers/install-shared.cjs. ADR-2264 Phase 1 (that consolidation) is
* explicitly RETAINED by ADR-2719 — #2724 deletes the two ORIGINAL consumers
* (golden-install-parity.test.cjs, gen-golden-install-parity-zcode.cjs), but
* their two REPLACEMENTS (tests/helpers/emitted-runtime.cjs's currentManifests
* and tests/helpers/emitted-provenance.cjs's loadManifests) import
* buildParityManifest the exact same way, so the divergence risk this guard
* exists for is unchanged — only the consumer names moved.
*
* This guard (mirrors the ADR-2121 anti-divergence pattern) enforces that
* consolidation stays consolidated:
* 1. install-shared.cjs actually exports a working buildParityManifest +
* the 4 exclusion constants with the expected shapes.
* 2. Neither downstream consumer re-declares its own inline copy of the
* builder function or the exclusion constants.
* 2. No downstream consumer re-declares its own inline copy of the builder
* function or the exclusion constants.
*/
const { test } = require('node:test');
@@ -79,8 +86,8 @@ const FORBIDDEN_INLINE = [
];
const CONSUMERS = [
{ name: 'tests/golden-install-parity.test.cjs', rel: ['tests', 'golden-install-parity.test.cjs'], from: './helpers/install-shared.cjs' },
{ name: 'scripts/gen-golden-install-parity-zcode.cjs', rel: ['scripts', 'gen-golden-install-parity-zcode.cjs'], from: 'tests/helpers/install-shared.cjs' },
{ name: 'tests/helpers/emitted-runtime.cjs', rel: ['tests', 'helpers', 'emitted-runtime.cjs'], from: './install-shared.cjs' },
{ name: 'tests/helpers/emitted-provenance.cjs', rel: ['tests', 'helpers', 'emitted-provenance.cjs'], from: './install-shared.cjs' },
];
for (const consumer of CONSUMERS) {

View File

@@ -34,6 +34,29 @@ const { attributeEmittedPath } = require('./emitted-provenance.cjs');
* shape is public the moment it ships (Hyrum). Loosening later is easy; tightening is not. */
const ACK_VERSION = 1;
/**
* A brand-new workflow/agent file — absent from the baseline, present now — must
* still stay under the Codex `project_doc_max_bytes` anchor (ADR-1610 Decision
* point 3, `NEW_FILE_CAP` in the pre-#2724 tests/workflow-size-budget.test.cjs).
*
* #2724 (ADR-2719 Phase 4) deleted the committed per-file baseline that cap used to
* key "not yet baselined" off of. The size ratchet below (ADR-2719 §4) already
* computes the exact same signal for a different reason — a name present in
* `sizeCurrent` but absent from `sizeBaseline` IS "new" by construction, the same
* definition ADR-1610 used — so no new baseline, git diff, or CI wiring is needed to
* revive the cap; it only needed a home once the old one was deleted.
*
* This is a HARD cap, not ack-able, matching the tier hard caps it sits beside
* (XL/LARGE/DEFAULT in tests/workflow-size-budget.test.cjs): the fix for exceeding it
* is extraction, never an acknowledgment entry. Not exempted by explicit XL/LARGE
* tiering the way the original test-file version was — this module is intentionally
* pure and has no access to that classification (tests/workflow-size-budget.test.cjs's
* XL_WORKFLOWS/LARGE_WORKFLOWS sets) — so a legitimately large NEW file must be split
* via the same lazy-extraction pattern the tier caps already require, one release
* earlier than an existing file would need to. Documented narrowing, not a silent one.
*/
const NEW_FILE_CAP = 32768;
/**
* Does a changed repo path satisfy a provenance `sources` entry?
*
@@ -115,7 +138,8 @@ function parseAck(doc, { source = 'emitted-drift-ack.json' } = {}) {
*
* @returns {{
* moved: number, attributed: Array, unattributable: Array, acked: Array,
* removed: Array, grown: Array, shrunk: Array, staleAcks: string[], errors: string[], ok: boolean
* removed: Array, grown: Array, shrunk: Array, newFileCapExceeded: Array,
* staleAcks: string[], errors: string[], ok: boolean
* }}
*/
function diffEmitted({
@@ -240,9 +264,17 @@ function diffEmitted({
// report a size-growth ack as stale.
const grown = [];
const shrunk = [];
const newFileCapExceeded = [];
if (sizeBaseline && sizeCurrent) {
for (const name of Object.keys(sizeCurrent).sort()) {
if (!Object.prototype.hasOwnProperty.call(sizeBaseline, name)) continue;
if (!Object.prototype.hasOwnProperty.call(sizeBaseline, name)) {
// No baseline entry: this file is NEW. No `from` to diff against, so the
// growth ratchet does not apply — but the absolute new-file cap does
// (ADR-1610 Decision point 3). Never ack-able; see NEW_FILE_CAP's doc comment.
const bytes = sizeCurrent[name];
if (bytes > NEW_FILE_CAP) newFileCapExceeded.push({ name, bytes, cap: NEW_FILE_CAP });
continue;
}
const from = sizeBaseline[name];
const to = sizeCurrent[name];
if (to > from) {
@@ -268,7 +300,8 @@ function diffEmitted({
const ok = errors.length === 0
&& unattributable.length === 0
&& unackedGrowth.length === 0
&& staleAcks.length === 0;
&& staleAcks.length === 0
&& newFileCapExceeded.length === 0;
return {
moved,
@@ -278,6 +311,7 @@ function diffEmitted({
removed,
grown,
shrunk,
newFileCapExceeded,
staleAcks,
errors,
ok,
@@ -328,6 +362,14 @@ function formatReport(result, { sampleLimit = 20 } = {}) {
);
}
if (result.newFileCapExceeded.length) {
const list = result.newFileCapExceeded.slice(0, sampleLimit)
.map((f) => ` ${f.name} is ${f.bytes} bytes — exceeds the ${f.cap}-byte new-file cap (ADR-1610)`);
parts.push(
`${result.newFileCapExceeded.length} new file(s) exceed the new-file cap (extract, not ack):\n${list.join('\n')}`,
);
}
if (result.staleAcks.length) {
parts.push(
`${result.staleAcks.length} stale acknowledgment(s) — the ripple they explained is gone, ` +
@@ -341,6 +383,7 @@ function formatReport(result, { sampleLimit = 20 } = {}) {
module.exports = {
ACK_VERSION,
NEW_FILE_CAP,
sourceSatisfiedBy,
parseAck,
diffEmitted,

View File

@@ -38,13 +38,12 @@
* risk ADR-2719 records. The spot-check tests pin this pair.
*/
const fs = require('node:fs');
const path = require('node:path');
const REPO_ROOT = path.join(__dirname, '..', '..');
const FIXTURES_DIR = path.join(REPO_ROOT, 'tests', 'fixtures', 'golden-install-parity');
const { MANIFEST_FAMILIES } = require('./install-shared.cjs');
const { cleanup } = require('../helpers.cjs');
const { MANIFEST_FAMILIES, runMinimalInstall, buildParityManifest } = require('./install-shared.cjs');
/**
* Number of runtime manifests the guard expects to cover. Asserted, so a glob that
@@ -76,6 +75,18 @@ const COMMANDS_SRC = 'commands/gsd';
* buildClinePreToolUseHook). */
const CLINE_BODY_SRC = 'src/runtime-hooks-surface.cts';
/**
* Installer source file that GENERATES the Windows-only `hooks/<name>.cmd` shim
* wrapping a Codex hook's `.js` script (#3426). Same physical file as
* CLINE_BODY_SRC — kept as its own named constant because the two constants
* attribute unrelated transform code that happens to live in one file:
* buildCodexHookWindowsShimIR / ensureCodexHooksJsonSessionStart /
* ensureCodexHooksJsonEvent (verified via Memtrace: these are the ONLY writers
* of a `.cmd` file anywhere in the installer — no other runtime's hook surface
* builds one).
*/
const HOOKS_WINDOWS_SHIM_SRC = 'src/runtime-hooks-surface.cts';
/** Installer source file that emits the Hermes skill-category DESCRIPTION.md
* (writeHermesCategoryDescription) as a code literal. */
const INSTALLER_SRC = 'bin/install.js';
@@ -199,10 +210,10 @@ function nativePluginDescriptor(runtime) {
// `roots` — emitted prefixes this rule applies under (null = match `rel` whole)
// `pattern` — matched against the root-stripped tail (or whole `rel` when roots is null)
// `sources` — (match, ctx) => string[] of repo-relative paths; [] only for `synthesized`
// `transforms` — OPTIONAL string[] of repo paths implementing the TRANSFORM that
// produces this rule's emitted bytes (#2757). A `derived`/`code-derived`
// artifact's bytes can move for a second reason `sources` alone cannot
// express: the transform code changed, not the source it derives from.
// `transforms` — OPTIONAL repo paths implementing the TRANSFORM that produces this
// rule's emitted bytes (#2757). A `derived`/`code-derived` artifact's
// bytes can move for a second reason `sources` alone cannot express:
// the transform code changed, not the source it derives from.
// Phase 3 (emitted-diff.cjs) attributes a moved path if the diff
// satisfies EITHER `sources` OR `transforms`, reusing the same
// `sourceSatisfiedBy` matcher for both so exact/prefix semantics stay
@@ -210,6 +221,15 @@ function nativePluginDescriptor(runtime) {
// `transforms` — enforced by `assertNoIdentityTransforms` below — because
// an identity copy's bytes can only move when its source moves; that is
// what makes it an identity.
// May be a plain `string[]` (the common case) OR a `(match, ctx) => string[]`
// function, mirroring `sources`, for a rule whose transform attribution
// depends on WHICH emitted path matched — e.g. `hooks-built` below, where
// only the `.cmd` shim sub-family has transform code at all; a static
// array would either miss that or (worse) falsely blanket-attribute every
// plain hook file to the shim generator that cannot move its bytes. A
// dedicated rule for the `.cmd` sub-family was considered and rejected: it
// is emitted ONLY on win32 (see `hooks-built` below), so on every non-
// Windows CI lane it would match zero paths and fail as a "dead" rule.
//
// Rule ORDER CARRIES NO SEMANTICS. Exactly-one matching is enforced, so rules are
// mutually exclusive by construction and the table reads correctly in any order.
@@ -294,6 +314,17 @@ const PROVENANCE_RULES = [
},
{
id: 'hooks-built',
// `kind` is a single scalar per rule, and this rule's majority sub-family
// (plain built hook files) is genuinely `derived` from hooks/<name> via
// scripts/build-hooks.js. The `.cmd` shim sub-family is code-derived (see
// the pattern-comment and `sources` comment below), but that does not
// change this rule's `kind` — a per-match `kind` would need a dedicated
// rule, which is exactly what was rejected above (dead on non-Windows CI
// lanes). The `.cmd` branch's real (code-derived) provenance is instead
// carried precisely by `sources`/`transforms` both pointing at
// HOOKS_WINDOWS_SHIM_SRC — `assertNoIdentityTransforms` only constrains
// `kind: 'identity'` rules, so a `derived` rule with a non-empty
// `transforms` here is unaffected by that guard.
kind: 'derived',
roots: HOOKS_ROOTS,
// Emitted from hooks/dist/, which scripts/build-hooks.js builds from hooks/.
@@ -301,8 +332,32 @@ const PROVENANCE_RULES = [
// Excludes Copilot's hook-registration JSON (next rule) — that is a code
// literal, not a built script, and attributing it here resolved to a
// nonexistent `hooks/gsd-session.json`.
//
// `.cmd` shims are a SEPARATE, Windows-only emission path folded into this
// SAME rule rather than a dedicated one (see the `transforms` doc above for
// why a standalone rule would go dead on non-Windows CI lanes). Verified via
// Memtrace: `hooks/<name>.cmd` is written at install time by
// ensureCodexHooksJsonSessionStart / ensureCodexHooksJsonEvent (both gated
// on `platform === 'win32'`) via buildCodexHookWindowsShimIR
// (HOOKS_WINDOWS_SHIM_SRC, src/runtime-hooks-surface.cts). The `.cmd` bytes
// are `@ECHO OFF\r\n@SETLOCAL\r\n@<runner> <script> %*\r\n` — built from the
// install-time interpreter token and the absolute install path, plus a
// hardcoded literal filename (e.g. `gsd-check-update.js`) baked into that
// same source file. The wrapped `.js` file's NAME flows into the `.cmd`
// bytes; its CONTENT never does — see the `sources` comment below for why
// that rules out attributing to `hooks/<name>.js`.
pattern: /^(?!gsd-session\.json$).+$/,
sources: (m) => [`hooks/${m[0]}`],
// `.cmd` shim bytes are code-derived (a literal template + the install-time
// interpreter/path tokens in HOOKS_WINDOWS_SHIM_SRC) — the wrapped `.js`
// file's NAME flows in (as a hardcoded literal filename inside that same
// source file), but its CONTENT never does, so attributing `sources` to
// `hooks/<name>.js` would be a false byte-provenance claim. Point `sources`
// at the same file as `transforms`, matching the `code-derived` convention
// used elsewhere in this table (copilot-hook-registration, cline-rules-
// code-derived, hermes-category-description). The redundancy between
// `sources` and `transforms` here is harmless — the mis-attribution was not.
sources: (m) => [m[0].endsWith('.cmd') ? HOOKS_WINDOWS_SHIM_SRC : `hooks/${m[0]}`],
transforms: (m) => (m[0].endsWith('.cmd') ? [HOOKS_WINDOWS_SHIM_SRC] : []),
},
{
id: 'copilot-hook-registration',
@@ -519,13 +574,25 @@ function attributeEmittedPath(rel, runtime, rules = PROVENANCE_RULES) {
);
}
const { rule, match } = hits[0];
let transforms;
if (typeof rule.transforms === 'function') {
transforms = rule.transforms(match, { rel, runtime });
if (!Array.isArray(transforms)) {
throw new Error(
`emitted-provenance: rule "${rule.id}" transforms(match, ctx) must return an array, ` +
`got ${typeof transforms} for ${rel}`,
);
}
} else {
// #2757: always an array, never undefined, so callers (Phase 3's diffEmitted)
// never need a defensive `|| []`.
transforms = Array.isArray(rule.transforms) ? rule.transforms : [];
}
return {
ruleId: rule.id,
kind: rule.kind,
sources: rule.sources(match, { rel, runtime }),
// #2757: always an array, never undefined, so callers (Phase 3's diffEmitted)
// never need a defensive `|| []`.
transforms: Array.isArray(rule.transforms) ? rule.transforms : [],
transforms,
};
}
@@ -540,12 +607,18 @@ function attributeEmittedPath(rel, runtime, rules = PROVENANCE_RULES) {
* future authoring mistake) and exported so tests can drive it against an injected
* corrupted table, matching this module's existing injectable-table convention.
*
* A function-valued `transforms` on an identity rule is rejected outright (without
* invoking it) — an identity rule has no legitimate match-dependent transform story
* by definition, so allowing the function form there would just be a slower path to
* the same false-attribution risk this guard exists to catch.
*
* @param {Array} rules rule table (injectable)
* @throws when any identity rule declares a non-empty transforms array
* @throws when any identity rule declares a non-empty transforms array or a function
*/
function assertNoIdentityTransforms(rules = PROVENANCE_RULES) {
const violators = rules.filter(
(r) => r.kind === 'identity' && Array.isArray(r.transforms) && r.transforms.length > 0,
(r) => r.kind === 'identity'
&& (typeof r.transforms === 'function' || (Array.isArray(r.transforms) && r.transforms.length > 0)),
);
if (violators.length) {
throw new Error(
@@ -561,39 +634,60 @@ function assertNoIdentityTransforms(rules = PROVENANCE_RULES) {
// until some test happens to exercise the corrupted rule.
assertNoIdentityTransforms(PROVENANCE_RULES);
// ─── Fixture loading ──────────────────────────────────────────────────────────
// ─── Manifest loading ─────────────────────────────────────────────────────────
/**
* Load every committed golden-parity manifest as {runtime, rel, keys}.
* Rejects a manifest whose JSON parses but is not a plain object — treating `0`,
* Build the emitted manifest set for every family, for real — one installer spawn
* per runtime, exactly as `tests/helpers/emitted-runtime.cjs`'s `currentManifests()`
* does for the differential check's CURRENT side.
*
* Pre-#2724 this read the committed `tests/fixtures/golden-install-parity/*.json`
* snapshots. Phase 4 (ADR-2719) deletes those fixtures entirely — not just at HEAD,
* at every future ref — so a fixture-reading implementation would throw at module
* load on every commit from here forward, taking the Phase 2 totality guard down
* with it (the totality guard is supposed to be the *replacement* for the golden
* check, not another casualty of deleting it). Building from real installs instead
* makes this the same honest, no-fixture-dependency shape as the differential's
* current-tree side, and it needs no `fixturesDir` parameter because there is no
* longer a fixture directory to point it at.
*
* Rejects a manifest whose build result is not a plain object — treating `0`,
* `"s"`, `[]`, `null` or `true` as "no keys" would let the whole guard pass
* vacuously on a corrupt fixture.
* vacuously on a corrupt build.
*/
function loadManifests(fixturesDir = FIXTURES_DIR) {
const files = fs.readdirSync(fixturesDir).filter((f) => f.endsWith('.json')).sort();
return files.map((file) => {
const full = path.join(fixturesDir, file);
const raw = fs.readFileSync(full, 'utf8');
if (raw.trim() === '') {
throw new Error(`emitted-provenance: fixture ${file} is empty`);
}
/**
* @param {object} [deps] injected for testability (hostile-input coverage below) —
* production callers use the defaults.
* @param {Array} [deps.families] MANIFEST_FAMILIES by default
* @param {function} [deps.install] runMinimalInstall by default
* @param {function} [deps.build] buildParityManifest by default
* @param {function} [deps.clean] cleanup by default
*/
function loadManifests({
families = MANIFEST_FAMILIES,
install = runMinimalInstall,
build = buildParityManifest,
clean = cleanup,
} = {}) {
return families.map(({ name, runtime, scope }) => {
const { configDir, root } = install({ runtime, scope });
let parsed;
try {
parsed = JSON.parse(raw);
} catch (err) {
throw new Error(`emitted-provenance: fixture ${file} is not valid JSON: ${err.message}`);
parsed = build(configDir, root);
} finally {
clean(root);
}
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
throw new Error(
`emitted-provenance: fixture ${file} must be a JSON object of path->hash, ` +
`emitted-provenance: build for ${name} must produce an object of path->hash, ` +
`got ${Array.isArray(parsed) ? 'array' : typeof parsed}`,
);
}
return {
file,
// `claude-local.json` is the claude runtime at local scope; the descriptor
// lookup keys on the runtime id, not the fixture name.
runtime: file.replace(/\.json$/, '').replace(/-local$/, ''),
file: `${name}.json`,
// `claude-local` is the claude runtime at local scope; the descriptor lookup
// keys on the runtime id, not the family name.
runtime,
keys: Object.keys(parsed),
};
});
@@ -668,7 +762,6 @@ function assertTotality(manifests, rules = PROVENANCE_RULES, sampleLimit = 10) {
module.exports = {
EXPECTED_MANIFEST_COUNT,
FIXTURES_DIR,
PROVENANCE_RULES,
SKILLS_ROOTS,
KIMI_ROOT_AGENT_SRC,
@@ -677,6 +770,7 @@ module.exports = {
HOOKS_ROOTS,
COMMANDS_SRC,
CLINE_BODY_SRC,
HOOKS_WINDOWS_SHIM_SRC,
INSTALLER_SRC,
stripSkillPrefix,
nativePluginDescriptor,

View File

@@ -31,7 +31,9 @@
*/
const fs = require('node:fs');
const os = require('node:os');
const path = require('node:path');
const crypto = require('node:crypto');
const { execFileSync } = require('node:child_process');
const { cleanup } = require('../helpers.cjs');
@@ -227,8 +229,33 @@ function reconcileFamilies({
* macOS CI silently stops reporting. */
const GIT_TIMEOUT_MS = 30_000;
/**
* Prepend `-c safe.directory=<dir>` to a git argv.
*
* The remote test-runner container mounts the repository at a path owned by a
* different uid than the process running the suite; git's dubious-ownership
* protection then refuses EVERY operation there with "detected dubious ownership"
* (#2767 — surfaced when a previously-always-skipping regression test started
* actually executing in that container and its very first `git rev-parse HEAD`
* failed closed). GitHub Actions never hits this because `actions/checkout`
* registers the workspace as a safe directory automatically; this runner's
* container does not. `buildBaselineAtRef` is the PRODUCTION build-fallback path
* the sole remaining emitted gate depends on (`resolveBaseline`'s in-job-build leg,
* ADR-2719 §5) — not just a test helper — so the fix belongs here, not papered
* over by skipping the test that found it.
*
* Declares the SPECIFIC resolved directory each call site already operates on —
* never the `*` wildcard, which would mark every repository on the machine safe —
* so this cannot broaden trust beyond the one path the caller already intends to
* touch. Every git call in this module (and its production/test callers) passes
* through here so the fix cannot silently drift per call site.
*/
function safeDirArgs(dir) {
return ['-c', `safe.directory=${path.resolve(dir)}`];
}
function git(args, { cwd = REPO_ROOT } = {}) {
return execFileSync('git', args, {
return execFileSync('git', [...safeDirArgs(cwd), ...args], {
cwd,
encoding: 'utf8',
timeout: GIT_TIMEOUT_MS,
@@ -316,6 +343,15 @@ function resolveBase(env = process.env) {
* current registry, so the loop never asks the base ref for it, `baseline` silently omits
* a family that genuinely existed, and the dropped-family check can never fire. Asking
* the ref what it actually contains is the only way the "before" side is really "before".
*
* NOT called by the real-tree test's production path as of #2724 (ADR-2719 Phase 4) —
* `buildBaselineAtRef` + `resolveBaseline()` replaced it, since the fixture directory
* this reads no longer exists at any ref from the cutover commit forward. Kept
* (alongside `baselineManifestsAtRef`/`baselineSizesAtRef` below) because it still
* answers a real question for a REF THAT PREDATES THE CUTOVER — bisecting into the
* dual-run window (#2723) or earlier — and its own regression test below pins a real
* property (the baseline must reflect the ref, not the current registry) that would
* otherwise go untested.
*/
function baselineFamilyNamesAtRef(base, { cwd = REPO_ROOT } = {}) {
let out;
@@ -366,6 +402,111 @@ function baselineManifestsAtRef(base = 'origin/next') {
return found === 0 ? null : manifests;
}
/**
* Build the baseline artifact at `ref` FOR REAL — a throwaway `git worktree` checked
* out at `ref`, MEASURED by `cwd`'s (the calling checkout's) OWN
* `scripts/gen-emitted-baseline.cjs` (#2724/#2767, ADR-2719 §5's "in-job build at
* origin/next" fallback).
*
* ── Why the generator runs from `cwd`, not from the worktree ─────────────────────
* `scripts/gen-emitted-baseline.cjs` was ADDED by the same PR that deleted the golden
* fixtures this fallback used to read instead (#2724). A base ref that predates that PR
* — which is every `next` this fallback is ever asked to measure, since the fallback
* only runs on a cache miss for a ref that has not been through the publish job yet —
* therefore never has the script at `<worktreeDir>/scripts/gen-emitted-baseline.cjs`,
* and invoking it there fails closed with `Cannot find module` on every single call: the
* fallback could never bootstrap. Running `cwd`'s copy instead, with `--dir worktreeDir`
* telling it WHICH tree's installer to measure, isn't merely the workaround for that —
* it is the more correct differential semantics regardless: a diff needs ONE measurement
* schema applied to BOTH sides, or the sides stop being comparable the moment that
* schema evolves (a new exclusion rule, a new manifest family) between the two commits.
* Letting each side measure itself with its own, potentially different, version of the
* script would silently reintroduce exactly that incomparability.
*
* This is the slow path, used only on a `resolveBaseline()` cache miss. The worktree
* needs no `npm ci`: `bin/install.js` and the `tests/helpers/*.cjs` real-tree shells are
* all Node-builtins-only (CONTRIBUTING.md's "No external dependencies in core"). It DOES
* need `npm run build:lib` run there first, though — `tests/helpers/install-shared.cjs`
* requires the TSC-COMPILED `gsd-core/bin/lib/runtime-artifact-layout.cjs`, which is
* gitignored, not committed, and therefore absent from a bare worktree checkout, and
* `<worktreeDir>/bin/install.js` (spawned BY `cwd`'s generator via `currentManifests`'s
* `repoRoot` override) needs its own compiled copy alongside it, not `cwd`'s. `node_modules`
* is symlinked in from the calling checkout (never copied — `npm ci` inside every
* fallback build would make an already-slow path far slower) so `tsc` is available
* without a second install; the worktree's OWN `src/*.cts` and `tsconfig.build.json`
* are what gets compiled, so the MEASURED installer reflects `ref`, not `cwd`'s tree —
* only the measurement CODE (the generator, install-shared.cjs, emitted-runtime.cjs)
* comes from `cwd`.
*
* Every subprocess is bounded. The worktree is always removed, success or failure —
* a leaked worktree would poison `git worktree list` for every subsequent run in the
* same checkout (CI runners reuse the same clone across jobs in some configurations).
*
* @param {string} ref the ref/sha to build at (e.g. `origin/next`, a 40-hex sha)
* @param {object} [o]
* @param {string} [o.cwd] repo to run `git worktree` from AND whose generator measures it
* @returns {object} the parsed baseline artifact ({version, sha, manifests, sizes})
*/
function buildBaselineAtRef(ref, { cwd = REPO_ROOT } = {}) {
const worktreeDir = fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-emitted-baseline-wt-'));
// mkdtempSync already created the directory; `git worktree add` requires the
// target to not exist (or be empty) — remove it and let git recreate it.
fs.rmdirSync(worktreeDir);
const outFile = path.join(os.tmpdir(), `gsd-emitted-baseline-out-${crypto.randomBytes(8).toString('hex')}.json`);
const WORKTREE_TIMEOUT_MS = 60_000;
const BUILD_LIB_TIMEOUT_MS = 180_000;
const BUILD_TIMEOUT_MS = 300_000;
try {
execFileSync('git', [...safeDirArgs(cwd), 'worktree', 'add', '--detach', worktreeDir, ref], {
cwd, encoding: 'utf8', timeout: WORKTREE_TIMEOUT_MS, stdio: ['ignore', 'pipe', 'pipe'],
});
const sharedNodeModules = path.join(cwd, 'node_modules');
if (fs.existsSync(sharedNodeModules)) {
fs.symlinkSync(sharedNodeModules, path.join(worktreeDir, 'node_modules'), 'dir');
}
execFileSync('npm', ['run', 'build:lib'], {
cwd: worktreeDir, encoding: 'utf8', timeout: BUILD_LIB_TIMEOUT_MS, stdio: ['ignore', 'pipe', 'pipe'],
});
// Run `cwd`'s OWN generator (not the worktree's — see the function doc for why),
// pointed at the worktree as the tree to measure.
execFileSync(
process.execPath,
[path.join(cwd, 'scripts', 'gen-emitted-baseline.cjs'), '--dir', worktreeDir, '--out', outFile],
{ cwd, encoding: 'utf8', timeout: BUILD_TIMEOUT_MS, stdio: ['ignore', 'pipe', 'pipe'] },
);
const raw = fs.readFileSync(outFile, 'utf8');
return JSON.parse(raw);
} finally {
try {
execFileSync('git', [...safeDirArgs(cwd), 'worktree', 'remove', '--force', worktreeDir], {
cwd, encoding: 'utf8', timeout: WORKTREE_TIMEOUT_MS, stdio: ['ignore', 'pipe', 'pipe'],
});
} catch {
// Best-effort: the checkout may already be gone (e.g. the build step failed
// before writing anything). Prune stale admin data rather than leaving it.
try {
execFileSync('git', [...safeDirArgs(cwd), 'worktree', 'prune'], {
cwd, encoding: 'utf8', timeout: WORKTREE_TIMEOUT_MS, stdio: ['ignore', 'pipe', 'pipe'],
});
} catch { /* best-effort cleanup; never mask the primary result/error */ }
}
// Same guarantee as the git cleanup above: an EBUSY/EPERM here must not replace
// whatever the `try` block was about to return or throw.
try {
fs.rmSync(outFile, { force: true });
} catch { /* best-effort cleanup; never mask the primary result/error */ }
try {
fs.rmSync(worktreeDir, { recursive: true, force: true });
} catch { /* best-effort cleanup; never mask the primary result/error */ }
}
}
/** Size maps at `base`, for the ratchet half. Null when absent at that ref. */
function baselineSizesAtRef(base = 'origin/next') {
const sizes = {};
@@ -386,11 +527,23 @@ function baselineSizesAtRef(base = 'origin/next') {
* Build the CURRENT emitted manifest set for real — one installer spawn per runtime.
* This is the expensive, honest half: it reflects what the tree actually emits now,
* not what the author regenerated into a fixture.
*
* @param {object} [opts]
* @param {string} [opts.repoRoot] - Measure a DIFFERENT checkout's installer instead of
* this one's (#2767). When set, `<repoRoot>/bin/install.js` is spawned rather than
* THIS checkout's `bin/install.js` — the measurement schema (this function, the
* exclusion rules in install-shared.cjs) stays fixed at the caller's version while the
* installer code being measured varies. This is what lets `gen-emitted-baseline.cjs`
* apply ONE definition of "the emitted manifest" to two different trees (PR HEAD and a
* base-ref worktree) so the two sides stay comparable even if the definition itself
* evolves — running the OTHER tree's own (older, or absent) copy of this function would
* defeat that.
*/
function currentManifests() {
function currentManifests({ repoRoot } = {}) {
const installScript = repoRoot ? path.join(repoRoot, 'bin', 'install.js') : undefined;
const manifests = {};
for (const { name, runtime, scope } of MANIFEST_FAMILIES) {
const { configDir, root } = runMinimalInstall({ runtime, scope });
const { configDir, root } = runMinimalInstall({ runtime, scope, installScript });
try {
manifests[name] = buildParityManifest(configDir, root);
} finally {
@@ -400,12 +553,18 @@ function currentManifests() {
return manifests;
}
/** Current on-disk sizes for the workflow + agent families the ratchet covers. */
function currentSizes() {
/**
* Current on-disk sizes for the workflow + agent families the ratchet covers.
* @param {object} [opts]
* @param {string} [opts.repoRoot] - Read `<repoRoot>/gsd-core/workflows` and
* `<repoRoot>/agents` instead of this checkout's own (#2767) — same rationale as
* `currentManifests`'s `repoRoot`.
*/
function currentSizes({ repoRoot = REPO_ROOT } = {}) {
const sizes = {};
for (const [dir, filter] of [
[path.join(REPO_ROOT, 'gsd-core', 'workflows'), (f) => f.endsWith('.md')],
[path.join(REPO_ROOT, 'agents'), (f) => f.endsWith('.md')],
[path.join(repoRoot, 'gsd-core', 'workflows'), (f) => f.endsWith('.md')],
[path.join(repoRoot, 'agents'), (f) => f.endsWith('.md')],
]) {
if (!fs.existsSync(dir)) continue;
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
@@ -446,6 +605,7 @@ module.exports = {
touchesRuntimeRegistry,
reconcileFamilies,
GIT_TIMEOUT_MS,
safeDirArgs,
git,
resolveChangedPaths,
resolveBaseSha,
@@ -454,6 +614,7 @@ module.exports = {
baselineFamilyNamesAtRef,
baselineManifestsAtRef,
baselineSizesAtRef,
buildBaselineAtRef,
currentManifests,
currentSizes,
readAckFile,

View File

@@ -297,7 +297,18 @@ function installerEnv(overrides = {}) {
return env;
}
function runMinimalInstall({ runtime, scope, extraArgs = [] }) {
/**
* @param {object} opts
* @param {string} opts.runtime
* @param {string} opts.scope
* @param {string[]} [opts.extraArgs]
* @param {string} [opts.installScript] - Absolute path to the `bin/install.js` to spawn.
* Defaults to THIS checkout's own INSTALL_SCRIPT. Overridable (#2767) so a caller can
* measure a DIFFERENT tree's installer — e.g. the differential baseline builder
* pointing at a `git worktree` checked out at the base ref, so the emitted manifest it
* produces reflects that ref's own installer code, not the PR checkout's.
*/
function runMinimalInstall({ runtime, scope, extraArgs = [], installScript = INSTALL_SCRIPT }) {
const root = fs.mkdtempSync(path.join(os.tmpdir(), `gsd-${runtime}-${scope}-`));
try {
const LOCAL_DIR_NAME = {
@@ -308,7 +319,7 @@ function runMinimalInstall({ runtime, scope, extraArgs = [] }) {
};
let configDir;
let cwd = process.cwd();
const args = [INSTALL_SCRIPT, `--${runtime}`];
const args = [installScript, `--${runtime}`];
if (scope === 'global') {
args.push('--global', '--config-dir', root);
configDir = root;

View File

@@ -10,6 +10,7 @@ const { cleanup } = require('./helpers.cjs');
const ROOT = path.join(__dirname, '..');
const { HOST_LOOP_FILES, scanWiredPoints } = require('../scripts/gen-loop-host-contract.cjs');
const { lfByteCount } = require('../scripts/workflow-size.cjs');
const CORE_SUBSTRATE_TERMS = [
'Verification substrate',
@@ -94,12 +95,18 @@ describe('ADR-857 Phase 6 capstone conformance (#1139)', () => {
}
});
test('host loop workflow files have committed byte budgets', () => {
const baseline = JSON.parse(readRepoFile('tests/workflow-size-baseline.json'));
test('host loop workflow files have a measurable, non-empty byte size', () => {
// Was asserted against the committed tests/workflow-size-baseline.json snapshot;
// #2724 (ADR-2719 Phase 4) deletes that file — the differential attribution
// check's size ratchet (tests/emitted-attribution.test.cjs) is the replacement
// anti-creep mechanism, but this test's actual intent was narrower: prove these
// host-loop files are real, tracked, non-empty workflow docs. Asserting the
// live byte count via the same shared counter the size guards use preserves
// that intent without depending on a committed snapshot.
for (const relativePath of HOST_LOOP_FILES) {
const fileName = path.basename(relativePath);
assert.equal(typeof baseline[fileName], 'number', `${fileName} must have a workflow-size baseline`);
assert.ok(baseline[fileName] > 0, `${fileName} baseline must be positive`);
const bytes = lfByteCount(path.join(ROOT, relativePath));
assert.ok(bytes > 0, `${fileName} must be a non-empty workflow file`);
}
});

View File

@@ -1,144 +0,0 @@
'use strict';
/**
* Tests for scripts/update-size-baseline.cjs — the per-file workflow size
* baseline generator (issue #1074).
*/
const { test, describe, beforeEach, afterEach } = require('node:test');
const assert = require('node:assert/strict');
const fs = require('fs');
const os = require('node:os');
const path = require('path');
const {
generateBaseline,
serializeBaseline,
} = require('../scripts/update-size-baseline.cjs');
const { assertFileBaseline } = require('../scripts/lib/allowlist-ratchet.cjs');
const { measureWorkflows } = require('../scripts/workflow-size.cjs');
const { cleanup } = require('./helpers.cjs');
describe('serializeBaseline', () => {
test('keys are sorted and output ends with a trailing newline', () => {
const out = serializeBaseline({ 'z.md': 3, 'a.md': 1, 'm.md': 2 });
assert.ok(out.endsWith('\n'), 'must end with a trailing newline');
const keys = Object.keys(JSON.parse(out));
assert.deepStrictEqual(keys, ['a.md', 'm.md', 'z.md'], 'keys must be sorted');
});
test('is stable: same input serializes identically (minimal-diff artifact)', () => {
const input = { 'b.md': 2, 'a.md': 1 };
assert.strictEqual(serializeBaseline(input), serializeBaseline({ ...input }));
});
});
describe('generateBaseline', () => {
let dir;
let outPath;
beforeEach(() => {
dir = fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-gen-baseline-'));
outPath = path.join(dir, 'baseline.json');
});
afterEach(() => cleanup(dir));
test('writes a baseline matching the measured workflow sizes', () => {
const wfDir = path.join(dir, 'workflows');
fs.mkdirSync(wfDir);
fs.writeFileSync(path.join(wfDir, 'one.md'), 'hello\n');
fs.writeFileSync(path.join(wfDir, 'two.md'), 'a longer body here\n');
const result = generateBaseline({ dir: wfDir, outPath });
assert.strictEqual(result.count, 2);
const written = JSON.parse(fs.readFileSync(outPath, 'utf-8'));
assert.deepStrictEqual(written, measureWorkflows(wfDir));
});
test('idempotent: a second run with no changes produces an identical file', () => {
const wfDir = path.join(dir, 'workflows');
fs.mkdirSync(wfDir);
fs.writeFileSync(path.join(wfDir, 'one.md'), 'hello\n');
generateBaseline({ dir: wfDir, outPath });
const first = fs.readFileSync(outPath, 'utf-8');
generateBaseline({ dir: wfDir, outPath });
const second = fs.readFileSync(outPath, 'utf-8');
assert.strictEqual(first, second, 'a no-op regeneration must not churn the file');
});
test('round-trip: a freshly generated baseline satisfies assertFileBaseline', () => {
const wfDir = path.join(dir, 'workflows');
fs.mkdirSync(wfDir);
fs.writeFileSync(path.join(wfDir, 'one.md'), 'hello\n');
fs.writeFileSync(path.join(wfDir, 'two.md'), 'world body\n');
generateBaseline({ dir: wfDir, outPath });
const baseline = JSON.parse(fs.readFileSync(outPath, 'utf-8'));
const calls = [];
assertFileBaseline({
label: 'roundtrip',
current: measureWorkflows(wfDir),
baseline,
fail: (m) => calls.push(m),
});
assert.deepStrictEqual(calls, [], 'a just-generated baseline must pass the guard with zero failures');
});
test('regeneration records growth after a workflow file grows', () => {
const wfDir = path.join(dir, 'workflows');
fs.mkdirSync(wfDir);
const wf = path.join(wfDir, 'one.md');
fs.writeFileSync(wf, 'small\n');
generateBaseline({ dir: wfDir, outPath });
// File grows; the OLD baseline should now flag growth...
fs.writeFileSync(wf, 'small\nplus several more bytes\n');
const oldBaseline = JSON.parse(fs.readFileSync(outPath, 'utf-8'));
const beforeRegen = [];
assertFileBaseline({
label: 'grow',
current: measureWorkflows(wfDir),
baseline: oldBaseline,
fail: (m) => beforeRegen.push(m),
});
assert.strictEqual(beforeRegen.length, 1, 'old baseline must flag the growth');
// ...and regenerating clears it.
generateBaseline({ dir: wfDir, outPath });
const newBaseline = JSON.parse(fs.readFileSync(outPath, 'utf-8'));
const afterRegen = [];
assertFileBaseline({
label: 'grow',
current: measureWorkflows(wfDir),
baseline: newBaseline,
fail: (m) => afterRegen.push(m),
});
assert.deepStrictEqual(afterRegen, [], 'regenerated baseline must pass');
});
test('throws when the workflows directory does not exist', () => {
assert.throws(
() => generateBaseline({ dir: path.join(dir, 'missing'), outPath }),
/ENOENT/
);
});
test('predicate filters which files are baselined (agent path)', () => {
const agentDir = path.join(dir, 'agents');
fs.mkdirSync(agentDir);
fs.writeFileSync(path.join(agentDir, 'gsd-one.md'), 'a\n');
fs.writeFileSync(path.join(agentDir, 'gsd-two.md'), 'bb\n');
fs.writeFileSync(path.join(agentDir, 'README.md'), 'not an agent\n');
const result = generateBaseline({
dir: agentDir,
outPath,
predicate: (f) => f.startsWith('gsd-'),
});
assert.strictEqual(result.count, 2, 'only gsd-*.md files should be baselined');
const written = JSON.parse(fs.readFileSync(outPath, 'utf-8'));
assert.deepStrictEqual(Object.keys(written), ['gsd-one.md', 'gsd-two.md']);
});
});

View File

@@ -1,93 +0,0 @@
{
"add-backlog.md": 7176,
"add-phase.md": 7578,
"add-tests.md": 17247,
"add-todo.md": 11020,
"ai-integration-phase.md": 15356,
"analyze-dependencies.md": 3887,
"audit-fix.md": 12329,
"audit-milestone.md": 19425,
"audit-uat.md": 7469,
"autonomous.md": 42468,
"check-todos.md": 9771,
"cleanup.md": 10319,
"code-review-fix.md": 25301,
"code-review.md": 33490,
"complete-milestone.md": 31436,
"debug.md": 20555,
"diagnose-issues.md": 13444,
"discovery-phase.md": 13543,
"discuss-phase-assumptions.md": 28633,
"discuss-phase-power.md": 11273,
"discuss-phase.md": 31986,
"do.md": 10731,
"docs-update.md": 56876,
"edit-phase.md": 12927,
"eval-review.md": 10316,
"execute-phase.md": 92874,
"execute-plan.md": 35143,
"explore.md": 11127,
"extract-learnings.md": 13762,
"fast.md": 7613,
"forensics.md": 12531,
"graduation.md": 11987,
"health.md": 12246,
"help.md": 1722,
"import.md": 15599,
"inbox.md": 19299,
"ingest-docs.md": 19821,
"insert-phase.md": 8987,
"list-phase-assumptions.md": 4305,
"list-seeds.md": 6987,
"list-workspaces.md": 5699,
"manager.md": 27751,
"map-codebase.md": 22266,
"milestone-summary.md": 11842,
"mvp-phase.md": 13991,
"new-milestone.md": 39090,
"new-project.md": 67478,
"new-workspace.md": 11584,
"next.md": 20171,
"node-repair.md": 4173,
"note.md": 6563,
"onboard.md": 8877,
"pause-work.md": 14441,
"plan-milestone-gaps.md": 11809,
"plan-phase.md": 94427,
"plan-review-convergence.md": 26363,
"plant-seed.md": 12150,
"pr-branch.md": 15963,
"profile-user.md": 21624,
"progress.md": 32632,
"quick.md": 52730,
"reapply-patches.md": 20312,
"remove-phase.md": 8513,
"remove-workspace.md": 7916,
"resume-project.md": 17270,
"review.md": 59213,
"scan.md": 8880,
"secure-phase.md": 15006,
"session-report.md": 4044,
"settings-advanced.md": 40019,
"settings-integrations.md": 16257,
"settings.md": 33832,
"ship.md": 31658,
"sketch-wrap-up.md": 14267,
"sketch.md": 20369,
"smart-entry.md": 11489,
"spec-phase.md": 31987,
"spike-wrap-up.md": 15136,
"spike.md": 24939,
"stats.md": 6762,
"sync-skills.md": 6125,
"thread.md": 12508,
"transition.md": 22070,
"ui-phase.md": 27330,
"ui-review.md": 12548,
"ultraplan-phase.md": 10512,
"undo.md": 15323,
"update.md": 26024,
"validate-phase.md": 12235,
"verify-phase.md": 40949,
"verify-work.md": 41714
}

View File

@@ -75,12 +75,10 @@ const assert = require('node:assert/strict');
const fs = require('fs');
const os = require('node:os');
const path = require('path');
const { assertFileBaseline } = require('../scripts/lib/allowlist-ratchet.cjs');
const { lfByteCount: byteCount, listWorkflowStems, measureWorkflows } = require('../scripts/workflow-size.cjs');
const { cleanup } = require('./helpers.cjs');
const WORKFLOWS_DIR = path.join(__dirname, '..', 'gsd-core', 'workflows');
const BASELINE_PATH = path.join(__dirname, 'workflow-size-baseline.json');
// Tier HARD CAPS (#1074) — absolute red lines, not high-water-hugging ceilings.
// Day-to-day creep is caught per-file by the baseline guard below; these exist
@@ -96,10 +94,6 @@ const XL_CAP = 98304; // 96 KiB
const LARGE_CAP = 61440; // 60 KiB
const DEFAULT_CAP = 40960; // 40 KiB
// New workflow files (not yet in the committed baseline) must stay under the
// Codex project_doc_max_bytes anchor unless explicitly tiered into XL/LARGE in
// the same PR. Keeps net-new orchestrators from being born oversized.
const NEW_FILE_CAP = 32768; // 32 KiB
// Top-level orchestrators that own end-to-end multi-phase rubrics.
// Grandfathered at current sizes — see the discuss-phase/modes split (#717) for the progressive-disclosure
@@ -169,47 +163,32 @@ describe('SIZE: workflow tier hard caps (issue #1074)', () => {
});
}
test('new workflow files (not yet baselined) stay under the 32 KiB Codex anchor', () => {
const baseline = JSON.parse(fs.readFileSync(BASELINE_PATH, 'utf-8'));
for (const workflow of ALL_WORKFLOWS) {
const key = `${workflow}.md`;
const isNew = !(key in baseline);
const isTiered = XL_WORKFLOWS.has(workflow) || LARGE_WORKFLOWS.has(workflow);
if (!isNew || isTiered) continue;
const bytes = SIZES[key];
assert.ok(
bytes < NEW_FILE_CAP,
`${key} is a new workflow at ${bytes} bytes — new files must stay under ` +
`${NEW_FILE_CAP} (the Codex project_doc_max_bytes anchor) unless explicitly ` +
`tiered into XL_WORKFLOWS/LARGE_WORKFLOWS in this same PR with a rationale.`
);
}
});
// A prior "new workflow files (not yet baselined) stay under the 32 KiB Codex
// anchor" test lived here, keyed on `tests/workflow-size-baseline.json` to tell a
// brand-new file (not yet in the baseline) from an existing grandfathered one
// (ADR-1610 Decision point 3). #2724 (ADR-2719 Phase 4) deletes that baseline, but
// the cap is NOT lost: it is revived as `NEW_FILE_CAP` inside the differential
// attribution check's size ratchet (tests/helpers/emitted-diff.cjs), which already
// computes "present in sizeCurrent, absent from sizeBaseline" for its own reasons —
// exactly the same "is this file new" signal, with no additional git dependency.
// It could not live here: this test is pure and fast (no baseline/base-ref of any
// kind), and the differential's real-tree test is the only place that dependency
// already exists. Narrower than the original — the pure differential module cannot
// see XL_WORKFLOWS/LARGE_WORKFLOWS tiering, so a legitimately large new file must
// extract rather than tier in — a disclosed, deliberate simplification.
});
describe('SIZE: per-file workflow baseline (issue #1074)', () => {
// Per-file exact-size ratchet — the primary anti-creep guard (it replaced the
// tier-max tighten-only ceilings, which only bound the single largest file in
// each tier). Guards EVERY workflow file by name against a committed snapshot
// (tests/workflow-size-baseline.json). Growth fails with the file and delta;
// shrinkage fails as a stale snapshot (regenerate to ratchet down). The fix
// for any failure is `npm run size:baseline` plus a PR justification for
// genuine growth (or lazy extraction). The tier hard caps above are the outer
// bound; this is the day-to-day creep control.
test('every workflow file matches its committed baseline', () => {
const baseline = JSON.parse(fs.readFileSync(BASELINE_PATH, 'utf-8'));
const current = measureWorkflows();
assertFileBaseline({
label: 'workflow-size',
current,
baseline,
fail: assert.fail,
updateHint:
'Run `npm run size:baseline` to update tests/workflow-size-baseline.json, ' +
'then justify any growth in your PR (or extract content lazily — see workflows/discuss-phase/).',
});
});
});
// A prior "SIZE: per-file workflow baseline (issue #1074)" describe block lived here,
// asserting every workflow file's exact byte count against the committed
// `tests/workflow-size-baseline.json` snapshot. #2724 (ADR-2719 Phase 4) deletes that
// snapshot: it was a pure function of the source tree, conflicted on 7 of 7 PRs that
// touched it, and its purpose — "growth must be noticed and justified" — is now served
// by the same differential machine that replaced the golden-install-parity fixtures
// (tests/emitted-attribution.test.cjs's real-tree test, via `emitted-diff.cjs`'s size
// ratchet: growth is reported with its exact byte delta and requires an entry in
// tests/emitted-drift-ack.json, ADR-2719 §4 / must-have 6). The tier hard caps above
// are unaffected — they are independent of the deleted baseline and remain the outer
// bound.
describe('SIZE: discuss-phase progressive disclosure (#717 byte budget)', () => {
// The discuss-phase progressive-disclosure split (#717) targets discuss-phase.md as a thin dispatcher, separate from