* test(#1995): regression test for agent-<id> branch namespace Add failing-first tests proving that normalizeCleanupManifestEntry and planWorktreeRecordAgent reject Claude Code's current agent-<id> isolation branches (only worktree-agent-<id> is accepted). Boundary tests cover both namespaces plus rejection cases. * fix(#1995): widen worktree branch regex to accept agent-<id> namespace Claude Code's isolation="worktree" branch naming changed from worktree-agent-<id> to agent-<id>. Widen the regex in all 7 locations from ^worktree-agent-[A-Za-z0-9._/-]+$ to ^(worktree-)?agent-[A-Za-z0-9._/-]+$ so both namespaces are accepted. Introduce a shared WORKTREE_AGENT_BRANCH_RE constant in src/worktree-safety.cts to prevent future drift. Closes #1995 * fix(#1995): update workflow guards, test assertions, and baselines Widen the branch-check regex in execute-phase.md and execute-plan.md. Update all test assertions that checked for ^worktree-agent- to expect the widened ^(worktree-)?agent- pattern. Regenerate golden-install-parity fixtures, agent-size-baseline, and workflow-size-baseline. Closes #1995 * fix(#1995): update extractCwdGuardBash sanity check for widened regex The e2e test's sanity check verified the extracted bash block contained 'worktree-agent-'. After widening to '(worktree-)?agent-', update the check to match the new pattern. * fix(#1995): widen missed workflow-guard branch check + changeset + lint fixes - hooks/gsd-workflow-guard.js: widen startsWith('worktree-agent-') to /^(worktree-)?agent-/ regex — same defect class, was missed in prior commit - tests/worktree.test.cjs: fix indentation regression from prior edit - Add .changeset/1995-worktree-agent-branch-namespace.md (pr:0 placeholder) Found by orthogonal code review (Step 4). * fix(#1995): regenerate golden + size baselines for workflow-guard change * docs(#1995): backfill changeset PR number (2548)
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
"gsd-domain-researcher.md": 7032,
|
||||
"gsd-eval-auditor.md": 12496,
|
||||
"gsd-eval-planner.md": 7008,
|
||||
"gsd-executor.md": 47951,
|
||||
"gsd-executor.md": 47955,
|
||||
"gsd-framework-selector.md": 6778,
|
||||
"gsd-integration-checker.md": 15238,
|
||||
"gsd-intel-updater.md": 18166,
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "1db46cac3f4d9889",
|
||||
"agents/gsd-eval-auditor.md": "1b8391f1aafb067f",
|
||||
"agents/gsd-eval-planner.md": "3d10fd11147f6857",
|
||||
"agents/gsd-executor.md": "707f7f26bc2c1c59",
|
||||
"agents/gsd-executor.md": "041c6d658e8e1002",
|
||||
"agents/gsd-framework-selector.md": "daa62c79619c76bf",
|
||||
"agents/gsd-integration-checker.md": "0643cd2d779b131c",
|
||||
"agents/gsd-intel-updater.md": "26c1f1e028c6346a",
|
||||
@@ -161,7 +161,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "de7ebb43dea1d20f",
|
||||
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
|
||||
"gsd-core/references/workstream-flag.md": "225910640adbb76d",
|
||||
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
|
||||
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
|
||||
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
|
||||
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
|
||||
"gsd-core/templates/DEBUG.md": "72e93b7f650d9bae",
|
||||
@@ -247,13 +247,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "0b3023a3caa2123f",
|
||||
"gsd-core/workflows/edit-phase.md": "fc932e82ba1f585a",
|
||||
"gsd-core/workflows/eval-review.md": "9e8b169c05098b57",
|
||||
"gsd-core/workflows/execute-phase.md": "87fd9a5228df564c",
|
||||
"gsd-core/workflows/execute-phase.md": "881c9be0dec7dbb8",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "1832b97d0923fa67",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "13aa54f8279960ae",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "476f88892510a09e",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "d096e946db209caa",
|
||||
"gsd-core/workflows/execute-plan.md": "5c6fcb36e16f5bf7",
|
||||
"gsd-core/workflows/explore.md": "965e1c0ede05f40c",
|
||||
"gsd-core/workflows/extract-learnings.md": "167ea7f0e23bf496",
|
||||
"gsd-core/workflows/fast.md": "568e6c3ec00b6e00",
|
||||
@@ -347,8 +347,8 @@
|
||||
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
|
||||
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
|
||||
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
|
||||
"hooks/gsd-workflow-guard.js": "d0cea21bc596fd27",
|
||||
"hooks/gsd-worktree-path-guard.js": "4a3e534f4c6589e8",
|
||||
"hooks/gsd-workflow-guard.js": "56414206bc13b3dc",
|
||||
"hooks/gsd-worktree-path-guard.js": "5f64275e48fb8284",
|
||||
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
|
||||
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
|
||||
"hooks/managed-hooks-registry.cjs": "82a4121cbcb82756",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "671c9ea949889c4a",
|
||||
"agents/gsd-eval-auditor.md": "fcaec7b00f94c435",
|
||||
"agents/gsd-eval-planner.md": "a4a5b4b3f7828ba3",
|
||||
"agents/gsd-executor.md": "28fbb5fa6eb49c65",
|
||||
"agents/gsd-executor.md": "00d887a16c249765",
|
||||
"agents/gsd-framework-selector.md": "4b77eebbe9288d80",
|
||||
"agents/gsd-integration-checker.md": "fa53e2d78be1de74",
|
||||
"agents/gsd-intel-updater.md": "fa40e685d7441ace",
|
||||
@@ -232,7 +232,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
|
||||
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
|
||||
"gsd-core/references/workstream-flag.md": "ca99ca79e716f0f5",
|
||||
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
|
||||
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
|
||||
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
|
||||
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
|
||||
"gsd-core/templates/DEBUG.md": "c8768312f4c1e438",
|
||||
@@ -318,13 +318,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "a320371be70f43d8",
|
||||
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
|
||||
"gsd-core/workflows/eval-review.md": "32d3d7e80ab2bfc7",
|
||||
"gsd-core/workflows/execute-phase.md": "3f76c286e9cccb0b",
|
||||
"gsd-core/workflows/execute-phase.md": "f3a37602243681f9",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "f7782680c2b8ad6b",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "1d378cb25720667a",
|
||||
"gsd-core/workflows/execute-plan.md": "334bb2053908a049",
|
||||
"gsd-core/workflows/explore.md": "3f3b4f83e23349bc",
|
||||
"gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4",
|
||||
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
|
||||
@@ -418,8 +418,8 @@
|
||||
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
|
||||
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
|
||||
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
|
||||
"hooks/gsd-workflow-guard.js": "d0cea21bc596fd27",
|
||||
"hooks/gsd-worktree-path-guard.js": "48e04fd7cb10834b",
|
||||
"hooks/gsd-workflow-guard.js": "56414206bc13b3dc",
|
||||
"hooks/gsd-worktree-path-guard.js": "97c2f736d085fe8e",
|
||||
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
|
||||
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
|
||||
"hooks/managed-hooks-registry.cjs": "29a8d4fa81378d7d",
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"agents/gsd-domain-researcher.md": "f1e03df842ddfb95",
|
||||
"agents/gsd-eval-auditor.md": "d0f45fff7370bb0b",
|
||||
"agents/gsd-eval-planner.md": "9cc049b82897daa4",
|
||||
"agents/gsd-executor.md": "a140ad7b13e4af95",
|
||||
"agents/gsd-executor.md": "406dfda62f0f8428",
|
||||
"agents/gsd-framework-selector.md": "85005d716f9d98f7",
|
||||
"agents/gsd-integration-checker.md": "17a8ee731986564d",
|
||||
"agents/gsd-intel-updater.md": "4953a465db9dadc1",
|
||||
@@ -231,7 +231,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "cfaf338f42b1111e",
|
||||
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
|
||||
"gsd-core/references/workstream-flag.md": "ca99ca79e716f0f5",
|
||||
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
|
||||
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
|
||||
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
|
||||
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
|
||||
"gsd-core/templates/DEBUG.md": "0944156249103c16",
|
||||
@@ -317,13 +317,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "7aef1019ce141558",
|
||||
"gsd-core/workflows/edit-phase.md": "dbbb6191f5a8b65e",
|
||||
"gsd-core/workflows/eval-review.md": "11620e0dc4a003dd",
|
||||
"gsd-core/workflows/execute-phase.md": "cf74d39bfaa359a7",
|
||||
"gsd-core/workflows/execute-phase.md": "2604b9cb7dc66920",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "9a1f3deffb4dab14",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "a7f9b9a45303382f",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "b14d7fa2c4ec2406",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "4a7e699e43c71691",
|
||||
"gsd-core/workflows/execute-plan.md": "724d726833e222ed",
|
||||
"gsd-core/workflows/explore.md": "fabe8e5553de16c0",
|
||||
"gsd-core/workflows/extract-learnings.md": "fd75072c339b58bd",
|
||||
"gsd-core/workflows/fast.md": "7f7687b920d79b29",
|
||||
@@ -417,8 +417,8 @@
|
||||
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
|
||||
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
|
||||
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
|
||||
"hooks/gsd-workflow-guard.js": "46b287c75153458a",
|
||||
"hooks/gsd-worktree-path-guard.js": "0e236bf8ac797ee3",
|
||||
"hooks/gsd-workflow-guard.js": "41c59d9765ac36ae",
|
||||
"hooks/gsd-worktree-path-guard.js": "f65356c80c9805b2",
|
||||
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
|
||||
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
|
||||
"hooks/managed-hooks-registry.cjs": "1d955ec5d64e8a5f",
|
||||
|
||||
12
tests/fixtures/golden-install-parity/claude.json
vendored
12
tests/fixtures/golden-install-parity/claude.json
vendored
@@ -15,7 +15,7 @@
|
||||
"agents/gsd-domain-researcher.md": "5f7d366251b957fe",
|
||||
"agents/gsd-eval-auditor.md": "fea2759beff0a642",
|
||||
"agents/gsd-eval-planner.md": "112f6730f23854e3",
|
||||
"agents/gsd-executor.md": "a3c5bd2940dcf7c6",
|
||||
"agents/gsd-executor.md": "16391af53f8922bb",
|
||||
"agents/gsd-framework-selector.md": "c350ee693cb1aa4e",
|
||||
"agents/gsd-integration-checker.md": "c8b4e65dee89c8ea",
|
||||
"agents/gsd-intel-updater.md": "5b41e05f90ce89d9",
|
||||
@@ -160,7 +160,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
|
||||
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
|
||||
"gsd-core/references/workstream-flag.md": "ca99ca79e716f0f5",
|
||||
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
|
||||
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
|
||||
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
|
||||
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
|
||||
"gsd-core/templates/DEBUG.md": "0944156249103c16",
|
||||
@@ -246,13 +246,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "ea47bd2d5a0d1d85",
|
||||
"gsd-core/workflows/edit-phase.md": "8323bfe10faa0c0a",
|
||||
"gsd-core/workflows/eval-review.md": "7c2f5ff8cc4d06e5",
|
||||
"gsd-core/workflows/execute-phase.md": "78c6f46e37db9a0b",
|
||||
"gsd-core/workflows/execute-phase.md": "100b55c147922978",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "d2020c5e01c7bd7f",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "d0f2cba6b8356cac",
|
||||
"gsd-core/workflows/execute-plan.md": "da0c2286b1aed11d",
|
||||
"gsd-core/workflows/explore.md": "9348b54b526b8938",
|
||||
"gsd-core/workflows/extract-learnings.md": "d8177b0c13b7e5ee",
|
||||
"gsd-core/workflows/fast.md": "41a6568b873aef99",
|
||||
@@ -346,8 +346,8 @@
|
||||
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
|
||||
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
|
||||
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
|
||||
"hooks/gsd-workflow-guard.js": "46b287c75153458a",
|
||||
"hooks/gsd-worktree-path-guard.js": "0e236bf8ac797ee3",
|
||||
"hooks/gsd-workflow-guard.js": "41c59d9765ac36ae",
|
||||
"hooks/gsd-worktree-path-guard.js": "f65356c80c9805b2",
|
||||
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
|
||||
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
|
||||
"hooks/managed-hooks-registry.cjs": "1d955ec5d64e8a5f",
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"agents/gsd-domain-researcher.md": "0fecdaea86466a56",
|
||||
"agents/gsd-eval-auditor.md": "36c44303085df2f8",
|
||||
"agents/gsd-eval-planner.md": "3ddea88a69b4da3f",
|
||||
"agents/gsd-executor.md": "8443c52fc864d84e",
|
||||
"agents/gsd-executor.md": "a20e280c9e648f5b",
|
||||
"agents/gsd-framework-selector.md": "564669d479433f15",
|
||||
"agents/gsd-integration-checker.md": "1bbbdd3d420b994e",
|
||||
"agents/gsd-intel-updater.md": "42c40fffbc720d0b",
|
||||
@@ -164,7 +164,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
|
||||
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
|
||||
"gsd-core/references/workstream-flag.md": "19340c1a3be74ad2",
|
||||
"gsd-core/references/worktree-branch-check.md": "46882ad61f3f9075",
|
||||
"gsd-core/references/worktree-branch-check.md": "f99ec1acb76014f5",
|
||||
"gsd-core/references/worktree-path-safety.md": "8e5b4d542d2d9853",
|
||||
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
|
||||
"gsd-core/templates/DEBUG.md": "c8768312f4c1e438",
|
||||
@@ -250,13 +250,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "7eb7095ca86d506f",
|
||||
"gsd-core/workflows/edit-phase.md": "9c9fadc047c61d74",
|
||||
"gsd-core/workflows/eval-review.md": "17fc9b4c4f7e1c74",
|
||||
"gsd-core/workflows/execute-phase.md": "91a820d8ba3531fe",
|
||||
"gsd-core/workflows/execute-phase.md": "a5af949ed1092448",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "1b3558cb8f41b65a",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "35612890c1173577",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "26825e1aacf224d0",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "1d9f62898cb0e848",
|
||||
"gsd-core/workflows/execute-plan.md": "204a0ac94a4bb545",
|
||||
"gsd-core/workflows/explore.md": "db9e1a79dbe88090",
|
||||
"gsd-core/workflows/extract-learnings.md": "6f39375b7dc775f9",
|
||||
"gsd-core/workflows/fast.md": "e4f74a454b6ca5e8",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "1c1a800108a2b225",
|
||||
"agents/gsd-eval-auditor.md": "99012004b14ea602",
|
||||
"agents/gsd-eval-planner.md": "4ebdd7fe9cbb0cfe",
|
||||
"agents/gsd-executor.md": "87ae9188c389bde8",
|
||||
"agents/gsd-executor.md": "d9dca78de04bdc1c",
|
||||
"agents/gsd-framework-selector.md": "7726fccc86bfeb50",
|
||||
"agents/gsd-integration-checker.md": "2d8339790bbb2dc3",
|
||||
"agents/gsd-intel-updater.md": "c51339956197cbd3",
|
||||
@@ -232,7 +232,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
|
||||
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
|
||||
"gsd-core/references/workstream-flag.md": "ca99ca79e716f0f5",
|
||||
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
|
||||
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
|
||||
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
|
||||
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
|
||||
"gsd-core/templates/DEBUG.md": "c8768312f4c1e438",
|
||||
@@ -318,13 +318,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "a320371be70f43d8",
|
||||
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
|
||||
"gsd-core/workflows/eval-review.md": "32d3d7e80ab2bfc7",
|
||||
"gsd-core/workflows/execute-phase.md": "5c048b5144519998",
|
||||
"gsd-core/workflows/execute-phase.md": "9bc9511ebd40b7cc",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "f7782680c2b8ad6b",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "fb4e3f846505b6a5",
|
||||
"gsd-core/workflows/execute-plan.md": "874689d8678e6186",
|
||||
"gsd-core/workflows/explore.md": "3f3b4f83e23349bc",
|
||||
"gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4",
|
||||
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
|
||||
@@ -418,8 +418,8 @@
|
||||
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
|
||||
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
|
||||
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
|
||||
"hooks/gsd-workflow-guard.js": "d0cea21bc596fd27",
|
||||
"hooks/gsd-worktree-path-guard.js": "f198bb60674e9972",
|
||||
"hooks/gsd-workflow-guard.js": "56414206bc13b3dc",
|
||||
"hooks/gsd-worktree-path-guard.js": "a1a3d4618b41a804",
|
||||
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
|
||||
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
|
||||
"hooks/managed-hooks-registry.cjs": "9c0d837594c7b772",
|
||||
|
||||
10
tests/fixtures/golden-install-parity/codex.json
vendored
10
tests/fixtures/golden-install-parity/codex.json
vendored
@@ -102,8 +102,8 @@
|
||||
"agents/gsd-eval-auditor.toml": "9b81d61b3c5f722d",
|
||||
"agents/gsd-eval-planner.md": "73f2ad2ff2797a51",
|
||||
"agents/gsd-eval-planner.toml": "09468ad1a34ac468",
|
||||
"agents/gsd-executor.md": "45442cc002be7052",
|
||||
"agents/gsd-executor.toml": "bfb08e9397bcc358",
|
||||
"agents/gsd-executor.md": "697b7ed099fff17d",
|
||||
"agents/gsd-executor.toml": "9a8aa31bbde42448",
|
||||
"agents/gsd-framework-selector.md": "ebae32430887d2e0",
|
||||
"agents/gsd-framework-selector.toml": "637e4e021b7ec380",
|
||||
"agents/gsd-integration-checker.md": "9cc875676cf7d741",
|
||||
@@ -267,7 +267,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "ac45d99076067f17",
|
||||
"gsd-core/references/verify-mvp-mode.md": "78faa99df1668aab",
|
||||
"gsd-core/references/workstream-flag.md": "c764d9cbdf6faff4",
|
||||
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
|
||||
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
|
||||
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
|
||||
"gsd-core/templates/AI-SPEC.md": "6411a4789f481c15",
|
||||
"gsd-core/templates/DEBUG.md": "0be1256352e79375",
|
||||
@@ -353,13 +353,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "bf32efe90219d3dd",
|
||||
"gsd-core/workflows/edit-phase.md": "e592a4d85ce5380f",
|
||||
"gsd-core/workflows/eval-review.md": "c89a63285ead961e",
|
||||
"gsd-core/workflows/execute-phase.md": "4528ce2e8ac92566",
|
||||
"gsd-core/workflows/execute-phase.md": "e5b9fb391a90d7fb",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "cd8678d082d6e191",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "13bc99f22bc5ec10",
|
||||
"gsd-core/workflows/execute-plan.md": "e4723e1669f7c508",
|
||||
"gsd-core/workflows/explore.md": "d12f68770c65093a",
|
||||
"gsd-core/workflows/extract-learnings.md": "f716aa03fcb5f8da",
|
||||
"gsd-core/workflows/fast.md": "e4ed60f96a7b3ac8",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.agent.md": "d603239b3e9fe428",
|
||||
"agents/gsd-eval-auditor.agent.md": "3c03009564de55c8",
|
||||
"agents/gsd-eval-planner.agent.md": "14751876fc2b5f16",
|
||||
"agents/gsd-executor.agent.md": "bca7d1ab12392956",
|
||||
"agents/gsd-executor.agent.md": "6bf98b78fd75c347",
|
||||
"agents/gsd-framework-selector.agent.md": "cafeec0b3489be45",
|
||||
"agents/gsd-integration-checker.agent.md": "30439b804927acc7",
|
||||
"agents/gsd-intel-updater.agent.md": "238c1a886f35a25c",
|
||||
@@ -162,7 +162,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "a8e13ea38218638b",
|
||||
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
|
||||
"gsd-core/references/workstream-flag.md": "225910640adbb76d",
|
||||
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
|
||||
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
|
||||
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
|
||||
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
|
||||
"gsd-core/templates/DEBUG.md": "72e93b7f650d9bae",
|
||||
@@ -248,13 +248,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "f64b067d0d729f04",
|
||||
"gsd-core/workflows/edit-phase.md": "8667c28b22b1599f",
|
||||
"gsd-core/workflows/eval-review.md": "1ae2d3d3fbf72893",
|
||||
"gsd-core/workflows/execute-phase.md": "474608ed923207f1",
|
||||
"gsd-core/workflows/execute-phase.md": "ac3229160d3a3fda",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "ca37f91f7bd6f05c",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "25bebed74e645109",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "dc0b96d285327b18",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "1750549f91a86340",
|
||||
"gsd-core/workflows/execute-plan.md": "c82c959f78a1917d",
|
||||
"gsd-core/workflows/explore.md": "35431c40bb1b245a",
|
||||
"gsd-core/workflows/extract-learnings.md": "f34d0b1927545b18",
|
||||
"gsd-core/workflows/fast.md": "66821090b6b8ed3b",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "56395dbdabf076f6",
|
||||
"agents/gsd-eval-auditor.md": "ad2840fd5cd76172",
|
||||
"agents/gsd-eval-planner.md": "2049dac060d00eda",
|
||||
"agents/gsd-executor.md": "e568f8171c7d12f1",
|
||||
"agents/gsd-executor.md": "026606d319f6c338",
|
||||
"agents/gsd-framework-selector.md": "4b77eebbe9288d80",
|
||||
"agents/gsd-integration-checker.md": "5da30584d06b878c",
|
||||
"agents/gsd-intel-updater.md": "b8971c5d96e63b38",
|
||||
@@ -232,7 +232,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
|
||||
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
|
||||
"gsd-core/references/workstream-flag.md": "19c02b83bd1692bf",
|
||||
"gsd-core/references/worktree-branch-check.md": "ab004404d028cc0d",
|
||||
"gsd-core/references/worktree-branch-check.md": "46f222a2e2c2edd7",
|
||||
"gsd-core/references/worktree-path-safety.md": "66de0b35266c807d",
|
||||
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
|
||||
"gsd-core/templates/DEBUG.md": "0944156249103c16",
|
||||
@@ -318,13 +318,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "215b0122c4d2b1e5",
|
||||
"gsd-core/workflows/edit-phase.md": "8323bfe10faa0c0a",
|
||||
"gsd-core/workflows/eval-review.md": "9389c58f7384972d",
|
||||
"gsd-core/workflows/execute-phase.md": "24b8e6ea6456e8f3",
|
||||
"gsd-core/workflows/execute-phase.md": "80a4fb2d23642cd8",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "d2020c5e01c7bd7f",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "46de8e5e07946509",
|
||||
"gsd-core/workflows/execute-plan.md": "09ea0688882eb30e",
|
||||
"gsd-core/workflows/explore.md": "9348b54b526b8938",
|
||||
"gsd-core/workflows/extract-learnings.md": "d8177b0c13b7e5ee",
|
||||
"gsd-core/workflows/fast.md": "77b49793e26b3323",
|
||||
|
||||
12
tests/fixtures/golden-install-parity/hermes.json
vendored
12
tests/fixtures/golden-install-parity/hermes.json
vendored
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "412cdbb05ba252ea",
|
||||
"agents/gsd-eval-auditor.md": "4ffb265063c318e5",
|
||||
"agents/gsd-eval-planner.md": "03448fc9c5774b56",
|
||||
"agents/gsd-executor.md": "e39b2cd4ec6b3afd",
|
||||
"agents/gsd-executor.md": "3ec54684a756e830",
|
||||
"agents/gsd-framework-selector.md": "ea9981d65d6b3429",
|
||||
"agents/gsd-integration-checker.md": "35b4f2969d279871",
|
||||
"agents/gsd-intel-updater.md": "5fe5edfae2719cb8",
|
||||
@@ -161,7 +161,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
|
||||
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
|
||||
"gsd-core/references/workstream-flag.md": "50ddf79d58950730",
|
||||
"gsd-core/references/worktree-branch-check.md": "5d79e26e3b51d9ae",
|
||||
"gsd-core/references/worktree-branch-check.md": "ecfbf0e65dd8ccac",
|
||||
"gsd-core/references/worktree-path-safety.md": "fa79fcdff2aaa5f0",
|
||||
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
|
||||
"gsd-core/templates/DEBUG.md": "0944156249103c16",
|
||||
@@ -247,13 +247,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "02811dd7aa32d5ba",
|
||||
"gsd-core/workflows/edit-phase.md": "7f27003f20e88fb8",
|
||||
"gsd-core/workflows/eval-review.md": "e7cd5dfcf18e2458",
|
||||
"gsd-core/workflows/execute-phase.md": "b3d289801e4fff03",
|
||||
"gsd-core/workflows/execute-phase.md": "5adf286f7ec99a59",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "9b2193de25506b3b",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "26ee34c543926402",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "362123fdf99e9980",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "a691e3afe88031b8",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "212856ac5c291c3c",
|
||||
"gsd-core/workflows/execute-plan.md": "0c5e0455252b5a46",
|
||||
"gsd-core/workflows/explore.md": "843e66f101a56dfa",
|
||||
"gsd-core/workflows/extract-learnings.md": "e9e167c718949c0b",
|
||||
"gsd-core/workflows/fast.md": "c801145115755524",
|
||||
@@ -347,8 +347,8 @@
|
||||
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
|
||||
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
|
||||
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
|
||||
"hooks/gsd-workflow-guard.js": "46b287c75153458a",
|
||||
"hooks/gsd-worktree-path-guard.js": "7797e5fe2474ee88",
|
||||
"hooks/gsd-workflow-guard.js": "41c59d9765ac36ae",
|
||||
"hooks/gsd-worktree-path-guard.js": "37dd85a1591a4d8c",
|
||||
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
|
||||
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
|
||||
"hooks/managed-hooks-registry.cjs": "bc58c3a7609d7eae",
|
||||
|
||||
12
tests/fixtures/golden-install-parity/kilo.json
vendored
12
tests/fixtures/golden-install-parity/kilo.json
vendored
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "a3874d80bcbc7380",
|
||||
"agents/gsd-eval-auditor.md": "630d4cd3bd6ea195",
|
||||
"agents/gsd-eval-planner.md": "3db12cde12aeb2c1",
|
||||
"agents/gsd-executor.md": "14c1681bb5f7214f",
|
||||
"agents/gsd-executor.md": "bea8102bf46ddb7a",
|
||||
"agents/gsd-framework-selector.md": "ad5f2c6b9bec6270",
|
||||
"agents/gsd-integration-checker.md": "c503e2f4a3d8ec05",
|
||||
"agents/gsd-intel-updater.md": "231393da62a45b2e",
|
||||
@@ -232,7 +232,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "ac45d99076067f17",
|
||||
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
|
||||
"gsd-core/references/workstream-flag.md": "225910640adbb76d",
|
||||
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
|
||||
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
|
||||
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
|
||||
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
|
||||
"gsd-core/templates/DEBUG.md": "72e93b7f650d9bae",
|
||||
@@ -318,13 +318,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "3c0d5ef72202d246",
|
||||
"gsd-core/workflows/edit-phase.md": "8323bfe10faa0c0a",
|
||||
"gsd-core/workflows/eval-review.md": "35be91cd22a9bc11",
|
||||
"gsd-core/workflows/execute-phase.md": "7daf5ebd7eabcda8",
|
||||
"gsd-core/workflows/execute-phase.md": "3ddae43ba8ad5081",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "b1e6588cd32a6f08",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "48782aa1a714de9a",
|
||||
"gsd-core/workflows/execute-plan.md": "731d2947b623be4f",
|
||||
"gsd-core/workflows/explore.md": "e6c94f8b6f083109",
|
||||
"gsd-core/workflows/extract-learnings.md": "d8177b0c13b7e5ee",
|
||||
"gsd-core/workflows/fast.md": "41a6568b873aef99",
|
||||
@@ -418,8 +418,8 @@
|
||||
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
|
||||
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
|
||||
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
|
||||
"hooks/gsd-workflow-guard.js": "d0cea21bc596fd27",
|
||||
"hooks/gsd-worktree-path-guard.js": "4998235bdf3f64a2",
|
||||
"hooks/gsd-workflow-guard.js": "56414206bc13b3dc",
|
||||
"hooks/gsd-worktree-path-guard.js": "9734e43bee1d7d2e",
|
||||
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
|
||||
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
|
||||
"hooks/managed-hooks-registry.cjs": "b63a879b8b3436bf",
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
".kimi/hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
|
||||
".kimi/hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
|
||||
".kimi/hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
|
||||
".kimi/hooks/gsd-workflow-guard.js": "d0cea21bc596fd27",
|
||||
".kimi/hooks/gsd-worktree-path-guard.js": "b49b03fa9de7df3b",
|
||||
".kimi/hooks/gsd-workflow-guard.js": "56414206bc13b3dc",
|
||||
".kimi/hooks/gsd-worktree-path-guard.js": "d00a75505429355c",
|
||||
".kimi/hooks/lib/git-cmd.js": "268ba15992ca0b23",
|
||||
".kimi/hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
|
||||
".kimi/hooks/managed-hooks-registry.cjs": "08ec2585a3f8f132",
|
||||
@@ -44,7 +44,7 @@
|
||||
"agents/gsd-domain-researcher.md": "049f588663814fa2",
|
||||
"agents/gsd-eval-auditor.md": "54870d3b07433525",
|
||||
"agents/gsd-eval-planner.md": "552e9fa164c51ce8",
|
||||
"agents/gsd-executor.md": "1154cdd7b22f9754",
|
||||
"agents/gsd-executor.md": "98424ccf4346c9d1",
|
||||
"agents/gsd-framework-selector.md": "8a795f230436ad2e",
|
||||
"agents/gsd-integration-checker.md": "c1760a0bbd4f7bf5",
|
||||
"agents/gsd-intel-updater.md": "944f1d903e2e9e09",
|
||||
@@ -189,7 +189,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
|
||||
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
|
||||
"gsd-core/references/workstream-flag.md": "ca99ca79e716f0f5",
|
||||
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
|
||||
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
|
||||
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
|
||||
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
|
||||
"gsd-core/templates/DEBUG.md": "c8768312f4c1e438",
|
||||
@@ -275,13 +275,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "a320371be70f43d8",
|
||||
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
|
||||
"gsd-core/workflows/eval-review.md": "32d3d7e80ab2bfc7",
|
||||
"gsd-core/workflows/execute-phase.md": "f6eae507bb465c5f",
|
||||
"gsd-core/workflows/execute-phase.md": "73ffb4f5d915e410",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "f7782680c2b8ad6b",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "ca13ab9c31682a09",
|
||||
"gsd-core/workflows/execute-plan.md": "74de71f01739f7ac",
|
||||
"gsd-core/workflows/explore.md": "3f3b4f83e23349bc",
|
||||
"gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4",
|
||||
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
|
||||
|
||||
12
tests/fixtures/golden-install-parity/kimi.json
vendored
12
tests/fixtures/golden-install-parity/kimi.json
vendored
@@ -23,8 +23,8 @@
|
||||
".kimi/hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
|
||||
".kimi/hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
|
||||
".kimi/hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
|
||||
".kimi/hooks/gsd-workflow-guard.js": "d0cea21bc596fd27",
|
||||
".kimi/hooks/gsd-worktree-path-guard.js": "b49b03fa9de7df3b",
|
||||
".kimi/hooks/gsd-workflow-guard.js": "56414206bc13b3dc",
|
||||
".kimi/hooks/gsd-worktree-path-guard.js": "d00a75505429355c",
|
||||
".kimi/hooks/lib/git-cmd.js": "268ba15992ca0b23",
|
||||
".kimi/hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
|
||||
".kimi/hooks/managed-hooks-registry.cjs": "08ec2585a3f8f132",
|
||||
@@ -61,7 +61,7 @@
|
||||
"agents/subagents/gsd-eval-auditor.yaml": "e3d868bd5fefe938",
|
||||
"agents/subagents/gsd-eval-planner.md": "70f8c5727bfb9876",
|
||||
"agents/subagents/gsd-eval-planner.yaml": "df8499f7af297ec2",
|
||||
"agents/subagents/gsd-executor.md": "e37a910127d9ca5c",
|
||||
"agents/subagents/gsd-executor.md": "8fdf9332233a66bd",
|
||||
"agents/subagents/gsd-executor.yaml": "e29422986636fd64",
|
||||
"agents/subagents/gsd-framework-selector.md": "a15b7aa1e0576e16",
|
||||
"agents/subagents/gsd-framework-selector.yaml": "fb52c31cde27b0e3",
|
||||
@@ -225,7 +225,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
|
||||
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
|
||||
"gsd-core/references/workstream-flag.md": "ca99ca79e716f0f5",
|
||||
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
|
||||
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
|
||||
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
|
||||
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
|
||||
"gsd-core/templates/DEBUG.md": "c8768312f4c1e438",
|
||||
@@ -311,13 +311,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "a320371be70f43d8",
|
||||
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
|
||||
"gsd-core/workflows/eval-review.md": "32d3d7e80ab2bfc7",
|
||||
"gsd-core/workflows/execute-phase.md": "5166a4c16dce3465",
|
||||
"gsd-core/workflows/execute-phase.md": "157a97e0978bd5df",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "f7782680c2b8ad6b",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "ca13ab9c31682a09",
|
||||
"gsd-core/workflows/execute-plan.md": "74de71f01739f7ac",
|
||||
"gsd-core/workflows/explore.md": "3f3b4f83e23349bc",
|
||||
"gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4",
|
||||
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "71250e759ca9e723",
|
||||
"agents/gsd-eval-auditor.md": "c88890105f32ace6",
|
||||
"agents/gsd-eval-planner.md": "60bddb70a937f796",
|
||||
"agents/gsd-executor.md": "4946be74860ea68e",
|
||||
"agents/gsd-executor.md": "14423bfb4dee14b8",
|
||||
"agents/gsd-framework-selector.md": "1c0a10355e787675",
|
||||
"agents/gsd-integration-checker.md": "a9de5928e5a5c649",
|
||||
"agents/gsd-intel-updater.md": "493e07482fa6198a",
|
||||
@@ -232,7 +232,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "3bd98d30eee6c5a1",
|
||||
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
|
||||
"gsd-core/references/workstream-flag.md": "225910640adbb76d",
|
||||
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
|
||||
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
|
||||
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
|
||||
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
|
||||
"gsd-core/templates/DEBUG.md": "72e93b7f650d9bae",
|
||||
@@ -318,13 +318,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "f6210dc8ff7776d5",
|
||||
"gsd-core/workflows/edit-phase.md": "1876c855fb0a0a39",
|
||||
"gsd-core/workflows/eval-review.md": "1973f08d0eb34159",
|
||||
"gsd-core/workflows/execute-phase.md": "4e19bf9ead5fbafc",
|
||||
"gsd-core/workflows/execute-phase.md": "b59b9993b1da7bb8",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "a15993affd62f4bf",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "c4cba01539f0368a",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "21f4d9b3abc334ce",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "a2e611fff6af9c29",
|
||||
"gsd-core/workflows/execute-plan.md": "bb0ce725dcf12aa2",
|
||||
"gsd-core/workflows/explore.md": "a514b88e98609441",
|
||||
"gsd-core/workflows/extract-learnings.md": "92b3c0979604b7d0",
|
||||
"gsd-core/workflows/fast.md": "12187b242e6af970",
|
||||
@@ -418,8 +418,8 @@
|
||||
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
|
||||
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
|
||||
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
|
||||
"hooks/gsd-workflow-guard.js": "d0cea21bc596fd27",
|
||||
"hooks/gsd-worktree-path-guard.js": "c8f6c980305ae6fd",
|
||||
"hooks/gsd-workflow-guard.js": "56414206bc13b3dc",
|
||||
"hooks/gsd-worktree-path-guard.js": "bfef1802d491bdab",
|
||||
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
|
||||
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
|
||||
"hooks/managed-hooks-registry.cjs": "bd57cc72f482a14f",
|
||||
|
||||
10
tests/fixtures/golden-install-parity/pi.json
vendored
10
tests/fixtures/golden-install-parity/pi.json
vendored
@@ -128,7 +128,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
|
||||
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
|
||||
"gsd-core/references/workstream-flag.md": "ca99ca79e716f0f5",
|
||||
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
|
||||
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
|
||||
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
|
||||
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
|
||||
"gsd-core/templates/DEBUG.md": "c8768312f4c1e438",
|
||||
@@ -214,13 +214,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "a320371be70f43d8",
|
||||
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
|
||||
"gsd-core/workflows/eval-review.md": "32d3d7e80ab2bfc7",
|
||||
"gsd-core/workflows/execute-phase.md": "042978dd27ab0637",
|
||||
"gsd-core/workflows/execute-phase.md": "6779316ccf03982c",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "f7782680c2b8ad6b",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "5063fc252c479892",
|
||||
"gsd-core/workflows/execute-plan.md": "3168b13c3758ed84",
|
||||
"gsd-core/workflows/explore.md": "3f3b4f83e23349bc",
|
||||
"gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4",
|
||||
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
|
||||
@@ -314,8 +314,8 @@
|
||||
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
|
||||
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
|
||||
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
|
||||
"hooks/gsd-workflow-guard.js": "d0cea21bc596fd27",
|
||||
"hooks/gsd-worktree-path-guard.js": "933eefc31e3b0407",
|
||||
"hooks/gsd-workflow-guard.js": "56414206bc13b3dc",
|
||||
"hooks/gsd-worktree-path-guard.js": "ea37324fe8dfaf12",
|
||||
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
|
||||
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
|
||||
"hooks/managed-hooks-registry.cjs": "ac720a2b548ba200",
|
||||
|
||||
12
tests/fixtures/golden-install-parity/qwen.json
vendored
12
tests/fixtures/golden-install-parity/qwen.json
vendored
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "bd054bb27beed2a7",
|
||||
"agents/gsd-eval-auditor.md": "57cc7458ab5de6b7",
|
||||
"agents/gsd-eval-planner.md": "01b665728dde4ccf",
|
||||
"agents/gsd-executor.md": "a6dd5b7da329d8f2",
|
||||
"agents/gsd-executor.md": "b6baf92a0d0ab516",
|
||||
"agents/gsd-framework-selector.md": "82ba6abea84226b7",
|
||||
"agents/gsd-integration-checker.md": "90835dbc7dfa1691",
|
||||
"agents/gsd-intel-updater.md": "3cc4f6ddd04676ec",
|
||||
@@ -161,7 +161,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
|
||||
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
|
||||
"gsd-core/references/workstream-flag.md": "59804937da1ddaa9",
|
||||
"gsd-core/references/worktree-branch-check.md": "3fc21ae9462c35c8",
|
||||
"gsd-core/references/worktree-branch-check.md": "ea7fc76177f3e50d",
|
||||
"gsd-core/references/worktree-path-safety.md": "b4111595eabec186",
|
||||
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
|
||||
"gsd-core/templates/DEBUG.md": "0944156249103c16",
|
||||
@@ -247,13 +247,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "226550a6d556b09f",
|
||||
"gsd-core/workflows/edit-phase.md": "0fb5e0123cfc6f36",
|
||||
"gsd-core/workflows/eval-review.md": "88431952699d9fa6",
|
||||
"gsd-core/workflows/execute-phase.md": "8e8fc94fd3071a79",
|
||||
"gsd-core/workflows/execute-phase.md": "69c5e8a42ea9c331",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "0e0949db56deebeb",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "0b04cc2dcab61107",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "9cbf100b17f4bcb1",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "ec9026ede61e5cb9",
|
||||
"gsd-core/workflows/execute-plan.md": "ea93d7a5c3d483e8",
|
||||
"gsd-core/workflows/explore.md": "c412905fb86f3f12",
|
||||
"gsd-core/workflows/extract-learnings.md": "dd4fdb88605de49a",
|
||||
"gsd-core/workflows/fast.md": "93ed453edddd8c0c",
|
||||
@@ -347,8 +347,8 @@
|
||||
"hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38",
|
||||
"hooks/gsd-windsurf-pre-command.js": "948be1c6d14c79cd",
|
||||
"hooks/gsd-windsurf-pre-write.js": "92d4dbfbc36ab0cf",
|
||||
"hooks/gsd-workflow-guard.js": "46b287c75153458a",
|
||||
"hooks/gsd-worktree-path-guard.js": "112c3293a5baabeb",
|
||||
"hooks/gsd-workflow-guard.js": "41c59d9765ac36ae",
|
||||
"hooks/gsd-worktree-path-guard.js": "d55016621969e923",
|
||||
"hooks/lib/git-cmd.js": "268ba15992ca0b23",
|
||||
"hooks/lib/gsd-graphify-rebuild.sh": "66af89601074d2a9",
|
||||
"hooks/managed-hooks-registry.cjs": "08741ed76f1d8970",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "b80f76874c04e515",
|
||||
"agents/gsd-eval-auditor.md": "470bf16303ec4d2e",
|
||||
"agents/gsd-eval-planner.md": "22334fde85723c9d",
|
||||
"agents/gsd-executor.md": "a611d34bf51e6aec",
|
||||
"agents/gsd-executor.md": "00768988ee91ad9f",
|
||||
"agents/gsd-framework-selector.md": "7726fccc86bfeb50",
|
||||
"agents/gsd-integration-checker.md": "7cd2072984411c7f",
|
||||
"agents/gsd-intel-updater.md": "83de6ba9172891c3",
|
||||
@@ -161,7 +161,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
|
||||
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
|
||||
"gsd-core/references/workstream-flag.md": "77d0e004039fb480",
|
||||
"gsd-core/references/worktree-branch-check.md": "8de8075d76ff71cd",
|
||||
"gsd-core/references/worktree-branch-check.md": "d20c16a7b42cceee",
|
||||
"gsd-core/references/worktree-path-safety.md": "34689482908229bc",
|
||||
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
|
||||
"gsd-core/templates/DEBUG.md": "0944156249103c16",
|
||||
@@ -247,13 +247,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "89e760e665ff99f8",
|
||||
"gsd-core/workflows/edit-phase.md": "7facd0faa33c8cad",
|
||||
"gsd-core/workflows/eval-review.md": "90a29a4fa0cdd947",
|
||||
"gsd-core/workflows/execute-phase.md": "8f095f3cf2fb8f35",
|
||||
"gsd-core/workflows/execute-phase.md": "7d9ad2344ede3966",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "296b812e8d0e9ce8",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7d30384e9bf82664",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "90efedae3decaffe",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "f42ffe9e77df0bce",
|
||||
"gsd-core/workflows/execute-plan.md": "3abba98d19b31036",
|
||||
"gsd-core/workflows/explore.md": "f4d0db08c11545a8",
|
||||
"gsd-core/workflows/extract-learnings.md": "3fcc858b20d0d0e6",
|
||||
"gsd-core/workflows/fast.md": "0f05b1e008ac2fc2",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "56395dbdabf076f6",
|
||||
"agents/gsd-eval-auditor.md": "fb64fc5acf359747",
|
||||
"agents/gsd-eval-planner.md": "2049dac060d00eda",
|
||||
"agents/gsd-executor.md": "067a4f846f4e020c",
|
||||
"agents/gsd-executor.md": "10341df8e1f390bb",
|
||||
"agents/gsd-framework-selector.md": "4b77eebbe9288d80",
|
||||
"agents/gsd-integration-checker.md": "4ffb37fb230c2b90",
|
||||
"agents/gsd-intel-updater.md": "a81d77c143c02108",
|
||||
@@ -161,7 +161,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
|
||||
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
|
||||
"gsd-core/references/workstream-flag.md": "481ec11fe3e22236",
|
||||
"gsd-core/references/worktree-branch-check.md": "f6018dddf15bc1cb",
|
||||
"gsd-core/references/worktree-branch-check.md": "6a28b79d092173dd",
|
||||
"gsd-core/references/worktree-path-safety.md": "0e8a26b9b3424974",
|
||||
"gsd-core/templates/AI-SPEC.md": "24df5fe5ba34e367",
|
||||
"gsd-core/templates/DEBUG.md": "0944156249103c16",
|
||||
@@ -247,13 +247,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "6bd25d0123ee6c73",
|
||||
"gsd-core/workflows/edit-phase.md": "c0ae7d0063f3e789",
|
||||
"gsd-core/workflows/eval-review.md": "713de00ea5326988",
|
||||
"gsd-core/workflows/execute-phase.md": "bbeb787a4e0969f0",
|
||||
"gsd-core/workflows/execute-phase.md": "b28e4d8cffeb2944",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "3194ecd382690755",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "fb4497767cdf73a3",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "c54d55fad3ab5263",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "d7bc64b2d3fcff84",
|
||||
"gsd-core/workflows/execute-plan.md": "2ff04f06b000fe26",
|
||||
"gsd-core/workflows/explore.md": "e5ff3269f8ee77b6",
|
||||
"gsd-core/workflows/extract-learnings.md": "af793bdf4ffd1c8a",
|
||||
"gsd-core/workflows/fast.md": "b03b9f595892479a",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "049f588663814fa2",
|
||||
"agents/gsd-eval-auditor.md": "54870d3b07433525",
|
||||
"agents/gsd-eval-planner.md": "552e9fa164c51ce8",
|
||||
"agents/gsd-executor.md": "1154cdd7b22f9754",
|
||||
"agents/gsd-executor.md": "98424ccf4346c9d1",
|
||||
"agents/gsd-framework-selector.md": "8a795f230436ad2e",
|
||||
"agents/gsd-integration-checker.md": "c1760a0bbd4f7bf5",
|
||||
"agents/gsd-intel-updater.md": "944f1d903e2e9e09",
|
||||
@@ -232,7 +232,7 @@
|
||||
"gsd-core/references/verification-patterns.md": "72f4d4814fdae9a8",
|
||||
"gsd-core/references/verify-mvp-mode.md": "534bdc7f2432903a",
|
||||
"gsd-core/references/workstream-flag.md": "ca99ca79e716f0f5",
|
||||
"gsd-core/references/worktree-branch-check.md": "21d9c31bf6542b93",
|
||||
"gsd-core/references/worktree-branch-check.md": "161547f45f78c2bd",
|
||||
"gsd-core/references/worktree-path-safety.md": "3c8d74756f9b16a8",
|
||||
"gsd-core/templates/AI-SPEC.md": "efa1f8354bd3a24b",
|
||||
"gsd-core/templates/DEBUG.md": "c8768312f4c1e438",
|
||||
@@ -318,13 +318,13 @@
|
||||
"gsd-core/workflows/docs-update.md": "a320371be70f43d8",
|
||||
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
|
||||
"gsd-core/workflows/eval-review.md": "32d3d7e80ab2bfc7",
|
||||
"gsd-core/workflows/execute-phase.md": "479ea9fcfe74e8f8",
|
||||
"gsd-core/workflows/execute-phase.md": "0e1e8e5e3fa63587",
|
||||
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "f7782680c2b8ad6b",
|
||||
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "beedb5ddff997b5a",
|
||||
"gsd-core/workflows/execute-plan.md": "4f43b65cf80d8f2e",
|
||||
"gsd-core/workflows/explore.md": "3f3b4f83e23349bc",
|
||||
"gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4",
|
||||
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
"docs-update.md": 56494,
|
||||
"edit-phase.md": 12927,
|
||||
"eval-review.md": 10332,
|
||||
"execute-phase.md": 93368,
|
||||
"execute-plan.md": 35131,
|
||||
"execute-phase.md": 93383,
|
||||
"execute-plan.md": 35143,
|
||||
"explore.md": 11127,
|
||||
"extract-learnings.md": 12893,
|
||||
"fast.md": 7613,
|
||||
|
||||
@@ -187,10 +187,10 @@ describe('bug #2924: worktree HEAD attachment + destructive recovery', () => {
|
||||
const scripts = codeBlocks.map(({ body }) => body).join('\n');
|
||||
// Allow-list must reference the canonical Claude Code worktree-agent-<id>
|
||||
// namespace via a regex assertion (grep -Eq '^worktree-agent-...').
|
||||
const allowListRe = /grep\s+-Eq?\s+'\^worktree-agent-/;
|
||||
const allowListRe = /grep\s+-Eq?\s+'\^\(worktree-\)\?agent-/;
|
||||
assert.ok(
|
||||
allowListRe.test(scripts),
|
||||
'worktree_branch_check must enforce a positive allow-list matching ^worktree-agent-* (#2924 hardening)'
|
||||
'worktree_branch_check must enforce a positive allow-list matching ^(worktree-)?agent-* (#2924 hardening)'
|
||||
);
|
||||
});
|
||||
|
||||
@@ -322,10 +322,10 @@ describe('bug #2924: worktree HEAD attachment + destructive recovery', () => {
|
||||
});
|
||||
|
||||
test('block enforces positive worktree-agent-* allow-list (#2924 hardening)', () => {
|
||||
const allowListRe = /grep\s+-Eq?\s+'\^worktree-agent-/;
|
||||
const allowListRe = /grep\s+-Eq?\s+'\^\(worktree-\)\?agent-/;
|
||||
assert.ok(
|
||||
allowListRe.test(block),
|
||||
'quick.md worktree_branch_check must enforce a positive allow-list matching ^worktree-agent-* (#2924 hardening)'
|
||||
'quick.md worktree_branch_check must enforce a positive allow-list matching ^(worktree-)?agent-* (#2924 hardening)'
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -404,10 +404,10 @@ describe('bug #2924: worktree HEAD attachment + destructive recovery', () => {
|
||||
test('step 0 enforces positive worktree-agent-* allow-list (#2924 hardening)', () => {
|
||||
const codeBlocks = extractFencedCodeBlocks(block);
|
||||
const scripts = codeBlocks.map(({ body }) => body).join('\n');
|
||||
const allowListRe = /grep\s+-Eq?\s+'\^worktree-agent-/;
|
||||
const allowListRe = /grep\s+-Eq?\s+'\^\(worktree-\)\?agent-/;
|
||||
assert.ok(
|
||||
allowListRe.test(scripts),
|
||||
'task_commit_protocol step 0 must enforce a positive allow-list matching ^worktree-agent-* in addition to the protected-ref deny-list (#2924 hardening)'
|
||||
'task_commit_protocol step 0 must enforce a positive allow-list matching ^(worktree-)?agent-* in addition to the protected-ref deny-list (#2924 hardening)'
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -1531,8 +1531,8 @@ function extractCwdGuardBash() {
|
||||
if (!guardBash.includes('git rev-parse --show-toplevel')) {
|
||||
throw new Error('extractCwdGuardBash: sanity check failed — extracted block does not contain "git rev-parse --show-toplevel"');
|
||||
}
|
||||
if (!guardBash.includes('worktree-agent-')) {
|
||||
throw new Error('extractCwdGuardBash: sanity check failed — extracted block does not contain "worktree-agent-"');
|
||||
if (!guardBash.includes('(worktree-)?agent-')) {
|
||||
throw new Error('extractCwdGuardBash: sanity check failed — extracted block does not contain "(worktree-)?agent-"');
|
||||
}
|
||||
|
||||
return guardBash;
|
||||
|
||||
@@ -662,6 +662,16 @@ describe('planWorktreeRecordAgent', () => {
|
||||
assert.equal(readBack.reason, 'empty_manifest');
|
||||
});
|
||||
|
||||
test('accepts the current agent-<id> namespace (#1995)', () => {
|
||||
const plan = planWorktreeRecordAgent('{"worktrees":[]}', { ...VALID, branch: 'agent-a1' });
|
||||
assert.equal(plan.ok, true);
|
||||
assert.equal(plan.entry.branch, 'agent-a1');
|
||||
const readBack = planWorktreeWaveCleanup('/repo/main', JSON.parse(plan.manifest));
|
||||
assert.equal(readBack.ok, true);
|
||||
assert.equal(readBack.entries.length, 1);
|
||||
assert.equal(readBack.entries[0].branch, 'agent-a1');
|
||||
});
|
||||
|
||||
test('fails loudly on malformed manifest JSON instead of clobbering it', () => {
|
||||
const plan = planWorktreeRecordAgent('{not valid json', VALID);
|
||||
assert.equal(plan.ok, false);
|
||||
@@ -749,7 +759,9 @@ describe('planWorktreeRecordAgent', () => {
|
||||
|
||||
describe('planWorktreeRecordAgent — fast-check parity invariant (#1298)', () => {
|
||||
const seg = fc.stringMatching(/^[A-Za-z0-9._/-]+$/); // include '/' — the namespace allows it
|
||||
const agentBranch = seg.map((s) => `worktree-agent-${s}`);
|
||||
const legacyAgentBranch = seg.map((s) => `worktree-agent-${s}`);
|
||||
const currentAgentBranch = seg.map((s) => `agent-${s}`);
|
||||
const agentBranch = fc.oneof(legacyAgentBranch, currentAgentBranch);
|
||||
const nonEmpty = fc.stringMatching(/^\S[\S ]*$/); // no leading whitespace, not blank
|
||||
|
||||
test('any writer-accepted entry round-trips through the cleanup reader unchanged', () => {
|
||||
@@ -776,7 +788,7 @@ describe('planWorktreeRecordAgent — fast-check parity invariant (#1298)', () =
|
||||
agentId: nonEmpty,
|
||||
worktreePath: nonEmpty,
|
||||
// Any branch that does NOT match the disposable namespace.
|
||||
branch: fc.string({ minLength: 1 }).filter((b) => !/^worktree-agent-[A-Za-z0-9._/-]+$/.test(b.trim())),
|
||||
branch: fc.string({ minLength: 1 }).filter((b) => !/^(worktree-)?agent-[A-Za-z0-9._/-]+$/.test(b.trim())),
|
||||
base: nonEmpty,
|
||||
}),
|
||||
(fields) => {
|
||||
@@ -788,6 +800,79 @@ describe('planWorktreeRecordAgent — fast-check parity invariant (#1298)', () =
|
||||
});
|
||||
});
|
||||
|
||||
// ─── branch namespace boundary tests (#1995) ─────────────────────────────────
|
||||
// Claude Code's isolation="worktree" branch naming changed from worktree-agent-<id>
|
||||
// to agent-<id>. Both namespaces must be accepted; non-agent branches rejected.
|
||||
|
||||
describe('worktree branch namespace boundaries (#1995)', () => {
|
||||
const ACCEPTED_BRANCHES = [
|
||||
'agent-a1',
|
||||
'agent-abc123',
|
||||
'agent-session.42',
|
||||
'worktree-agent-a1',
|
||||
'worktree-agent-abc123',
|
||||
'worktree-agent-session.42',
|
||||
];
|
||||
const REJECTED_BRANCHES = [
|
||||
'feature-x',
|
||||
'main',
|
||||
'agent',
|
||||
'worktree-agent',
|
||||
'xagent-y',
|
||||
'worktree-foo',
|
||||
'worktree-agent-',
|
||||
'agent-',
|
||||
'',
|
||||
];
|
||||
|
||||
for (const branch of ACCEPTED_BRANCHES) {
|
||||
test(`planWorktreeRecordAgent accepts branch "${branch}"`, () => {
|
||||
const plan = planWorktreeRecordAgent('{"worktrees":[]}', {
|
||||
agentId: 'a1', worktreePath: '/repo/wt', branch, base: 'abc123',
|
||||
});
|
||||
assert.equal(plan.ok, true, `expected branch "${branch}" to be accepted`);
|
||||
assert.equal(plan.entry.branch, branch);
|
||||
});
|
||||
}
|
||||
|
||||
for (const branch of REJECTED_BRANCHES) {
|
||||
test(`planWorktreeRecordAgent rejects branch "${branch}"`, () => {
|
||||
const plan = planWorktreeRecordAgent('{"worktrees":[]}', {
|
||||
agentId: 'a1', worktreePath: '/repo/wt', branch, base: 'abc123',
|
||||
});
|
||||
if (branch === '') {
|
||||
assert.equal(plan.reason, 'missing_field');
|
||||
} else {
|
||||
assert.equal(plan.ok, false, `expected branch "${branch}" to be rejected`);
|
||||
assert.equal(plan.reason, 'invalid_entry');
|
||||
assert.match(plan.hint, /\(worktree-\)\?agent-/);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
test('cleanup-wave retains agent-<id> entries alongside worktree-agent-<id> entries', () => {
|
||||
const manifest = {
|
||||
orchestrator_root: '/repo/main',
|
||||
worktrees: [
|
||||
{ agent_id: 'a1', worktree_path: '/repo/wt-a1', branch: 'agent-a1', expected_base: 'abc' },
|
||||
{ agent_id: 'a2', worktree_path: '/repo/wt-a2', branch: 'worktree-agent-a2', expected_base: 'def' },
|
||||
],
|
||||
};
|
||||
const result = planWorktreeWaveCleanup('/repo/main', manifest);
|
||||
assert.equal(result.ok, true);
|
||||
assert.equal(result.entries.length, 2);
|
||||
assert.deepEqual(result.entries.map((e) => e.branch), ['agent-a1', 'worktree-agent-a2']);
|
||||
});
|
||||
|
||||
test('hint string names the widened accepted pattern', () => {
|
||||
const plan = planWorktreeRecordAgent('{"worktrees":[]}', {
|
||||
agentId: 'a1', worktreePath: '/repo/wt', branch: 'feature-x', base: 'abc123',
|
||||
});
|
||||
assert.equal(plan.ok, false);
|
||||
assert.match(plan.hint, /\(worktree-\)\?agent-\[A-Za-z0-9\._\/-\]\+/);
|
||||
});
|
||||
});
|
||||
|
||||
// ─── cmdWorktreeRecordAgent (#1298 CLI wrapper) ───────────────────────────────
|
||||
|
||||
describe('cmdWorktreeRecordAgent', () => {
|
||||
@@ -824,6 +909,26 @@ describe('cmdWorktreeRecordAgent', () => {
|
||||
assert.match(out.join(''), /"ok": true/);
|
||||
});
|
||||
|
||||
test('accepts the current agent-<id> namespace via CLI (#1995)', () => {
|
||||
let writtenContent = null;
|
||||
const agentArgs = [
|
||||
'--manifest', 'manifest.json',
|
||||
'--agent-id', 'a1',
|
||||
'--path', '/repo/.claude/worktrees/agent-a1',
|
||||
'--branch', 'agent-a1',
|
||||
'--base', 'abc123',
|
||||
];
|
||||
const result = cmdWorktreeRecordAgent('/repo/main', agentArgs, {
|
||||
readFile: () => '{"orchestrator_root":"/repo/main","worktrees":[]}',
|
||||
writeFile: (_p, c) => { writtenContent = c; },
|
||||
write: () => {},
|
||||
writeErr: () => {},
|
||||
});
|
||||
assert.equal(result.ok, true);
|
||||
const written = JSON.parse(writtenContent);
|
||||
assert.equal(written.worktrees[0].branch, 'agent-a1');
|
||||
});
|
||||
|
||||
test('exits 2 with usage when --manifest is missing', () => {
|
||||
withExitCode(() => {
|
||||
const errs = [];
|
||||
@@ -2620,10 +2725,10 @@ describe('bug #3384: adjacent worktree data-loss guards', () => {
|
||||
|
||||
const fragmentSource = fs.readFileSync(WORKTREE_BRANCH_CHECK_FRAGMENT, 'utf8');
|
||||
const branchCheck = fragmentSource.indexOf('HEAD_REF=$(git symbolic-ref --quiet HEAD || echo');
|
||||
const namespaceCheck = fragmentSource.indexOf('^worktree-agent-');
|
||||
const namespaceCheck = fragmentSource.indexOf('(worktree-)?agent-');
|
||||
|
||||
assert.ok(branchCheck > 0, 'canonical fragment must assert HEAD before any work');
|
||||
assert.ok(namespaceCheck > branchCheck, 'canonical fragment must require disposable worktree-agent branch');
|
||||
assert.ok(namespaceCheck > branchCheck, 'canonical fragment must require disposable agent/worktree-agent branch');
|
||||
// #48: verify-only — the destructive self-recovery is gone; the fragment fails closed instead.
|
||||
assert.ok(!fragmentSource.includes('git reset --hard {EXPECTED_BASE}'), 'canonical fragment must not self-recover via reset --hard — orchestrator owns recovery (#48)');
|
||||
assert.ok(fragmentSource.includes('exit 42'), 'canonical fragment must fail closed with exit 42 on base mismatch (#48)');
|
||||
|
||||
@@ -167,9 +167,9 @@ describe('canonical worktree-branch-check fragment is the single source of truth
|
||||
assert.ok(/\brelease\b/.test(block), 'fragment protected-ref alternation must include release');
|
||||
});
|
||||
|
||||
test('fragment block positive allow-list matches ^worktree-agent- pattern', () => {
|
||||
const allowListRe = /grep\s+-Eq?\s+'\^worktree-agent-/;
|
||||
assert.ok(allowListRe.test(block), 'fragment block must enforce a positive allow-list matching ^worktree-agent-');
|
||||
test('fragment block positive allow-list matches ^(worktree-)?agent- pattern', () => {
|
||||
const allowListRe = /grep\s+-Eq?\s+'\^\(worktree-\)\?agent-/;
|
||||
assert.ok(allowListRe.test(block), 'fragment block must enforce a positive allow-list matching ^(worktree-)?agent-');
|
||||
});
|
||||
|
||||
test('fragment block contains update-ref prohibition text', () => {
|
||||
|
||||
Reference in New Issue
Block a user