* fix(#2376): emit absolute subagent-facing init/state paths Make init.* and state.* path fields absolute rather than cwd-relative so subagent prompts resolve correctly regardless of working directory. Adds intel_dir/conflicts_path/requirements_path/roadmap_path/state_path to cmdInitIngestDocs, an absolute debug_dir to cmdStateLoad, and replaces bare .planning/... literals in 12 workflow Agent() prompt blocks with the absolute init-JSON path fields. Includes decoy-cwd regression tests and realpath'd tmpdir fixtures for macOS. Squashed rebase of the #2376 commit series onto a fresh origin/next (previous merge ee25543a1 was against a now-stale next). * chore(#2376): add changeset * chore(#2376): regenerate golden fixtures + workflow size baseline Regenerated after rebasing the absolute-path fix onto current next (picks up #2351's run-with-timeout content in execute-phase.md too). * fix(#2376): trim execute-phase.md redundancy to stay under the size margin * chore(#2376): regenerate golden/size baseline after rebase onto next
This commit is contained in:
@@ -220,4 +220,19 @@ describe('debug skill dispatch and sub-orchestrator (#2148, #2151)', () => {
|
||||
`parity drift: DEBUG.md claims ${claimedCount}-field but gsd-debugger.md enumerates ${keys.size} keys (${[...keys].join(', ')}). Update BOTH surfaces together.`
|
||||
);
|
||||
});
|
||||
|
||||
// #2376: debug_file_path handed to the spawned gsd-debug-session-manager
|
||||
// must resolve regardless of that subagent's own cwd, which may differ
|
||||
// from the orchestrator's — debug.md must reference the absolute
|
||||
// {debug_dir} field from `state load`, not a bare .planning/debug/...
|
||||
// literal, in both the `continue` and new-session Agent() spawns.
|
||||
test('debug.md session_params reference {debug_dir}/{slug}.md, not bare .planning/debug/... literals (#2376)', () => {
|
||||
const content = fs.readFileSync(path.join(process.cwd(), 'gsd-core/workflows/debug.md'), 'utf8');
|
||||
assert.ok(content.includes('debug_file_path: {debug_dir}/{SLUG}.md'),
|
||||
'debug.md continue-subcommand spawn must reference {debug_dir}/{SLUG}.md, not a bare .planning/debug/{SLUG}.md literal');
|
||||
assert.ok(content.includes('debug_file_path: {debug_dir}/{slug}.md'),
|
||||
'debug.md new-session spawn must reference {debug_dir}/{slug}.md, not a bare .planning/debug/{slug}.md literal');
|
||||
assert.ok(!content.includes('debug_file_path: .planning/debug/'),
|
||||
'debug.md session_params must not hardcode .planning/debug/... as debug_file_path (#2376)');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -221,8 +221,8 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "60640e633b0a124b",
|
||||
"gsd-core/workflows/code-review.md": "1a72ce22df16b3fa",
|
||||
"gsd-core/workflows/complete-milestone.md": "aaf272074acec69d",
|
||||
"gsd-core/workflows/debug.md": "0b802b267d0ca2d1",
|
||||
"gsd-core/workflows/diagnose-issues.md": "c8c41993c277363c",
|
||||
"gsd-core/workflows/debug.md": "220b0ddc8bc4fb59",
|
||||
"gsd-core/workflows/diagnose-issues.md": "27c2012f67f9cf79",
|
||||
"gsd-core/workflows/discovery-phase.md": "3de990caffdde4f8",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "8581fd77def7ce84",
|
||||
"gsd-core/workflows/discuss-phase-power.md": "5c0d1ca6abda0383",
|
||||
@@ -243,7 +243,7 @@
|
||||
"gsd-core/workflows/docs-update.md": "8e986e26d0e6e1a0",
|
||||
"gsd-core/workflows/edit-phase.md": "fc932e82ba1f585a",
|
||||
"gsd-core/workflows/eval-review.md": "eb4040eaa5b8497f",
|
||||
"gsd-core/workflows/execute-phase.md": "8c06d5d57f2adaa7",
|
||||
"gsd-core/workflows/execute-phase.md": "21c3aa8c771fcdc7",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "55d0706e80a2554a",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "13aa54f8279960ae",
|
||||
@@ -261,19 +261,19 @@
|
||||
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
|
||||
"gsd-core/workflows/help/modes/full.md": "80d03a09b561766b",
|
||||
"gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69",
|
||||
"gsd-core/workflows/import.md": "41c62ae199209a68",
|
||||
"gsd-core/workflows/import.md": "3885f4fd9f20597d",
|
||||
"gsd-core/workflows/inbox.md": "a448220c548f27bc",
|
||||
"gsd-core/workflows/ingest-docs.md": "e2707f28f67d128b",
|
||||
"gsd-core/workflows/ingest-docs.md": "c7efcceb0eb11822",
|
||||
"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": "77133c13a8d303d5",
|
||||
"gsd-core/workflows/map-codebase.md": "c81444eb0b2e038b",
|
||||
"gsd-core/workflows/map-codebase.md": "bd7fe5c0ff0768e0",
|
||||
"gsd-core/workflows/milestone-summary.md": "c4620853fe489126",
|
||||
"gsd-core/workflows/mvp-phase.md": "5f0e355ff4583d67",
|
||||
"gsd-core/workflows/new-milestone.md": "7505d35307065c10",
|
||||
"gsd-core/workflows/new-project.md": "f336b2da5c3963f0",
|
||||
"gsd-core/workflows/new-milestone.md": "74d4c6d4549a32fd",
|
||||
"gsd-core/workflows/new-project.md": "0c170425e247ec03",
|
||||
"gsd-core/workflows/new-workspace.md": "21bfae58b9cc2990",
|
||||
"gsd-core/workflows/next.md": "8beefb4335dd7c41",
|
||||
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
|
||||
@@ -281,7 +281,7 @@
|
||||
"gsd-core/workflows/onboard.md": "69d871aa53a1a859",
|
||||
"gsd-core/workflows/pause-work.md": "564de32981a24337",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "dd6a4b3a8b05ab6e",
|
||||
"gsd-core/workflows/plan-phase.md": "5f7f231a249dc23f",
|
||||
"gsd-core/workflows/plan-phase.md": "27c60469f88532f2",
|
||||
"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",
|
||||
@@ -290,13 +290,13 @@
|
||||
"gsd-core/workflows/pr-branch.md": "dc5598ae8accdecd",
|
||||
"gsd-core/workflows/profile-user.md": "355af92ac285567f",
|
||||
"gsd-core/workflows/progress.md": "0e41db02a270a2b2",
|
||||
"gsd-core/workflows/quick.md": "424c0eb61769e747",
|
||||
"gsd-core/workflows/quick.md": "29739776f5c91338",
|
||||
"gsd-core/workflows/reapply-patches.md": "4dcd6117d0a507ca",
|
||||
"gsd-core/workflows/remove-phase.md": "23b9eb0858a2535e",
|
||||
"gsd-core/workflows/remove-workspace.md": "d0bd7e0601138798",
|
||||
"gsd-core/workflows/resume-project.md": "98e2cf8908e73a52",
|
||||
"gsd-core/workflows/review.md": "6f6575621367b9ff",
|
||||
"gsd-core/workflows/scan.md": "a7fecd67e5cd655f",
|
||||
"gsd-core/workflows/scan.md": "1feb5f040e426562",
|
||||
"gsd-core/workflows/secure-phase.md": "52ddc46233e8fa66",
|
||||
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
|
||||
"gsd-core/workflows/settings-advanced.md": "6d25100a9de15b31",
|
||||
@@ -320,7 +320,7 @@
|
||||
"gsd-core/workflows/update.md": "2c58df5e21c41c31",
|
||||
"gsd-core/workflows/validate-phase.md": "ae3f0180a2316fcd",
|
||||
"gsd-core/workflows/verify-phase.md": "913acaef091797d7",
|
||||
"gsd-core/workflows/verify-work.md": "59276d94999ee022",
|
||||
"gsd-core/workflows/verify-work.md": "1d404aed6a3baf4b",
|
||||
"hooks/gsd-check-update-worker.js": "fa301e6366270d5f",
|
||||
"hooks/gsd-check-update.js": "4617a98bf529e4c3",
|
||||
"hooks/gsd-config-reload.js": "96546e0e8bb47904",
|
||||
|
||||
@@ -292,8 +292,8 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075",
|
||||
"gsd-core/workflows/code-review.md": "c877ad812b4a511e",
|
||||
"gsd-core/workflows/complete-milestone.md": "c1f91b77f4ace7f2",
|
||||
"gsd-core/workflows/debug.md": "98c8ed5af882ef8f",
|
||||
"gsd-core/workflows/diagnose-issues.md": "6cc3900891dfb927",
|
||||
"gsd-core/workflows/debug.md": "79c2f7dc12815e30",
|
||||
"gsd-core/workflows/diagnose-issues.md": "a4d015391e079b90",
|
||||
"gsd-core/workflows/discovery-phase.md": "3ba7cfb89fb1e761",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "f5b765d33eba4f88",
|
||||
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
|
||||
@@ -314,7 +314,7 @@
|
||||
"gsd-core/workflows/docs-update.md": "f35922d15b7061c9",
|
||||
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
|
||||
"gsd-core/workflows/eval-review.md": "f898936e2cfe4130",
|
||||
"gsd-core/workflows/execute-phase.md": "4b21d07643d1647a",
|
||||
"gsd-core/workflows/execute-phase.md": "09d5f9829424c68b",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "4e265392b3f2ba0e",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
|
||||
@@ -332,19 +332,19 @@
|
||||
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
|
||||
"gsd-core/workflows/help/modes/full.md": "110608f0352bb0a3",
|
||||
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
|
||||
"gsd-core/workflows/import.md": "3d3fa603ceb8bc9f",
|
||||
"gsd-core/workflows/import.md": "12c6cbcbdecb6392",
|
||||
"gsd-core/workflows/inbox.md": "437f981ef9ae7b26",
|
||||
"gsd-core/workflows/ingest-docs.md": "c859921c811ac11b",
|
||||
"gsd-core/workflows/ingest-docs.md": "f7c3fa659ca77bc5",
|
||||
"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": "3ba7a3e8213c4b23",
|
||||
"gsd-core/workflows/map-codebase.md": "83d750aade709983",
|
||||
"gsd-core/workflows/map-codebase.md": "8fb02d635a86d6b2",
|
||||
"gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043",
|
||||
"gsd-core/workflows/mvp-phase.md": "344dd300e0cc1e74",
|
||||
"gsd-core/workflows/new-milestone.md": "83bf5593e94c3377",
|
||||
"gsd-core/workflows/new-project.md": "5ffeef49fe73013e",
|
||||
"gsd-core/workflows/new-milestone.md": "6227eaddad367bc5",
|
||||
"gsd-core/workflows/new-project.md": "00016f35bf5cd2f2",
|
||||
"gsd-core/workflows/new-workspace.md": "017688423110ed66",
|
||||
"gsd-core/workflows/next.md": "13fb800f2472d970",
|
||||
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
|
||||
@@ -352,7 +352,7 @@
|
||||
"gsd-core/workflows/onboard.md": "6f9e6c0b484271a9",
|
||||
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
|
||||
"gsd-core/workflows/plan-phase.md": "9f1c7dfc3ccac616",
|
||||
"gsd-core/workflows/plan-phase.md": "dd23944278603a87",
|
||||
"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",
|
||||
@@ -361,13 +361,13 @@
|
||||
"gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b",
|
||||
"gsd-core/workflows/profile-user.md": "14263db831230142",
|
||||
"gsd-core/workflows/progress.md": "9457fb10437c9402",
|
||||
"gsd-core/workflows/quick.md": "25f0cc40bc22ed3e",
|
||||
"gsd-core/workflows/quick.md": "988fbe85a0251cf1",
|
||||
"gsd-core/workflows/reapply-patches.md": "39050f72601aec89",
|
||||
"gsd-core/workflows/remove-phase.md": "df9a45f0b1880999",
|
||||
"gsd-core/workflows/remove-workspace.md": "a7ca66db6b7c132c",
|
||||
"gsd-core/workflows/resume-project.md": "f28da1200e4545f4",
|
||||
"gsd-core/workflows/review.md": "f1fbefbd64bd890e",
|
||||
"gsd-core/workflows/scan.md": "003883d71c37da7d",
|
||||
"gsd-core/workflows/scan.md": "e6424af05656725a",
|
||||
"gsd-core/workflows/secure-phase.md": "22ab3bb5da494ea7",
|
||||
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
|
||||
"gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44",
|
||||
@@ -391,7 +391,7 @@
|
||||
"gsd-core/workflows/update.md": "fd160e13f8b7e83c",
|
||||
"gsd-core/workflows/validate-phase.md": "ce9890f21c6e5607",
|
||||
"gsd-core/workflows/verify-phase.md": "d26a2c3269340caf",
|
||||
"gsd-core/workflows/verify-work.md": "63b3f680d8f0a6f3",
|
||||
"gsd-core/workflows/verify-work.md": "86c6f0c77b5adc72",
|
||||
"hooks/gsd-check-update-worker.js": "cc1ef5f840f9dfc9",
|
||||
"hooks/gsd-check-update.js": "7b3a7983d5f1f5d3",
|
||||
"hooks/gsd-config-reload.js": "96546e0e8bb47904",
|
||||
|
||||
@@ -291,8 +291,8 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "78c716068ccdf820",
|
||||
"gsd-core/workflows/code-review.md": "7db21e884906595e",
|
||||
"gsd-core/workflows/complete-milestone.md": "9962377cddee50d7",
|
||||
"gsd-core/workflows/debug.md": "80c413b3a9877433",
|
||||
"gsd-core/workflows/diagnose-issues.md": "db6a599674efbc4d",
|
||||
"gsd-core/workflows/debug.md": "89cbdec677d92844",
|
||||
"gsd-core/workflows/diagnose-issues.md": "a631d913c36dc2b0",
|
||||
"gsd-core/workflows/discovery-phase.md": "a20dfb32adec51de",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "35a3b2d1285565d8",
|
||||
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
|
||||
@@ -313,7 +313,7 @@
|
||||
"gsd-core/workflows/docs-update.md": "cd753783ab95da00",
|
||||
"gsd-core/workflows/edit-phase.md": "dbbb6191f5a8b65e",
|
||||
"gsd-core/workflows/eval-review.md": "086a1f2b3c11462c",
|
||||
"gsd-core/workflows/execute-phase.md": "fcd7aaeb14e5880d",
|
||||
"gsd-core/workflows/execute-phase.md": "0086536412e218d3",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "6d38bfd540030da4",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "a7f9b9a45303382f",
|
||||
@@ -331,19 +331,19 @@
|
||||
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
|
||||
"gsd-core/workflows/help/modes/full.md": "2388596fd5bcbd07",
|
||||
"gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9",
|
||||
"gsd-core/workflows/import.md": "cc21f3da36403ed3",
|
||||
"gsd-core/workflows/import.md": "477b3d7676ce1a66",
|
||||
"gsd-core/workflows/inbox.md": "91aac6360e1a8672",
|
||||
"gsd-core/workflows/ingest-docs.md": "1d42ea1be30becc4",
|
||||
"gsd-core/workflows/ingest-docs.md": "9f8e42decf5adf82",
|
||||
"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": "36559ff897e55c09",
|
||||
"gsd-core/workflows/map-codebase.md": "b11ca99a885e93ef",
|
||||
"gsd-core/workflows/map-codebase.md": "0cad5825e637e7fc",
|
||||
"gsd-core/workflows/milestone-summary.md": "99636900c216c8d2",
|
||||
"gsd-core/workflows/mvp-phase.md": "254baac57e85dca7",
|
||||
"gsd-core/workflows/new-milestone.md": "33f43349346e86df",
|
||||
"gsd-core/workflows/new-project.md": "26907d3cf3630ed0",
|
||||
"gsd-core/workflows/new-milestone.md": "7c39849d67fc0256",
|
||||
"gsd-core/workflows/new-project.md": "287483eea4d1415c",
|
||||
"gsd-core/workflows/new-workspace.md": "26615bf710f0a324",
|
||||
"gsd-core/workflows/next.md": "1193222c5618d3db",
|
||||
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
|
||||
@@ -351,7 +351,7 @@
|
||||
"gsd-core/workflows/onboard.md": "b86d78eef6c77e5b",
|
||||
"gsd-core/workflows/pause-work.md": "da902807d2213204",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "7679fac068d1009d",
|
||||
"gsd-core/workflows/plan-phase.md": "06970687f439918b",
|
||||
"gsd-core/workflows/plan-phase.md": "ac61699f0eeccccf",
|
||||
"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",
|
||||
@@ -360,13 +360,13 @@
|
||||
"gsd-core/workflows/pr-branch.md": "513f6cff722eff2d",
|
||||
"gsd-core/workflows/profile-user.md": "3b34dcb337d50f4b",
|
||||
"gsd-core/workflows/progress.md": "f6739fc007de6f66",
|
||||
"gsd-core/workflows/quick.md": "f1b474b46327034f",
|
||||
"gsd-core/workflows/quick.md": "0f49d4553de5da88",
|
||||
"gsd-core/workflows/reapply-patches.md": "44a96b52b975e9bb",
|
||||
"gsd-core/workflows/remove-phase.md": "8effc8742d58a11a",
|
||||
"gsd-core/workflows/remove-workspace.md": "10882656198d9075",
|
||||
"gsd-core/workflows/resume-project.md": "af9761bcec0f6fe9",
|
||||
"gsd-core/workflows/review.md": "8c05b76fe9d00c30",
|
||||
"gsd-core/workflows/scan.md": "75c670d08cee8680",
|
||||
"gsd-core/workflows/scan.md": "9126e95bf9c50f7e",
|
||||
"gsd-core/workflows/secure-phase.md": "8030d2b2a5bfdf07",
|
||||
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
|
||||
"gsd-core/workflows/settings-advanced.md": "94d61da368e9f85b",
|
||||
@@ -390,7 +390,7 @@
|
||||
"gsd-core/workflows/update.md": "2a59b4edf4a3c8c7",
|
||||
"gsd-core/workflows/validate-phase.md": "3150904744b4a1bd",
|
||||
"gsd-core/workflows/verify-phase.md": "90773de32a966c85",
|
||||
"gsd-core/workflows/verify-work.md": "de14acdc8e925338",
|
||||
"gsd-core/workflows/verify-work.md": "eceb0f76087c81c3",
|
||||
"hooks/gsd-check-update-worker.js": "a530efdb5fdc0da3",
|
||||
"hooks/gsd-check-update.js": "25cde66a12d6b886",
|
||||
"hooks/gsd-config-reload.js": "96546e0e8bb47904",
|
||||
|
||||
24
tests/fixtures/golden-install-parity/claude.json
vendored
24
tests/fixtures/golden-install-parity/claude.json
vendored
@@ -220,8 +220,8 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "722416b71b31c5fc",
|
||||
"gsd-core/workflows/code-review.md": "3fd49c93357fe4f7",
|
||||
"gsd-core/workflows/complete-milestone.md": "dcf1182398efb1ca",
|
||||
"gsd-core/workflows/debug.md": "b4c658c9608d08e2",
|
||||
"gsd-core/workflows/diagnose-issues.md": "75ffc381ac3059ff",
|
||||
"gsd-core/workflows/debug.md": "d9396e0be41bdb3c",
|
||||
"gsd-core/workflows/diagnose-issues.md": "d66a88cae4aa6d99",
|
||||
"gsd-core/workflows/discovery-phase.md": "6161c60d752d0058",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "a8cd1db094fefd35",
|
||||
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
|
||||
@@ -242,7 +242,7 @@
|
||||
"gsd-core/workflows/docs-update.md": "63082608d3ae92be",
|
||||
"gsd-core/workflows/edit-phase.md": "8323bfe10faa0c0a",
|
||||
"gsd-core/workflows/eval-review.md": "f59e8329dae1e528",
|
||||
"gsd-core/workflows/execute-phase.md": "132c985f8dbd766b",
|
||||
"gsd-core/workflows/execute-phase.md": "1c67162c7a87cdbc",
|
||||
"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",
|
||||
@@ -260,19 +260,19 @@
|
||||
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
|
||||
"gsd-core/workflows/help/modes/full.md": "3d55c7266241f79d",
|
||||
"gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9",
|
||||
"gsd-core/workflows/import.md": "6e8acff8c3918795",
|
||||
"gsd-core/workflows/import.md": "3f40ccd2e8cbc708",
|
||||
"gsd-core/workflows/inbox.md": "91aac6360e1a8672",
|
||||
"gsd-core/workflows/ingest-docs.md": "25832c784e8812e6",
|
||||
"gsd-core/workflows/ingest-docs.md": "bea47796f6b86172",
|
||||
"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": "e39dd3c23a782eb5",
|
||||
"gsd-core/workflows/map-codebase.md": "a45a9aa5c10aeeed",
|
||||
"gsd-core/workflows/map-codebase.md": "4c7bef74d1c3e95e",
|
||||
"gsd-core/workflows/milestone-summary.md": "ad8e69fcb3463ce4",
|
||||
"gsd-core/workflows/mvp-phase.md": "344dd300e0cc1e74",
|
||||
"gsd-core/workflows/new-milestone.md": "fef60fedb5db9eb7",
|
||||
"gsd-core/workflows/new-project.md": "0ea70b800c86fde1",
|
||||
"gsd-core/workflows/new-milestone.md": "bbc2dc21f532f810",
|
||||
"gsd-core/workflows/new-project.md": "5eb1e4e361e67c43",
|
||||
"gsd-core/workflows/new-workspace.md": "04356c9b675da7c9",
|
||||
"gsd-core/workflows/next.md": "ef30b829a6d5c5f6",
|
||||
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
|
||||
@@ -280,7 +280,7 @@
|
||||
"gsd-core/workflows/onboard.md": "3c50ed1f1fd07619",
|
||||
"gsd-core/workflows/pause-work.md": "5716362557f44ce4",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "1b43d12812f7bc1e",
|
||||
"gsd-core/workflows/plan-phase.md": "b8773ed817e24b37",
|
||||
"gsd-core/workflows/plan-phase.md": "692b3f711e91b3da",
|
||||
"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",
|
||||
@@ -289,13 +289,13 @@
|
||||
"gsd-core/workflows/pr-branch.md": "ab157cd8e49621dd",
|
||||
"gsd-core/workflows/profile-user.md": "ff3820a27731ceb8",
|
||||
"gsd-core/workflows/progress.md": "8aa2fcebb8b4876e",
|
||||
"gsd-core/workflows/quick.md": "b4237633eaf5a246",
|
||||
"gsd-core/workflows/quick.md": "46da35933571f3f6",
|
||||
"gsd-core/workflows/reapply-patches.md": "ba9406b60f2c4041",
|
||||
"gsd-core/workflows/remove-phase.md": "ada8a0546c686483",
|
||||
"gsd-core/workflows/remove-workspace.md": "f3ab3a88a7e9e1ed",
|
||||
"gsd-core/workflows/resume-project.md": "7f8dc986f0f35d96",
|
||||
"gsd-core/workflows/review.md": "013126685d8a9d50",
|
||||
"gsd-core/workflows/scan.md": "47371c2073d6c0be",
|
||||
"gsd-core/workflows/scan.md": "1890c846b98690bb",
|
||||
"gsd-core/workflows/secure-phase.md": "d6ac1f4db6a5da75",
|
||||
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
|
||||
"gsd-core/workflows/settings-advanced.md": "339def28c34b0797",
|
||||
@@ -319,7 +319,7 @@
|
||||
"gsd-core/workflows/update.md": "f9e7d8a760d0d3c8",
|
||||
"gsd-core/workflows/validate-phase.md": "7a3db6ab8ce9f380",
|
||||
"gsd-core/workflows/verify-phase.md": "b8cca6ef3be502b9",
|
||||
"gsd-core/workflows/verify-work.md": "c8ffee621e7319de",
|
||||
"gsd-core/workflows/verify-work.md": "fc8dacbe15266b03",
|
||||
"hooks/gsd-check-update-worker.js": "a530efdb5fdc0da3",
|
||||
"hooks/gsd-check-update.js": "25cde66a12d6b886",
|
||||
"hooks/gsd-config-reload.js": "96546e0e8bb47904",
|
||||
|
||||
24
tests/fixtures/golden-install-parity/cline.json
vendored
24
tests/fixtures/golden-install-parity/cline.json
vendored
@@ -224,8 +224,8 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "e4549af672e74e6f",
|
||||
"gsd-core/workflows/code-review.md": "e2bfb4267041812a",
|
||||
"gsd-core/workflows/complete-milestone.md": "c0808127038a8f86",
|
||||
"gsd-core/workflows/debug.md": "870682af53182a6c",
|
||||
"gsd-core/workflows/diagnose-issues.md": "e616d0d730328d68",
|
||||
"gsd-core/workflows/debug.md": "4758a68d5c76447d",
|
||||
"gsd-core/workflows/diagnose-issues.md": "164efb4842d1fe75",
|
||||
"gsd-core/workflows/discovery-phase.md": "3ba7cfb89fb1e761",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "9efcb2ef6a9245b3",
|
||||
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
|
||||
@@ -246,7 +246,7 @@
|
||||
"gsd-core/workflows/docs-update.md": "39f288623a8f6f32",
|
||||
"gsd-core/workflows/edit-phase.md": "9c9fadc047c61d74",
|
||||
"gsd-core/workflows/eval-review.md": "3e1d7829ed2ed494",
|
||||
"gsd-core/workflows/execute-phase.md": "678e84b47fe9024f",
|
||||
"gsd-core/workflows/execute-phase.md": "6984700bf0a94ce7",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "67ebc93f51968cb6",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "35612890c1173577",
|
||||
@@ -264,19 +264,19 @@
|
||||
"gsd-core/workflows/help/modes/default.md": "86f7a14ad06e2f6f",
|
||||
"gsd-core/workflows/help/modes/full.md": "e4f1ae9d0902dda0",
|
||||
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
|
||||
"gsd-core/workflows/import.md": "96ec687c5cfe84ac",
|
||||
"gsd-core/workflows/import.md": "53a3069f244edd8b",
|
||||
"gsd-core/workflows/inbox.md": "437f981ef9ae7b26",
|
||||
"gsd-core/workflows/ingest-docs.md": "7d0517356c9f2619",
|
||||
"gsd-core/workflows/ingest-docs.md": "d9d29b5329285af8",
|
||||
"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": "05eee19fe93c063d",
|
||||
"gsd-core/workflows/map-codebase.md": "14c4995c73a671c7",
|
||||
"gsd-core/workflows/map-codebase.md": "34527a4bc301564f",
|
||||
"gsd-core/workflows/milestone-summary.md": "20e56b9e3902e1d2",
|
||||
"gsd-core/workflows/mvp-phase.md": "3e3936e1f247ac7c",
|
||||
"gsd-core/workflows/new-milestone.md": "38370e363174b1da",
|
||||
"gsd-core/workflows/new-project.md": "66bf6135f54ece0e",
|
||||
"gsd-core/workflows/new-milestone.md": "2b53742bc07121b2",
|
||||
"gsd-core/workflows/new-project.md": "4e7a8136f2aa1d94",
|
||||
"gsd-core/workflows/new-workspace.md": "f5eed5dd9a21878f",
|
||||
"gsd-core/workflows/next.md": "3f8b61a35587a021",
|
||||
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
|
||||
@@ -284,7 +284,7 @@
|
||||
"gsd-core/workflows/onboard.md": "6f9e6c0b484271a9",
|
||||
"gsd-core/workflows/pause-work.md": "3530607514b0ac00",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "bafdc6945cd2bd87",
|
||||
"gsd-core/workflows/plan-phase.md": "a3b27f3832d62470",
|
||||
"gsd-core/workflows/plan-phase.md": "c2be936c9b73ea8a",
|
||||
"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",
|
||||
@@ -293,13 +293,13 @@
|
||||
"gsd-core/workflows/pr-branch.md": "9923878a4f6a2d91",
|
||||
"gsd-core/workflows/profile-user.md": "26f74db0a7fcd268",
|
||||
"gsd-core/workflows/progress.md": "a2d948b084a48500",
|
||||
"gsd-core/workflows/quick.md": "797b1c8d62c3d33d",
|
||||
"gsd-core/workflows/quick.md": "f4d73a7a52b11bd1",
|
||||
"gsd-core/workflows/reapply-patches.md": "eb4272145a117904",
|
||||
"gsd-core/workflows/remove-phase.md": "e336350f8113a328",
|
||||
"gsd-core/workflows/remove-workspace.md": "e685dfbd736dfd90",
|
||||
"gsd-core/workflows/resume-project.md": "e23981178fa37b3d",
|
||||
"gsd-core/workflows/review.md": "075ea1aa6a2b8339",
|
||||
"gsd-core/workflows/scan.md": "dfd92717caea0ce7",
|
||||
"gsd-core/workflows/scan.md": "aa2ddc734251c24c",
|
||||
"gsd-core/workflows/secure-phase.md": "00de56d6d993bb2c",
|
||||
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
|
||||
"gsd-core/workflows/settings-advanced.md": "69f3a19bf2c61160",
|
||||
@@ -323,7 +323,7 @@
|
||||
"gsd-core/workflows/update.md": "165beec33490bd28",
|
||||
"gsd-core/workflows/validate-phase.md": "706627c190ae11aa",
|
||||
"gsd-core/workflows/verify-phase.md": "a8b3c15e7ef9c394",
|
||||
"gsd-core/workflows/verify-work.md": "3fb282f2bce34a79",
|
||||
"gsd-core/workflows/verify-work.md": "bd20cf21e7a1e132",
|
||||
"scripts/changeset/README.md": "86ff89331dfd94b2",
|
||||
"scripts/changeset/cli.cjs": "68f92a344b199271",
|
||||
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
|
||||
|
||||
@@ -292,8 +292,8 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075",
|
||||
"gsd-core/workflows/code-review.md": "c877ad812b4a511e",
|
||||
"gsd-core/workflows/complete-milestone.md": "c1f91b77f4ace7f2",
|
||||
"gsd-core/workflows/debug.md": "98c8ed5af882ef8f",
|
||||
"gsd-core/workflows/diagnose-issues.md": "77d98ac07c4a26ff",
|
||||
"gsd-core/workflows/debug.md": "79c2f7dc12815e30",
|
||||
"gsd-core/workflows/diagnose-issues.md": "a00507a8aea82796",
|
||||
"gsd-core/workflows/discovery-phase.md": "3ba7cfb89fb1e761",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "f5b765d33eba4f88",
|
||||
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
|
||||
@@ -314,7 +314,7 @@
|
||||
"gsd-core/workflows/docs-update.md": "f35922d15b7061c9",
|
||||
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
|
||||
"gsd-core/workflows/eval-review.md": "f898936e2cfe4130",
|
||||
"gsd-core/workflows/execute-phase.md": "bae1b74bd250c6e6",
|
||||
"gsd-core/workflows/execute-phase.md": "02bc29efd6441a58",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "4e265392b3f2ba0e",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
|
||||
@@ -332,19 +332,19 @@
|
||||
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
|
||||
"gsd-core/workflows/help/modes/full.md": "5eefc87999cde1a6",
|
||||
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
|
||||
"gsd-core/workflows/import.md": "3d3fa603ceb8bc9f",
|
||||
"gsd-core/workflows/import.md": "12c6cbcbdecb6392",
|
||||
"gsd-core/workflows/inbox.md": "437f981ef9ae7b26",
|
||||
"gsd-core/workflows/ingest-docs.md": "c859921c811ac11b",
|
||||
"gsd-core/workflows/ingest-docs.md": "f7c3fa659ca77bc5",
|
||||
"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": "3ba7a3e8213c4b23",
|
||||
"gsd-core/workflows/map-codebase.md": "83d750aade709983",
|
||||
"gsd-core/workflows/map-codebase.md": "8fb02d635a86d6b2",
|
||||
"gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043",
|
||||
"gsd-core/workflows/mvp-phase.md": "344dd300e0cc1e74",
|
||||
"gsd-core/workflows/new-milestone.md": "83bf5593e94c3377",
|
||||
"gsd-core/workflows/new-project.md": "278e0b88dd1d2ea0",
|
||||
"gsd-core/workflows/new-milestone.md": "6227eaddad367bc5",
|
||||
"gsd-core/workflows/new-project.md": "31a16f12e0b59918",
|
||||
"gsd-core/workflows/new-workspace.md": "017688423110ed66",
|
||||
"gsd-core/workflows/next.md": "13fb800f2472d970",
|
||||
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
|
||||
@@ -352,7 +352,7 @@
|
||||
"gsd-core/workflows/onboard.md": "6f9e6c0b484271a9",
|
||||
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
|
||||
"gsd-core/workflows/plan-phase.md": "1d58b8554e8cc29a",
|
||||
"gsd-core/workflows/plan-phase.md": "628d54d63365a6b2",
|
||||
"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",
|
||||
@@ -361,13 +361,13 @@
|
||||
"gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b",
|
||||
"gsd-core/workflows/profile-user.md": "4fa910d15dea5695",
|
||||
"gsd-core/workflows/progress.md": "9457fb10437c9402",
|
||||
"gsd-core/workflows/quick.md": "0bd83bd88c5e63d1",
|
||||
"gsd-core/workflows/quick.md": "68a60c8fe332cb4e",
|
||||
"gsd-core/workflows/reapply-patches.md": "39050f72601aec89",
|
||||
"gsd-core/workflows/remove-phase.md": "df9a45f0b1880999",
|
||||
"gsd-core/workflows/remove-workspace.md": "a7ca66db6b7c132c",
|
||||
"gsd-core/workflows/resume-project.md": "f28da1200e4545f4",
|
||||
"gsd-core/workflows/review.md": "f1fbefbd64bd890e",
|
||||
"gsd-core/workflows/scan.md": "003883d71c37da7d",
|
||||
"gsd-core/workflows/scan.md": "e6424af05656725a",
|
||||
"gsd-core/workflows/secure-phase.md": "22ab3bb5da494ea7",
|
||||
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
|
||||
"gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44",
|
||||
@@ -391,7 +391,7 @@
|
||||
"gsd-core/workflows/update.md": "5ff1f77222977648",
|
||||
"gsd-core/workflows/validate-phase.md": "ce9890f21c6e5607",
|
||||
"gsd-core/workflows/verify-phase.md": "d26a2c3269340caf",
|
||||
"gsd-core/workflows/verify-work.md": "63b3f680d8f0a6f3",
|
||||
"gsd-core/workflows/verify-work.md": "86c6f0c77b5adc72",
|
||||
"hooks/gsd-check-update-worker.js": "bdc9324a2f080ddd",
|
||||
"hooks/gsd-check-update.js": "b7669f605631e506",
|
||||
"hooks/gsd-config-reload.js": "96546e0e8bb47904",
|
||||
|
||||
24
tests/fixtures/golden-install-parity/codex.json
vendored
24
tests/fixtures/golden-install-parity/codex.json
vendored
@@ -327,8 +327,8 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "ae7f9c6b39a23c12",
|
||||
"gsd-core/workflows/code-review.md": "9b02ebf8fc9b87fa",
|
||||
"gsd-core/workflows/complete-milestone.md": "017df7443bd08da5",
|
||||
"gsd-core/workflows/debug.md": "63691293c0bc0294",
|
||||
"gsd-core/workflows/diagnose-issues.md": "e38bb21d06dff077",
|
||||
"gsd-core/workflows/debug.md": "e61047038f3e8b37",
|
||||
"gsd-core/workflows/diagnose-issues.md": "7b7fde068d3b4c7a",
|
||||
"gsd-core/workflows/discovery-phase.md": "71a4b78ff876a854",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "0d936ec25299917c",
|
||||
"gsd-core/workflows/discuss-phase-power.md": "3f8b83dc6be2e9d5",
|
||||
@@ -349,7 +349,7 @@
|
||||
"gsd-core/workflows/docs-update.md": "e255317df939e302",
|
||||
"gsd-core/workflows/edit-phase.md": "e592a4d85ce5380f",
|
||||
"gsd-core/workflows/eval-review.md": "63d0d0670b54c244",
|
||||
"gsd-core/workflows/execute-phase.md": "2f0e853490af3972",
|
||||
"gsd-core/workflows/execute-phase.md": "d7a6237dc2097828",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "f4cacd27d37bac65",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
|
||||
@@ -367,19 +367,19 @@
|
||||
"gsd-core/workflows/help/modes/default.md": "4bb3082d28026eea",
|
||||
"gsd-core/workflows/help/modes/full.md": "9a512db0dce1a315",
|
||||
"gsd-core/workflows/help/modes/topic.md": "b7c7e4a8800bc3ea",
|
||||
"gsd-core/workflows/import.md": "cb3c8f9d09edb434",
|
||||
"gsd-core/workflows/import.md": "f29e0a0f330f2bc0",
|
||||
"gsd-core/workflows/inbox.md": "61b8b10e7a74b2e9",
|
||||
"gsd-core/workflows/ingest-docs.md": "3cb763e0687d7ffa",
|
||||
"gsd-core/workflows/ingest-docs.md": "57af769d029ceb0e",
|
||||
"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": "3a5abb31ad83334f",
|
||||
"gsd-core/workflows/map-codebase.md": "2edab7d924b296ff",
|
||||
"gsd-core/workflows/map-codebase.md": "d47b52761b9de231",
|
||||
"gsd-core/workflows/milestone-summary.md": "a53b30a84f904b50",
|
||||
"gsd-core/workflows/mvp-phase.md": "100dded5c7b4cb86",
|
||||
"gsd-core/workflows/new-milestone.md": "f8fac345bb136e04",
|
||||
"gsd-core/workflows/new-project.md": "a9dbf207833897cc",
|
||||
"gsd-core/workflows/new-milestone.md": "05fab4b8e193bfd2",
|
||||
"gsd-core/workflows/new-project.md": "1ae7021b79d3144b",
|
||||
"gsd-core/workflows/new-workspace.md": "3630b78e83b1e491",
|
||||
"gsd-core/workflows/next.md": "7097a9607a981086",
|
||||
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
|
||||
@@ -387,7 +387,7 @@
|
||||
"gsd-core/workflows/onboard.md": "83c40ba7055b8b24",
|
||||
"gsd-core/workflows/pause-work.md": "a217770ecafcb2e0",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "73d46f77c50a0690",
|
||||
"gsd-core/workflows/plan-phase.md": "4b0010d581ccce22",
|
||||
"gsd-core/workflows/plan-phase.md": "98b926fb0bced6ef",
|
||||
"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",
|
||||
@@ -396,13 +396,13 @@
|
||||
"gsd-core/workflows/pr-branch.md": "d13e1cc81de40896",
|
||||
"gsd-core/workflows/profile-user.md": "05828c8cc61ef384",
|
||||
"gsd-core/workflows/progress.md": "03f12b223eb3a96e",
|
||||
"gsd-core/workflows/quick.md": "bf70b7beb314aa50",
|
||||
"gsd-core/workflows/quick.md": "ef0af6ee7788f64b",
|
||||
"gsd-core/workflows/reapply-patches.md": "26297b84736e66a4",
|
||||
"gsd-core/workflows/remove-phase.md": "9ee0fddd11a0d9d4",
|
||||
"gsd-core/workflows/remove-workspace.md": "19d7465aaa50cb62",
|
||||
"gsd-core/workflows/resume-project.md": "9965f87eb278f7f8",
|
||||
"gsd-core/workflows/review.md": "e4e61845190da702",
|
||||
"gsd-core/workflows/scan.md": "1a3caa5d724d39e9",
|
||||
"gsd-core/workflows/scan.md": "9d331d74a5ad47e5",
|
||||
"gsd-core/workflows/secure-phase.md": "ab387a4bca381c18",
|
||||
"gsd-core/workflows/session-report.md": "dd8fa011c9394075",
|
||||
"gsd-core/workflows/settings-advanced.md": "2431433811616f76",
|
||||
@@ -426,7 +426,7 @@
|
||||
"gsd-core/workflows/update.md": "5c35c0ec0f462ea6",
|
||||
"gsd-core/workflows/validate-phase.md": "6d6d10fe53f6b1d0",
|
||||
"gsd-core/workflows/verify-phase.md": "ce508f9c2242b91f",
|
||||
"gsd-core/workflows/verify-work.md": "5b348e73fc0d0829",
|
||||
"gsd-core/workflows/verify-work.md": "c2357af11b257433",
|
||||
"hooks/gsd-check-update.js": "ef48957eb6ac6a10",
|
||||
"hooks/gsd-context-monitor.js": "ec76b23f45d29b02",
|
||||
"scripts/changeset/README.md": "86ff89331dfd94b2",
|
||||
|
||||
@@ -222,8 +222,8 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "fda53892ae4b17fc",
|
||||
"gsd-core/workflows/code-review.md": "e36479e4d924c9a6",
|
||||
"gsd-core/workflows/complete-milestone.md": "470cf39261400ee2",
|
||||
"gsd-core/workflows/debug.md": "37c900b9f6c11663",
|
||||
"gsd-core/workflows/diagnose-issues.md": "42acbe2a43fc886e",
|
||||
"gsd-core/workflows/debug.md": "4fa78215bcd5b156",
|
||||
"gsd-core/workflows/diagnose-issues.md": "1ddcee0f5aa0a968",
|
||||
"gsd-core/workflows/discovery-phase.md": "8e99da61fb2b7074",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "ab0c432b84038681",
|
||||
"gsd-core/workflows/discuss-phase-power.md": "5c0d1ca6abda0383",
|
||||
@@ -244,7 +244,7 @@
|
||||
"gsd-core/workflows/docs-update.md": "9292cfa3c52c434e",
|
||||
"gsd-core/workflows/edit-phase.md": "8667c28b22b1599f",
|
||||
"gsd-core/workflows/eval-review.md": "81c8e72ba3862856",
|
||||
"gsd-core/workflows/execute-phase.md": "b402721e78b44197",
|
||||
"gsd-core/workflows/execute-phase.md": "2ab0e3d8db52f54b",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "63b712920f21a40f",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "25bebed74e645109",
|
||||
@@ -262,19 +262,19 @@
|
||||
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
|
||||
"gsd-core/workflows/help/modes/full.md": "fb46abb57e525863",
|
||||
"gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69",
|
||||
"gsd-core/workflows/import.md": "f4fa65e332b00f7e",
|
||||
"gsd-core/workflows/import.md": "7d65189539122d3b",
|
||||
"gsd-core/workflows/inbox.md": "a448220c548f27bc",
|
||||
"gsd-core/workflows/ingest-docs.md": "52be14d1a0713731",
|
||||
"gsd-core/workflows/ingest-docs.md": "f9aeae8fe219ad31",
|
||||
"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": "97f57c099a668f83",
|
||||
"gsd-core/workflows/map-codebase.md": "b426a450e5d90cc3",
|
||||
"gsd-core/workflows/map-codebase.md": "4d86b6d024f5a8d5",
|
||||
"gsd-core/workflows/milestone-summary.md": "8a53906253984a62",
|
||||
"gsd-core/workflows/mvp-phase.md": "93304b26c92e4418",
|
||||
"gsd-core/workflows/new-milestone.md": "a7d8835c192e9b7d",
|
||||
"gsd-core/workflows/new-project.md": "5c34f0cb064568bd",
|
||||
"gsd-core/workflows/new-milestone.md": "339496291115d1fc",
|
||||
"gsd-core/workflows/new-project.md": "2d50bec2e25c66f4",
|
||||
"gsd-core/workflows/new-workspace.md": "403796bdf6318515",
|
||||
"gsd-core/workflows/next.md": "81c08abb34b2da88",
|
||||
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
|
||||
@@ -282,7 +282,7 @@
|
||||
"gsd-core/workflows/onboard.md": "a62602c6f3fd538a",
|
||||
"gsd-core/workflows/pause-work.md": "9ce66367be6c40db",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "5cf589802d08bdf3",
|
||||
"gsd-core/workflows/plan-phase.md": "b72262aa58c82429",
|
||||
"gsd-core/workflows/plan-phase.md": "a0d7aa722c4db2dc",
|
||||
"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",
|
||||
@@ -291,13 +291,13 @@
|
||||
"gsd-core/workflows/pr-branch.md": "2833905f119b5722",
|
||||
"gsd-core/workflows/profile-user.md": "5cc032206c99ef71",
|
||||
"gsd-core/workflows/progress.md": "449b7f4de1bef7ae",
|
||||
"gsd-core/workflows/quick.md": "4a53899b69b8c801",
|
||||
"gsd-core/workflows/quick.md": "dff6d086ef16a14f",
|
||||
"gsd-core/workflows/reapply-patches.md": "8fd59e24b486f180",
|
||||
"gsd-core/workflows/remove-phase.md": "e262654e319d1bc4",
|
||||
"gsd-core/workflows/remove-workspace.md": "ceddfeef5f2d6754",
|
||||
"gsd-core/workflows/resume-project.md": "40db7f350f5866d8",
|
||||
"gsd-core/workflows/review.md": "a9f422db38ab8bb9",
|
||||
"gsd-core/workflows/scan.md": "dcc2f76d0850e2fb",
|
||||
"gsd-core/workflows/scan.md": "b8615653ffa85e12",
|
||||
"gsd-core/workflows/secure-phase.md": "9bec6635ee1cbaed",
|
||||
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
|
||||
"gsd-core/workflows/settings-advanced.md": "230a658de9c017a6",
|
||||
@@ -321,7 +321,7 @@
|
||||
"gsd-core/workflows/update.md": "f444a7cfcd246cfb",
|
||||
"gsd-core/workflows/validate-phase.md": "e7aa423ebdd6a230",
|
||||
"gsd-core/workflows/verify-phase.md": "3fcc54a0c46e5e2f",
|
||||
"gsd-core/workflows/verify-work.md": "c966971a3cbd1d71",
|
||||
"gsd-core/workflows/verify-work.md": "5a0983da1e822293",
|
||||
"hooks/gsd-session.json": "3382597f61e3a559",
|
||||
"scripts/changeset/README.md": "86ff89331dfd94b2",
|
||||
"scripts/changeset/cli.cjs": "68f92a344b199271",
|
||||
|
||||
24
tests/fixtures/golden-install-parity/cursor.json
vendored
24
tests/fixtures/golden-install-parity/cursor.json
vendored
@@ -292,8 +292,8 @@
|
||||
"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/debug.md": "100ed7fce99f3ec2",
|
||||
"gsd-core/workflows/diagnose-issues.md": "1e8e965609250776",
|
||||
"gsd-core/workflows/discovery-phase.md": "7dcf150998559c11",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "c25c6a6c633d71b6",
|
||||
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
|
||||
@@ -314,7 +314,7 @@
|
||||
"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.md": "203a3e4afa6c0ba4",
|
||||
"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",
|
||||
@@ -332,19 +332,19 @@
|
||||
"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/import.md": "f336d2ce3ffb5687",
|
||||
"gsd-core/workflows/inbox.md": "797c287852eb8957",
|
||||
"gsd-core/workflows/ingest-docs.md": "c6759dbf17e79293",
|
||||
"gsd-core/workflows/ingest-docs.md": "762b25021d6a775c",
|
||||
"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/map-codebase.md": "d2830c7316a2e6a3",
|
||||
"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-milestone.md": "2def2ce95ea12681",
|
||||
"gsd-core/workflows/new-project.md": "356828ab4d29c7e6",
|
||||
"gsd-core/workflows/new-workspace.md": "9e76e96253d54a57",
|
||||
"gsd-core/workflows/next.md": "174356dcfd7c6c32",
|
||||
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
|
||||
@@ -352,7 +352,7 @@
|
||||
"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.md": "dd78f3cdd1c7f3f1",
|
||||
"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",
|
||||
@@ -361,13 +361,13 @@
|
||||
"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/quick.md": "ad40466dd04e4147",
|
||||
"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/scan.md": "1890c846b98690bb",
|
||||
"gsd-core/workflows/secure-phase.md": "3063b0b6f7b56d46",
|
||||
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
|
||||
"gsd-core/workflows/settings-advanced.md": "bf8ea69c8f7ae019",
|
||||
@@ -391,7 +391,7 @@
|
||||
"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",
|
||||
"gsd-core/workflows/verify-work.md": "2e30a7b779b82a85",
|
||||
"hooks/gsd-cursor-post-tool.js": "019d503aee8b4a3f",
|
||||
"hooks/gsd-cursor-pre-tool.js": "fe274720781fcbb5",
|
||||
"hooks/gsd-cursor-session-start.js": "c6e04ed597ea7020",
|
||||
|
||||
24
tests/fixtures/golden-install-parity/hermes.json
vendored
24
tests/fixtures/golden-install-parity/hermes.json
vendored
@@ -221,8 +221,8 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "5e396494a79c3f19",
|
||||
"gsd-core/workflows/code-review.md": "b73d0784b9abd2f4",
|
||||
"gsd-core/workflows/complete-milestone.md": "f1866541148dc291",
|
||||
"gsd-core/workflows/debug.md": "a8132ea4480a4730",
|
||||
"gsd-core/workflows/diagnose-issues.md": "385096674965c043",
|
||||
"gsd-core/workflows/debug.md": "84b70e75cfe601a7",
|
||||
"gsd-core/workflows/diagnose-issues.md": "24dd9382e2ff010a",
|
||||
"gsd-core/workflows/discovery-phase.md": "6161c60d752d0058",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "71b86e3cf85d8697",
|
||||
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
|
||||
@@ -243,7 +243,7 @@
|
||||
"gsd-core/workflows/docs-update.md": "ba4cf926fc463cbe",
|
||||
"gsd-core/workflows/edit-phase.md": "7f27003f20e88fb8",
|
||||
"gsd-core/workflows/eval-review.md": "f510e5762212dc6f",
|
||||
"gsd-core/workflows/execute-phase.md": "4181b4370acee4ec",
|
||||
"gsd-core/workflows/execute-phase.md": "3ab3465c0071f873",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "14a27cc0828f59d3",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "26ee34c543926402",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "362123fdf99e9980",
|
||||
@@ -261,19 +261,19 @@
|
||||
"gsd-core/workflows/help/modes/default.md": "8874dac94eb68ae6",
|
||||
"gsd-core/workflows/help/modes/full.md": "a9351cf72f580a87",
|
||||
"gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9",
|
||||
"gsd-core/workflows/import.md": "c6a19584809ea635",
|
||||
"gsd-core/workflows/import.md": "22483de9c9b6acda",
|
||||
"gsd-core/workflows/inbox.md": "91aac6360e1a8672",
|
||||
"gsd-core/workflows/ingest-docs.md": "716276a2f4999ab7",
|
||||
"gsd-core/workflows/ingest-docs.md": "af0f93dd5ac9587d",
|
||||
"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": "68e6e70c4ebe0986",
|
||||
"gsd-core/workflows/map-codebase.md": "420caa00abbd73f5",
|
||||
"gsd-core/workflows/map-codebase.md": "c653fdd03ce61189",
|
||||
"gsd-core/workflows/milestone-summary.md": "353fffb60749d892",
|
||||
"gsd-core/workflows/mvp-phase.md": "4d102523b5d81f95",
|
||||
"gsd-core/workflows/new-milestone.md": "dec95592513880e1",
|
||||
"gsd-core/workflows/new-project.md": "291d623166b97754",
|
||||
"gsd-core/workflows/new-milestone.md": "ee2c8c9984c8036a",
|
||||
"gsd-core/workflows/new-project.md": "6b157fbe70203cd8",
|
||||
"gsd-core/workflows/new-workspace.md": "5c78c58ad84e886b",
|
||||
"gsd-core/workflows/next.md": "8e1fa29751d96564",
|
||||
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
|
||||
@@ -281,7 +281,7 @@
|
||||
"gsd-core/workflows/onboard.md": "3c50ed1f1fd07619",
|
||||
"gsd-core/workflows/pause-work.md": "ae2d5789a95f70fe",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "c86cdc1964256b98",
|
||||
"gsd-core/workflows/plan-phase.md": "c181932975852b0e",
|
||||
"gsd-core/workflows/plan-phase.md": "0cb80f9cb7a47d52",
|
||||
"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",
|
||||
@@ -290,13 +290,13 @@
|
||||
"gsd-core/workflows/pr-branch.md": "ecabd55e4eabf229",
|
||||
"gsd-core/workflows/profile-user.md": "de5030437226cf2c",
|
||||
"gsd-core/workflows/progress.md": "debe980226d9260d",
|
||||
"gsd-core/workflows/quick.md": "01560a250a6040ea",
|
||||
"gsd-core/workflows/quick.md": "fab58ce8581251fa",
|
||||
"gsd-core/workflows/reapply-patches.md": "158083a310859594",
|
||||
"gsd-core/workflows/remove-phase.md": "fce799aae3ab2715",
|
||||
"gsd-core/workflows/remove-workspace.md": "8facde381657dd71",
|
||||
"gsd-core/workflows/resume-project.md": "a0443839f1f83c2d",
|
||||
"gsd-core/workflows/review.md": "cde982eb704261ef",
|
||||
"gsd-core/workflows/scan.md": "ebc3faaf1170dd12",
|
||||
"gsd-core/workflows/scan.md": "6c340b901b5d5d18",
|
||||
"gsd-core/workflows/secure-phase.md": "5284cfc143ad0e2c",
|
||||
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
|
||||
"gsd-core/workflows/settings-advanced.md": "49be159144d7f426",
|
||||
@@ -320,7 +320,7 @@
|
||||
"gsd-core/workflows/update.md": "7499bb4cb2a3ce6f",
|
||||
"gsd-core/workflows/validate-phase.md": "24be83176c7db9f9",
|
||||
"gsd-core/workflows/verify-phase.md": "42f0fba74d069537",
|
||||
"gsd-core/workflows/verify-work.md": "3847a7ccd4bd88a8",
|
||||
"gsd-core/workflows/verify-work.md": "472b875c446004cd",
|
||||
"hooks/gsd-check-update-worker.js": "7989cc2bedd1138d",
|
||||
"hooks/gsd-check-update.js": "25f5ad726f76fc11",
|
||||
"hooks/gsd-config-reload.js": "880b696458e85e9b",
|
||||
|
||||
24
tests/fixtures/golden-install-parity/kilo.json
vendored
24
tests/fixtures/golden-install-parity/kilo.json
vendored
@@ -292,8 +292,8 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "722416b71b31c5fc",
|
||||
"gsd-core/workflows/code-review.md": "3fd49c93357fe4f7",
|
||||
"gsd-core/workflows/complete-milestone.md": "59753bf44d4300da",
|
||||
"gsd-core/workflows/debug.md": "e88c2d430c3625b6",
|
||||
"gsd-core/workflows/diagnose-issues.md": "210b5b313e8a559a",
|
||||
"gsd-core/workflows/debug.md": "a603f52749acde62",
|
||||
"gsd-core/workflows/diagnose-issues.md": "5eebc4764b19c4f6",
|
||||
"gsd-core/workflows/discovery-phase.md": "ca7b2be46e59e862",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "3ef1df313e715387",
|
||||
"gsd-core/workflows/discuss-phase-power.md": "5c0d1ca6abda0383",
|
||||
@@ -314,7 +314,7 @@
|
||||
"gsd-core/workflows/docs-update.md": "79afaaf19fd527cc",
|
||||
"gsd-core/workflows/edit-phase.md": "8323bfe10faa0c0a",
|
||||
"gsd-core/workflows/eval-review.md": "926eda8bbee28b23",
|
||||
"gsd-core/workflows/execute-phase.md": "17fe49293d779e2f",
|
||||
"gsd-core/workflows/execute-phase.md": "37b8f39d1ef48997",
|
||||
"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",
|
||||
@@ -332,19 +332,19 @@
|
||||
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
|
||||
"gsd-core/workflows/help/modes/full.md": "08101a965254f10e",
|
||||
"gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69",
|
||||
"gsd-core/workflows/import.md": "f8bbe6f2c0e08a78",
|
||||
"gsd-core/workflows/import.md": "8038d1e702e4894b",
|
||||
"gsd-core/workflows/inbox.md": "a073396097c89c01",
|
||||
"gsd-core/workflows/ingest-docs.md": "29c1fe28bc93b345",
|
||||
"gsd-core/workflows/ingest-docs.md": "ae86b5460794c835",
|
||||
"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": "f3d17d2ae11ec7b5",
|
||||
"gsd-core/workflows/map-codebase.md": "c3d6418d64ba2994",
|
||||
"gsd-core/workflows/map-codebase.md": "ec7fd85d7bbc5a29",
|
||||
"gsd-core/workflows/milestone-summary.md": "25775eeb4e2747be",
|
||||
"gsd-core/workflows/mvp-phase.md": "a97708464f103300",
|
||||
"gsd-core/workflows/new-milestone.md": "f3f76acd32311959",
|
||||
"gsd-core/workflows/new-project.md": "6d8cd0b4fe813374",
|
||||
"gsd-core/workflows/new-milestone.md": "2cf08b4be93028c1",
|
||||
"gsd-core/workflows/new-project.md": "0737b8140906a9cc",
|
||||
"gsd-core/workflows/new-workspace.md": "f58d6a8c0c7796a1",
|
||||
"gsd-core/workflows/next.md": "888297a0b21888ea",
|
||||
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
|
||||
@@ -352,7 +352,7 @@
|
||||
"gsd-core/workflows/onboard.md": "78b288089305dc46",
|
||||
"gsd-core/workflows/pause-work.md": "a6e5336c409fdc8b",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "1b43d12812f7bc1e",
|
||||
"gsd-core/workflows/plan-phase.md": "5ed4eaa6691f76fd",
|
||||
"gsd-core/workflows/plan-phase.md": "11e490f7ed5a6947",
|
||||
"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",
|
||||
@@ -361,13 +361,13 @@
|
||||
"gsd-core/workflows/pr-branch.md": "ab157cd8e49621dd",
|
||||
"gsd-core/workflows/profile-user.md": "203ebe3f8f3876a8",
|
||||
"gsd-core/workflows/progress.md": "c2a8a79af6603e70",
|
||||
"gsd-core/workflows/quick.md": "4ddd6d3214f57f57",
|
||||
"gsd-core/workflows/quick.md": "4ef7da71a596604a",
|
||||
"gsd-core/workflows/reapply-patches.md": "becf9728cdb124c4",
|
||||
"gsd-core/workflows/remove-phase.md": "ada8a0546c686483",
|
||||
"gsd-core/workflows/remove-workspace.md": "fc83f362a2d0a1b7",
|
||||
"gsd-core/workflows/resume-project.md": "7f8dc986f0f35d96",
|
||||
"gsd-core/workflows/review.md": "6033fab6d070c993",
|
||||
"gsd-core/workflows/scan.md": "47371c2073d6c0be",
|
||||
"gsd-core/workflows/scan.md": "1890c846b98690bb",
|
||||
"gsd-core/workflows/secure-phase.md": "4977cf9e0462745b",
|
||||
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
|
||||
"gsd-core/workflows/settings-advanced.md": "edd858cd6cfddaf1",
|
||||
@@ -391,7 +391,7 @@
|
||||
"gsd-core/workflows/update.md": "07dc2fba78ad1865",
|
||||
"gsd-core/workflows/validate-phase.md": "52b9fa8a9533b444",
|
||||
"gsd-core/workflows/verify-phase.md": "b8cca6ef3be502b9",
|
||||
"gsd-core/workflows/verify-work.md": "9fc717845828c6e3",
|
||||
"gsd-core/workflows/verify-work.md": "9b4bda9a8ff3fa7d",
|
||||
"hooks/gsd-check-update-worker.js": "c992bbad91d0e994",
|
||||
"hooks/gsd-check-update.js": "fdd77abe7ef26a2d",
|
||||
"hooks/gsd-config-reload.js": "96546e0e8bb47904",
|
||||
|
||||
24
tests/fixtures/golden-install-parity/kimi.json
vendored
24
tests/fixtures/golden-install-parity/kimi.json
vendored
@@ -285,8 +285,8 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075",
|
||||
"gsd-core/workflows/code-review.md": "c877ad812b4a511e",
|
||||
"gsd-core/workflows/complete-milestone.md": "c1f91b77f4ace7f2",
|
||||
"gsd-core/workflows/debug.md": "98c8ed5af882ef8f",
|
||||
"gsd-core/workflows/diagnose-issues.md": "67c058fc7ae6026b",
|
||||
"gsd-core/workflows/debug.md": "79c2f7dc12815e30",
|
||||
"gsd-core/workflows/diagnose-issues.md": "fe8951e98446ad79",
|
||||
"gsd-core/workflows/discovery-phase.md": "3ba7cfb89fb1e761",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "f5b765d33eba4f88",
|
||||
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
|
||||
@@ -307,7 +307,7 @@
|
||||
"gsd-core/workflows/docs-update.md": "f35922d15b7061c9",
|
||||
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
|
||||
"gsd-core/workflows/eval-review.md": "f898936e2cfe4130",
|
||||
"gsd-core/workflows/execute-phase.md": "81e1f72a08f74e44",
|
||||
"gsd-core/workflows/execute-phase.md": "79094f7c09b76e5b",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "4e265392b3f2ba0e",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
|
||||
@@ -325,19 +325,19 @@
|
||||
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
|
||||
"gsd-core/workflows/help/modes/full.md": "91e115f058b6d3cf",
|
||||
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
|
||||
"gsd-core/workflows/import.md": "3d3fa603ceb8bc9f",
|
||||
"gsd-core/workflows/import.md": "12c6cbcbdecb6392",
|
||||
"gsd-core/workflows/inbox.md": "437f981ef9ae7b26",
|
||||
"gsd-core/workflows/ingest-docs.md": "c859921c811ac11b",
|
||||
"gsd-core/workflows/ingest-docs.md": "f7c3fa659ca77bc5",
|
||||
"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": "3ba7a3e8213c4b23",
|
||||
"gsd-core/workflows/map-codebase.md": "83d750aade709983",
|
||||
"gsd-core/workflows/map-codebase.md": "8fb02d635a86d6b2",
|
||||
"gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043",
|
||||
"gsd-core/workflows/mvp-phase.md": "344dd300e0cc1e74",
|
||||
"gsd-core/workflows/new-milestone.md": "83bf5593e94c3377",
|
||||
"gsd-core/workflows/new-project.md": "1ec88027a8e5a2fe",
|
||||
"gsd-core/workflows/new-milestone.md": "6227eaddad367bc5",
|
||||
"gsd-core/workflows/new-project.md": "c1d822aa1c81d390",
|
||||
"gsd-core/workflows/new-workspace.md": "017688423110ed66",
|
||||
"gsd-core/workflows/next.md": "13fb800f2472d970",
|
||||
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
|
||||
@@ -345,7 +345,7 @@
|
||||
"gsd-core/workflows/onboard.md": "6f9e6c0b484271a9",
|
||||
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
|
||||
"gsd-core/workflows/plan-phase.md": "a0e6a19b0cec72ed",
|
||||
"gsd-core/workflows/plan-phase.md": "c9aeef0741af0ac5",
|
||||
"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",
|
||||
@@ -354,13 +354,13 @@
|
||||
"gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b",
|
||||
"gsd-core/workflows/profile-user.md": "5abfae83739fa978",
|
||||
"gsd-core/workflows/progress.md": "9457fb10437c9402",
|
||||
"gsd-core/workflows/quick.md": "8dcda37c46954ebe",
|
||||
"gsd-core/workflows/quick.md": "2a9476454b69b4ff",
|
||||
"gsd-core/workflows/reapply-patches.md": "39050f72601aec89",
|
||||
"gsd-core/workflows/remove-phase.md": "df9a45f0b1880999",
|
||||
"gsd-core/workflows/remove-workspace.md": "a7ca66db6b7c132c",
|
||||
"gsd-core/workflows/resume-project.md": "f28da1200e4545f4",
|
||||
"gsd-core/workflows/review.md": "f1fbefbd64bd890e",
|
||||
"gsd-core/workflows/scan.md": "003883d71c37da7d",
|
||||
"gsd-core/workflows/scan.md": "e6424af05656725a",
|
||||
"gsd-core/workflows/secure-phase.md": "22ab3bb5da494ea7",
|
||||
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
|
||||
"gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44",
|
||||
@@ -384,7 +384,7 @@
|
||||
"gsd-core/workflows/update.md": "6718e0632bba26ca",
|
||||
"gsd-core/workflows/validate-phase.md": "ce9890f21c6e5607",
|
||||
"gsd-core/workflows/verify-phase.md": "d26a2c3269340caf",
|
||||
"gsd-core/workflows/verify-work.md": "63b3f680d8f0a6f3",
|
||||
"gsd-core/workflows/verify-work.md": "86c6f0c77b5adc72",
|
||||
"scripts/changeset/README.md": "86ff89331dfd94b2",
|
||||
"scripts/changeset/cli.cjs": "68f92a344b199271",
|
||||
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
|
||||
|
||||
@@ -292,8 +292,8 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "adb9388bb157610c",
|
||||
"gsd-core/workflows/code-review.md": "016d1c9cbabf04f2",
|
||||
"gsd-core/workflows/complete-milestone.md": "614299b2c08e66c3",
|
||||
"gsd-core/workflows/debug.md": "161be2a77ffce47a",
|
||||
"gsd-core/workflows/diagnose-issues.md": "2971c699d52f1b85",
|
||||
"gsd-core/workflows/debug.md": "63ea176f51f2eeb7",
|
||||
"gsd-core/workflows/diagnose-issues.md": "1d1aa1d919bc4d03",
|
||||
"gsd-core/workflows/discovery-phase.md": "724408336596c50c",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "92e43cd12200c610",
|
||||
"gsd-core/workflows/discuss-phase-power.md": "5c0d1ca6abda0383",
|
||||
@@ -314,7 +314,7 @@
|
||||
"gsd-core/workflows/docs-update.md": "850366c2ef8fb780",
|
||||
"gsd-core/workflows/edit-phase.md": "1876c855fb0a0a39",
|
||||
"gsd-core/workflows/eval-review.md": "5394694d29ad7543",
|
||||
"gsd-core/workflows/execute-phase.md": "14319ad35214eda9",
|
||||
"gsd-core/workflows/execute-phase.md": "a0de8c44d3234203",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "1804215577f1ad35",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "c4cba01539f0368a",
|
||||
@@ -332,19 +332,19 @@
|
||||
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
|
||||
"gsd-core/workflows/help/modes/full.md": "7e68200aeb086535",
|
||||
"gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69",
|
||||
"gsd-core/workflows/import.md": "67fbf389ab8e57b4",
|
||||
"gsd-core/workflows/import.md": "03527dcd27f9f7e7",
|
||||
"gsd-core/workflows/inbox.md": "a073396097c89c01",
|
||||
"gsd-core/workflows/ingest-docs.md": "82370f93c45c8015",
|
||||
"gsd-core/workflows/ingest-docs.md": "9066e37d34b2691e",
|
||||
"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": "b652b27ca9c6451a",
|
||||
"gsd-core/workflows/map-codebase.md": "6aa5a52741af0b3e",
|
||||
"gsd-core/workflows/map-codebase.md": "ab67f493aac12fa3",
|
||||
"gsd-core/workflows/milestone-summary.md": "321ea8a6a206f38f",
|
||||
"gsd-core/workflows/mvp-phase.md": "b4d688baa4c60dfc",
|
||||
"gsd-core/workflows/new-milestone.md": "72010b09ae067366",
|
||||
"gsd-core/workflows/new-project.md": "a3850644ef65bea6",
|
||||
"gsd-core/workflows/new-milestone.md": "11c0d446a3320ef5",
|
||||
"gsd-core/workflows/new-project.md": "4a4a4f0010b3e1a0",
|
||||
"gsd-core/workflows/new-workspace.md": "3d82392388ee24c7",
|
||||
"gsd-core/workflows/next.md": "6719a37b8ce2ac4f",
|
||||
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
|
||||
@@ -352,7 +352,7 @@
|
||||
"gsd-core/workflows/onboard.md": "102556e1715c01b9",
|
||||
"gsd-core/workflows/pause-work.md": "70c72beca55c080a",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "0a9dacd422cd9533",
|
||||
"gsd-core/workflows/plan-phase.md": "bb029bf7a3d3c6ef",
|
||||
"gsd-core/workflows/plan-phase.md": "b133e7c08a39aad0",
|
||||
"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",
|
||||
@@ -361,13 +361,13 @@
|
||||
"gsd-core/workflows/pr-branch.md": "929b7cb0c99c7b9e",
|
||||
"gsd-core/workflows/profile-user.md": "248d59a31948e0ed",
|
||||
"gsd-core/workflows/progress.md": "352920a61ed4f4db",
|
||||
"gsd-core/workflows/quick.md": "774d646560a74c93",
|
||||
"gsd-core/workflows/quick.md": "f2641bad95c6614e",
|
||||
"gsd-core/workflows/reapply-patches.md": "a0e9b53f90abceb2",
|
||||
"gsd-core/workflows/remove-phase.md": "dea4661e8f89596f",
|
||||
"gsd-core/workflows/remove-workspace.md": "446847e71aa52504",
|
||||
"gsd-core/workflows/resume-project.md": "ad9f06a10bab8cc0",
|
||||
"gsd-core/workflows/review.md": "fbe68c9f86385274",
|
||||
"gsd-core/workflows/scan.md": "ad8ebcad4626d4a8",
|
||||
"gsd-core/workflows/scan.md": "63cf8d9067610704",
|
||||
"gsd-core/workflows/secure-phase.md": "71e6e689e80288ec",
|
||||
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
|
||||
"gsd-core/workflows/settings-advanced.md": "252b0d3edc315339",
|
||||
@@ -391,7 +391,7 @@
|
||||
"gsd-core/workflows/update.md": "71b6cd852f38b4bc",
|
||||
"gsd-core/workflows/validate-phase.md": "434d9927c65f2bba",
|
||||
"gsd-core/workflows/verify-phase.md": "73025aa5d8bf7bd5",
|
||||
"gsd-core/workflows/verify-work.md": "ae07b3fa8b6f864e",
|
||||
"gsd-core/workflows/verify-work.md": "528fa7529501ee10",
|
||||
"hooks/gsd-check-update-worker.js": "385fb7c67810baf6",
|
||||
"hooks/gsd-check-update.js": "4549451414ffa7d7",
|
||||
"hooks/gsd-config-reload.js": "96546e0e8bb47904",
|
||||
|
||||
24
tests/fixtures/golden-install-parity/pi.json
vendored
24
tests/fixtures/golden-install-parity/pi.json
vendored
@@ -188,8 +188,8 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075",
|
||||
"gsd-core/workflows/code-review.md": "c877ad812b4a511e",
|
||||
"gsd-core/workflows/complete-milestone.md": "c1f91b77f4ace7f2",
|
||||
"gsd-core/workflows/debug.md": "98c8ed5af882ef8f",
|
||||
"gsd-core/workflows/diagnose-issues.md": "d6d978fddfd5da8d",
|
||||
"gsd-core/workflows/debug.md": "79c2f7dc12815e30",
|
||||
"gsd-core/workflows/diagnose-issues.md": "f6feda980d2e5f02",
|
||||
"gsd-core/workflows/discovery-phase.md": "3ba7cfb89fb1e761",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "f5b765d33eba4f88",
|
||||
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
|
||||
@@ -210,7 +210,7 @@
|
||||
"gsd-core/workflows/docs-update.md": "f35922d15b7061c9",
|
||||
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
|
||||
"gsd-core/workflows/eval-review.md": "f898936e2cfe4130",
|
||||
"gsd-core/workflows/execute-phase.md": "7c0a1f21258543e0",
|
||||
"gsd-core/workflows/execute-phase.md": "a0becf39cc735598",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "4e265392b3f2ba0e",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
|
||||
@@ -228,19 +228,19 @@
|
||||
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
|
||||
"gsd-core/workflows/help/modes/full.md": "99d5387021de656f",
|
||||
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
|
||||
"gsd-core/workflows/import.md": "3d3fa603ceb8bc9f",
|
||||
"gsd-core/workflows/import.md": "12c6cbcbdecb6392",
|
||||
"gsd-core/workflows/inbox.md": "437f981ef9ae7b26",
|
||||
"gsd-core/workflows/ingest-docs.md": "c859921c811ac11b",
|
||||
"gsd-core/workflows/ingest-docs.md": "f7c3fa659ca77bc5",
|
||||
"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": "3ba7a3e8213c4b23",
|
||||
"gsd-core/workflows/map-codebase.md": "83d750aade709983",
|
||||
"gsd-core/workflows/map-codebase.md": "8fb02d635a86d6b2",
|
||||
"gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043",
|
||||
"gsd-core/workflows/mvp-phase.md": "344dd300e0cc1e74",
|
||||
"gsd-core/workflows/new-milestone.md": "83bf5593e94c3377",
|
||||
"gsd-core/workflows/new-project.md": "4c32c69910d55ec0",
|
||||
"gsd-core/workflows/new-milestone.md": "6227eaddad367bc5",
|
||||
"gsd-core/workflows/new-project.md": "52c773fc5de47b6c",
|
||||
"gsd-core/workflows/new-workspace.md": "017688423110ed66",
|
||||
"gsd-core/workflows/next.md": "13fb800f2472d970",
|
||||
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
|
||||
@@ -248,7 +248,7 @@
|
||||
"gsd-core/workflows/onboard.md": "6f9e6c0b484271a9",
|
||||
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
|
||||
"gsd-core/workflows/plan-phase.md": "d04009957f972f33",
|
||||
"gsd-core/workflows/plan-phase.md": "09cc50e25bc8293a",
|
||||
"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",
|
||||
@@ -257,13 +257,13 @@
|
||||
"gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b",
|
||||
"gsd-core/workflows/profile-user.md": "1bac7f69142801ef",
|
||||
"gsd-core/workflows/progress.md": "9457fb10437c9402",
|
||||
"gsd-core/workflows/quick.md": "31787c1e8a867e3f",
|
||||
"gsd-core/workflows/quick.md": "c00a6574ff650a86",
|
||||
"gsd-core/workflows/reapply-patches.md": "39050f72601aec89",
|
||||
"gsd-core/workflows/remove-phase.md": "df9a45f0b1880999",
|
||||
"gsd-core/workflows/remove-workspace.md": "a7ca66db6b7c132c",
|
||||
"gsd-core/workflows/resume-project.md": "f28da1200e4545f4",
|
||||
"gsd-core/workflows/review.md": "f1fbefbd64bd890e",
|
||||
"gsd-core/workflows/scan.md": "003883d71c37da7d",
|
||||
"gsd-core/workflows/scan.md": "e6424af05656725a",
|
||||
"gsd-core/workflows/secure-phase.md": "22ab3bb5da494ea7",
|
||||
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
|
||||
"gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44",
|
||||
@@ -287,7 +287,7 @@
|
||||
"gsd-core/workflows/update.md": "7e69d278375a2493",
|
||||
"gsd-core/workflows/validate-phase.md": "ce9890f21c6e5607",
|
||||
"gsd-core/workflows/verify-phase.md": "d26a2c3269340caf",
|
||||
"gsd-core/workflows/verify-work.md": "63b3f680d8f0a6f3",
|
||||
"gsd-core/workflows/verify-work.md": "86c6f0c77b5adc72",
|
||||
"hooks/gsd-check-update-worker.js": "55376b5b9335a580",
|
||||
"hooks/gsd-check-update.js": "a89562537a41f83d",
|
||||
"hooks/gsd-config-reload.js": "96546e0e8bb47904",
|
||||
|
||||
24
tests/fixtures/golden-install-parity/qwen.json
vendored
24
tests/fixtures/golden-install-parity/qwen.json
vendored
@@ -221,8 +221,8 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "f3725ae9d685bed2",
|
||||
"gsd-core/workflows/code-review.md": "657f309742b1a4c9",
|
||||
"gsd-core/workflows/complete-milestone.md": "40085d32b15805c8",
|
||||
"gsd-core/workflows/debug.md": "09b6bad63939bb82",
|
||||
"gsd-core/workflows/diagnose-issues.md": "652ae26975f82242",
|
||||
"gsd-core/workflows/debug.md": "76b028848be60ffe",
|
||||
"gsd-core/workflows/diagnose-issues.md": "5092f9003e7a9582",
|
||||
"gsd-core/workflows/discovery-phase.md": "6161c60d752d0058",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "18712f78bb960ec8",
|
||||
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
|
||||
@@ -243,7 +243,7 @@
|
||||
"gsd-core/workflows/docs-update.md": "45d2f0d173c84e07",
|
||||
"gsd-core/workflows/edit-phase.md": "0fb5e0123cfc6f36",
|
||||
"gsd-core/workflows/eval-review.md": "6dee8a1e40ececd4",
|
||||
"gsd-core/workflows/execute-phase.md": "e98c1a00c1cdd6a3",
|
||||
"gsd-core/workflows/execute-phase.md": "a771448bed59407a",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "36af8d91e4ae8b9c",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "0b04cc2dcab61107",
|
||||
@@ -261,19 +261,19 @@
|
||||
"gsd-core/workflows/help/modes/default.md": "7ca77077085452f5",
|
||||
"gsd-core/workflows/help/modes/full.md": "6022991e0f56fd1d",
|
||||
"gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9",
|
||||
"gsd-core/workflows/import.md": "e56c18a984396066",
|
||||
"gsd-core/workflows/import.md": "9e29736463899f31",
|
||||
"gsd-core/workflows/inbox.md": "91aac6360e1a8672",
|
||||
"gsd-core/workflows/ingest-docs.md": "f291310a8a89dbd8",
|
||||
"gsd-core/workflows/ingest-docs.md": "5d7946a7557d8a05",
|
||||
"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": "176ca710b4be4860",
|
||||
"gsd-core/workflows/map-codebase.md": "2328da6a2f180f07",
|
||||
"gsd-core/workflows/map-codebase.md": "b88010a34b89a07f",
|
||||
"gsd-core/workflows/milestone-summary.md": "97ddfc40c6bce906",
|
||||
"gsd-core/workflows/mvp-phase.md": "5ca64695120d250c",
|
||||
"gsd-core/workflows/new-milestone.md": "6bee4870688f0170",
|
||||
"gsd-core/workflows/new-project.md": "493ae04534a80f97",
|
||||
"gsd-core/workflows/new-milestone.md": "be7839cd48260215",
|
||||
"gsd-core/workflows/new-project.md": "ef9676c1473f2073",
|
||||
"gsd-core/workflows/new-workspace.md": "0d59bb987430003e",
|
||||
"gsd-core/workflows/next.md": "c13515a80c20d37d",
|
||||
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
|
||||
@@ -281,7 +281,7 @@
|
||||
"gsd-core/workflows/onboard.md": "3c50ed1f1fd07619",
|
||||
"gsd-core/workflows/pause-work.md": "be33f84dc1d4822f",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "d98e98486123eb97",
|
||||
"gsd-core/workflows/plan-phase.md": "0e4471f6bff26866",
|
||||
"gsd-core/workflows/plan-phase.md": "3edc831cfa8ad1cb",
|
||||
"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",
|
||||
@@ -290,13 +290,13 @@
|
||||
"gsd-core/workflows/pr-branch.md": "cef0f65b16d500b4",
|
||||
"gsd-core/workflows/profile-user.md": "263c0693563d98da",
|
||||
"gsd-core/workflows/progress.md": "4ceb0f6f5e34c4a4",
|
||||
"gsd-core/workflows/quick.md": "d0fffe516abaf47a",
|
||||
"gsd-core/workflows/quick.md": "f5de70665fbea4fa",
|
||||
"gsd-core/workflows/reapply-patches.md": "de0ee8acfe7245b2",
|
||||
"gsd-core/workflows/remove-phase.md": "e8ae4fbbfac700f0",
|
||||
"gsd-core/workflows/remove-workspace.md": "4ac64de862dc650e",
|
||||
"gsd-core/workflows/resume-project.md": "7f20769f302e5427",
|
||||
"gsd-core/workflows/review.md": "b3548b43dcf1fb4e",
|
||||
"gsd-core/workflows/scan.md": "949692db4834dd27",
|
||||
"gsd-core/workflows/scan.md": "9ebe1d469171af0d",
|
||||
"gsd-core/workflows/secure-phase.md": "ef7b5ad194b687bf",
|
||||
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
|
||||
"gsd-core/workflows/settings-advanced.md": "5e05212fb5cba531",
|
||||
@@ -320,7 +320,7 @@
|
||||
"gsd-core/workflows/update.md": "b34cb866152d4de3",
|
||||
"gsd-core/workflows/validate-phase.md": "dfb9bd178ee1b67b",
|
||||
"gsd-core/workflows/verify-phase.md": "7d8e241350136ca0",
|
||||
"gsd-core/workflows/verify-work.md": "3355ddc14f052fff",
|
||||
"gsd-core/workflows/verify-work.md": "14c856aab2e4c099",
|
||||
"hooks/gsd-check-update-worker.js": "4bb354044e0dff91",
|
||||
"hooks/gsd-check-update.js": "d2065cb3e725a42a",
|
||||
"hooks/gsd-config-reload.js": "4f52b8a0120bb1b8",
|
||||
|
||||
24
tests/fixtures/golden-install-parity/trae.json
vendored
24
tests/fixtures/golden-install-parity/trae.json
vendored
@@ -221,8 +221,8 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "f2761f7f8c4a5674",
|
||||
"gsd-core/workflows/code-review.md": "41f0c51d8c4e7732",
|
||||
"gsd-core/workflows/complete-milestone.md": "6e918b72bd885426",
|
||||
"gsd-core/workflows/debug.md": "04b29e0ba18603b6",
|
||||
"gsd-core/workflows/diagnose-issues.md": "9274b11a3db98c65",
|
||||
"gsd-core/workflows/debug.md": "3cf5251e5ef0a372",
|
||||
"gsd-core/workflows/diagnose-issues.md": "8e3d340b79e25616",
|
||||
"gsd-core/workflows/discovery-phase.md": "b32b6197b66c9a13",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "e376b1cf29379df4",
|
||||
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
|
||||
@@ -243,7 +243,7 @@
|
||||
"gsd-core/workflows/docs-update.md": "f13571f08e083356",
|
||||
"gsd-core/workflows/edit-phase.md": "7facd0faa33c8cad",
|
||||
"gsd-core/workflows/eval-review.md": "37d545d4f0db4927",
|
||||
"gsd-core/workflows/execute-phase.md": "73649315fea5bd61",
|
||||
"gsd-core/workflows/execute-phase.md": "364c2617ed78c71d",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "c985a30317a1aa6b",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7d30384e9bf82664",
|
||||
@@ -261,19 +261,19 @@
|
||||
"gsd-core/workflows/help/modes/default.md": "ed7368e0d1b8644a",
|
||||
"gsd-core/workflows/help/modes/full.md": "01a34fdde96bf138",
|
||||
"gsd-core/workflows/help/modes/topic.md": "8a5344e56fa64ab9",
|
||||
"gsd-core/workflows/import.md": "31af58468db15daf",
|
||||
"gsd-core/workflows/import.md": "93707f52cf6f1b19",
|
||||
"gsd-core/workflows/inbox.md": "e9ea37b2d46dc5b4",
|
||||
"gsd-core/workflows/ingest-docs.md": "fba176ad3cc22f5f",
|
||||
"gsd-core/workflows/ingest-docs.md": "0f9f6b7080690244",
|
||||
"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": "212a50d3f65fff21",
|
||||
"gsd-core/workflows/map-codebase.md": "713561638fb1b88e",
|
||||
"gsd-core/workflows/map-codebase.md": "a95bb77eee37a13d",
|
||||
"gsd-core/workflows/milestone-summary.md": "a0063cfbe08f2250",
|
||||
"gsd-core/workflows/mvp-phase.md": "8ed9f4552350ede8",
|
||||
"gsd-core/workflows/new-milestone.md": "9a3a99448397cee4",
|
||||
"gsd-core/workflows/new-project.md": "32ce66cbeaa26cc5",
|
||||
"gsd-core/workflows/new-milestone.md": "528c034cb2d12244",
|
||||
"gsd-core/workflows/new-project.md": "2284fc43b216f715",
|
||||
"gsd-core/workflows/new-workspace.md": "6b6fbad18d30f783",
|
||||
"gsd-core/workflows/next.md": "2163195861877de5",
|
||||
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
|
||||
@@ -281,7 +281,7 @@
|
||||
"gsd-core/workflows/onboard.md": "61f111302af0f404",
|
||||
"gsd-core/workflows/pause-work.md": "c20d267e28ce92f0",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "26db7b9329b7ddc8",
|
||||
"gsd-core/workflows/plan-phase.md": "8e0485af2536a0e8",
|
||||
"gsd-core/workflows/plan-phase.md": "2cecda2750562a11",
|
||||
"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",
|
||||
@@ -290,13 +290,13 @@
|
||||
"gsd-core/workflows/pr-branch.md": "79fd55b88ea2db9c",
|
||||
"gsd-core/workflows/profile-user.md": "672821e6b1266645",
|
||||
"gsd-core/workflows/progress.md": "00de1afbe907efa5",
|
||||
"gsd-core/workflows/quick.md": "0529abcf9913ec04",
|
||||
"gsd-core/workflows/quick.md": "95ad5630aca7f1e2",
|
||||
"gsd-core/workflows/reapply-patches.md": "21b38c374f19fd78",
|
||||
"gsd-core/workflows/remove-phase.md": "a46c2fe853bf4e86",
|
||||
"gsd-core/workflows/remove-workspace.md": "ae0e1c6d4438d663",
|
||||
"gsd-core/workflows/resume-project.md": "f242e4c8aba18ea2",
|
||||
"gsd-core/workflows/review.md": "35d023ff48e3827f",
|
||||
"gsd-core/workflows/scan.md": "63631467651d9ca8",
|
||||
"gsd-core/workflows/scan.md": "a3ce29ceb62b8192",
|
||||
"gsd-core/workflows/secure-phase.md": "4a647aec1e4d2dfe",
|
||||
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
|
||||
"gsd-core/workflows/settings-advanced.md": "39e66386f6c48025",
|
||||
@@ -320,7 +320,7 @@
|
||||
"gsd-core/workflows/update.md": "1f935251fca1f276",
|
||||
"gsd-core/workflows/validate-phase.md": "58fd1a0a679d7115",
|
||||
"gsd-core/workflows/verify-phase.md": "101bf5a6e15f0b04",
|
||||
"gsd-core/workflows/verify-work.md": "dde2a42a56c27c4e",
|
||||
"gsd-core/workflows/verify-work.md": "0b9e6ea0ad0f8c9c",
|
||||
"scripts/changeset/README.md": "86ff89331dfd94b2",
|
||||
"scripts/changeset/cli.cjs": "68f92a344b199271",
|
||||
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
|
||||
|
||||
@@ -221,8 +221,8 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "b99b1f20bb27c291",
|
||||
"gsd-core/workflows/code-review.md": "a89512ce6c30693c",
|
||||
"gsd-core/workflows/complete-milestone.md": "f463bf4e86ac26f6",
|
||||
"gsd-core/workflows/debug.md": "830c309b48c35c8c",
|
||||
"gsd-core/workflows/diagnose-issues.md": "447072aa72385271",
|
||||
"gsd-core/workflows/debug.md": "381eb8a8e610d82a",
|
||||
"gsd-core/workflows/diagnose-issues.md": "dbe0fdc2fc23097c",
|
||||
"gsd-core/workflows/discovery-phase.md": "7dcf150998559c11",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "b091b3d3e580dd29",
|
||||
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
|
||||
@@ -243,7 +243,7 @@
|
||||
"gsd-core/workflows/docs-update.md": "70f73cc8c27e0ca0",
|
||||
"gsd-core/workflows/edit-phase.md": "c0ae7d0063f3e789",
|
||||
"gsd-core/workflows/eval-review.md": "b28be79ef29f16fd",
|
||||
"gsd-core/workflows/execute-phase.md": "1b27831de2d19613",
|
||||
"gsd-core/workflows/execute-phase.md": "8e349e33d7fa4b41",
|
||||
"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",
|
||||
@@ -261,19 +261,19 @@
|
||||
"gsd-core/workflows/help/modes/default.md": "6a253f1756f74e95",
|
||||
"gsd-core/workflows/help/modes/full.md": "670392a80cbcbd7d",
|
||||
"gsd-core/workflows/help/modes/topic.md": "cee80e0adfa3b06c",
|
||||
"gsd-core/workflows/import.md": "029cacf530aca86b",
|
||||
"gsd-core/workflows/import.md": "757e310c6a5cefad",
|
||||
"gsd-core/workflows/inbox.md": "797c287852eb8957",
|
||||
"gsd-core/workflows/ingest-docs.md": "78ba04ca39f28e8d",
|
||||
"gsd-core/workflows/ingest-docs.md": "657708e6aa00d107",
|
||||
"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": "fc1e8daaf8d40bf0",
|
||||
"gsd-core/workflows/map-codebase.md": "0a2a653ed1603784",
|
||||
"gsd-core/workflows/map-codebase.md": "ba6f267cb754ed31",
|
||||
"gsd-core/workflows/milestone-summary.md": "1fdbae19ad06a0a3",
|
||||
"gsd-core/workflows/mvp-phase.md": "e3c4cade4fe69408",
|
||||
"gsd-core/workflows/new-milestone.md": "f2b8fdcd1a19d378",
|
||||
"gsd-core/workflows/new-project.md": "0ff192c54373ab8a",
|
||||
"gsd-core/workflows/new-milestone.md": "a07bf1c998a99a33",
|
||||
"gsd-core/workflows/new-project.md": "f4ff85b9a6fc52aa",
|
||||
"gsd-core/workflows/new-workspace.md": "8c2b60fbbf241e03",
|
||||
"gsd-core/workflows/next.md": "d48cea140a5153cb",
|
||||
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
|
||||
@@ -281,7 +281,7 @@
|
||||
"gsd-core/workflows/onboard.md": "20c28136423d40ac",
|
||||
"gsd-core/workflows/pause-work.md": "93fcc1c845da6396",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "7880866ee1caf923",
|
||||
"gsd-core/workflows/plan-phase.md": "8b1522804296adfd",
|
||||
"gsd-core/workflows/plan-phase.md": "4a8e4d1886efd959",
|
||||
"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",
|
||||
@@ -290,13 +290,13 @@
|
||||
"gsd-core/workflows/pr-branch.md": "acd59f915d018ad4",
|
||||
"gsd-core/workflows/profile-user.md": "c4313672b81b5bcd",
|
||||
"gsd-core/workflows/progress.md": "7b6b9564b34fcabb",
|
||||
"gsd-core/workflows/quick.md": "71fbcf38e2305de0",
|
||||
"gsd-core/workflows/quick.md": "baff92603ade7489",
|
||||
"gsd-core/workflows/reapply-patches.md": "d449a23d3acf6379",
|
||||
"gsd-core/workflows/remove-phase.md": "e7a6af429b36e77b",
|
||||
"gsd-core/workflows/remove-workspace.md": "b5e60fbb33b3e33a",
|
||||
"gsd-core/workflows/resume-project.md": "82cfe1b8cb17c085",
|
||||
"gsd-core/workflows/review.md": "805bea46bed56bd8",
|
||||
"gsd-core/workflows/scan.md": "12c11b2edc165df9",
|
||||
"gsd-core/workflows/scan.md": "389025e963d0e502",
|
||||
"gsd-core/workflows/secure-phase.md": "185a15d389951e6e",
|
||||
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
|
||||
"gsd-core/workflows/settings-advanced.md": "2f86ec7b998f9485",
|
||||
@@ -320,7 +320,7 @@
|
||||
"gsd-core/workflows/update.md": "79aaf4b8f1f83045",
|
||||
"gsd-core/workflows/validate-phase.md": "bf16fd7ff71286b2",
|
||||
"gsd-core/workflows/verify-phase.md": "382490481d794ed5",
|
||||
"gsd-core/workflows/verify-work.md": "cce8ae44b30957f1",
|
||||
"gsd-core/workflows/verify-work.md": "5044f0a73bc6a136",
|
||||
"hooks/gsd-windsurf-pre-command.js": "7467a8a63e354aad",
|
||||
"hooks/gsd-windsurf-pre-write.js": "1c8a776d7ae2dcce",
|
||||
"scripts/changeset/README.md": "86ff89331dfd94b2",
|
||||
|
||||
24
tests/fixtures/golden-install-parity/zcode.json
vendored
24
tests/fixtures/golden-install-parity/zcode.json
vendored
@@ -292,8 +292,8 @@
|
||||
"gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075",
|
||||
"gsd-core/workflows/code-review.md": "c877ad812b4a511e",
|
||||
"gsd-core/workflows/complete-milestone.md": "c1f91b77f4ace7f2",
|
||||
"gsd-core/workflows/debug.md": "98c8ed5af882ef8f",
|
||||
"gsd-core/workflows/diagnose-issues.md": "aa8d787db8f3c46c",
|
||||
"gsd-core/workflows/debug.md": "79c2f7dc12815e30",
|
||||
"gsd-core/workflows/diagnose-issues.md": "804ad766100d93ea",
|
||||
"gsd-core/workflows/discovery-phase.md": "3ba7cfb89fb1e761",
|
||||
"gsd-core/workflows/discuss-phase-assumptions.md": "f5b765d33eba4f88",
|
||||
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
|
||||
@@ -314,7 +314,7 @@
|
||||
"gsd-core/workflows/docs-update.md": "f35922d15b7061c9",
|
||||
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
|
||||
"gsd-core/workflows/eval-review.md": "f898936e2cfe4130",
|
||||
"gsd-core/workflows/execute-phase.md": "19fffcd1a2d76d4e",
|
||||
"gsd-core/workflows/execute-phase.md": "945cab2f2b2d6fc7",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "4e265392b3f2ba0e",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
|
||||
@@ -332,19 +332,19 @@
|
||||
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
|
||||
"gsd-core/workflows/help/modes/full.md": "dda8f6d101b0870d",
|
||||
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
|
||||
"gsd-core/workflows/import.md": "3d3fa603ceb8bc9f",
|
||||
"gsd-core/workflows/import.md": "12c6cbcbdecb6392",
|
||||
"gsd-core/workflows/inbox.md": "437f981ef9ae7b26",
|
||||
"gsd-core/workflows/ingest-docs.md": "c859921c811ac11b",
|
||||
"gsd-core/workflows/ingest-docs.md": "f7c3fa659ca77bc5",
|
||||
"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": "3ba7a3e8213c4b23",
|
||||
"gsd-core/workflows/map-codebase.md": "83d750aade709983",
|
||||
"gsd-core/workflows/map-codebase.md": "8fb02d635a86d6b2",
|
||||
"gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043",
|
||||
"gsd-core/workflows/mvp-phase.md": "344dd300e0cc1e74",
|
||||
"gsd-core/workflows/new-milestone.md": "83bf5593e94c3377",
|
||||
"gsd-core/workflows/new-project.md": "fdb53bee6b4178ad",
|
||||
"gsd-core/workflows/new-milestone.md": "6227eaddad367bc5",
|
||||
"gsd-core/workflows/new-project.md": "2e00175f2297f8fb",
|
||||
"gsd-core/workflows/new-workspace.md": "017688423110ed66",
|
||||
"gsd-core/workflows/next.md": "13fb800f2472d970",
|
||||
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
|
||||
@@ -352,7 +352,7 @@
|
||||
"gsd-core/workflows/onboard.md": "6f9e6c0b484271a9",
|
||||
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
|
||||
"gsd-core/workflows/plan-phase.md": "142484d37dfb94ed",
|
||||
"gsd-core/workflows/plan-phase.md": "8fdc4b795e10670b",
|
||||
"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",
|
||||
@@ -361,13 +361,13 @@
|
||||
"gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b",
|
||||
"gsd-core/workflows/profile-user.md": "e23bea0a69c0bb4b",
|
||||
"gsd-core/workflows/progress.md": "9457fb10437c9402",
|
||||
"gsd-core/workflows/quick.md": "7ad8d250c536c4dd",
|
||||
"gsd-core/workflows/quick.md": "5331f238c75a821f",
|
||||
"gsd-core/workflows/reapply-patches.md": "39050f72601aec89",
|
||||
"gsd-core/workflows/remove-phase.md": "df9a45f0b1880999",
|
||||
"gsd-core/workflows/remove-workspace.md": "a7ca66db6b7c132c",
|
||||
"gsd-core/workflows/resume-project.md": "f28da1200e4545f4",
|
||||
"gsd-core/workflows/review.md": "f1fbefbd64bd890e",
|
||||
"gsd-core/workflows/scan.md": "003883d71c37da7d",
|
||||
"gsd-core/workflows/scan.md": "e6424af05656725a",
|
||||
"gsd-core/workflows/secure-phase.md": "22ab3bb5da494ea7",
|
||||
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
|
||||
"gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44",
|
||||
@@ -391,7 +391,7 @@
|
||||
"gsd-core/workflows/update.md": "dc580dee13f881a6",
|
||||
"gsd-core/workflows/validate-phase.md": "ce9890f21c6e5607",
|
||||
"gsd-core/workflows/verify-phase.md": "d26a2c3269340caf",
|
||||
"gsd-core/workflows/verify-work.md": "63b3f680d8f0a6f3",
|
||||
"gsd-core/workflows/verify-work.md": "86c6f0c77b5adc72",
|
||||
"scripts/changeset/README.md": "86ff89331dfd94b2",
|
||||
"scripts/changeset/cli.cjs": "68f92a344b199271",
|
||||
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132",
|
||||
|
||||
@@ -281,6 +281,30 @@ function toPosixPath(p) {
|
||||
return p == null ? p : p.split(path.sep).join('/');
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the expected absolute, POSIX-normalized `.planning/...` path for a
|
||||
* given fixture root — the shape #2376's init/state path-field output now
|
||||
* emits (anchored on process.cwd() / --cwd) instead of the historical
|
||||
* relative literal.
|
||||
*
|
||||
* Centralizes the identical inline `absPlanningPath` helper previously
|
||||
* duplicated across tests/quick-research.test.cjs, tests/init.test.cjs,
|
||||
* tests/onboard-command.test.cjs, and tests/roadmap-parser.test.cjs.
|
||||
*
|
||||
* Callers MUST pass a realpath'd fixture root (e.g.
|
||||
* `fs.realpathSync(createTempProject())`) so the expected value matches
|
||||
* what a spawned child process actually resolves via `process.cwd()` — on
|
||||
* macOS `os.tmpdir()` is a symlink (`/var/...` -> `/private/var/...`) that
|
||||
* the child's cwd resolves through but a bare `mkdtempSync()` does not.
|
||||
*
|
||||
* @param {string} base - fixture root (should be realpath'd by the caller).
|
||||
* @param {...string} segments - path segments under `.planning/`.
|
||||
* @returns {string} POSIX-normalized absolute path.
|
||||
*/
|
||||
function absPlanningPath(base, ...segments) {
|
||||
return toPosixPath(path.join(base, '.planning', ...segments));
|
||||
}
|
||||
|
||||
/**
|
||||
* Run an npm command via execFileSync with cross-platform portability.
|
||||
*
|
||||
@@ -426,4 +450,4 @@ function resetRuntimeWarningCaches() {
|
||||
modelResolver._resetModelOverrideWarningCacheForTests();
|
||||
}
|
||||
|
||||
module.exports = { runGsdTools, createTempDir, createTempProject, createTempGitProject, cleanup, parseFrontmatter, isUsageOutput, captureConsole, toPosixPath, runNpm, isolatedNpmEnv, withIsolatedProcessState, delay, waitFor, resetRuntimeWarningCaches, TOOLS_PATH };
|
||||
module.exports = { runGsdTools, createTempDir, createTempProject, createTempGitProject, cleanup, parseFrontmatter, isUsageOutput, captureConsole, toPosixPath, absPlanningPath, runNpm, isolatedNpmEnv, withIsolatedProcessState, delay, waitFor, resetRuntimeWarningCaches, TOOLS_PATH };
|
||||
|
||||
@@ -6,15 +6,20 @@ const { test, describe, beforeEach, afterEach } = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { runGsdTools, cleanup } = require('./helpers.cjs');
|
||||
const { runGsdTools, cleanup, absPlanningPath } = require('./helpers.cjs');
|
||||
const { createFixture, seedPhase } = require('./fixtures/index.cjs');
|
||||
const { createTempProject } = require('./helpers.cjs');
|
||||
const { createTempProject, createTempDir } = require('./helpers.cjs');
|
||||
|
||||
describe('init commands', () => {
|
||||
let tmpDir;
|
||||
|
||||
beforeEach(() => {
|
||||
tmpDir = createFixture();
|
||||
// #2376 macOS fix: realpath the fixture root so absolute path-field
|
||||
// assertions (absPlanningPath comparisons below) match the code's
|
||||
// process.cwd()-anchored output — macOS's tmpdir is a symlink
|
||||
// (/var/... -> /private/var/...) that a spawned child resolves via
|
||||
// realpath but `createFixture()` does not. No-op on Linux (no symlink).
|
||||
tmpDir = fs.realpathSync(createFixture());
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
@@ -30,9 +35,12 @@ describe('init commands', () => {
|
||||
assert.ok(result.success, `Command failed: ${result.error}`);
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
assert.strictEqual(output.state_path, '.planning/STATE.md');
|
||||
assert.strictEqual(output.roadmap_path, '.planning/ROADMAP.md');
|
||||
assert.strictEqual(output.config_path, '.planning/config.json');
|
||||
assert.strictEqual(output.state_path, absPlanningPath(tmpDir, 'STATE.md'));
|
||||
assert.strictEqual(output.roadmap_path, absPlanningPath(tmpDir, 'ROADMAP.md'));
|
||||
assert.strictEqual(output.config_path, absPlanningPath(tmpDir, 'config.json'));
|
||||
// #2376: execute-phase.md's verify_phase_goal step reads this instead of
|
||||
// hardcoding '.planning/REQUIREMENTS.md' into the gsd-verifier spawn prompt.
|
||||
assert.strictEqual(output.requirements_path, absPlanningPath(tmpDir, 'REQUIREMENTS.md'));
|
||||
});
|
||||
|
||||
test('init execute-phase respects model_overrides for executor_model', () => {
|
||||
@@ -81,13 +89,13 @@ describe('init commands', () => {
|
||||
assert.ok(result.success, `Command failed: ${result.error}`);
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
assert.strictEqual(output.state_path, '.planning/STATE.md');
|
||||
assert.strictEqual(output.roadmap_path, '.planning/ROADMAP.md');
|
||||
assert.strictEqual(output.requirements_path, '.planning/REQUIREMENTS.md');
|
||||
assert.strictEqual(output.context_path, '.planning/phases/03-api/03-CONTEXT.md');
|
||||
assert.strictEqual(output.research_path, '.planning/phases/03-api/03-RESEARCH.md');
|
||||
assert.strictEqual(output.verification_path, '.planning/phases/03-api/03-VERIFICATION.md');
|
||||
assert.strictEqual(output.uat_path, '.planning/phases/03-api/03-UAT.md');
|
||||
assert.strictEqual(output.state_path, absPlanningPath(tmpDir, 'STATE.md'));
|
||||
assert.strictEqual(output.roadmap_path, absPlanningPath(tmpDir, 'ROADMAP.md'));
|
||||
assert.strictEqual(output.requirements_path, absPlanningPath(tmpDir, 'REQUIREMENTS.md'));
|
||||
assert.strictEqual(output.context_path, absPlanningPath(tmpDir, 'phases', '03-api', '03-CONTEXT.md'));
|
||||
assert.strictEqual(output.research_path, absPlanningPath(tmpDir, 'phases', '03-api', '03-RESEARCH.md'));
|
||||
assert.strictEqual(output.verification_path, absPlanningPath(tmpDir, 'phases', '03-api', '03-VERIFICATION.md'));
|
||||
assert.strictEqual(output.uat_path, absPlanningPath(tmpDir, 'phases', '03-api', '03-UAT.md'));
|
||||
});
|
||||
|
||||
// #2056: normalizePhaseName() strips ANY [A-Z][A-Z0-9_]*- prefix as a project
|
||||
@@ -133,7 +141,7 @@ describe('init commands', () => {
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
assert.strictEqual(output.phase_found, true, 'LKML-01 (own project code) must resolve');
|
||||
assert.strictEqual(output.phase_dir, '.planning/phases/LKML-01-stable-baseline-on-main');
|
||||
assert.strictEqual(output.phase_dir, absPlanningPath(tmpDir, 'phases', 'LKML-01-stable-baseline-on-main'));
|
||||
assert.strictEqual(output.phase_number, 'LKML-01');
|
||||
});
|
||||
|
||||
@@ -154,7 +162,7 @@ describe('init commands', () => {
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
assert.strictEqual(output.phase_found, true, 'a real MEM-01-* dir must resolve under its own prefix');
|
||||
assert.strictEqual(output.phase_dir, '.planning/phases/MEM-01-integration');
|
||||
assert.strictEqual(output.phase_dir, absPlanningPath(tmpDir, 'phases', 'MEM-01-integration'));
|
||||
assert.strictEqual(output.phase_number, 'MEM-01');
|
||||
});
|
||||
|
||||
@@ -237,7 +245,7 @@ describe('init commands', () => {
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
assert.strictEqual(output.phase_found, true, 'a real MEM-01-* dir must resolve under its own prefix');
|
||||
assert.strictEqual(output.phase_dir, '.planning/phases/MEM-01-integration');
|
||||
assert.strictEqual(output.phase_dir, absPlanningPath(tmpDir, 'phases', 'MEM-01-integration'));
|
||||
});
|
||||
|
||||
test('#2104 — init verify-work resolves a real foreign-prefixed phase dir', () => {
|
||||
@@ -303,10 +311,10 @@ describe('init commands', () => {
|
||||
assert.ok(result.success, `Command failed: ${result.error}`);
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
assert.strictEqual(output.state_path, '.planning/STATE.md');
|
||||
assert.strictEqual(output.roadmap_path, '.planning/ROADMAP.md');
|
||||
assert.strictEqual(output.project_path, '.planning/PROJECT.md');
|
||||
assert.strictEqual(output.config_path, '.planning/config.json');
|
||||
assert.strictEqual(output.state_path, absPlanningPath(tmpDir, 'STATE.md'));
|
||||
assert.strictEqual(output.roadmap_path, absPlanningPath(tmpDir, 'ROADMAP.md'));
|
||||
assert.strictEqual(output.project_path, absPlanningPath(tmpDir, 'PROJECT.md'));
|
||||
assert.strictEqual(output.config_path, absPlanningPath(tmpDir, 'config.json'));
|
||||
});
|
||||
|
||||
test('init phase-op returns core and optional phase file paths', () => {
|
||||
@@ -321,13 +329,13 @@ describe('init commands', () => {
|
||||
assert.ok(result.success, `Command failed: ${result.error}`);
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
assert.strictEqual(output.state_path, '.planning/STATE.md');
|
||||
assert.strictEqual(output.roadmap_path, '.planning/ROADMAP.md');
|
||||
assert.strictEqual(output.requirements_path, '.planning/REQUIREMENTS.md');
|
||||
assert.strictEqual(output.context_path, '.planning/phases/03-api/03-CONTEXT.md');
|
||||
assert.strictEqual(output.research_path, '.planning/phases/03-api/03-RESEARCH.md');
|
||||
assert.strictEqual(output.verification_path, '.planning/phases/03-api/03-VERIFICATION.md');
|
||||
assert.strictEqual(output.uat_path, '.planning/phases/03-api/03-UAT.md');
|
||||
assert.strictEqual(output.state_path, absPlanningPath(tmpDir, 'STATE.md'));
|
||||
assert.strictEqual(output.roadmap_path, absPlanningPath(tmpDir, 'ROADMAP.md'));
|
||||
assert.strictEqual(output.requirements_path, absPlanningPath(tmpDir, 'REQUIREMENTS.md'));
|
||||
assert.strictEqual(output.context_path, absPlanningPath(tmpDir, 'phases', '03-api', '03-CONTEXT.md'));
|
||||
assert.strictEqual(output.research_path, absPlanningPath(tmpDir, 'phases', '03-api', '03-RESEARCH.md'));
|
||||
assert.strictEqual(output.verification_path, absPlanningPath(tmpDir, 'phases', '03-api', '03-VERIFICATION.md'));
|
||||
assert.strictEqual(output.uat_path, absPlanningPath(tmpDir, 'phases', '03-api', '03-UAT.md'));
|
||||
});
|
||||
|
||||
test('init plan-phase detects has_reviews and reviews_path when REVIEWS.md exists', () => {
|
||||
@@ -340,7 +348,7 @@ describe('init commands', () => {
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
assert.strictEqual(output.has_reviews, true);
|
||||
assert.strictEqual(output.reviews_path, '.planning/phases/03-api/03-REVIEWS.md');
|
||||
assert.strictEqual(output.reviews_path, absPlanningPath(tmpDir, 'phases', '03-api', '03-REVIEWS.md'));
|
||||
});
|
||||
|
||||
test('init plan-phase omits optional paths if files missing', () => {
|
||||
@@ -961,7 +969,8 @@ describe('cmdInitTodos', () => {
|
||||
let tmpDir;
|
||||
|
||||
beforeEach(() => {
|
||||
tmpDir = createFixture();
|
||||
// #2376 macOS fix: see 'init commands' beforeEach above.
|
||||
tmpDir = fs.realpathSync(createFixture());
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
@@ -1010,7 +1019,7 @@ describe('cmdInitTodos', () => {
|
||||
assert.strictEqual(task1.title, 'Fix bug');
|
||||
assert.strictEqual(task1.area, 'backend');
|
||||
assert.strictEqual(task1.created, '2026-02-25');
|
||||
assert.strictEqual(task1.path, '.planning/todos/pending/task-1.md');
|
||||
assert.strictEqual(task1.path, absPlanningPath(tmpDir, 'todos', 'pending', 'task-1.md'));
|
||||
});
|
||||
|
||||
// ── #2337: init todos must surface severity too, in parity with list-todos ──
|
||||
@@ -1589,7 +1598,8 @@ describe('cmdInitQuick', () => {
|
||||
let tmpDir;
|
||||
|
||||
beforeEach(() => {
|
||||
tmpDir = createFixture();
|
||||
// #2376 macOS fix: see 'init commands' beforeEach above.
|
||||
tmpDir = fs.realpathSync(createFixture());
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
@@ -1609,12 +1619,14 @@ describe('cmdInitQuick', () => {
|
||||
assert.ok(/^\d{6}-[0-9a-z]{3}$/.test(output.quick_id),
|
||||
`quick_id should match YYMMDD-xxx, got: "${output.quick_id}"`);
|
||||
|
||||
// task_dir must use the new ID format
|
||||
assert.ok(output.task_dir.startsWith('.planning/quick/'),
|
||||
`task_dir should start with .planning/quick/, got: "${output.task_dir}"`);
|
||||
// task_dir must use the new ID format, absolute (anchored on tmpDir) — #2376.
|
||||
const quickDirAbs = absPlanningPath(tmpDir, 'quick');
|
||||
assert.ok(output.task_dir.startsWith(`${quickDirAbs}/`),
|
||||
`task_dir should start with ${quickDirAbs}/, got: "${output.task_dir}"`);
|
||||
assert.ok(output.task_dir.endsWith('-fix-login-bug'),
|
||||
`task_dir should end with -fix-login-bug, got: "${output.task_dir}"`);
|
||||
assert.ok(/^\.planning\/quick\/\d{6}-[0-9a-z]{3}-fix-login-bug$/.test(output.task_dir),
|
||||
const taskDirRel = output.task_dir.slice(quickDirAbs.length + 1);
|
||||
assert.ok(/^\d{6}-[0-9a-z]{3}-fix-login-bug$/.test(taskDirRel),
|
||||
`task_dir format wrong: "${output.task_dir}"`);
|
||||
|
||||
// next_num must NOT be present
|
||||
@@ -1919,7 +1931,8 @@ describe('cmdInitNewMilestone', () => {
|
||||
let tmpDir;
|
||||
|
||||
beforeEach(() => {
|
||||
tmpDir = createFixture();
|
||||
// #2376 macOS fix: see 'init commands' beforeEach above.
|
||||
tmpDir = fs.realpathSync(createFixture());
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
@@ -1937,9 +1950,9 @@ describe('cmdInitNewMilestone', () => {
|
||||
assert.ok('synthesizer_model' in output, 'Should have synthesizer_model');
|
||||
assert.ok('roadmapper_model' in output, 'Should have roadmapper_model');
|
||||
assert.ok('commit_docs' in output, 'Should have commit_docs');
|
||||
assert.strictEqual(output.project_path, '.planning/PROJECT.md');
|
||||
assert.strictEqual(output.roadmap_path, '.planning/ROADMAP.md');
|
||||
assert.strictEqual(output.state_path, '.planning/STATE.md');
|
||||
assert.strictEqual(output.project_path, absPlanningPath(tmpDir, 'PROJECT.md'));
|
||||
assert.strictEqual(output.roadmap_path, absPlanningPath(tmpDir, 'ROADMAP.md'));
|
||||
assert.strictEqual(output.state_path, absPlanningPath(tmpDir, 'STATE.md'));
|
||||
});
|
||||
|
||||
test('file existence flags reflect actual state', () => {
|
||||
@@ -1981,7 +1994,7 @@ describe('cmdInitNewMilestone', () => {
|
||||
assert.strictEqual(output.latest_completed_milestone, 'v1.2');
|
||||
assert.strictEqual(output.latest_completed_milestone_name, 'Search Refresh');
|
||||
assert.strictEqual(output.phase_dir_count, 2);
|
||||
assert.strictEqual(output.phase_archive_path, '.planning/milestones/v1.2-phases');
|
||||
assert.strictEqual(output.phase_archive_path, absPlanningPath(tmpDir, 'milestones', 'v1.2-phases'));
|
||||
});
|
||||
|
||||
test('reset flow metadata is null-safe when no milestones file exists', () => {
|
||||
@@ -2249,7 +2262,8 @@ describe('init handlers honor GSD_WORKSTREAM (ADR-0006 planningPaths consumption
|
||||
let tmpDir;
|
||||
|
||||
beforeEach(() => {
|
||||
tmpDir = createFixture();
|
||||
// #2376 macOS fix: see 'init commands' beforeEach above.
|
||||
tmpDir = fs.realpathSync(createFixture());
|
||||
buildWsFixture(tmpDir, 'wsx');
|
||||
});
|
||||
|
||||
@@ -2263,13 +2277,13 @@ describe('init handlers honor GSD_WORKSTREAM (ADR-0006 planningPaths consumption
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
// Positive: paths must be workstream-scoped
|
||||
assert.strictEqual(output.state_path, '.planning/workstreams/wsx/STATE.md');
|
||||
assert.strictEqual(output.roadmap_path, '.planning/workstreams/wsx/ROADMAP.md');
|
||||
assert.strictEqual(output.config_path, '.planning/workstreams/wsx/config.json');
|
||||
assert.strictEqual(output.state_path, absPlanningPath(tmpDir, 'workstreams', 'wsx', 'STATE.md'));
|
||||
assert.strictEqual(output.roadmap_path, absPlanningPath(tmpDir, 'workstreams', 'wsx', 'ROADMAP.md'));
|
||||
assert.strictEqual(output.config_path, absPlanningPath(tmpDir, 'workstreams', 'wsx', 'config.json'));
|
||||
// Goodhart both-directions: must NOT be the flat form
|
||||
assert.notStrictEqual(output.state_path, '.planning/STATE.md');
|
||||
assert.notStrictEqual(output.roadmap_path, '.planning/ROADMAP.md');
|
||||
assert.notStrictEqual(output.config_path, '.planning/config.json');
|
||||
assert.notStrictEqual(output.state_path, absPlanningPath(tmpDir, 'STATE.md'));
|
||||
assert.notStrictEqual(output.roadmap_path, absPlanningPath(tmpDir, 'ROADMAP.md'));
|
||||
assert.notStrictEqual(output.config_path, absPlanningPath(tmpDir, 'config.json'));
|
||||
// phase_dir is emitted and must be workstream-scoped
|
||||
assert.ok(
|
||||
output.phase_dir && output.phase_dir.includes('workstreams/wsx'),
|
||||
@@ -2286,9 +2300,9 @@ describe('init handlers honor GSD_WORKSTREAM (ADR-0006 planningPaths consumption
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
// Flat paths must be returned when no workstream is active
|
||||
assert.strictEqual(output.state_path, '.planning/STATE.md');
|
||||
assert.strictEqual(output.roadmap_path, '.planning/ROADMAP.md');
|
||||
assert.strictEqual(output.config_path, '.planning/config.json');
|
||||
assert.strictEqual(output.state_path, absPlanningPath(tmpDir, 'STATE.md'));
|
||||
assert.strictEqual(output.roadmap_path, absPlanningPath(tmpDir, 'ROADMAP.md'));
|
||||
assert.strictEqual(output.config_path, absPlanningPath(tmpDir, 'config.json'));
|
||||
// Phase is NOT found in flat .planning/phases/ (only exists under workstream)
|
||||
assert.strictEqual(output.phase_found, false,
|
||||
'phase should not be found in flat path when only workstream fixture exists');
|
||||
@@ -2344,7 +2358,8 @@ describe('init handlers honor GSD_WORKSTREAM (ADR-0006 planningPaths consumption
|
||||
let tmpDir;
|
||||
|
||||
beforeEach(() => {
|
||||
tmpDir = createFixture();
|
||||
// #2376 macOS fix: see 'init commands' beforeEach above.
|
||||
tmpDir = fs.realpathSync(createFixture());
|
||||
buildWsFixture(tmpDir, 'wsx');
|
||||
});
|
||||
|
||||
@@ -2358,12 +2373,12 @@ describe('init handlers honor GSD_WORKSTREAM (ADR-0006 planningPaths consumption
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
// Path fields must be scoped to the workstream
|
||||
assert.strictEqual(output.state_path, '.planning/workstreams/wsx/STATE.md');
|
||||
assert.strictEqual(output.roadmap_path, '.planning/workstreams/wsx/ROADMAP.md');
|
||||
assert.strictEqual(output.requirements_path, '.planning/workstreams/wsx/REQUIREMENTS.md');
|
||||
assert.strictEqual(output.state_path, absPlanningPath(tmpDir, 'workstreams', 'wsx', 'STATE.md'));
|
||||
assert.strictEqual(output.roadmap_path, absPlanningPath(tmpDir, 'workstreams', 'wsx', 'ROADMAP.md'));
|
||||
assert.strictEqual(output.requirements_path, absPlanningPath(tmpDir, 'workstreams', 'wsx', 'REQUIREMENTS.md'));
|
||||
// Must NOT be flat
|
||||
assert.notStrictEqual(output.state_path, '.planning/STATE.md');
|
||||
assert.notStrictEqual(output.roadmap_path, '.planning/ROADMAP.md');
|
||||
assert.notStrictEqual(output.state_path, absPlanningPath(tmpDir, 'STATE.md'));
|
||||
assert.notStrictEqual(output.roadmap_path, absPlanningPath(tmpDir, 'ROADMAP.md'));
|
||||
// phase_dir is workstream-scoped and phase is found
|
||||
assert.strictEqual(output.phase_found, true);
|
||||
assert.ok(
|
||||
@@ -2377,9 +2392,9 @@ describe('init handlers honor GSD_WORKSTREAM (ADR-0006 planningPaths consumption
|
||||
assert.ok(result.success, `Command failed: ${result.error}`);
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
assert.strictEqual(output.state_path, '.planning/STATE.md');
|
||||
assert.strictEqual(output.roadmap_path, '.planning/ROADMAP.md');
|
||||
assert.strictEqual(output.requirements_path, '.planning/REQUIREMENTS.md');
|
||||
assert.strictEqual(output.state_path, absPlanningPath(tmpDir, 'STATE.md'));
|
||||
assert.strictEqual(output.roadmap_path, absPlanningPath(tmpDir, 'ROADMAP.md'));
|
||||
assert.strictEqual(output.requirements_path, absPlanningPath(tmpDir, 'REQUIREMENTS.md'));
|
||||
// Phase only exists under workstream, so not found via flat path
|
||||
assert.strictEqual(output.phase_found, false);
|
||||
});
|
||||
@@ -2391,7 +2406,8 @@ describe('init handlers honor GSD_WORKSTREAM (ADR-0006 planningPaths consumption
|
||||
let tmpDir;
|
||||
|
||||
beforeEach(() => {
|
||||
tmpDir = createFixture();
|
||||
// #2376 macOS fix: see 'init commands' beforeEach above.
|
||||
tmpDir = fs.realpathSync(createFixture());
|
||||
buildWsFixture(tmpDir, 'wsx');
|
||||
});
|
||||
|
||||
@@ -2412,9 +2428,9 @@ describe('init handlers honor GSD_WORKSTREAM (ADR-0006 planningPaths consumption
|
||||
`phase_dir should include workstreams/wsx, got: ${output.phase_dir}`
|
||||
);
|
||||
// Path fields are workstream-scoped
|
||||
assert.strictEqual(output.state_path, '.planning/workstreams/wsx/STATE.md');
|
||||
assert.strictEqual(output.roadmap_path, '.planning/workstreams/wsx/ROADMAP.md');
|
||||
assert.notStrictEqual(output.state_path, '.planning/STATE.md');
|
||||
assert.strictEqual(output.state_path, absPlanningPath(tmpDir, 'workstreams', 'wsx', 'STATE.md'));
|
||||
assert.strictEqual(output.roadmap_path, absPlanningPath(tmpDir, 'workstreams', 'wsx', 'ROADMAP.md'));
|
||||
assert.notStrictEqual(output.state_path, absPlanningPath(tmpDir, 'STATE.md'));
|
||||
});
|
||||
|
||||
test('phase-op WITHOUT GSD_WORKSTREAM does not find workstream-only phase (negative discrimination)', () => {
|
||||
@@ -2426,8 +2442,8 @@ describe('init handlers honor GSD_WORKSTREAM (ADR-0006 planningPaths consumption
|
||||
assert.strictEqual(output.phase_found, false,
|
||||
'phase_found must be false: phase only exists under workstream path');
|
||||
// Flat paths are emitted
|
||||
assert.strictEqual(output.state_path, '.planning/STATE.md');
|
||||
assert.strictEqual(output.roadmap_path, '.planning/ROADMAP.md');
|
||||
assert.strictEqual(output.state_path, absPlanningPath(tmpDir, 'STATE.md'));
|
||||
assert.strictEqual(output.roadmap_path, absPlanningPath(tmpDir, 'ROADMAP.md'));
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -2480,6 +2496,283 @@ describe('#1912 — init.progress fails safe in workstream mode with no active w
|
||||
});
|
||||
});
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
// #2376: init.* path-shaped output fields must resolve regardless of the
|
||||
// calling process's own cwd — not just the orchestrator's cwd. A spawned
|
||||
// subagent's actual filesystem cwd can legitimately differ from the
|
||||
// orchestrator's (e.g. a worktree), and every `*_path`/`*_dir` field handed
|
||||
// to it must still resolve to the real file. These tests spawn gsd-tools with
|
||||
// its OS-level process cwd pointed at an unrelated decoy directory while
|
||||
// passing the real project root via `--cwd` — reproducing exactly the
|
||||
// cwd-mismatch the bug hides behind, without relying on incidental absence
|
||||
// of `.planning/` at the test runner's own cwd.
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
describe('#2376 — init.* path fields resolve when process cwd differs from --cwd project root', () => {
|
||||
let projectDir;
|
||||
let decoyDir;
|
||||
|
||||
beforeEach(() => {
|
||||
projectDir = createFixture();
|
||||
decoyDir = createTempDir('gsd-2376-decoy-');
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
cleanup(projectDir);
|
||||
cleanup(decoyDir);
|
||||
});
|
||||
|
||||
test('init plan-phase emits absolute path fields that resolve from a different process cwd', () => {
|
||||
seedPhase(projectDir, '03-api', {
|
||||
'03-CONTEXT.md': '# Phase Context',
|
||||
});
|
||||
fs.writeFileSync(path.join(projectDir, '.planning', 'STATE.md'), '# State\n');
|
||||
fs.writeFileSync(path.join(projectDir, '.planning', 'ROADMAP.md'), '# Roadmap\n');
|
||||
fs.writeFileSync(path.join(projectDir, '.planning', 'REQUIREMENTS.md'), '# Requirements\n');
|
||||
|
||||
const result = runGsdTools(['init', 'plan-phase', '03', '--cwd', projectDir], decoyDir);
|
||||
assert.ok(result.success, `Command failed: ${result.error}`);
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
for (const field of ['state_path', 'roadmap_path', 'requirements_path', 'context_path', 'phase_dir']) {
|
||||
const value = output[field];
|
||||
assert.ok(value, `${field} should be present, got: ${JSON.stringify(value)}`);
|
||||
assert.ok(path.isAbsolute(value), `${field} must be absolute, got: "${value}"`);
|
||||
// Resolve AS-IS — no joining against decoyDir or process.cwd() — the
|
||||
// string itself must locate the real, already-committed file/dir.
|
||||
assert.ok(fs.existsSync(value), `${field} must resolve to the real file/dir: "${value}"`);
|
||||
}
|
||||
});
|
||||
|
||||
test('init verify-work now emits absolute state_path/roadmap_path (previously absent)', () => {
|
||||
seedPhase(projectDir, '03-api', {
|
||||
'03-01-PLAN.md': '# Plan',
|
||||
'03-01-SUMMARY.md': '# Summary',
|
||||
});
|
||||
fs.writeFileSync(path.join(projectDir, '.planning', 'STATE.md'), '# State\n');
|
||||
fs.writeFileSync(path.join(projectDir, '.planning', 'ROADMAP.md'), '# Roadmap\n');
|
||||
|
||||
const result = runGsdTools(['init', 'verify-work', '03', '--cwd', projectDir], decoyDir);
|
||||
assert.ok(result.success, `Command failed: ${result.error}`);
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
assert.ok('state_path' in output, 'cmdInitVerifyWork must now emit state_path (#2376)');
|
||||
assert.ok('roadmap_path' in output, 'cmdInitVerifyWork must now emit roadmap_path (#2376)');
|
||||
for (const field of ['state_path', 'roadmap_path']) {
|
||||
assert.ok(path.isAbsolute(output[field]), `${field} must be absolute, got: "${output[field]}"`);
|
||||
assert.ok(fs.existsSync(output[field]), `${field} must resolve to the real file: "${output[field]}"`);
|
||||
}
|
||||
});
|
||||
|
||||
test('init phase-op emits absolute path fields that resolve from a different process cwd', () => {
|
||||
seedPhase(projectDir, '03-api', {
|
||||
'03-CONTEXT.md': '# Phase Context',
|
||||
'03-RESEARCH.md': '# Research',
|
||||
});
|
||||
fs.writeFileSync(path.join(projectDir, '.planning', 'STATE.md'), '# State\n');
|
||||
fs.writeFileSync(path.join(projectDir, '.planning', 'ROADMAP.md'), '# Roadmap\n');
|
||||
fs.writeFileSync(path.join(projectDir, '.planning', 'REQUIREMENTS.md'), '# Requirements\n');
|
||||
|
||||
const result = runGsdTools(['init', 'phase-op', '03', '--cwd', projectDir], decoyDir);
|
||||
assert.ok(result.success, `Command failed: ${result.error}`);
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
for (const field of ['phase_dir', 'state_path', 'roadmap_path', 'requirements_path', 'context_path', 'research_path']) {
|
||||
const value = output[field];
|
||||
assert.ok(value, `${field} should be present, got: ${JSON.stringify(value)}`);
|
||||
assert.ok(path.isAbsolute(value), `${field} must be absolute, got: "${value}"`);
|
||||
assert.ok(fs.existsSync(value), `${field} must resolve to the real file/dir: "${value}"`);
|
||||
}
|
||||
});
|
||||
|
||||
test('init todos emits absolute pending_dir/completed_dir and per-todo path fields', () => {
|
||||
const pendingDir = path.join(projectDir, '.planning', 'todos', 'pending');
|
||||
fs.mkdirSync(pendingDir, { recursive: true });
|
||||
fs.writeFileSync(path.join(pendingDir, 'task-1.md'), 'title: Fix bug\narea: backend\ncreated: 2026-02-25');
|
||||
|
||||
const result = runGsdTools(['init', 'todos', '--cwd', projectDir], decoyDir);
|
||||
assert.ok(result.success, `Command failed: ${result.error}`);
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
assert.ok(path.isAbsolute(output.pending_dir), `pending_dir must be absolute, got: "${output.pending_dir}"`);
|
||||
assert.ok(fs.existsSync(output.pending_dir), `pending_dir must resolve to the real directory: "${output.pending_dir}"`);
|
||||
assert.ok(path.isAbsolute(output.completed_dir), `completed_dir must be absolute, got: "${output.completed_dir}"`);
|
||||
|
||||
const todo = output.todos.find((t) => t.file === 'task-1.md');
|
||||
assert.ok(todo, 'task-1.md should be present in todos');
|
||||
assert.ok(path.isAbsolute(todo.path), `todo.path must be absolute, got: "${todo.path}"`);
|
||||
assert.ok(fs.existsSync(todo.path), `todo.path must resolve to the real file: "${todo.path}"`);
|
||||
});
|
||||
|
||||
test('init new-project emits absolute requirements_path/roadmap_path/config_path/research_dir (previously absent)', () => {
|
||||
fs.writeFileSync(path.join(projectDir, '.planning', 'REQUIREMENTS.md'), '# Requirements\n');
|
||||
fs.writeFileSync(path.join(projectDir, '.planning', 'ROADMAP.md'), '# Roadmap\n');
|
||||
fs.writeFileSync(path.join(projectDir, '.planning', 'config.json'), '{}\n');
|
||||
fs.mkdirSync(path.join(projectDir, '.planning', 'research'), { recursive: true });
|
||||
|
||||
const result = runGsdTools(['init', 'new-project', '--cwd', projectDir], decoyDir);
|
||||
assert.ok(result.success, `Command failed: ${result.error}`);
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
for (const field of ['requirements_path', 'roadmap_path', 'config_path', 'research_dir']) {
|
||||
assert.ok(field in output, `cmdInitNewProject must now emit ${field} (#2376)`);
|
||||
const value = output[field];
|
||||
assert.ok(path.isAbsolute(value), `${field} must be absolute, got: "${value}"`);
|
||||
assert.ok(fs.existsSync(value), `${field} must resolve to the real file/dir: "${value}"`);
|
||||
}
|
||||
});
|
||||
|
||||
test('init new-milestone emits absolute requirements_path/config_path/research_dir/milestones_path (previously absent)', () => {
|
||||
fs.writeFileSync(path.join(projectDir, '.planning', 'REQUIREMENTS.md'), '# Requirements\n');
|
||||
fs.writeFileSync(path.join(projectDir, '.planning', 'config.json'), '{}\n');
|
||||
fs.writeFileSync(path.join(projectDir, '.planning', 'MILESTONES.md'), '# Milestones\n');
|
||||
fs.mkdirSync(path.join(projectDir, '.planning', 'research'), { recursive: true });
|
||||
|
||||
const result = runGsdTools(['init', 'new-milestone', '--cwd', projectDir], decoyDir);
|
||||
assert.ok(result.success, `Command failed: ${result.error}`);
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
for (const field of ['requirements_path', 'config_path', 'research_dir', 'milestones_path']) {
|
||||
assert.ok(field in output, `cmdInitNewMilestone must now emit ${field} (#2376)`);
|
||||
const value = output[field];
|
||||
assert.ok(path.isAbsolute(value), `${field} must be absolute, got: "${value}"`);
|
||||
assert.ok(fs.existsSync(value), `${field} must resolve to the real file/dir: "${value}"`);
|
||||
}
|
||||
});
|
||||
|
||||
test('init ingest-docs emits absolute requirements_path/roadmap_path/state_path/intel_dir/conflicts_path (previously absent)', () => {
|
||||
fs.writeFileSync(path.join(projectDir, '.planning', 'REQUIREMENTS.md'), '# Requirements\n');
|
||||
fs.writeFileSync(path.join(projectDir, '.planning', 'ROADMAP.md'), '# Roadmap\n');
|
||||
fs.writeFileSync(path.join(projectDir, '.planning', 'STATE.md'), '# State\n');
|
||||
fs.mkdirSync(path.join(projectDir, '.planning', 'intel'), { recursive: true });
|
||||
|
||||
const result = runGsdTools(['init', 'ingest-docs', '--cwd', projectDir], decoyDir);
|
||||
assert.ok(result.success, `Command failed: ${result.error}`);
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
for (const field of ['requirements_path', 'roadmap_path', 'state_path', 'intel_dir']) {
|
||||
assert.ok(field in output, `cmdInitIngestDocs must now emit ${field} (#2376)`);
|
||||
const value = output[field];
|
||||
assert.ok(path.isAbsolute(value), `${field} must be absolute, got: "${value}"`);
|
||||
assert.ok(fs.existsSync(value), `${field} must resolve to the real file/dir: "${value}"`);
|
||||
}
|
||||
// conflicts_path is written by the synthesizer, not present at init time —
|
||||
// assert absolute-shape only, not existence.
|
||||
assert.ok('conflicts_path' in output, 'cmdInitIngestDocs must now emit conflicts_path (#2376)');
|
||||
assert.ok(path.isAbsolute(output.conflicts_path), `conflicts_path must be absolute, got: "${output.conflicts_path}"`);
|
||||
});
|
||||
|
||||
test('init map-codebase emits absolute codebase_dir that resolves from a different process cwd', () => {
|
||||
const codebaseDir = path.join(projectDir, '.planning', 'codebase');
|
||||
fs.mkdirSync(codebaseDir, { recursive: true });
|
||||
fs.writeFileSync(path.join(codebaseDir, 'STACK.md'), '# Stack');
|
||||
|
||||
const result = runGsdTools(['init', 'map-codebase', '--cwd', projectDir], decoyDir);
|
||||
assert.ok(result.success, `Command failed: ${result.error}`);
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
assert.ok('codebase_dir' in output, 'cmdInitMapCodebase must emit codebase_dir (#2376)');
|
||||
assert.ok(path.isAbsolute(output.codebase_dir), `codebase_dir must be absolute, got: "${output.codebase_dir}"`);
|
||||
assert.ok(fs.existsSync(output.codebase_dir), `codebase_dir must resolve to the real directory: "${output.codebase_dir}"`);
|
||||
});
|
||||
|
||||
// allow-test-rule: source-text-is-the-product (see #2376)
|
||||
test('gsd-core/workflows/verify-work.md plan_gap_closure step references {state_path}/{roadmap_path}, not bare .planning literals', () => {
|
||||
const wfPath = path.join(__dirname, '..', 'gsd-core', 'workflows', 'verify-work.md');
|
||||
const content = fs.readFileSync(wfPath, 'utf8');
|
||||
const stepMatch = content.match(/<step name="plan_gap_closure">[\s\S]*?<\/step>/);
|
||||
assert.ok(stepMatch, 'plan_gap_closure step should exist in verify-work.md');
|
||||
const step = stepMatch[0];
|
||||
assert.ok(step.includes('{state_path}'), 'plan_gap_closure must reference {state_path} from init JSON, not a bare literal');
|
||||
assert.ok(step.includes('{roadmap_path}'), 'plan_gap_closure must reference {roadmap_path} from init JSON, not a bare literal');
|
||||
assert.ok(!step.includes('.planning/STATE.md'), 'plan_gap_closure must not hardcode .planning/STATE.md (#2376)');
|
||||
assert.ok(!step.includes('.planning/ROADMAP.md'), 'plan_gap_closure must not hardcode .planning/ROADMAP.md (#2376)');
|
||||
});
|
||||
|
||||
// allow-test-rule: source-text-is-the-product (see #2376)
|
||||
test('gsd-core/workflows/diagnose-issues.md debug agent spawn references {state_path}, not a bare .planning literal', () => {
|
||||
const wfPath = path.join(__dirname, '..', 'gsd-core', 'workflows', 'diagnose-issues.md');
|
||||
const content = fs.readFileSync(wfPath, 'utf8');
|
||||
assert.ok(content.includes('{state_path}'), 'debug agent spawn must reference {state_path} from init JSON, not a bare literal');
|
||||
assert.ok(!content.includes('.planning/STATE.md'), 'debug agent spawn must not hardcode .planning/STATE.md (#2376)');
|
||||
});
|
||||
|
||||
// allow-test-rule: source-text-is-the-product (see #2376)
|
||||
test('gsd-core/workflows/execute-phase.md verify_phase_goal step references {requirements_path}, not a bare .planning literal', () => {
|
||||
const wfPath = path.join(__dirname, '..', 'gsd-core', 'workflows', 'execute-phase.md');
|
||||
const content = fs.readFileSync(wfPath, 'utf8');
|
||||
const stepMatch = content.match(/<step name="verify_phase_goal">[\s\S]*?<\/step>/);
|
||||
assert.ok(stepMatch, 'verify_phase_goal step should exist in execute-phase.md');
|
||||
const step = stepMatch[0];
|
||||
assert.ok(step.includes('{requirements_path}'), 'verify_phase_goal must reference {requirements_path} from init JSON, not a bare literal');
|
||||
assert.ok(!step.includes('.planning/REQUIREMENTS.md'), 'verify_phase_goal must not hardcode .planning/REQUIREMENTS.md (#2376)');
|
||||
});
|
||||
|
||||
// allow-test-rule: source-text-is-the-product (see #2376)
|
||||
//
|
||||
// Checks verbatim presence of the exact edited <files_to_read>/output blocks
|
||||
// rather than scanning the whole file for absence of the old literals: several
|
||||
// of those literals (e.g. .planning/PROJECT.md, .planning/config.json) remain
|
||||
// legitimately elsewhere in this file in orchestrator-local bash/doc-table
|
||||
// text that never reaches a spawned subagent — only the three specific
|
||||
// Agent(prompt=...) blocks touched by #2376 needed to change.
|
||||
test('gsd-core/workflows/new-project.md synthesizer/roadmapper spawns reference {research_dir}/{project_path}/{requirements_path}/{roadmap_path}/{config_path}, not bare .planning literals', () => {
|
||||
const wfPath = path.join(__dirname, '..', 'gsd-core', 'workflows', 'new-project.md');
|
||||
const content = fs.readFileSync(wfPath, 'utf8');
|
||||
|
||||
assert.ok(content.includes(
|
||||
'<files_to_read>\n- {research_dir}/STACK.md\n- {research_dir}/FEATURES.md\n- {research_dir}/ARCHITECTURE.md\n- {research_dir}/PITFALLS.md\n</files_to_read>'
|
||||
), 'research-synthesizer spawn must read from {research_dir}, not bare .planning/research/*.md literals');
|
||||
assert.ok(content.includes('Write to: {research_dir}/SUMMARY.md'),
|
||||
'research-synthesizer spawn must write to {research_dir}/SUMMARY.md, not a bare literal');
|
||||
|
||||
assert.ok(content.includes(
|
||||
'<files_to_read>\n- {project_path} (Project context)\n- {requirements_path} (v1 Requirements)\n- {research_dir}/SUMMARY.md (Research findings - if exists)\n- {config_path} (Granularity and mode settings)\n</files_to_read>'
|
||||
), 'roadmapper spawn must read from {project_path}/{requirements_path}/{research_dir}/{config_path}, not bare .planning literals');
|
||||
|
||||
assert.ok(content.includes(
|
||||
'<files_to_read>\n - {roadmap_path} (Current roadmap to revise)\n </files_to_read>'
|
||||
), 'roadmapper revision spawn must read {roadmap_path}, not a bare .planning/ROADMAP.md literal');
|
||||
});
|
||||
|
||||
// allow-test-rule: source-text-is-the-product (see #2376)
|
||||
test('gsd-core/workflows/new-milestone.md synthesizer/roadmapper spawns reference {research_dir}/{project_path}/{requirements_path}/{config_path}/{milestones_path}, not bare .planning literals', () => {
|
||||
const wfPath = path.join(__dirname, '..', 'gsd-core', 'workflows', 'new-milestone.md');
|
||||
const content = fs.readFileSync(wfPath, 'utf8');
|
||||
|
||||
assert.ok(content.includes(
|
||||
'<files_to_read>\n- {research_dir}/STACK.md\n- {research_dir}/FEATURES.md\n- {research_dir}/ARCHITECTURE.md\n- {research_dir}/PITFALLS.md\n</files_to_read>'
|
||||
), 'research-synthesizer spawn must read from {research_dir}, not bare .planning/research/*.md literals');
|
||||
assert.ok(content.includes('Write to: {research_dir}/SUMMARY.md'),
|
||||
'research-synthesizer spawn must write to {research_dir}/SUMMARY.md, not a bare literal');
|
||||
|
||||
assert.ok(content.includes(
|
||||
'<files_to_read>\n- {project_path}\n- {requirements_path}\n- {research_dir}/SUMMARY.md (if exists)\n- {config_path}\n- {milestones_path}\n</files_to_read>'
|
||||
), 'roadmapper spawn must read from {project_path}/{requirements_path}/{research_dir}/{config_path}/{milestones_path}, not bare .planning literals');
|
||||
});
|
||||
|
||||
// allow-test-rule: source-text-is-the-product (see #2376)
|
||||
test('gsd-core/workflows/ingest-docs.md classifier/synthesizer/roadmapper spawns reference {intel_dir}/{conflicts_path}/{project_path}/{requirements_path}/{roadmap_path}/{state_path}, not bare .planning literals', () => {
|
||||
const wfPath = path.join(__dirname, '..', 'gsd-core', 'workflows', 'ingest-docs.md');
|
||||
const content = fs.readFileSync(wfPath, 'utf8');
|
||||
|
||||
assert.ok(content.includes('`OUTPUT_DIR` — `{intel_dir}/classifications`'),
|
||||
'gsd-doc-classifier spawn OUTPUT_DIR must reference {intel_dir}, not a bare .planning/intel/classifications/ literal');
|
||||
|
||||
assert.ok(content.includes(
|
||||
'CLASSIFICATIONS_DIR: {intel_dir}/classifications\n INTEL_DIR: {intel_dir}\n CONFLICTS_PATH: {conflicts_path}'
|
||||
), 'gsd-doc-synthesizer spawn must reference {intel_dir}/{conflicts_path}, not bare .planning literals');
|
||||
|
||||
assert.ok(content.includes(
|
||||
'Intel: {intel_dir}/SYNTHESIS.md (entry point)\n Per-type intel: {intel_dir}/decisions.md, {intel_dir}/requirements.md, {intel_dir}/constraints.md, {intel_dir}/context.md'
|
||||
), 'gsd-roadmapper spawn must reference {intel_dir}, not bare .planning/intel/*.md literals');
|
||||
|
||||
assert.ok(content.includes(
|
||||
'Produce:\n - {project_path}\n - {requirements_path}\n - {roadmap_path}\n - {state_path}'
|
||||
), 'gsd-roadmapper spawn Produce block must reference absolute path fields, not bare .planning literals');
|
||||
});
|
||||
});
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
// roadmap analyze command
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
@@ -7,7 +7,7 @@ const { describe, test, beforeEach, afterEach } = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { runGsdTools, cleanup } = require('./helpers.cjs');
|
||||
const { runGsdTools, cleanup, absPlanningPath } = require('./helpers.cjs');
|
||||
const { createFixture } = require('./fixtures/index.cjs');
|
||||
|
||||
const ROOT = path.join(__dirname, '..');
|
||||
@@ -18,7 +18,12 @@ describe('init onboard public CLI projection', () => {
|
||||
let tmpDir;
|
||||
|
||||
beforeEach(() => {
|
||||
tmpDir = createFixture({ planning: false, projectDoc: false });
|
||||
// #2376 macOS fix: realpath the fixture root so absolute path-field
|
||||
// assertions (absPlanningPath comparisons below) match the code's
|
||||
// process.cwd()-anchored output — macOS's tmpdir is a symlink
|
||||
// (/var/... -> /private/var/...) that a spawned child resolves via
|
||||
// realpath but createFixture() does not. No-op on Linux (no symlink).
|
||||
tmpDir = fs.realpathSync(createFixture({ planning: false, projectDoc: false }));
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
@@ -142,7 +147,7 @@ describe('init onboard public CLI projection', () => {
|
||||
assert.strictEqual(parsed.has_codebase_map, true);
|
||||
assert.deepStrictEqual(parsed.missing_codebase_map_files, []);
|
||||
assert.strictEqual(parsed.onboarding_summary_exists, true);
|
||||
assert.strictEqual(parsed.onboarding_summary_path, '.planning/onboarding/SUMMARY.md');
|
||||
assert.strictEqual(parsed.onboarding_summary_path, absPlanningPath(tmpDir, 'onboarding', 'SUMMARY.md'));
|
||||
assert.strictEqual(parsed.text_mode, true);
|
||||
});
|
||||
|
||||
@@ -224,7 +229,7 @@ describe('init onboard public CLI projection', () => {
|
||||
// Once project setup is complete, a fast map must not misroute back to the
|
||||
// pre-new-project complete-map handoff; onboarding advances to the summary.
|
||||
assert.strictEqual(parsed.next_action.kind, 'write-summary');
|
||||
assert.strictEqual(parsed.next_action.summary_path, '.planning/onboarding/SUMMARY.md');
|
||||
assert.strictEqual(parsed.next_action.summary_path, absPlanningPath(tmpDir, 'onboarding', 'SUMMARY.md'));
|
||||
});
|
||||
|
||||
test('fast mode routes incomplete planning to partial-planning before the complete-map gate (regression #1990: fast map gate misroute)', () => {
|
||||
@@ -259,7 +264,8 @@ describe('init onboard public CLI projection', () => {
|
||||
});
|
||||
|
||||
cleanup(tmpDir);
|
||||
tmpDir = createFixture({ planning: false, projectDoc: false });
|
||||
// #2376 macOS fix: see beforeEach above.
|
||||
tmpDir = fs.realpathSync(createFixture({ planning: false, projectDoc: false }));
|
||||
fs.mkdirSync(path.join(tmpDir, 'docs', 'adr'), { recursive: true });
|
||||
fs.writeFileSync(path.join(tmpDir, 'docs', 'adr', '0001-runtime.md'), '# ADR: Runtime\n');
|
||||
result = runGsdTools('init onboard --raw', tmpDir, { HOME: tmpDir });
|
||||
@@ -271,7 +277,8 @@ describe('init onboard public CLI projection', () => {
|
||||
});
|
||||
|
||||
cleanup(tmpDir);
|
||||
tmpDir = createFixture({ planning: false, projectDoc: false });
|
||||
// #2376 macOS fix: see beforeEach above.
|
||||
tmpDir = fs.realpathSync(createFixture({ planning: false, projectDoc: false }));
|
||||
result = runGsdTools('init onboard --raw', tmpDir, { HOME: tmpDir });
|
||||
assert.ok(result.success, `init onboard should succeed: ${result.error}`);
|
||||
assert.deepStrictEqual(JSON.parse(result.output).next_action, {
|
||||
@@ -281,7 +288,8 @@ describe('init onboard public CLI projection', () => {
|
||||
});
|
||||
|
||||
cleanup(tmpDir);
|
||||
tmpDir = createFixture({ planning: false, projectDoc: false });
|
||||
// #2376 macOS fix: see beforeEach above.
|
||||
tmpDir = fs.realpathSync(createFixture({ planning: false, projectDoc: false }));
|
||||
fs.mkdirSync(path.join(tmpDir, '.planning'), { recursive: true });
|
||||
fs.writeFileSync(path.join(tmpDir, '.planning', 'PROJECT.md'), '# Project\n');
|
||||
fs.writeFileSync(path.join(tmpDir, '.planning', 'ROADMAP.md'), '# Roadmap\n');
|
||||
@@ -301,7 +309,7 @@ describe('init onboard public CLI projection', () => {
|
||||
assert.ok(result.success, `init onboard should succeed: ${result.error}`);
|
||||
assert.deepStrictEqual(JSON.parse(result.output).next_action, {
|
||||
kind: 'write-summary',
|
||||
summary_path: '.planning/onboarding/SUMMARY.md',
|
||||
summary_path: absPlanningPath(tmpDir, 'onboarding', 'SUMMARY.md'),
|
||||
reason: 'Onboarding summary is missing.',
|
||||
});
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ const { test, describe, beforeEach, afterEach } = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { runGsdTools, createTempProject, cleanup } = require('./helpers.cjs');
|
||||
const { runGsdTools, createTempProject, cleanup, absPlanningPath } = require('./helpers.cjs');
|
||||
|
||||
const COMMANDS_DIR = path.join(__dirname, '..', 'commands', 'gsd');
|
||||
const WORKFLOWS_DIR = path.join(__dirname, '..', 'gsd-core', 'workflows');
|
||||
@@ -163,7 +163,12 @@ describe('quick task: research file in task directory', () => {
|
||||
let tmpDir;
|
||||
|
||||
beforeEach(() => {
|
||||
tmpDir = createTempProject();
|
||||
// #2376 macOS fix: realpath the fixture root so absolute path-field
|
||||
// assertions (absPlanningPath comparisons below) match the code's
|
||||
// process.cwd()-anchored output — macOS's tmpdir is a symlink
|
||||
// (/var/... -> /private/var/...) that a spawned child resolves via
|
||||
// realpath but createTempProject() does not. No-op on Linux (no symlink).
|
||||
tmpDir = fs.realpathSync(createTempProject());
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
@@ -176,8 +181,11 @@ describe('quick task: research file in task directory', () => {
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
assert.ok(output.task_dir, 'task_dir should be non-null');
|
||||
// #2376: task_dir is now absolute (anchored on tmpDir), not the historical
|
||||
// relative literal.
|
||||
const quickDirAbs = absPlanningPath(tmpDir, 'quick');
|
||||
assert.ok(
|
||||
output.task_dir.startsWith('.planning/quick/'),
|
||||
output.task_dir.startsWith(`${quickDirAbs}/`),
|
||||
'task_dir should be under .planning/quick/'
|
||||
);
|
||||
|
||||
|
||||
@@ -1024,7 +1024,7 @@ const assert = require('node:assert/strict');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const os = require('os');
|
||||
const { runGsdTools, cleanup } = require('./helpers.cjs');
|
||||
const { runGsdTools, cleanup, absPlanningPath } = require('./helpers.cjs');
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Shared fixture content
|
||||
@@ -1061,7 +1061,12 @@ const ROADMAP_CONTENT = `# Roadmap: Example
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
function createBareProject() {
|
||||
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-test-730-'));
|
||||
// #2376 macOS fix: realpath the fixture root so absolute path-field
|
||||
// assertions (absPlanningPath comparisons below) match the code's
|
||||
// process.cwd()-anchored output — macOS's tmpdir is a symlink
|
||||
// (/var/... -> /private/var/...) that a spawned child resolves via
|
||||
// realpath but a bare mkdtempSync() does not. No-op on Linux (no symlink).
|
||||
const tmpDir = fs.realpathSync(fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-test-730-')));
|
||||
fs.mkdirSync(path.join(tmpDir, '.planning'), { recursive: true });
|
||||
return tmpDir;
|
||||
}
|
||||
@@ -1095,7 +1100,7 @@ describe('bug #730 — milestone (Phase Details) section scope resolution', () =
|
||||
assert.strictEqual(out.phase_found, true, `phase_found should be true; got phase_found=${out.phase_found}, expected_phase_dir=${out.expected_phase_dir}`);
|
||||
assert.strictEqual(out.phase_name, 'Feature', `phase_name should be 'Feature'; got '${out.phase_name}'`);
|
||||
assert.strictEqual(out.padded_phase, '02', `padded_phase should be '02'; got '${out.padded_phase}'`);
|
||||
assert.strictEqual(out.expected_phase_dir, '.planning/phases/02-feature', `expected_phase_dir should be '.planning/phases/02-feature'; got '${out.expected_phase_dir}'`);
|
||||
assert.strictEqual(out.expected_phase_dir, absPlanningPath(dir, 'phases', '02-feature'), `expected_phase_dir should be '${absPlanningPath(dir, 'phases', '02-feature')}'; got '${out.expected_phase_dir}'`);
|
||||
});
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
@@ -1188,7 +1193,8 @@ describe('bug #730 — milestone (Phase Details) section scope resolution', () =
|
||||
// Test 5: three-milestone roadmap, current = latest (v1.2)
|
||||
// -------------------------------------------------------------------------
|
||||
test('init phase-op resolves the latest milestone phase in a 3-milestone roadmap', () => {
|
||||
const localDir = fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-test-730-t5-'));
|
||||
// #2376 macOS fix: see createBareProject() above.
|
||||
const localDir = fs.realpathSync(fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-test-730-t5-')));
|
||||
try {
|
||||
const planning = path.join(localDir, '.planning');
|
||||
fs.mkdirSync(planning, { recursive: true });
|
||||
@@ -1212,7 +1218,7 @@ describe('bug #730 — milestone (Phase Details) section scope resolution', () =
|
||||
assert.strictEqual(out.phase_found, true, `phase_found should be true; got phase_found=${out.phase_found}`);
|
||||
assert.strictEqual(out.phase_name, 'Polish', `phase_name should be 'Polish'; got '${out.phase_name}'`);
|
||||
assert.strictEqual(out.padded_phase, '03', `padded_phase should be '03'; got '${out.padded_phase}'`);
|
||||
assert.strictEqual(out.expected_phase_dir, '.planning/phases/03-polish', `expected_phase_dir should be '.planning/phases/03-polish'; got '${out.expected_phase_dir}'`);
|
||||
assert.strictEqual(out.expected_phase_dir, absPlanningPath(localDir, 'phases', '03-polish'), `expected_phase_dir should be '${absPlanningPath(localDir, 'phases', '03-polish')}'; got '${out.expected_phase_dir}'`);
|
||||
} finally {
|
||||
cleanup(localDir);
|
||||
}
|
||||
@@ -1223,7 +1229,8 @@ describe('bug #730 — milestone (Phase Details) section scope resolution', () =
|
||||
// cross-pollinate into the active milestone's Phase Details lookup (#730)
|
||||
// -------------------------------------------------------------------------
|
||||
test('init phase-op anchors Phase Details to the selected sub-milestone, not a closed same-prefix sibling', () => {
|
||||
const localDir = fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-test-730-t6-'));
|
||||
// #2376 macOS fix: see createBareProject() above.
|
||||
const localDir = fs.realpathSync(fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-test-730-t6-')));
|
||||
try {
|
||||
const planning = path.join(localDir, '.planning');
|
||||
fs.mkdirSync(planning, { recursive: true });
|
||||
@@ -1276,7 +1283,7 @@ describe('bug #730 — milestone (Phase Details) section scope resolution', () =
|
||||
const out = JSON.parse(r.output);
|
||||
assert.strictEqual(out.phase_found, true, `phase_found should be true; got phase_found=${out.phase_found}, output=${JSON.stringify(out)}`);
|
||||
assert.strictEqual(out.phase_name, 'Beta', `phase_name should be 'Beta' (v3.0-B section), not '${out.phase_name}' (would indicate v3.0-A cross-pollination)`);
|
||||
assert.strictEqual(out.expected_phase_dir, '.planning/phases/02-beta', `expected_phase_dir should be '.planning/phases/02-beta'; got '${out.expected_phase_dir}'`);
|
||||
assert.strictEqual(out.expected_phase_dir, absPlanningPath(localDir, 'phases', '02-beta'), `expected_phase_dir should be '${absPlanningPath(localDir, 'phases', '02-beta')}'; got '${out.expected_phase_dir}'`);
|
||||
} finally {
|
||||
cleanup(localDir);
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ const assert = require('node:assert/strict');
|
||||
const fs = require('fs');
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const { runGsdTools, createTempProject, cleanup } = require('./helpers.cjs');
|
||||
const { runGsdTools, createTempDir, createTempProject, cleanup } = require('./helpers.cjs');
|
||||
const { createFixture } = require('./fixtures/index.cjs');
|
||||
|
||||
function writePassedVerification(tmpDir, phaseDirName, paddedPhase) {
|
||||
@@ -870,6 +870,44 @@ describe('cmdStateLoad (state load)', () => {
|
||||
});
|
||||
});
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
// #2376: cmdStateLoad's *_dir/*_path fields must resolve regardless of the
|
||||
// calling process's own cwd, not just the orchestrator's — debug.md has no
|
||||
// init.* call of its own and reads debug_dir from `state load` to build
|
||||
// debug_file_path for its gsd-debug-session-manager spawns instead of
|
||||
// hardcoding '.planning/debug/{slug}.md'. See tests/init.test.cjs's matching
|
||||
// '#2376 — init.* path fields resolve...' describe block for the established
|
||||
// pattern (spawn gsd-tools with its OS-level process cwd pointed at an
|
||||
// unrelated decoy directory while passing the real project root via --cwd).
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
describe('#2376 — state load emits absolute debug_dir regardless of process cwd', () => {
|
||||
let projectDir;
|
||||
let decoyDir;
|
||||
|
||||
beforeEach(() => {
|
||||
projectDir = createFixture();
|
||||
decoyDir = createTempDir('gsd-2376-decoy-');
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
cleanup(projectDir);
|
||||
cleanup(decoyDir);
|
||||
});
|
||||
|
||||
test('state load emits absolute debug_dir field that resolves from a different process cwd (previously absent)', () => {
|
||||
fs.mkdirSync(path.join(projectDir, '.planning', 'debug'), { recursive: true });
|
||||
|
||||
const result = runGsdTools(['state', 'load', '--cwd', projectDir], decoyDir);
|
||||
assert.ok(result.success, `Command failed: ${result.error}`);
|
||||
|
||||
const output = JSON.parse(result.output);
|
||||
assert.ok('debug_dir' in output, 'cmdStateLoad must now emit debug_dir (#2376)');
|
||||
assert.ok(path.isAbsolute(output.debug_dir), `debug_dir must be absolute, got: "${output.debug_dir}"`);
|
||||
assert.ok(fs.existsSync(output.debug_dir), `debug_dir must resolve to the real directory: "${output.debug_dir}"`);
|
||||
});
|
||||
});
|
||||
|
||||
describe('cmdStateGet (state get)', () => {
|
||||
let tmpDir;
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
"code-review-fix.md": 24320,
|
||||
"code-review.md": 32524,
|
||||
"complete-milestone.md": 31071,
|
||||
"debug.md": 19031,
|
||||
"diagnose-issues.md": 12864,
|
||||
"debug.md": 19370,
|
||||
"diagnose-issues.md": 12858,
|
||||
"discovery-phase.md": 8651,
|
||||
"discuss-phase-assumptions.md": 27302,
|
||||
"discuss-phase-power.md": 11273,
|
||||
@@ -24,7 +24,7 @@
|
||||
"docs-update.md": 55706,
|
||||
"edit-phase.md": 12927,
|
||||
"eval-review.md": 9967,
|
||||
"execute-phase.md": 93395,
|
||||
"execute-phase.md": 93384,
|
||||
"execute-plan.md": 34262,
|
||||
"explore.md": 10541,
|
||||
"extract-learnings.md": 12893,
|
||||
@@ -33,19 +33,19 @@
|
||||
"graduation.md": 11622,
|
||||
"health.md": 11868,
|
||||
"help.md": 1722,
|
||||
"import.md": 14648,
|
||||
"import.md": 14636,
|
||||
"inbox.md": 14407,
|
||||
"ingest-docs.md": 18380,
|
||||
"ingest-docs.md": 18870,
|
||||
"insert-phase.md": 8987,
|
||||
"list-phase-assumptions.md": 4305,
|
||||
"list-seeds.md": 6987,
|
||||
"list-workspaces.md": 5699,
|
||||
"manager.md": 27302,
|
||||
"map-codebase.md": 20833,
|
||||
"map-codebase.md": 20817,
|
||||
"milestone-summary.md": 11842,
|
||||
"mvp-phase.md": 13626,
|
||||
"new-milestone.md": 37581,
|
||||
"new-project.md": 66182,
|
||||
"new-milestone.md": 37624,
|
||||
"new-project.md": 66184,
|
||||
"new-workspace.md": 11298,
|
||||
"next.md": 20138,
|
||||
"node-repair.md": 4173,
|
||||
@@ -53,19 +53,19 @@
|
||||
"onboard.md": 8590,
|
||||
"pause-work.md": 14441,
|
||||
"plan-milestone-gaps.md": 11809,
|
||||
"plan-phase.md": 94387,
|
||||
"plan-phase.md": 94391,
|
||||
"plan-review-convergence.md": 23713,
|
||||
"plant-seed.md": 11785,
|
||||
"pr-branch.md": 15963,
|
||||
"profile-user.md": 21246,
|
||||
"progress.md": 31789,
|
||||
"quick.md": 50699,
|
||||
"quick.md": 50993,
|
||||
"reapply-patches.md": 20312,
|
||||
"remove-phase.md": 8513,
|
||||
"remove-workspace.md": 7551,
|
||||
"resume-project.md": 17270,
|
||||
"review.md": 50497,
|
||||
"scan.md": 7732,
|
||||
"scan.md": 7728,
|
||||
"secure-phase.md": 13622,
|
||||
"session-report.md": 4044,
|
||||
"settings-advanced.md": 40019,
|
||||
@@ -89,5 +89,5 @@
|
||||
"update.md": 20914,
|
||||
"validate-phase.md": 10849,
|
||||
"verify-phase.md": 40949,
|
||||
"verify-work.md": 40247
|
||||
"verify-work.md": 40265
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user