* test(#1951): add failing-first tests for reversibility tagging Red phase for issue #1951 (reversibility tagging: classify decisions by undo cost, gate one-way doors behind a checkpoint:decision). Tests assert, per the issue's acceptance criteria: - discuss-phase CONTEXT.md template records a **Reversibility:** field with a rationale on captured decisions, and states it is optional - gsd-planner @-references planner-reversibility.md and stays under the 49152-char agent cap (LARGE_CAP, tests/agent-size-budget.test.cjs) - a one-way rating inserts a checkpoint:decision before the dependent task; reversible inserts none; costly is flagged but never blocks - the taxonomy defaults to reversible when unsure (checkpoint-fatigue guard) and inserting a checkpoint implies autonomous: false - docs/reference/plan-md.md documents <reversibility> as optional with all three ratings - --no-reversibility-gates parses to REVERSIBILITY_GATES=false, is injected into the planner prompt, and is advertised in the command argument-hint and help full mode (argument-hint parity) - the override suppresses the gate but still persists the rating - cmdVerifyPlanStructure accepts every rating and the absent case (additive-validator guarantee, behavioral via runGsdTools) - parity: thinking-models-planning.md #4 adopts the canonical three-level taxonomy and the binary REVERSIBLE/IRREVERSIBLE vocabulary is gone - no content loss from the planner extraction made to fit under the cap Prose-contract assertions are Red until the implementation lands. The behavioral validator assertions pass immediately — regression guards proving the validator already accepts unknown optional tags. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(#1951): reversibility tagging — gate one-way-door decisions Classify planning decisions by what undoing them would cost, and give a one-way door a human beat before the agent walks through it (issue #1951, The Pragmatic Programmer Topic 15 'Reversibility'; Bezos's one-way/two-way door framing). Acceptance criteria met: - discuss-phase records an optional reversibility rating with a rationale on <decisions> entries in the phase CONTEXT.md template. Unrated decisions are treated as reversible, so existing phases are unaffected. - a one-way rating makes gsd-planner insert a checkpoint:decision before the task that implements the decision, reusing the existing checkpoint mechanism -- no new checkpoint machinery. - reversible ratings trigger no checkpoint; costly ratings are flagged in the plan but never block. - the rating persists on the task as the optional <reversibility rating=> element. cmdVerifyPlanStructure accepts every rating and the absent case; the structural validator does not reject unknown optional tags. - --no-reversibility-gates (REVERSIBILITY_GATES=false) suppresses checkpoint insertion for intentionally-unattended runs while still recording ratings -- the override changes what stops the run, not what the plan remembers. Single taxonomy, not two: references/thinking-models-planning.md #4 already shipped a binary REVERSIBLE/IRREVERSIBLE classification and is loaded by both gsd-planner and gsd-plan-checker. It is rewritten onto the canonical three-level vocabulary and now points at planner-reversibility.md as the taxonomy owner, with a parity test that fails if the surfaces diverge (DEFECT.GENERATIVE-FIX-DIVERGENCE). agents/gsd-planner.md sat 47 chars under the 49152 LARGE_CAP, so the checkpoint DO/DON'T guidance was relocated verbatim into planner-antipatterns.md -- already @-referenced from the same section for the same topic, so the planner still loads it and nothing was dropped. A test guards the relocation against content loss. Files: gsd-core/references/planner-reversibility.md (NEW, canonical taxonomy + emission rules + anti-patterns), gsd-planner.md, plan-phase workflow/command/help (flag wiring + parity), plan-md.md schema, discuss-phase context template, CONTEXT.md glossary, INVENTORY + manifest, size baselines, install goldens, plugin skills regen, changeset. Closes #1951 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(#1951): address orthogonal review findings Two isolated reviewers (correctness + security), neither of which authored the change. Every finding fixed: Security — the rationale is untrusted input (ADR-1577). It originates in conversation and flows CONTEXT.md -> planner -> PLAN.md -> executor, each hop an LLM reading the previous hop's output, with no validation on the path. planner-reversibility.md and the discuss-phase template now state it is data and never instructions, and name the </reversibility> early-termination hazard explicitly -- a rationale that closes its own element injects sibling structure the executor reads as real tasks. Four tests guard it. Correctness 1 — nothing machine-enforced the feature's own promise: a task rated one-way with no preceding checkpoint:decision validated as fully clean, so a planner error silently reopened the gap this feature exists to close. cmdVerifyPlanStructure now warns on an ungated one-way rating. A warning, not an error: <reversibility> stays additive and the plan stays valid. Four tests cover ungated (warns), gated (silent), still-valid, and reversible/costly never flagged. Correctness 2 — pass-always test. The --no-reversibility-gates parse test substring-matched the whole workflow file, and plan-phase.md prose mentions both tokens in one sentence, so it passed with the bash conditional deleted: it was testing the documentation, not the parser. Now scoped to the fenced bash blocks and matched as one physical line, with a negative control confirming prose alone cannot satisfy it. Correctness 3 — costly had no itemized emission rule, only one-way did, so two agents could diverge on whether to tag costly at all. Correctness 4 — template convention break: the example ratings were bare while every sibling field uses [...] to signal substitution, inviting an LLM to copy one-way/costly forward as boilerplate. Now bracketed. Correctness 5 — latent false-green: .includes('reversible') also matches inside irreversible/irreversibility, which appear in anti-pattern prose, so a surface that dropped the real taxonomy entry would still pass. Now word-boundary matched. ADR-857 phase-6 ceiling — the first gsd-test run caught plan-phase.md 1216 bytes over its frozen 94519 ceiling (it had 49 bytes of headroom on next). The ceiling may only rise for privileged host machinery, and reversibility gating is optional-feature logic, so the wiring was slimmed to its minimum and the explanatory prose moved to the reference files the planner already loads. plan-phase.md is now 94400 bytes -- 119 under the ceiling and 70 bytes SMALLER than on next, so the host loop shrank while gaining the feature, which is what phase 6 ratchets toward. The tracer contract (tests/tracer-bullet.test.cjs) is unchanged. Lint — fixed an unnecessary non-null assertion in verify.cts and a CRLF-fragile bare \n regex in the new test (DEFECT.WINDOWS-CRLF-TEST- PORTABILITY, the #1658/#1668/#2206/#2449/#2450 class). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * test(#1951): checkpoint fixture must carry the common task elements The gated-one-way fixture built a checkpoint:decision task from the abbreviated skeleton in gsd-planner.md, which shows only the checkpoint-specific elements (<decision>/<context>/<resume-signal>). cmdVerifyPlanStructure requires <name> and <action> on EVERY task regardless of type, so the fixture failed validation for reasons that had nothing to do with reversibility: errors: ["Task missing <name> element", "Task 'unnamed' missing <action>"] Caught by gsd-test on 14d14a39 (2 failures, both this fixture). The canonical shape is in tests/verify.test.cjs:266 — a checkpoint task carries <name>/<files>/<action>/<verify> like any other. Fixture corrected to match. Verified behaviorally against the real gsd-tools CLI across all four cases: gated one-way (valid, silent), ungated one-way (valid, warns), costly (valid, silent), absent (valid, silent). Not a product defect: the validator's every-task contract is intentional and pre-existing, and docs/reference/plan-md.md scopes its required-element list to type=auto/tracer only because those are the elements a planner must author, not because checkpoints are exempt from <name>. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore(#1951): backfill changeset pr number to 2471 * fix(#1951): CodeQL incomplete-sanitization + prompt-injection scan collision Both CI failures were real defects in code this PR added, not false positives. CodeQL js/incomplete-sanitization (high), reversibility-tagging.test.cjs:46 — the namesRating helper built its regex with `rating.replace(/[-]/g, '\\-')`, which escapes the hyphen but not backslash, so the escape was incomplete. It was also unnecessary: `-` carries no special meaning outside a character class. Replaced with a complete metacharacter escape (backslash included). Word-boundary behavior verified unchanged across all three ratings — notably that "irreversible" prose still does not satisfy a "reversible" match, which is the false-green this helper exists to prevent. Prompt injection scan — the checkpoint fixture used the human-verification child element inside <verify>. That tag name is a fake-instruction-boundary pattern in scripts/prompt-injection-scan.sh, and the scan runs over changed files, so copying the shape from tests/verify.test.cjs (unflagged only because it is not in this diff) tripped the gate. Switched to the documented plain-prose <verify> form. The first attempt at that fix failed the same gate a second time: the comment explaining the collision quoted the offending tag literally. The comment now names it in prose instead — the scanner does not care whether a match is code or commentary, which is the whole point of the DEFECT.PROMPT-INJECTION-SCAN-COLLISION note in CLAUDE.md. Verified locally before push: scan reports 0 findings across 57 changed files, eslint clean, and both fixtures still validate as designed (gated one-way silent, ungated one-way warns, neither errors). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * test(#1951): record measured cost and halve gsd-tools spawns The Windows shard 1/3 job timeout was traced to the sharding layer, not to this PR's assertions — see #2472. Two contributing factors were this file's own, and are fixed here. 1. tests/test-timings.json had no entry for reversibility-tagging.test.cjs, so scripts/run-tests.cjs weighted it at the table's median fallback (~315ms) for LPT chunk packing. It actually measures 5595ms — an 18x under-weight. Recorded the measured value from the green gsd-test run (max across the node22/node24 lanes, per gen-test-timings.cjs's convention). Only this one entry: a full regen churns 634 entries of run-to-run drift, and the table is explicitly advisory and un-gated, so a 637-line diff does not belong in a feature PR. 2. Each verifyPlan() spawns gsd-tools, which dominates this file's cost. Spawns cut from 9 to 6 with no coverage lost: - the ungated-one-way warning and its stays-valid assertion now share one plan instead of building the same plan twice; - the reversible/costly never-flagged-as-ungated test was strictly subsumed by the additive suite, which already runs those two ratings ungated and asserts no /reversibilit/ warning at all — and the gate warning's text contains both "reversibility" and "one-way", so the broader assertion catches it. It only re-spawned gsd-tools twice to prove the same thing. Both are symptom fixes. The shard imbalance itself (19/11/10 minutes against a 20-minute cap, from a cost-blind round-robin partition that also reshuffles downstream files whenever one is inserted) is tracked in #2472. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * test(#1951): checkpoint fixture adopts the #2444 type-branched contract Surfaced by rebasing onto next, which gained #2444 (branch plan-structure validation on task type=checkpoint:*) while this PR was in review. cmdVerifyPlanStructure no longer applies one required-element set to every task. A checkpoint:decision now requires <name> + <resume-signal> + <decision> + <options>, and is exempt from the <action>/<verify>/<done>/ <files> set that auto and tracer tasks carry. The gated-one-way fixture predated that split and failed on the new requirement: errors: ["Task 'Task 0: Confirm the on-disk format' missing <options>"] Fixture rewritten to mirror the checkpoint:decision contract exactly — real <options> with two <option> children — rather than padding it with fields checkpoints no longer need. That also drops the plain-prose <verify> the earlier revision carried purely to dodge the prompt-injection scan; a checkpoint task has no <verify> requirement at all, so the workaround is moot. Verified against the real gsd-tools CLI across all four cases: gated one-way (valid, silent), ungated one-way (valid, warns), costly (valid, silent), absent (valid, silent). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
343 lines
22 KiB
JSON
343 lines
22 KiB
JSON
{
|
|
".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": "cfa2bbfaf264e1fd",
|
|
"agents/gsd-debug-session-manager.md": "86d75b269a6c40e7",
|
|
"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": "067a4f846f4e020c",
|
|
"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": "33fbf70b7b24eb1e",
|
|
"agents/gsd-planner.md": "8b59834f86f84d31",
|
|
"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": "abce82dc226344f2",
|
|
"gsd-core/bin/gsd_run": "62d9b647ede212e6",
|
|
"gsd-core/bin/shared/config-defaults.manifest.json": "517e6a7c1e9f4f16",
|
|
"gsd-core/bin/shared/config-schema.manifest.json": "2f60b9eaa6cf6bc1",
|
|
"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": "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": "ff843cd6139c8564",
|
|
"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": "f32bb05102839767",
|
|
"gsd-core/references/model-profiles.md": "09aa53e3f1764a41",
|
|
"gsd-core/references/mvp-concepts.md": "3464783eaaef5c10",
|
|
"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": "1fc70920778d7c8e",
|
|
"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/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": "f6018dddf15bc1cb",
|
|
"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": "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": "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": "ead319c879215ec7",
|
|
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
|
|
"gsd-core/workflows/audit-fix.md": "f12182fa57f92cb5",
|
|
"gsd-core/workflows/audit-milestone.md": "868db5a8f5d55040",
|
|
"gsd-core/workflows/audit-uat.md": "d496e39402e160de",
|
|
"gsd-core/workflows/autonomous.md": "fe7bb7c978f305a2",
|
|
"gsd-core/workflows/check-todos.md": "32364179c84869a3",
|
|
"gsd-core/workflows/cleanup.md": "da44b987853e1a74",
|
|
"gsd-core/workflows/code-review-fix.md": "b99b1f20bb27c291",
|
|
"gsd-core/workflows/code-review.md": "a89512ce6c30693c",
|
|
"gsd-core/workflows/complete-milestone.md": "3324ec6da5856f21",
|
|
"gsd-core/workflows/debug.md": "8faee21b508c4577",
|
|
"gsd-core/workflows/diagnose-issues.md": "dbe0fdc2fc23097c",
|
|
"gsd-core/workflows/discovery-phase.md": "313c3a5213449309",
|
|
"gsd-core/workflows/discuss-phase-assumptions.md": "f28f53d11104c818",
|
|
"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": "a7b78ce2f5404160",
|
|
"gsd-core/workflows/edit-phase.md": "c0ae7d0063f3e789",
|
|
"gsd-core/workflows/eval-review.md": "713de00ea5326988",
|
|
"gsd-core/workflows/execute-phase.md": "a52dc6640b7ede7b",
|
|
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "47ae5482f8e64100",
|
|
"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": "885ed41edf53e94b",
|
|
"gsd-core/workflows/explore.md": "04e461ff8159a24e",
|
|
"gsd-core/workflows/extract-learnings.md": "af793bdf4ffd1c8a",
|
|
"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": "fb22cd27f4478ee2",
|
|
"gsd-core/workflows/help/modes/topic.md": "cee80e0adfa3b06c",
|
|
"gsd-core/workflows/import.md": "3df83dccd78ae0a6",
|
|
"gsd-core/workflows/inbox.md": "556b5a10c580ebad",
|
|
"gsd-core/workflows/ingest-docs.md": "d73700225c86fdf0",
|
|
"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": "ba6f267cb754ed31",
|
|
"gsd-core/workflows/milestone-summary.md": "1fdbae19ad06a0a3",
|
|
"gsd-core/workflows/mvp-phase.md": "0b22d99b2f3aee0b",
|
|
"gsd-core/workflows/new-milestone.md": "5c18f0a011875574",
|
|
"gsd-core/workflows/new-project.md": "e8aa253804ec15dc",
|
|
"gsd-core/workflows/new-workspace.md": "b503e947ab08ab96",
|
|
"gsd-core/workflows/next.md": "d48cea140a5153cb",
|
|
"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": "3bd23960110db934",
|
|
"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": "27dcce3dbca22e3d",
|
|
"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": "8c485cc76a42d8fc",
|
|
"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": "805bea46bed56bd8",
|
|
"gsd-core/workflows/scan.md": "389025e963d0e502",
|
|
"gsd-core/workflows/secure-phase.md": "666828983e5dd51f",
|
|
"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": "6883c9a9cc4a1543",
|
|
"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": "e6494e1f4a886fa9",
|
|
"gsd-core/workflows/ui-review.md": "5414d822f6c00826",
|
|
"gsd-core/workflows/ultraplan-phase.md": "53b77a8edf60acd0",
|
|
"gsd-core/workflows/undo.md": "733189fb34cc026b",
|
|
"gsd-core/workflows/update.md": "0c02d18be2ccd04d",
|
|
"gsd-core/workflows/validate-phase.md": "c2613db454f975b6",
|
|
"gsd-core/workflows/verify-phase.md": "382490481d794ed5",
|
|
"gsd-core/workflows/verify-work.md": "6258bc3ec21906c4",
|
|
"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": "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"
|
|
}
|