Files
msd-core/tests/fixtures/golden-install-parity/cursor.json
Behruz Nassre Esfahani d04e287fa9 fix(#2365): stop api-coverage detector false-positiving non-API phases (#2397)
* fix(#2365): stop the api-coverage detector false-positiving non-API phases

detectApiIntegration fired on any integration verb co-occurring anywhere on a
line with any API noun, treated / as a word boundary (so a first-party Next.js
src/app/api/... route path matched the noun "api"), and read any capitalized
word before API/SDK/REST/GraphQL as a service name behind a fixed stopword
denylist (so threat-model prose like "Resolver-only API" fired). Because the
verify:pre seal gate is BLOCKING, a phase touching no external API could not
reach UAT without fabricating a coverage matrix.

The compound rule now requires the verb and noun to share one clause (sentence
punctuation and table-cell walls end a clause) within a bounded word gap.
Non-prose spans are excluded before matching: fenced code (already), inline
code spans (new stripInlineCode in the markdown-sectionizer seam), and
path-shaped tokens. The <Service> API surface rule requires proper-noun
position — a clause-initial capitalized word is ordinary English and needs
dependency evidence (URL / package reference) on the same line — and rejects
compound modifiers ("Resolver-only", lowercase after the hyphen).

A phase that integrates no external API now has a first-class, reasoned way to
say so: a COVERAGE.md containing "No external API integration: <reason>"
satisfies the gate (declaration + rows is contradictory and blocks). The
true-positive path is pinned by regression tests: every default-vocabulary
positive still fires, including the widest word-gap pairing and the
surface-rule-only shape.

Fixes #2365

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(#2365): tighten api-coverage detector per Codex review (round 2)

Applies the Codex review findings on the initial #2365 fix:

- S-1: a COVERAGE.md "no external API integration" declaration is the human
  override for a fallible detector, so it must PASS even when detection still
  fires — but the contradiction is now SURFACED in the gate output (overridden
  signal count + terms) instead of passing silently.
- S-2: verb/noun pairing is now a term-group nearest-pair merge walk over
  precomputed word ordinals (computeWordStarts / minWordGap), not a match×match
  cross product — a hostile line repeating one pair thousands of times stays
  linear instead of going quadratic.
- FN-4: package-shaped inline-code spans (`stripe-sdk`, `@stripe/stripe-js`)
  are kept as noun/dependency evidence rather than being fully masked, so a
  genuine dependency reference inside code ticks still corroborates.
- C-1: the <Service> API surface rule now scans every candidate in every
  clause; a rejected first candidate no longer shadows a later genuine service.
- Cross-clause binding: a verb may bind a noun in the immediately following
  clause only when its own clause names a service object, within a tight gap —
  admits "Integrate Stripe, exposing its endpoints …" without re-admitting the
  unrelated-clauses false-positive class.
- Internal-descriptor negative evidence ("internal Payments API",
  "the internal endpoint") never pairs; URL/scheme matching generalized beyond
  http(s).

All 5 acceptance criteria still hold: the three reported false positives are
clean and "integrate the Stripe API" still fires. Built .cjs committed
alongside the .cts. tsc + eslint (incl. no-adhoc-markdown-parsing) +
lint:regression-names clean; affected suites 256/256 green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(#2365): retune api-coverage detector fail-closed per Codex review (round 3)

Codex's second-round review found the round-2 tightening had over-corrected into
FAIL-OPEN false negatives — realistic external-API prose that the BLOCKING seal
gate silently let through (the catastrophic class, since a missed API surface is
worse than a dismissable false positive). Retuned the detector to be explicitly
fail-closed: lean toward detecting, and let the one-line COVERAGE.md "no external
API integration" declaration dismiss the residual false positives.

Fail-open false negatives fixed (all now detect):
- F1 clause-initial `<Service> API` with a plain follower ("Stripe API for
  payment processing") — dropped the follower-allowlist / corroboration gate on
  clause-initial surfaces; a service that is not a stopword, descriptor, or
  compound modifier is a real name from any clause position.
- F2 scheme-less external host ("api.stripe.com/v1") — a dotted host with an
  alphabetic final label now contributes its API nouns; a first-party route
  path (no dotted host) still does not.
- F3 vendor's first-party SDK ("Integrate Shopify's first-party SDK") — the
  compound path no longer filters nouns on "internal"/"first-party" (Codex: the
  qualifier can describe the vendor's own API, not the consuming project's).
- F4 long single integration clause — removed the word-gap cap entirely: it
  could not separate a 21-word genuine clause from an 18-word internal one, so
  the clause boundary is now the whole relationship test.
- F5 lowercase cross-clause service — cross-clause binding no longer requires a
  capitalized "service object".

New false positives fixed (all now clean):
- F6 a URL token that swallowed a trailing clause comma, merging two clauses —
  trailing clause punctuation is kept literal so the split survives.
- F7 a capitalized internal component authorizing cross-clause binding — the new
  gate requires a dependent elaboration, not a new coordinate clause opened by a
  conjunction ("…, then document…").
- F8 a protocol name read as a service ("REST API", "GraphQL API") — protocol
  and locality descriptors are rejected in the `<Service>` position.

- Finding 9: the inline-code-span scanner was O(n^2) on pathological backtick
  runs; rewritten to linear via a per-length run cursor (2 MB: 4.15 s -> ~6 ms),
  semantics preserved (148 sectionizer tests unchanged).

Net simplification: the fail-closed model removed the round-2 minWordGap /
groupByTerm / follower / corroboration machinery (350 insertions vs 445
deletions across the touched files). Under fail-closed, three round-2 negative
tests now correctly detect (integration verb + "internal"-qualified noun, and
the distant-same-clause case); none were trek-e acceptance FPs.

Verified: 1491/1491 unit tests pass; tsc + eslint (incl. no-adhoc-markdown-
parsing) + lint:regression-names clean; all 8 review findings reproduced as
regression tests, both directions. Built .cjs committed alongside the .cts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(#2365): resolve round-3 Codex review findings (fail-closed, round 4)

Codex's round-3 adversarial review found the fail-closed retune had introduced
new holes in both directions. Resolved:

Fail-open false negatives (now detect):
- External host addressing a PATH ("graph.microsoft.com/v1.0/me") is itself an
  integration surface and contributes an endpoint noun even when the host names
  no vocabulary word. A bare domain link with no path ("https://example.com")
  stays a non-signal, so "Integrate … from example.com, document …" is still
  clean.
- Locality qualification ("internal", "private") no longer leaks across a
  sentence or clause boundary: only plain spaces may separate the descriptor
  from the service, so "The cache is private. Stripe API …" now detects.
- Cross-clause binding: the fragile head-word cap (which could not tell a
  genuine "Connect … to Stripe payments, exposing its endpoints" from an
  unrelated "Integrate … from URL, document …" — both 4 words after the verb)
  is replaced by a participial-continuation rule: a verb binds a noun in the
  next clause only when that clause begins with an "-ing" elaboration. This
  fixes the 4-word-head false negative AND the false positive below at once.

False positives (now clean):
- Cross-clause no longer binds a finite continuation regardless of separator:
  "Wire the settings form. Document endpoint props." / "…; document …" /
  "…, document …" are separate actions, not elaborations.

Perf (quadratic → linear):
- The trailing-punctuation peel is a backward char scan instead of an
  unanchored `[…]+$` regex (16k chars: 156 ms → ~1 ms).
- SERVICE_SURFACE_API_RE bounds the service-name length {1,40} so a hostile
  "A-A-…-x" run cannot drive O(n^2) backtracking (16k: 385 ms → ~3 ms).

Consumer fail-open (blocking gate):
- readPhaseScope now distinguishes "no plans" from a plan that EXISTS but is
  unreadable. On a read error the gate BLOCKS ("could not read the phase
  scope …") instead of silently certifying no-integration from partial scope —
  an unreadable plan could be the one describing the integration.

Documented fail-closed tradeoffs, now pinned with tests so they are not
"fixed" back into a fail-open: a clause-initial capitalized common word before
"API" ("Payment API", "Search API") reads as a service name; a long clause
pairs a verb with a distant noun; and a CommonMark inline code span that wraps
a newline is matched within-line only. Codex judged these acceptable because
the COVERAGE.md declaration is a cheap override.

One documented limitation remains out of scope: "Integrate Stripe, and
authenticate requests with its API" (a coordinate finite clause whose noun
refers back by pronoun) needs coreference resolution, beyond a lexical detector.

Verified: 379/379 affected + command-router tests pass (+14 new regression
tests covering every round-3 finding, both directions); tsc + eslint
(no-adhoc-markdown-parsing) + lint:regression-names clean. Built .cjs committed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(#2365): simplify to robust core — remove whack-a-mole heuristics (round 5)

Round-4 review confirmed the detector's two most complex features generate
findings in both directions no matter how they are tuned, because they need a
vendor dictionary + coreference the issue rules out in principle. Per the
operator's "ship the robust core" decision, both are removed and their gaps are
documented rather than chased further:

- Cross-clause binding DELETED (allowsCrossClause / participle rule). It caused
  a fail-open on finite continuations ("Integrate Stripe; use its OAuth
  endpoints" — missed) and a false positive on "-ing"-SPELLED nouns ("…, billing
  endpoint terminology…" — wrongly fired). Detection is now same-clause only.
- URL-path-as-evidence REVERTED. Treating every path-bearing URL as an endpoint
  fired on ordinary asset/link URLs ("…/theme.css", "…?next=/x", a docs/repo
  link) and recreated routine UI-phase false positives. An external URL is
  evidence only when it NAMES an API vocabulary word ("api.stripe.com/v1").

Two fail-open cases are now DOCUMENTED limitations, pinned by tests so a future
maintainer does not re-add the heuristics that caused the false positives above:
a service named only in a clause separate from its API noun, and a bare external
host that names no vocabulary word. Both are cheaply covered by the COVERAGE.md
declaration and rare in real phase prose ("integrate the X API").

Also fixed from the round-4 review:
- Qualification now survives markdown emphasis ("The **internal** Payments API"
  stays clean) while still not crossing a sentence/clause boundary.
- readPhaseScope fail-closes on a REAL read failure (EACCES/EIO) enumerating the
  phase directory or reading the roadmap fallback — not only per-plan-file
  failures; a missing directory/section remains a legitimate no-op. The
  declaration-override path surfaces scope_read_error so an incomplete-scope
  override stays visible.
- SERVICE_SURFACE_API_RE length-bound comment no longer overclaims.

Net: the detector is same-clause verb+noun + `<Service> API` surface, with
path/code/inline masking and a fail-closed posture. All five acceptance criteria
hold. 1573/1573 unit tests pass; tsc + eslint (no-adhoc-markdown-parsing) +
lint:regression-names clean. Built .cjs committed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(#2365): close roadmap-fallback fail-open + stale JSDoc (round-5 review)

The round-5 sanity review confirmed the detector simplification is sound (all
acceptance positives fire, all required negatives clean) and flagged one real
blocker plus a nit:

- Blocker: readPhaseScope's roadmap fallback could still silently pass an
  UNREADABLE roadmap. getRoadmapPhaseWithFallback gated on fs.existsSync(), which
  returns false on EACCES/EIO too — so an unreadable ROADMAP.md read as "absent",
  no exception reached isRealReadFailure, and the blocking gate certified empty
  scope. Fixed at the source: read the roadmap directly and honor the function's
  OWN documented contract — null only on ENOENT (genuinely absent), otherwise
  throw. Both existing callers already wrap it in try/catch expecting that throw,
  and readPhaseScope now fail-closes (blocks) via its roadmap catch. Verified by
  a new e2e test (unreadable roadmap fallback → block).

- Nit: the detectApiIntegration JSDoc still described the removed cross-clause
  participial binding and "every external hostname counts" — corrected to the
  actual same-clause-only behavior and the names-a-vocab-word URL rule.

Verified: full unit suite green; tsc + eslint + lint:regression-names clean.
Built .cjs committed (roadmap.cjs is gitignored/rebuilt, per repo convention).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* chore(#2365): backfill changeset PR number (#2397)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* chore(#2365): sync generated capability-registry + recapture install goldens

CI surfaced two generated-artifact staleness issues (all failing test shards +
lint-tests traced to these, not to a logic defect):

- gsd-core/bin/lib/capability-registry.cjs was stale: the initial fix edited the
  ai-integration `api-coverage-plan-pre.md` fragment (added the "No external API
  integration" declaration section) but did not regenerate the registry, which
  embeds an inline copy of that fragment. Regenerated via
  `gen-capability-registry.cjs --write` — the diff is exactly the fragment text
  sync. Fixes `lint:generated-sync` and the "committed registry is in sync" +
  "registry integration" tests.

- The 18 golden-install-parity fixtures were stale by exactly one hash line each
  — `gsd-core/references/api-coverage.md`, which this PR edits and which is a
  hashed installed artifact. Recaptured with `UPDATE_GOLDEN=1`; the diff is that
  single hash per runtime and nothing else. Fixes the `golden parity — *` tests.

No source or behavior change — generated artifacts only.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* test(#2365): flip representative-corpus manifest to assert the fixed behavior

The #2371 representative corpus (merged into next after this branch was cut) is a
known-bug tripwire: it asserts each fixture's currentBuggyOutput so the test
fails loudly the moment #2365 is fixed, at which point — per its own contract in
representative-corpus.test.cjs — the fixer removes currentBuggyOutput so the
assertion checks expectedDetected instead.

This is that moment. Removed currentBuggyOutput from the three detector fixtures
(nextjs-route-path, unrelated-verb-noun, threat-model-prose); the corpus now
asserts detected:false, which the fail-closed same-clause detector satisfies.
Notes updated to describe the fix rather than the bug. The #2366 matrix corpus
is left untouched — that tripwire belongs to its own PR (#2374).

Corpus test: 7/7 pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* test(#2365): skip chmod-000 fail-closed e2e tests on Windows

The three fail-closed gate tests induce an unreadable plan / directory / roadmap
with chmod 000, but Windows does not enforce POSIX mode bits — readFileSync
still succeeds, so the gate never reaches the read-error path and the assertion
fails on the windows-latest CI leg. The fail-closed LOGIC is platform-
independent (readError → block) and is fully exercised on the macOS/Linux legs;
only the method of inducing EACCES is POSIX-specific. Guard the three tests to
skip on win32 as well as root, mirroring golden-install-parity's win32 skip.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* test(#2365): address trek-e review — glossary, clock-seam, IO injection, bounds

Review response to PR #2397 (trek-e, CHANGES_REQUESTED). Fix logic unchanged;
this closes the test/process-hygiene findings.

Major:
- CONTEXT.md "Markdown Sectionizer" glossary now lists the two exports this fix
  relies on, `stripInlineCode` and `scanInlineCodeSpans` (glossary is a PR gate).
- Replaced the banned wall-clock assertion in the "hostile repeated-term line"
  test (Clock Seams rule — no elapsed-time asserts) with a deterministic
  signal-count assertion, which also directly verifies the term-dedup that keeps
  pairing linear (one signal for a 10k-pair line, not thousands).
- Rewrote the three fail-closed read-failure tests: instead of chmod 0o000
  (a no-op under root / on Windows, the pattern the repo's IO-failure convention
  avoids) they now exercise the newly-exported `readPhaseScope` in-process and
  inject the failure by monkeypatching fs.readFileSync/readdirSync to throw,
  restoring in finally. Deterministic and platform-independent (no skip needed),
  and they add the ENOENT-is-absence case that the chmod tests couldn't express.

Minor:
- Added limit / limit+1 boundary tests for SERVICE_SURFACE_API_RE's {1,40}
  service-name bound, QUALIFIER_LOOKBACK's 24-char window, and REASON_MAX_LEN
  (200) on the declaration reason.
- Added a fast-check property that fuzzes the tokenizer / clause splitter /
  masking (scanLineTokens, splitClauses, collectTermMatches) with adversarial
  tokens (slashes, backticks, URLs, clause punctuation) and asserts the detector
  is total (never throws), shape-stable, holds detected <=> signals, and is
  deterministic.

readPhaseScope is exported for the in-process tests. Verified: 125 detector +
19 gate tests pass; tsc + eslint + generated-sync (glossary/registry) +
lint-regression-test-names + lint-test-file-count clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 14:59:25 -04:00

486 lines
29 KiB
JSON

{
".gsd-profile": "0e716a5fef4e6dc1",
".gsd/defaults.json": "560664b045e645cb",
"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": "d49c91fdab4efc70",
"agents/gsd-debug-session-manager.md": "c723ce1b8691296f",
"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": "e3d78836e115b18c",
"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": "ba51999876d40cf2",
"agents/gsd-planner.md": "c788d7fb84cf5433",
"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": "06323113ec60df3e",
"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": "d9bdd3726e9c3dff",
"commands/gsd-plan-review-convergence.md": "04d89318e0e23a1b",
"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": "31f45cfd36e5dfdb",
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
"gsd-core/bin/shared/config-defaults.manifest.json": "517e6a7c1e9f4f16",
"gsd-core/bin/shared/config-schema.manifest.json": "0109a5a9866a24e0",
"gsd-core/bin/shared/model-catalog.json": "b55176ca044728d3",
"gsd-core/bin/shared/runtime-aliases.manifest.json": "2df2c5ac1957911a",
"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": "304dcdab82a27623",
"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-requirement-revert.md": "48ade76866c57ce2",
"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": "f32bb05102839767",
"gsd-core/references/model-profiles.md": "5452b2e19e19f77e",
"gsd-core/references/mvp-concepts.md": "3464783eaaef5c10",
"gsd-core/references/phase-argument-parsing.md": "e562947d1bf5c5a4",
"gsd-core/references/planner-antipatterns.md": "7ed54ec1e2cc54ac",
"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-reviews.md": "da39eace09a10743",
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
"gsd-core/references/planning-config.md": "a3f1b4aca291db59",
"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/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": "7e19462313fa028f",
"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": "ab004404d028cc0d",
"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": "7d09b5e709e2e67c",
"gsd-core/templates/summary-standard.md": "e8d9cf4a8377cdff",
"gsd-core/templates/summary.md": "23c40f6503b3ea98",
"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": "37f031c4b3236a32",
"gsd-core/workflows/add-todo.md": "1ee0525664fb062f",
"gsd-core/workflows/ai-integration-phase.md": "a349e94b18839873",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "d511f4094ce351aa",
"gsd-core/workflows/audit-milestone.md": "9f8ec364e58d5710",
"gsd-core/workflows/audit-uat.md": "e11db0d74c2a7405",
"gsd-core/workflows/autonomous.md": "4b20eda9a0b587ce",
"gsd-core/workflows/check-todos.md": "1a67337d1630848f",
"gsd-core/workflows/cleanup.md": "db47963f103c2748",
"gsd-core/workflows/code-review-fix.md": "c57af378033b1b58",
"gsd-core/workflows/code-review.md": "9860df7228426ae5",
"gsd-core/workflows/complete-milestone.md": "1400a4856f592f3e",
"gsd-core/workflows/debug.md": "fb9e5ecb5027b98e",
"gsd-core/workflows/diagnose-issues.md": "cd582747131726e3",
"gsd-core/workflows/discovery-phase.md": "7dcf150998559c11",
"gsd-core/workflows/discuss-phase-assumptions.md": "c25c6a6c633d71b6",
"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": "6cd929e989fe2b0f",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "cd5d01c9ef84ab73",
"gsd-core/workflows/do.md": "9da6a73980ef2a71",
"gsd-core/workflows/docs-update.md": "e86d7d7e2e3dac6d",
"gsd-core/workflows/edit-phase.md": "8323bfe10faa0c0a",
"gsd-core/workflows/eval-review.md": "a86279dd98dd5c03",
"gsd-core/workflows/execute-phase.md": "a09f05b2295ae2d2",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "facb0e816d87a0c7",
"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": "13e9664263d3844d",
"gsd-core/workflows/explore.md": "b9eea1bac358c9ce",
"gsd-core/workflows/extract-learnings.md": "d8177b0c13b7e5ee",
"gsd-core/workflows/fast.md": "77b49793e26b3323",
"gsd-core/workflows/forensics.md": "a65f817d4a515291",
"gsd-core/workflows/graduation.md": "53a4a6fa3b4e6613",
"gsd-core/workflows/health.md": "e4d770484b5e7496",
"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": "9ae8b1e8908c7ead",
"gsd-core/workflows/help/modes/topic.md": "cee80e0adfa3b06c",
"gsd-core/workflows/import.md": "5d5fb8e51f6a243a",
"gsd-core/workflows/inbox.md": "797c287852eb8957",
"gsd-core/workflows/ingest-docs.md": "c6759dbf17e79293",
"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": "7efd6874ff9768d6",
"gsd-core/workflows/map-codebase.md": "3118100462eee628",
"gsd-core/workflows/milestone-summary.md": "6c76386b500cc5d3",
"gsd-core/workflows/mvp-phase.md": "50b189c5f4503369",
"gsd-core/workflows/new-milestone.md": "68143de8032d8a41",
"gsd-core/workflows/new-project.md": "a2b559fba00904eb",
"gsd-core/workflows/new-workspace.md": "9e76e96253d54a57",
"gsd-core/workflows/next.md": "174356dcfd7c6c32",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "1c1e466c764e3deb",
"gsd-core/workflows/onboard.md": "20c28136423d40ac",
"gsd-core/workflows/pause-work.md": "5716362557f44ce4",
"gsd-core/workflows/plan-milestone-gaps.md": "1b43d12812f7bc1e",
"gsd-core/workflows/plan-phase.md": "abe2eb62620f372f",
"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": "86e18a63ab7a0a6f",
"gsd-core/workflows/plant-seed.md": "7bccd151ce7b69f2",
"gsd-core/workflows/pr-branch.md": "c67d90c65da47168",
"gsd-core/workflows/profile-user.md": "8c943983241260b5",
"gsd-core/workflows/progress.md": "0f03aaf96f5abf7e",
"gsd-core/workflows/quick.md": "3b37350964cfe391",
"gsd-core/workflows/reapply-patches.md": "ba9406b60f2c4041",
"gsd-core/workflows/remove-phase.md": "ada8a0546c686483",
"gsd-core/workflows/remove-workspace.md": "433affcd1a200826",
"gsd-core/workflows/resume-project.md": "7f8dc986f0f35d96",
"gsd-core/workflows/review.md": "ea18faf9ff633667",
"gsd-core/workflows/scan.md": "47371c2073d6c0be",
"gsd-core/workflows/secure-phase.md": "3063b0b6f7b56d46",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "bf8ea69c8f7ae019",
"gsd-core/workflows/settings-integrations.md": "166ca51b1f33c2a3",
"gsd-core/workflows/settings.md": "0623c673eaf04799",
"gsd-core/workflows/ship.md": "6e3ac35dc933a39a",
"gsd-core/workflows/sketch-wrap-up.md": "5be73b7bdf96b539",
"gsd-core/workflows/sketch.md": "373bc0d83368a411",
"gsd-core/workflows/smart-entry.md": "c8fc316358cdcd7b",
"gsd-core/workflows/spec-phase.md": "239b6e6cbddaf8c2",
"gsd-core/workflows/spike-wrap-up.md": "4a3bf1058691e55d",
"gsd-core/workflows/spike.md": "f741bead24d5669a",
"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": "d1ae54a7ba413d69",
"gsd-core/workflows/ui-review.md": "4bc0fd55fc037998",
"gsd-core/workflows/ultraplan-phase.md": "466e01d65c350ef6",
"gsd-core/workflows/undo.md": "18dec684fb1076f9",
"gsd-core/workflows/update.md": "23e294ba707c3580",
"gsd-core/workflows/validate-phase.md": "d03a94b7b807be12",
"gsd-core/workflows/verify-phase.md": "b8cca6ef3be502b9",
"gsd-core/workflows/verify-work.md": "e7e7e900c4874490",
"hooks/gsd-cursor-post-tool.js": "019d503aee8b4a3f",
"hooks/gsd-cursor-pre-tool.js": "fe274720781fcbb5",
"hooks/gsd-cursor-session-start.js": "c6e04ed597ea7020",
"hooks/gsd-cursor-stop.js": "902a005c49e7660b",
"hooks/gsd-cursor-subagent-start.js": "693d38d298d2252c",
"hooks/gsd-cursor-subagent-stop.js": "8da03aad6bb05d3f",
"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": "f9a949cbcab56445",
"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": "b5ad8d540b6320be",
"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": "c5e1a4ab2ede399a",
"skills/gsd-plan-review-convergence/SKILL.md": "c2793cacf3f40d70",
"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"
}