@opengsd/gsd-core 1.17.0 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (369) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +2 -1
  3. package/.opencode/plugins/gsd-core.js +2 -3
  4. package/agents/gsd-advisor-researcher.compact.md +1 -1
  5. package/agents/gsd-advisor-researcher.md +1 -1
  6. package/agents/gsd-assumptions-analyzer.compact.md +1 -1
  7. package/agents/gsd-assumptions-analyzer.md +1 -1
  8. package/agents/gsd-code-fixer.compact.md +3 -3
  9. package/agents/gsd-code-fixer.md +5 -4
  10. package/agents/gsd-code-reviewer.compact.md +1 -1
  11. package/agents/gsd-code-reviewer.md +1 -1
  12. package/agents/gsd-codebase-mapper.compact.md +1 -1
  13. package/agents/gsd-codebase-mapper.md +1 -1
  14. package/agents/gsd-debugger.md +1 -1
  15. package/agents/gsd-doc-verifier.compact.md +4 -4
  16. package/agents/gsd-doc-verifier.md +4 -3
  17. package/agents/gsd-doc-writer.compact.md +23 -5
  18. package/agents/gsd-doc-writer.md +19 -6
  19. package/agents/gsd-eval-auditor.compact.md +1 -1
  20. package/agents/gsd-eval-auditor.md +1 -1
  21. package/agents/gsd-executor.md +7 -3
  22. package/agents/gsd-integration-checker.compact.md +1 -1
  23. package/agents/gsd-integration-checker.md +1 -1
  24. package/agents/gsd-nyquist-auditor.compact.md +1 -1
  25. package/agents/gsd-nyquist-auditor.md +1 -1
  26. package/agents/gsd-phase-researcher.md +1 -1
  27. package/agents/gsd-plan-checker.md +2 -1
  28. package/agents/gsd-planner.md +5 -4
  29. package/agents/gsd-project-researcher.compact.md +1 -1
  30. package/agents/gsd-project-researcher.md +1 -1
  31. package/agents/gsd-research-synthesizer.compact.md +5 -5
  32. package/agents/gsd-research-synthesizer.md +5 -5
  33. package/agents/gsd-roadmapper.compact.md +1 -1
  34. package/agents/gsd-roadmapper.md +1 -1
  35. package/agents/gsd-security-auditor.compact.md +1 -1
  36. package/agents/gsd-security-auditor.md +1 -1
  37. package/agents/gsd-ui-auditor.compact.md +1 -1
  38. package/agents/gsd-ui-auditor.md +1 -1
  39. package/agents/gsd-ui-checker.compact.md +1 -1
  40. package/agents/gsd-ui-checker.md +1 -1
  41. package/agents/gsd-ui-researcher.compact.md +13 -1
  42. package/agents/gsd-ui-researcher.md +28 -1
  43. package/agents/gsd-verifier.md +2 -2
  44. package/bin/install.js +460 -105
  45. package/commands/gsd/code-review.md +8 -0
  46. package/commands/gsd/pause-work.md +1 -1
  47. package/gsd-core/bin/gsd-tools.cjs +124 -18
  48. package/gsd-core/bin/lib/agent-install-check.cjs +29 -3
  49. package/gsd-core/bin/lib/args-terminator.cjs +114 -0
  50. package/gsd-core/bin/lib/broken-windows.cjs +59 -1
  51. package/gsd-core/bin/lib/capability-ledger.cjs +25 -0
  52. package/gsd-core/bin/lib/capability-lock.cjs +41 -8
  53. package/gsd-core/bin/lib/capability-registry.cjs +162 -74
  54. package/gsd-core/bin/lib/capability-source.cjs +3 -1
  55. package/gsd-core/bin/lib/capability-state.cjs +20 -11
  56. package/gsd-core/bin/lib/capability-validator.cjs +23 -4
  57. package/gsd-core/bin/lib/commands.cjs +5 -1
  58. package/gsd-core/bin/lib/config-loader.cjs +13 -3
  59. package/gsd-core/bin/lib/config.cjs +256 -58
  60. package/gsd-core/bin/lib/core-utils.cjs +34 -0
  61. package/gsd-core/bin/lib/decision-coverage-support.cjs +93 -0
  62. package/gsd-core/bin/lib/gate-context-drift.cjs +8 -3
  63. package/gsd-core/bin/lib/gate-decision-coverage-plan.cjs +21 -1
  64. package/gsd-core/bin/lib/gate-decision-coverage-verify.cjs +19 -1
  65. package/gsd-core/bin/lib/gate-evaluation-scope.cjs +134 -13
  66. package/gsd-core/bin/lib/gate-predicate-evaluator.cjs +23 -3
  67. package/gsd-core/bin/lib/gate-predicate.cjs +8 -12
  68. package/gsd-core/bin/lib/gate-tdd-review-checkpoint.cjs +114 -18
  69. package/gsd-core/bin/lib/gate-ui-safety.cjs +23 -5
  70. package/gsd-core/bin/lib/git-info-exclude.cjs +57 -0
  71. package/gsd-core/bin/lib/health-diagnostic-rules/phase-structure.cjs +18 -3
  72. package/gsd-core/bin/lib/health-diagnostic-types.cjs +4 -0
  73. package/gsd-core/bin/lib/health-diagnostic.cjs +52 -1
  74. package/gsd-core/bin/lib/host-integration.cjs +13 -6
  75. package/gsd-core/bin/lib/init.cjs +76 -5
  76. package/gsd-core/bin/lib/install-effort-resolver.cjs +2 -2
  77. package/gsd-core/bin/lib/install-engine.cjs +246 -32
  78. package/gsd-core/bin/lib/install-model-override-resolver.cjs +4 -3
  79. package/gsd-core/bin/lib/install-profiles.cjs +14 -7
  80. package/gsd-core/bin/lib/installer-migration-report.cjs +2 -0
  81. package/gsd-core/bin/lib/markdown-line-diff.cjs +147 -0
  82. package/gsd-core/bin/lib/markdown-sectionizer.cjs +113 -0
  83. package/gsd-core/bin/lib/milestone-lock.cjs +8 -1
  84. package/gsd-core/bin/lib/milestone-release-map.cjs +244 -0
  85. package/gsd-core/bin/lib/milestone-release-tags.cjs +440 -0
  86. package/gsd-core/bin/lib/milestone.cjs +43 -1
  87. package/gsd-core/bin/lib/model-catalog.cjs +8 -0
  88. package/gsd-core/bin/lib/normalize-test-command.cjs +67 -0
  89. package/gsd-core/bin/lib/phase-id.cjs +21 -4
  90. package/gsd-core/bin/lib/phase-lifecycle.cjs +37 -4
  91. package/gsd-core/bin/lib/phase.cjs +235 -37
  92. package/gsd-core/bin/lib/planning-snapshot.cjs +3 -1
  93. package/gsd-core/bin/lib/planning-workspace.cjs +18 -0
  94. package/gsd-core/bin/lib/pristine-baseline.cjs +11 -3
  95. package/gsd-core/bin/lib/read-only-git-env.cjs +58 -0
  96. package/gsd-core/bin/lib/report-parser.cjs +57 -1
  97. package/gsd-core/bin/lib/review-lane-descriptor.cjs +35 -2
  98. package/gsd-core/bin/lib/review-lane-invocation.cjs +40 -0
  99. package/gsd-core/bin/lib/review-lane-runner.cjs +33 -4
  100. package/gsd-core/bin/lib/review-reviewer-selection.cjs +20 -1
  101. package/gsd-core/bin/lib/roadmap-parser.cjs +12 -0
  102. package/gsd-core/bin/lib/roadmap-upgrade.cjs +39 -2
  103. package/gsd-core/bin/lib/roadmap.cjs +89 -30
  104. package/gsd-core/bin/lib/runtime-artifact-conversion.cjs +428 -16
  105. package/gsd-core/bin/lib/runtime-artifact-layout.cjs +8 -4
  106. package/gsd-core/bin/lib/runtime-homes.cjs +18 -0
  107. package/gsd-core/bin/lib/runtime-hooks-surface.cjs +60 -16
  108. package/gsd-core/bin/lib/shell-command-projection.cjs +123 -16
  109. package/gsd-core/bin/lib/smart-entry.cjs +37 -16
  110. package/gsd-core/bin/lib/state-contract.cjs +29 -9
  111. package/gsd-core/bin/lib/state-document.cjs +47 -5
  112. package/gsd-core/bin/lib/state-transition.cjs +150 -34
  113. package/gsd-core/bin/lib/state.cjs +140 -88
  114. package/gsd-core/bin/lib/surface.cjs +9 -0
  115. package/gsd-core/bin/lib/task-command-router.cjs +7 -28
  116. package/gsd-core/bin/lib/task-content-resolution.cjs +46 -1
  117. package/gsd-core/bin/lib/tdd-red-evidence.cjs +5 -0
  118. package/gsd-core/bin/lib/tdd-test-files.cjs +42 -0
  119. package/gsd-core/bin/lib/verification.cjs +96 -9
  120. package/gsd-core/bin/lib/verify.cjs +38 -1
  121. package/gsd-core/bin/lib/worktree-safety.cjs +22 -1
  122. package/gsd-core/bin/shared/config-defaults.manifest.json +1 -0
  123. package/gsd-core/bin/shared/config-schema.manifest.json +1 -0
  124. package/gsd-core/references/agent-contracts.md +1 -1
  125. package/gsd-core/references/agent-skills-bootstrap.md +26 -7
  126. package/gsd-core/references/git-integration.md +14 -3
  127. package/gsd-core/references/loop-hook-dispatch.md +13 -6
  128. package/gsd-core/references/planner-reversibility.md +18 -4
  129. package/gsd-core/references/planner-verify-command-grounding.md +18 -0
  130. package/gsd-core/references/planning-config.md +2 -0
  131. package/gsd-core/references/tdd.md +5 -4
  132. package/gsd-core/references/verifier-phase-gates.md +8 -1
  133. package/gsd-core/templates/DEBUG.md +16 -0
  134. package/gsd-core/templates/config.json +2 -1
  135. package/gsd-core/templates/verification-report.md +1 -1
  136. package/gsd-core/workflows/add-backlog.md +10 -2
  137. package/gsd-core/workflows/add-phase.md +5 -1
  138. package/gsd-core/workflows/add-tests.md +5 -1
  139. package/gsd-core/workflows/add-todo.md +5 -1
  140. package/gsd-core/workflows/ai-integration-phase.md +5 -1
  141. package/gsd-core/workflows/audit-fix.md +2 -1
  142. package/gsd-core/workflows/audit-milestone.md +21 -9
  143. package/gsd-core/workflows/autonomous/templates/minimal-context.md +41 -0
  144. package/gsd-core/workflows/autonomous.md +52 -64
  145. package/gsd-core/workflows/check-todos.md +5 -1
  146. package/gsd-core/workflows/code-review/steps/structural-pre-pass.md +10 -1
  147. package/gsd-core/workflows/code-review-fix.md +5 -1
  148. package/gsd-core/workflows/code-review.md +66 -8
  149. package/gsd-core/workflows/complete-milestone/detail/elaboration.md +5 -1
  150. package/gsd-core/workflows/complete-milestone/steps/project-md-evolution-review.md +145 -0
  151. package/gsd-core/workflows/complete-milestone/steps/release-map.md +80 -0
  152. package/gsd-core/workflows/complete-milestone.md +64 -157
  153. package/gsd-core/workflows/debug.md +5 -1
  154. package/gsd-core/workflows/diagnose-issues.md +34 -6
  155. package/gsd-core/workflows/discuss-phase/modes/chain.md +5 -1
  156. package/gsd-core/workflows/discuss-phase/modes/power.md +1 -1
  157. package/gsd-core/workflows/discuss-phase-assumptions.md +44 -5
  158. package/gsd-core/workflows/discuss-phase-power.md +19 -2
  159. package/gsd-core/workflows/discuss-phase.md +11 -11
  160. package/gsd-core/workflows/docs-update/detail/elaboration.md +7 -6
  161. package/gsd-core/workflows/docs-update.md +27 -5
  162. package/gsd-core/workflows/edit-phase.md +5 -1
  163. package/gsd-core/workflows/eval-review.md +11 -3
  164. package/gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md +5 -1
  165. package/gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md +13 -7
  166. package/gsd-core/workflows/execute-phase/steps/post-merge-gate.md +19 -8
  167. package/gsd-core/workflows/execute-phase/steps/regression-gate-run.md +21 -3
  168. package/gsd-core/workflows/execute-phase/steps/regression-gate.md +18 -1
  169. package/gsd-core/workflows/execute-phase/steps/verify-phase-goal.md +7 -3
  170. package/gsd-core/workflows/execute-phase/steps/wave-post-gate-hooks.md +11 -2
  171. package/gsd-core/workflows/execute-phase.md +46 -11
  172. package/gsd-core/workflows/execute-plan.md +8 -4
  173. package/gsd-core/workflows/extract-learnings.md +6 -2
  174. package/gsd-core/workflows/forensics.md +5 -1
  175. package/gsd-core/workflows/health.md +2 -1
  176. package/gsd-core/workflows/import.md +6 -2
  177. package/gsd-core/workflows/insert-phase.md +5 -1
  178. package/gsd-core/workflows/manager.md +10 -2
  179. package/gsd-core/workflows/map-codebase.md +5 -1
  180. package/gsd-core/workflows/milestone-summary.md +10 -2
  181. package/gsd-core/workflows/new-milestone.md +13 -5
  182. package/gsd-core/workflows/new-project.md +9 -5
  183. package/gsd-core/workflows/next.md +8 -4
  184. package/gsd-core/workflows/pause-work.md +3 -3
  185. package/gsd-core/workflows/plan-phase/steps/auto-advance-check.md +70 -0
  186. package/gsd-core/workflows/plan-phase/steps/chunked-planning-mode.md +7 -3
  187. package/gsd-core/workflows/plan-phase/steps/closed-phase-gate.md +6 -2
  188. package/gsd-core/workflows/plan-phase.md +54 -86
  189. package/gsd-core/workflows/plan-review-convergence.md +17 -5
  190. package/gsd-core/workflows/plant-seed.md +8 -4
  191. package/gsd-core/workflows/progress.md +6 -2
  192. package/gsd-core/workflows/quick/steps/plan-checker-loop.md +1 -1
  193. package/gsd-core/workflows/quick/steps/worktree-pre-dispatch-commit.md +8 -1
  194. package/gsd-core/workflows/quick-batch/steps/plan-checker-loop.md +2 -1
  195. package/gsd-core/workflows/quick-batch.md +5 -1
  196. package/gsd-core/workflows/quick.md +23 -8
  197. package/gsd-core/workflows/remove-phase.md +5 -1
  198. package/gsd-core/workflows/resume-project.md +5 -1
  199. package/gsd-core/workflows/review.md +22 -15
  200. package/gsd-core/workflows/scan.md +5 -1
  201. package/gsd-core/workflows/section-manifest.json +5 -0
  202. package/gsd-core/workflows/secure-phase.md +6 -2
  203. package/gsd-core/workflows/settings.md +4 -3
  204. package/gsd-core/workflows/ship.md +16 -14
  205. package/gsd-core/workflows/spec-phase.md +3 -6
  206. package/gsd-core/workflows/thread.md +10 -2
  207. package/gsd-core/workflows/transition.md +5 -1
  208. package/gsd-core/workflows/ui-phase.md +5 -1
  209. package/gsd-core/workflows/ui-review.md +6 -2
  210. package/gsd-core/workflows/ultraplan-phase.md +5 -1
  211. package/gsd-core/workflows/update.md +5 -1
  212. package/gsd-core/workflows/validate-phase.md +6 -2
  213. package/gsd-core/workflows/verify-work/detail/elaboration.md +1 -1
  214. package/gsd-core/workflows/verify-work/steps/mvp-uat-framing.md +5 -1
  215. package/gsd-core/workflows/verify-work.md +15 -6
  216. package/hooks/dist/gsd-agent-isolation-guard.js +14 -2
  217. package/hooks/dist/gsd-cursor-subagent-start.js +8 -3
  218. package/hooks/dist/gsd-path-export.js +95 -0
  219. package/hooks/dist/gsd-secret-read-guard.js +244 -53
  220. package/hooks/dist/gsd-statusline.js +35 -2
  221. package/hooks/dist/gsd-validate-commit.sh +27 -5
  222. package/hooks/dist/gsd-windsurf-pre-write.js +28 -1
  223. package/hooks/dist/gsd-workflow-guard.js +1 -1
  224. package/hooks/dist/gsd-worktree-path-guard.js +28 -1
  225. package/hooks/dist/lib/isolation-sentinel.js +44 -0
  226. package/hooks/dist/managed-hooks-registry.cjs +1 -0
  227. package/hooks/gsd-agent-isolation-guard.js +14 -2
  228. package/hooks/gsd-cursor-subagent-start.js +8 -3
  229. package/hooks/gsd-path-export.js +95 -0
  230. package/hooks/gsd-secret-read-guard.js +244 -53
  231. package/hooks/gsd-statusline.js +35 -2
  232. package/hooks/gsd-validate-commit.sh +27 -5
  233. package/hooks/gsd-windsurf-pre-write.js +28 -1
  234. package/hooks/gsd-workflow-guard.js +1 -1
  235. package/hooks/gsd-worktree-path-guard.js +28 -1
  236. package/hooks/hooks.json +1 -0
  237. package/hooks/lib/isolation-sentinel.js +44 -0
  238. package/hooks/managed-hooks-registry.cjs +1 -0
  239. package/package.json +13 -6
  240. package/pi/gsd.cjs +1047 -10
  241. package/pi/package-agents/gsd-advisor-researcher.md +113 -0
  242. package/pi/package-agents/gsd-ai-researcher.md +111 -0
  243. package/pi/package-agents/gsd-assumptions-analyzer.md +110 -0
  244. package/pi/package-agents/gsd-code-fixer.md +769 -0
  245. package/pi/package-agents/gsd-code-reviewer.md +402 -0
  246. package/pi/package-agents/gsd-codebase-mapper.md +850 -0
  247. package/pi/package-agents/gsd-debug-session-manager.md +416 -0
  248. package/pi/package-agents/gsd-debugger.md +1274 -0
  249. package/pi/package-agents/gsd-doc-classifier.md +269 -0
  250. package/pi/package-agents/gsd-doc-synthesizer.md +259 -0
  251. package/pi/package-agents/gsd-doc-verifier.md +212 -0
  252. package/pi/package-agents/gsd-doc-writer.md +626 -0
  253. package/pi/package-agents/gsd-dom-verifier.md +164 -0
  254. package/pi/package-agents/gsd-domain-researcher.md +144 -0
  255. package/pi/package-agents/gsd-eval-auditor.md +185 -0
  256. package/pi/package-agents/gsd-eval-planner.md +149 -0
  257. package/pi/package-agents/gsd-executor.md +894 -0
  258. package/pi/package-agents/gsd-framework-selector.md +159 -0
  259. package/pi/package-agents/gsd-integration-checker.md +476 -0
  260. package/pi/package-agents/gsd-intel-updater.md +338 -0
  261. package/pi/package-agents/gsd-mempalace-curator.md +49 -0
  262. package/pi/package-agents/gsd-nyquist-auditor.md +200 -0
  263. package/pi/package-agents/gsd-pattern-mapper.md +340 -0
  264. package/pi/package-agents/gsd-phase-researcher.md +897 -0
  265. package/pi/package-agents/gsd-plan-checker.md +1077 -0
  266. package/pi/package-agents/gsd-planner.md +1003 -0
  267. package/pi/package-agents/gsd-project-researcher.md +611 -0
  268. package/pi/package-agents/gsd-research-synthesizer.md +259 -0
  269. package/pi/package-agents/gsd-roadmapper.md +779 -0
  270. package/pi/package-agents/gsd-security-auditor.md +171 -0
  271. package/pi/package-agents/gsd-ui-auditor.md +581 -0
  272. package/pi/package-agents/gsd-ui-checker.md +417 -0
  273. package/pi/package-agents/gsd-ui-researcher.md +469 -0
  274. package/pi/package-agents/gsd-user-profiler.md +174 -0
  275. package/pi/package-agents/gsd-verifier.md +963 -0
  276. package/pi/package-agents/manifest.json +39 -0
  277. package/pi/package-skills/gsd-add-tests/SKILL.md +39 -0
  278. package/pi/package-skills/gsd-ai-integration-phase/SKILL.md +36 -0
  279. package/pi/package-skills/gsd-audit-fix/SKILL.md +34 -0
  280. package/pi/package-skills/gsd-audit-milestone/SKILL.md +40 -0
  281. package/pi/package-skills/gsd-audit-uat/SKILL.md +26 -0
  282. package/pi/package-skills/gsd-autonomous/SKILL.md +52 -0
  283. package/pi/package-skills/gsd-capture/SKILL.md +68 -0
  284. package/pi/package-skills/gsd-cleanup/SKILL.md +25 -0
  285. package/pi/package-skills/gsd-code-review/SKILL.md +71 -0
  286. package/pi/package-skills/gsd-complete-milestone/SKILL.md +147 -0
  287. package/pi/package-skills/gsd-config/SKILL.md +60 -0
  288. package/pi/package-skills/gsd-debug/SKILL.md +64 -0
  289. package/pi/package-skills/gsd-discuss-phase/SKILL.md +74 -0
  290. package/pi/package-skills/gsd-docs-update/SKILL.md +50 -0
  291. package/pi/package-skills/gsd-eval-review/SKILL.md +35 -0
  292. package/pi/package-skills/gsd-execute-phase/SKILL.md +62 -0
  293. package/pi/package-skills/gsd-explore/SKILL.md +26 -0
  294. package/pi/package-skills/gsd-extract-learnings/SKILL.md +25 -0
  295. package/pi/package-skills/gsd-fast/SKILL.md +33 -0
  296. package/pi/package-skills/gsd-forensics/SKILL.md +59 -0
  297. package/pi/package-skills/gsd-graphify/SKILL.md +210 -0
  298. package/pi/package-skills/gsd-health/SKILL.md +36 -0
  299. package/pi/package-skills/gsd-help/SKILL.md +37 -0
  300. package/pi/package-skills/gsd-import/SKILL.md +46 -0
  301. package/pi/package-skills/gsd-inbox/SKILL.md +42 -0
  302. package/pi/package-skills/gsd-ingest-docs/SKILL.md +43 -0
  303. package/pi/package-skills/gsd-manager/SKILL.md +46 -0
  304. package/pi/package-skills/gsd-map-codebase/SKILL.md +85 -0
  305. package/pi/package-skills/gsd-mempalace-capture/SKILL.md +111 -0
  306. package/pi/package-skills/gsd-mempalace-recall/SKILL.md +111 -0
  307. package/pi/package-skills/gsd-milestone-summary/SKILL.md +54 -0
  308. package/pi/package-skills/gsd-mvp-phase/SKILL.md +45 -0
  309. package/pi/package-skills/gsd-new-milestone/SKILL.md +49 -0
  310. package/pi/package-skills/gsd-new-project/SKILL.md +49 -0
  311. package/pi/package-skills/gsd-next/SKILL.md +34 -0
  312. package/pi/package-skills/gsd-ns-context/SKILL.md +31 -0
  313. package/pi/package-skills/gsd-ns-ideate/SKILL.md +30 -0
  314. package/pi/package-skills/gsd-ns-manage/SKILL.md +42 -0
  315. package/pi/package-skills/gsd-ns-project/SKILL.md +34 -0
  316. package/pi/package-skills/gsd-ns-review/SKILL.md +35 -0
  317. package/pi/package-skills/gsd-ns-workflow/SKILL.md +44 -0
  318. package/pi/package-skills/gsd-onboard/SKILL.md +46 -0
  319. package/pi/package-skills/gsd-pause-work/SKILL.md +48 -0
  320. package/pi/package-skills/gsd-phase/SKILL.md +61 -0
  321. package/pi/package-skills/gsd-plan-phase/SKILL.md +62 -0
  322. package/pi/package-skills/gsd-plan-review-convergence/SKILL.md +63 -0
  323. package/pi/package-skills/gsd-pr-branch/SKILL.md +31 -0
  324. package/pi/package-skills/gsd-profile-user/SKILL.md +48 -0
  325. package/pi/package-skills/gsd-progress/SKILL.md +51 -0
  326. package/pi/package-skills/gsd-quick/SKILL.md +179 -0
  327. package/pi/package-skills/gsd-quick-batch/SKILL.md +114 -0
  328. package/pi/package-skills/gsd-resume-work/SKILL.md +31 -0
  329. package/pi/package-skills/gsd-review/SKILL.md +50 -0
  330. package/pi/package-skills/gsd-review-backlog/SKILL.md +65 -0
  331. package/pi/package-skills/gsd-secure-phase/SKILL.md +37 -0
  332. package/pi/package-skills/gsd-settings/SKILL.md +30 -0
  333. package/pi/package-skills/gsd-ship/SKILL.md +27 -0
  334. package/pi/package-skills/gsd-sketch/SKILL.md +56 -0
  335. package/pi/package-skills/gsd-spec-phase/SKILL.md +63 -0
  336. package/pi/package-skills/gsd-spike/SKILL.md +53 -0
  337. package/pi/package-skills/gsd-stats/SKILL.md +22 -0
  338. package/pi/package-skills/gsd-surface/SKILL.md +177 -0
  339. package/pi/package-skills/gsd-thread/SKILL.md +29 -0
  340. package/pi/package-skills/gsd-ui-phase/SKILL.md +35 -0
  341. package/pi/package-skills/gsd-ui-review/SKILL.md +35 -0
  342. package/pi/package-skills/gsd-ultraplan-phase/SKILL.md +38 -0
  343. package/pi/package-skills/gsd-undo/SKILL.md +38 -0
  344. package/pi/package-skills/gsd-update/SKILL.md +51 -0
  345. package/pi/package-skills/gsd-validate-phase/SKILL.md +37 -0
  346. package/pi/package-skills/gsd-verify-work/SKILL.md +41 -0
  347. package/pi/package-skills/gsd-workspace/SKILL.md +57 -0
  348. package/pi/package-skills/gsd-workstreams/SKILL.md +73 -0
  349. package/scripts/audit-workflow-script-paths.cjs +1 -1
  350. package/scripts/build-hooks.js +4 -0
  351. package/scripts/command-contract-helpers.cjs +1 -1
  352. package/scripts/diagnose-windows-spawn-watcher.cjs +317 -0
  353. package/scripts/docs-guard-registry.cjs +22 -7
  354. package/scripts/gen-health-docs.cjs +13 -1
  355. package/scripts/gen-pi-package-skills.cjs +217 -0
  356. package/scripts/lib/macos-conformance-tier.generated.cjs +19 -0
  357. package/scripts/lib/platform-conformance-tier.generated.cjs +41 -0
  358. package/scripts/lint-docs-guard-registration.exempt-baseline.cjs +3 -3
  359. package/scripts/lint-phase-arg-assignment.cjs +2 -2
  360. package/scripts/lint-retired-runtime-name.cjs +5 -0
  361. package/scripts/lint-workflow-shellcheck-baseline.json +16 -16
  362. package/scripts/npm-audit-baseline.cjs +41 -7
  363. package/scripts/release-tarball-smoke.cjs +1 -0
  364. package/scripts/reviewed-or-maintainer-policy.cjs +181 -0
  365. package/scripts/select-docs-guards.cjs +1 -1
  366. package/scripts/self-test-report-policy.cjs +350 -0
  367. package/skills/gsd-code-review/SKILL.md +8 -0
  368. package/skills/gsd-pause-work/SKILL.md +1 -1
  369. package/vscode/package.json +1 -1
@@ -6,6 +6,7 @@
6
6
 
7
7
  module.exports = {
8
8
  MACOS_CONFORMANCE_TIER_FILES: [
9
+ "tests/5100-win32-bare-bash-sentinel.property.test.cjs",
9
10
  "tests/active-workstream-store.unit.test.cjs",
10
11
  "tests/adr-612-bracket-phase-counting.test.cjs",
11
12
  "tests/adr-index-gate.test.cjs",
@@ -16,6 +17,7 @@ module.exports = {
16
17
  "tests/agent-skills.test.cjs",
17
18
  "tests/api-coverage-gate-e2e.test.cjs",
18
19
  "tests/api-coverage.test.cjs",
20
+ "tests/args-terminator-nonce.test.cjs",
19
21
  "tests/ask-user-questions-fallback.test.cjs",
20
22
  "tests/audit-command-cutover.test.cjs",
21
23
  "tests/broken-windows.test.cjs",
@@ -38,6 +40,7 @@ module.exports = {
38
40
  "tests/check-ui-safety-gate.test.cjs",
39
41
  "tests/check-update-config-dir.test.cjs",
40
42
  "tests/chunked-planning-parallel.test.cjs",
43
+ "tests/ci-conformance-pr-gating.test.cjs",
41
44
  "tests/ci-docs-guard-registry.test.cjs",
42
45
  "tests/ci-test-scope.test.cjs",
43
46
  "tests/cline-install.test.cjs",
@@ -46,6 +49,7 @@ module.exports = {
46
49
  "tests/codex-config-hooks.test.cjs",
47
50
  "tests/codex-config-install.test.cjs",
48
51
  "tests/codex-config.test.cjs",
52
+ "tests/command-arguments-block.test.cjs",
49
53
  "tests/commands.platform.test.cjs",
50
54
  "tests/commit-docs-bypass.test.cjs",
51
55
  "tests/commit-files-deletion.test.cjs",
@@ -71,6 +75,7 @@ module.exports = {
71
75
  "tests/execute-phase-decimal-arithmetic.test.cjs",
72
76
  "tests/executed-plan.test.cjs",
73
77
  "tests/executor-mvp-tdd-section.test.cjs",
78
+ "tests/executor-sequential-linked-worktree.test.cjs",
74
79
  "tests/external-job.test.cjs",
75
80
  "tests/failing-direction.test.cjs",
76
81
  "tests/fallow-runner.test.cjs",
@@ -80,6 +85,8 @@ module.exports = {
80
85
  "tests/gap-checker.property.test.cjs",
81
86
  "tests/gate-api-coverage-verify-pre-escape.test.cjs",
82
87
  "tests/gate-codebase-drift.unit.test.cjs",
88
+ "tests/gate-evaluation-scope.test.cjs",
89
+ "tests/gate-predicate.unit.test.cjs",
83
90
  "tests/gate-tdd-red-evidence-containment.test.cjs",
84
91
  "tests/gate-ui-plan.unit.test.cjs",
85
92
  "tests/gate-verify-command-paths.unit.test.cjs",
@@ -90,6 +97,7 @@ module.exports = {
90
97
  "tests/graphify-query.test.cjs",
91
98
  "tests/graphify-visualization.test.cjs",
92
99
  "tests/gsd-agent-isolation-guard.test.cjs",
100
+ "tests/gsd-path-export-hook.test.cjs",
93
101
  "tests/gsd-secret-read-guard.test.cjs",
94
102
  "tests/gsd-settings-advanced.test.cjs",
95
103
  "tests/gsd-statusline.test.cjs",
@@ -131,6 +139,7 @@ module.exports = {
131
139
  "tests/markdown-sectionizer.test.cjs",
132
140
  "tests/mcp-catalog.test.cjs",
133
141
  "tests/milestone-archive.test.cjs",
142
+ "tests/milestone-release-tags.test.cjs",
134
143
  "tests/milestone-window-single-owner.test.cjs",
135
144
  "tests/model-catalog.unit.test.cjs",
136
145
  "tests/model-resolver.test.cjs",
@@ -159,6 +168,9 @@ module.exports = {
159
168
  "tests/phase-status.test.cjs",
160
169
  "tests/phase.platform.test.cjs",
161
170
  "tests/phase.test.cjs",
171
+ "tests/pi-dispatch.test.cjs",
172
+ "tests/pi-package.test.cjs",
173
+ "tests/plan-authoring-verification-gaps.test.cjs",
162
174
  "tests/plan-count-single-owner.test.cjs",
163
175
  "tests/plan-document.test.cjs",
164
176
  "tests/plan-phase-stall-detection.test.cjs",
@@ -181,6 +193,7 @@ module.exports = {
181
193
  "tests/quick-batch-command-router.stdin.test.cjs",
182
194
  "tests/quick-batch.test.cjs",
183
195
  "tests/quick-branching.test.cjs",
196
+ "tests/quick-commit-boundary.test.cjs",
184
197
  "tests/quick-research.test.cjs",
185
198
  "tests/reapply-verify-hunks.test.cjs",
186
199
  "tests/refactor-1390-t3-characterization.test.cjs",
@@ -188,11 +201,13 @@ module.exports = {
188
201
  "tests/response-language-coverage.test.cjs",
189
202
  "tests/retired-artifact-cleanup.test.cjs",
190
203
  "tests/review-build-prompt-optional-sections.test.cjs",
204
+ "tests/review-lane-invocation.test.cjs",
191
205
  "tests/review-lane-runner.test.cjs",
192
206
  "tests/review-lane-windows-spawn-resolution.test.cjs",
193
207
  "tests/review-parallel-lanes.test.cjs",
194
208
  "tests/review-plan-coverage-manifest.test.cjs",
195
209
  "tests/review-reviewer-selection.test.cjs",
210
+ "tests/reviewed-or-maintainer-policy.test.cjs",
196
211
  "tests/reviewer-manifest-body.test.cjs",
197
212
  "tests/reviewer-step-dispatch.test.cjs",
198
213
  "tests/roadmap-mode-field.test.cjs",
@@ -207,15 +222,19 @@ module.exports = {
207
222
  "tests/runtime-launcher-parity.test.cjs",
208
223
  "tests/runtime-name-policy.test.cjs",
209
224
  "tests/security.test.cjs",
225
+ "tests/self-test-report-policy.test.cjs",
210
226
  "tests/settings-jsonc.test.cjs",
211
227
  "tests/shared-hooks-dir-resolution.test.cjs",
212
228
  "tests/shell-command-projection-dispatch.test.cjs",
229
+ "tests/shell-command-projection-md-normalize.test.cjs",
213
230
  "tests/shipped-reference-cites.test.cjs",
231
+ "tests/skill-manifest.test.cjs",
214
232
  "tests/spawn-liveness-banner.test.cjs",
215
233
  "tests/state-document.test.cjs",
216
234
  "tests/state-transition.test.cjs",
217
235
  "tests/state.platform.test.cjs",
218
236
  "tests/state.test.cjs",
237
+ "tests/tdd-mode.platform.test.cjs",
219
238
  "tests/todos-workstream-scope.test.cjs",
220
239
  "tests/tracer-bullet.test.cjs",
221
240
  "tests/uat-complete-session.test.cjs",
@@ -3,6 +3,7 @@
3
3
 
4
4
  module.exports = {
5
5
  CONFORMANCE_TIER_FILES: [
6
+ "tests/5100-win32-bare-bash-sentinel.property.test.cjs",
6
7
  "tests/adr-index-gate.test.cjs",
7
8
  "tests/adr857-core-without-capabilities.test.cjs",
8
9
  "tests/agent-install-check.test.cjs",
@@ -11,6 +12,7 @@ module.exports = {
11
12
  "tests/antigravity-upgrades.test.cjs",
12
13
  "tests/api-coverage-gate-e2e.test.cjs",
13
14
  "tests/api-coverage.test.cjs",
15
+ "tests/args-terminator-nonce.test.cjs",
14
16
  "tests/assumption-delta-checkpoint-e2e.test.cjs",
15
17
  "tests/assumption-delta.test.cjs",
16
18
  "tests/audit-command-cutover.test.cjs",
@@ -24,6 +26,7 @@ module.exports = {
24
26
  "tests/capability-ledger.test.cjs",
25
27
  "tests/capability-lifecycle.test.cjs",
26
28
  "tests/capability-loader.test.cjs",
29
+ "tests/capability-lock-lazy-self-probe-5327.test.cjs",
27
30
  "tests/capability-lock-mkdir-failure-3987.test.cjs",
28
31
  "tests/capability-probe-fallback.test.cjs",
29
32
  "tests/capability-source.test.cjs",
@@ -41,6 +44,7 @@ module.exports = {
41
44
  "tests/check-update-config-dir.test.cjs",
42
45
  "tests/check-update-fail-open.test.cjs",
43
46
  "tests/chunked-planning-parallel.test.cjs",
47
+ "tests/ci-conformance-pr-gating.test.cjs",
44
48
  "tests/ci-docs-guard-registry.test.cjs",
45
49
  "tests/ci-rebase-check.test.cjs",
46
50
  "tests/ci-test-scope.test.cjs",
@@ -59,12 +63,14 @@ module.exports = {
59
63
  "tests/codex-config.test.cjs",
60
64
  "tests/codex-inherit-smoke.test.cjs",
61
65
  "tests/codex-windows-shim-node-resolution.test.cjs",
66
+ "tests/command-arguments-block.test.cjs",
62
67
  "tests/command-routing-hub.test.cjs",
63
68
  "tests/commands.platform.test.cjs",
64
69
  "tests/commit-files-deletion.test.cjs",
65
70
  "tests/commit-files-pathspec.test.cjs",
66
71
  "tests/commonjs-marker.test.cjs",
67
72
  "tests/compact-content-4139.test.cjs",
73
+ "tests/complete-milestone-release-map-routing.test.cjs",
68
74
  "tests/completion-ratio-scope-withholding.test.cjs",
69
75
  "tests/config-defaults-runtime-exclusion.test.cjs",
70
76
  "tests/config-get-default.test.cjs",
@@ -81,6 +87,8 @@ module.exports = {
81
87
  "tests/cursor-hooks.test.cjs",
82
88
  "tests/cursor-subagent-isolation.test.cjs",
83
89
  "tests/debug-session-management.test.cjs",
90
+ "tests/defaults-json-fallback.test.cjs",
91
+ "tests/diagnose-windows-spawn-watcher.test.cjs",
84
92
  "tests/dispatch-identity.test.cjs",
85
93
  "tests/dispatcher.test.cjs",
86
94
  "tests/drift-detection.test.cjs",
@@ -93,12 +101,14 @@ module.exports = {
93
101
  "tests/emitted-provenance.test.cjs",
94
102
  "tests/ensure-runtime-build.test.cjs",
95
103
  "tests/eslint-rules.test.cjs",
104
+ "tests/execute-phase-cross-block-state.test.cjs",
96
105
  "tests/execute-phase-decimal-arithmetic.test.cjs",
97
106
  "tests/execute-phase-worktree-guard.test.cjs",
98
107
  "tests/execute-plan-update-codebase-map-diff-base.test.cjs",
99
108
  "tests/execute-wave-post-gate-pipeline-e2e.test.cjs",
100
109
  "tests/executed-plan.test.cjs",
101
110
  "tests/executor-mvp-tdd-section.test.cjs",
111
+ "tests/executor-sequential-linked-worktree.test.cjs",
102
112
  "tests/external-descriptor-confinement.test.cjs",
103
113
  "tests/failing-direction.test.cjs",
104
114
  "tests/fallow-runner.test.cjs",
@@ -111,9 +121,11 @@ module.exports = {
111
121
  "tests/gate-consumer-exit-awareness.test.cjs",
112
122
  "tests/gate-decision-coverage-verify-stderr.test.cjs",
113
123
  "tests/gate-exit.test.cjs",
124
+ "tests/gate-predicate.unit.test.cjs",
114
125
  "tests/gate-tdd-red-evidence-containment.test.cjs",
115
126
  "tests/gate-tdd-review-checkpoint-hardening.test.cjs",
116
127
  "tests/gate-tdd-review-checkpoint.unit.test.cjs",
128
+ "tests/gate-tdd-review-order-5275.test.cjs",
117
129
  "tests/gate-ui-plan.unit.test.cjs",
118
130
  "tests/gate-ui-safety.unit.test.cjs",
119
131
  "tests/gate-verify-command-paths.unit.test.cjs",
@@ -122,6 +134,7 @@ module.exports = {
122
134
  "tests/gen-health-docs.test.cjs",
123
135
  "tests/gen-section-manifest.test.cjs",
124
136
  "tests/git-base-branch.test.cjs",
137
+ "tests/git-optional-locks-parity.test.cjs",
125
138
  "tests/golden-install-tree.test.cjs",
126
139
  "tests/graphify-graph-path.test.cjs",
127
140
  "tests/graphify-visualization.test.cjs",
@@ -130,6 +143,7 @@ module.exports = {
130
143
  "tests/gsd-check-update-worker-atomic-cache.test.cjs",
131
144
  "tests/gsd-check-update-worker-platform-gate.test.cjs",
132
145
  "tests/gsd-mcp-server-bin.test.cjs",
146
+ "tests/gsd-path-export-hook.test.cjs",
133
147
  "tests/gsd-statusline.test.cjs",
134
148
  "tests/gsd-validate-commit-crash-policy.test.cjs",
135
149
  "tests/gsd-validate-commit-sigpipe.test.cjs",
@@ -145,6 +159,8 @@ module.exports = {
145
159
  "tests/hooks-crash-policy.test.cjs",
146
160
  "tests/hooks-opt-in.test.cjs",
147
161
  "tests/host-integration.test.cjs",
162
+ "tests/in-tier-msys-fork-stress.test.cjs",
163
+ "tests/in-tier-sh-pipeline-timing.test.cjs",
148
164
  "tests/init-manager.test.cjs",
149
165
  "tests/install-minimal-hooks.test.cjs",
150
166
  "tests/install-nested-layout.test.cjs",
@@ -153,6 +169,7 @@ module.exports = {
153
169
  "tests/install-runtime-artifacts.test.cjs",
154
170
  "tests/install-write-confinement.test.cjs",
155
171
  "tests/install.test.cjs",
172
+ "tests/installer-first-install-user-skill-5522.test.cjs",
156
173
  "tests/installer-migration-antigravity-retire-confighome-artifacts.test.cjs",
157
174
  "tests/installer-migration-config-root-marker.test.cjs",
158
175
  "tests/installer-migration-pi-retire-hooks-dir.test.cjs",
@@ -162,6 +179,7 @@ module.exports = {
162
179
  "tests/intel.test.cjs",
163
180
  "tests/inventory-nested-families.test.cjs",
164
181
  "tests/io.test.cjs",
182
+ "tests/isolation-aged-none-sentinel.test.cjs",
165
183
  "tests/isolation-sentinel.test.cjs",
166
184
  "tests/kilo-upgrades.test.cjs",
167
185
  "tests/kimi-agent-converter.test.cjs",
@@ -179,7 +197,11 @@ module.exports = {
179
197
  "tests/mcp-catalog.property.test.cjs",
180
198
  "tests/mcp-catalog.test.cjs",
181
199
  "tests/milestone-archive.test.cjs",
200
+ "tests/milestone-lock.test.cjs",
201
+ "tests/milestone-release-map-archive.test.cjs",
202
+ "tests/milestone-release-tags.test.cjs",
182
203
  "tests/milestone-window-single-owner.test.cjs",
204
+ "tests/milestone.test.cjs",
183
205
  "tests/model-resolver.test.cjs",
184
206
  "tests/mutation-workflow-base-ref.test.cjs",
185
207
  "tests/new-milestone-clear-phases.test.cjs",
@@ -194,10 +216,12 @@ module.exports = {
194
216
  "tests/no-unbounded-spawn.test.cjs",
195
217
  "tests/no-unguarded-nonportable-exec.rule.test.cjs",
196
218
  "tests/node-compile-cache.test.cjs",
219
+ "tests/npm-audit-baseline-safe-directory-5659.test.cjs",
197
220
  "tests/npm-audit-baseline.test.cjs",
198
221
  "tests/npm-integrity-gate.test.cjs",
199
222
  "tests/nsegment-phase-grammar.test.cjs",
200
223
  "tests/onboard-command.test.cjs",
224
+ "tests/opencode-advisory-stderr.test.cjs",
201
225
  "tests/opencode-command-dir-plural.test.cjs",
202
226
  "tests/opencode-config-jsonc.test.cjs",
203
227
  "tests/opencode-generations.smoke.test.cjs",
@@ -218,6 +242,10 @@ module.exports = {
218
242
  "tests/phase.platform.test.cjs",
219
243
  "tests/phase6-capstone-conformance.test.cjs",
220
244
  "tests/pi-config-dir-env-override.test.cjs",
245
+ "tests/pi-dispatch-install.test.cjs",
246
+ "tests/pi-dispatch.test.cjs",
247
+ "tests/pi-hook-bridge.test.cjs",
248
+ "tests/pi-package.test.cjs",
221
249
  "tests/plan-count-single-owner.test.cjs",
222
250
  "tests/plan-phase-stall-detection.test.cjs",
223
251
  "tests/plan-pre-hook-e2e.test.cjs",
@@ -245,6 +273,7 @@ module.exports = {
245
273
  "tests/quick-batch-command-router.stdin.test.cjs",
246
274
  "tests/quick-batch.test.cjs",
247
275
  "tests/quick-branching.test.cjs",
276
+ "tests/quick-commit-boundary.test.cjs",
248
277
  "tests/quick-research.test.cjs",
249
278
  "tests/quick-review-scope-tip-bound.test.cjs",
250
279
  "tests/read-guard.test.cjs",
@@ -258,6 +287,9 @@ module.exports = {
258
287
  "tests/retired-artifact-cleanup.test.cjs",
259
288
  "tests/review-build-prompt-optional-sections.test.cjs",
260
289
  "tests/review-default-reviewers-config.test.cjs",
290
+ "tests/review-lane-availability.test.cjs",
291
+ "tests/review-lane-invocation.test.cjs",
292
+ "tests/review-lane-no-redirect-5433.test.cjs",
261
293
  "tests/review-lane-runner.test.cjs",
262
294
  "tests/review-lane-windows-spawn-resolution.test.cjs",
263
295
  "tests/review-model-config.test.cjs",
@@ -268,6 +300,7 @@ module.exports = {
268
300
  "tests/revision-remediation-binding.test.cjs",
269
301
  "tests/roadmap-parser.test.cjs",
270
302
  "tests/roadmap-upgrade-bracket.test.cjs",
303
+ "tests/roadmap-upgrade.test.cjs",
271
304
  "tests/roadmap.test.cjs",
272
305
  "tests/run-tests-accounting.test.cjs",
273
306
  "tests/run-tests-harness.test.cjs",
@@ -281,11 +314,14 @@ module.exports = {
281
314
  "tests/runtime-identity.test.cjs",
282
315
  "tests/runtime-launcher-parity.test.cjs",
283
316
  "tests/schema-drift.test.cjs",
317
+ "tests/section-manifest-init-facts.test.cjs",
284
318
  "tests/security.test.cjs",
319
+ "tests/self-test-report-policy.test.cjs",
285
320
  "tests/settings-jsonc.test.cjs",
286
321
  "tests/sh-hook-paths.test.cjs",
287
322
  "tests/shared-hooks-dir-resolution.test.cjs",
288
323
  "tests/shell-command-projection-dispatch.test.cjs",
324
+ "tests/shell-command-projection-md-normalize.test.cjs",
289
325
  "tests/shell-command-projection-path-sep.test.cjs",
290
326
  "tests/ship-notes-wedged-pr.test.cjs",
291
327
  "tests/shipped-reference-cites.test.cjs",
@@ -293,6 +329,9 @@ module.exports = {
293
329
  "tests/slug-derivation-drift-guard.test.cjs",
294
330
  "tests/state-todos-render.test.cjs",
295
331
  "tests/state.platform.test.cjs",
332
+ "tests/subject-first-line.platform.test.cjs",
333
+ "tests/tdd-mode.platform.test.cjs",
334
+ "tests/tdd-review-checkpoint-cross-plan.test.cjs",
296
335
  "tests/teams-status.test.cjs",
297
336
  "tests/test-gate-watch-mode.test.cjs",
298
337
  "tests/todos-workstream-scope.test.cjs",
@@ -306,6 +345,7 @@ module.exports = {
306
345
  "tests/unusable-input.test.cjs",
307
346
  "tests/update-custom-backup.test.cjs",
308
347
  "tests/user-artifact-staging.test.cjs",
348
+ "tests/user-home-isolation-5594.test.cjs",
309
349
  "tests/verification-append-audit.test.cjs",
310
350
  "tests/verification-status.test.cjs",
311
351
  "tests/verify-archive-dirs-live-path.test.cjs",
@@ -321,6 +361,7 @@ module.exports = {
321
361
  "tests/workstream.test.cjs",
322
362
  "tests/worktree-cleanup.test.cjs",
323
363
  "tests/worktree-safety.test.cjs",
364
+ "tests/worktree-subdir-effective-root-4885.test.cjs",
324
365
  "tests/worktree.test.cjs",
325
366
  ],
326
367
  };
@@ -122,10 +122,10 @@ const DOCS_GUARD_EXEMPT_DOCS_PATHS = {
122
122
  // reads that (or any) docs/ file.
123
123
  'capability-validator-task-content-resolver.test.cjs': ['docs/adr/3646-per-task-content-resolution-seam.md'],
124
124
  'ci-docs-guard-registry.test.cjs': [
125
- 'docs/AGENTS.md', 'docs/COMMANDS.md', 'docs/INVENTORY.md', 'docs/a.md', 'docs/adr',
125
+ 'docs/COMMANDS.md', 'docs/INVENTORY.md', 'docs/a.md', 'docs/adr',
126
126
  'docs/adr/0001-example.md', 'docs/adrenaline.md', 'docs/bar.md', 'docs/foo.md', 'docs/how-to/foo.md',
127
- 'docs/how-to/some-unrelated-guide.md', 'docs/how-to/x.md', 'docs/some-unrelated-file.md',
128
- 'docs/totally-unrelated.md',
127
+ 'docs/how-to/some-unrelated-guide.md', 'docs/how-to/x.md', 'docs/reference/agents.md',
128
+ 'docs/some-unrelated-file.md', 'docs/totally-unrelated.md',
129
129
  ],
130
130
  // #4641: cites docs/adr/4641-windows-selector-consolidation.md in an
131
131
  // explanatory comment describing why the retired `windows` scope must not
@@ -93,10 +93,10 @@ const SHELL_INFO_STRINGS = new Set(['bash', 'sh', 'shell']);
93
93
  const CANONICAL_FORMS = Object.freeze({
94
94
  /** `/gsd:secure-phase 4` — the phase is the whole argument string, minus a `--ws <name>` pair. */
95
95
  positional:
96
- 'PHASE_ARG=$(echo "$ARGUMENTS" | sed -E \'s/--ws[[:space:]]+[A-Za-z0-9._-]+//g\' | xargs)',
96
+ 'PHASE_ARG=$(echo "$GSD_ARGS" | sed -E \'s/--ws[[:space:]]+[A-Za-z0-9._-]+//g\' | xargs)',
97
97
  /** `/gsd:review --phase 4 --codex` — the phase is the value of a named flag. */
98
98
  phaseFlag:
99
- 'PHASE_ARG=$(echo "$ARGUMENTS" | sed -nE \'s/.*--phase[[:space:]]+([A-Za-z0-9._-]+).*/\\1/p\')',
99
+ 'PHASE_ARG=$(echo "$GSD_ARGS" | sed -nE \'s/.*--phase[[:space:]]+([A-Za-z0-9._-]+).*/\\1/p\')',
100
100
  /** Skill dispatch passes the phase as `$1` (`Skill(skill="gsd-code-review", args="4")`). */
101
101
  firstPositional: 'PHASE_ARG="${1}"',
102
102
  });
@@ -234,6 +234,11 @@ const ALLOWLIST_OCCURRENCES = new Map([
234
234
  { snippet: 'Google (Gemini)', reason: 'model-provider choice, not a GSD runtime' },
235
235
  { snippet: 'Committed to Gemini / Google Cloud / Vertex AI', reason: 'the same menu entry\'s description' },
236
236
  ]],
237
+ ['pi/package-agents/gsd-framework-selector.md', [
238
+ // Generated copy of agents/gsd-framework-selector.md for the Pi package (#5569).
239
+ { snippet: 'Google (Gemini)', reason: 'model-provider choice, not a GSD runtime' },
240
+ { snippet: 'Committed to Gemini / Google Cloud / Vertex AI', reason: 'the same menu entry\'s description' },
241
+ ]],
237
242
  ['agents/gsd-framework-selector.compact.md', [
238
243
  { snippet: 'Google (Gemini)', reason: 'model-provider choice, not a GSD runtime' },
239
244
  ]],
@@ -384,6 +384,21 @@
384
384
  "code": "2086",
385
385
  "message": "Double quote to prevent globbing and word splitting."
386
386
  },
387
+ {
388
+ "file": "gsd-core/workflows/execute-phase/steps/code-review-disposition.md",
389
+ "code": "2317",
390
+ "message": "Command appears to be unreachable. Check usage (or ignore if invoked indirectly)."
391
+ },
392
+ {
393
+ "file": "gsd-core/workflows/execute-phase/steps/code-review-disposition.md",
394
+ "code": "2317",
395
+ "message": "Command appears to be unreachable. Check usage (or ignore if invoked indirectly)."
396
+ },
397
+ {
398
+ "file": "gsd-core/workflows/execute-phase/steps/code-review-disposition.md",
399
+ "code": "2317",
400
+ "message": "Command appears to be unreachable. Check usage (or ignore if invoked indirectly)."
401
+ },
387
402
  {
388
403
  "file": "gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md",
389
404
  "code": "2016",
@@ -690,7 +705,7 @@
690
705
  "message": "Double quote to prevent globbing and word splitting."
691
706
  },
692
707
  {
693
- "file": "gsd-core/workflows/plan-phase.md",
708
+ "file": "gsd-core/workflows/plan-phase/steps/auto-advance-check.md",
694
709
  "code": "2235",
695
710
  "message": "Use { ..; } instead of (..) to avoid subshell overhead."
696
711
  },
@@ -1108,20 +1123,5 @@
1108
1123
  "file": "gsd-core/workflows/verify-work/steps/mvp-uat-framing.md",
1109
1124
  "code": "2086",
1110
1125
  "message": "Double quote to prevent globbing and word splitting."
1111
- },
1112
- {
1113
- "file": "gsd-core/workflows/execute-phase/steps/code-review-disposition.md",
1114
- "code": "2317",
1115
- "message": "Command appears to be unreachable. Check usage (or ignore if invoked indirectly)."
1116
- },
1117
- {
1118
- "file": "gsd-core/workflows/execute-phase/steps/code-review-disposition.md",
1119
- "code": "2317",
1120
- "message": "Command appears to be unreachable. Check usage (or ignore if invoked indirectly)."
1121
- },
1122
- {
1123
- "file": "gsd-core/workflows/execute-phase/steps/code-review-disposition.md",
1124
- "code": "2317",
1125
- "message": "Command appears to be unreachable. Check usage (or ignore if invoked indirectly)."
1126
1126
  }
1127
1127
  ]
@@ -252,6 +252,39 @@ function runInstalledTreeAudit(cwd, opts = {}) {
252
252
  return runNpmAuditWithRetry(cwd, ['audit', '--omit=dev', '--json'], opts);
253
253
  }
254
254
 
255
+ /**
256
+ * `-c safe.directory=<repoRoot>` for the baseline's git calls (#5659). On the gsd-test bench the
257
+ * checkout is owned by a different uid than the one running the tests, so git refuses every command
258
+ * ("detected dubious ownership") and the baseline silently resolved to nothing, which sent the
259
+ * integrity tests to their zero-tolerance fallback. git honors `safe.directory` from the command line
260
+ * only; scoping it to the audited repo root (never `*`, never global config) trusts exactly the
261
+ * checkout being audited. Same precedent as scripts/lint-compiled-artifact-sync.cjs.
262
+ */
263
+ function safeDirectoryArgs(repoRoot) {
264
+ // git compares safe.directory against its forward-slash path, also on Windows.
265
+ return ['-c', `safe.directory=${String(repoRoot).replace(/\\/g, '/')}`];
266
+ }
267
+
268
+ /**
269
+ * One line saying why no baseline resolved (#5659), for the integrity gate's zero-tolerance message.
270
+ * Without it a git refusal (ownership, a missing git, a broken checkout) is indistinguishable from a
271
+ * checkout that simply has no `origin/next`, which is how the ownership problem hid. Only the first
272
+ * line git printed is kept.
273
+ */
274
+ function explainNoBaseline(repoRoot, { execFileSyncImpl = execFileSync } = {}) {
275
+ try {
276
+ execFileSyncImpl('git', [...safeDirectoryArgs(repoRoot), 'rev-parse', '--git-dir'], {
277
+ cwd: repoRoot,
278
+ encoding: 'utf-8',
279
+ stdio: ['ignore', 'pipe', 'pipe'],
280
+ });
281
+ } catch (error) {
282
+ const detail = String((error && (error.stderr || error.message)) || '').trim().split(/\r?\n/)[0];
283
+ return `git could not read ${repoRoot}${detail ? `: ${detail}` : ''}`;
284
+ }
285
+ return 'no baseline ref (origin/next, next) resolved, or it lacks package.json / package-lock.json';
286
+ }
287
+
255
288
  /**
256
289
  * Extracts package.json + package-lock.json (optionally under `subdir`,
257
290
  * e.g. 'sdk') from `ref` at git object level into a fresh temp directory --
@@ -260,17 +293,17 @@ function runInstalledTreeAudit(cwd, opts = {}) {
260
293
  * clone that never fetched it) or either file is absent at that ref --
261
294
  * callers treat `null` as "no baseline available", not an error.
262
295
  */
263
- function extractBaselineTree(ref, repoRoot, subdir = '') {
296
+ function extractBaselineTree(ref, repoRoot, subdir = '', { execFileSyncImpl = execFileSync } = {}) {
264
297
  const rel = (name) => (subdir ? path.posix.join(subdir, name) : name);
265
298
  let pkgJson;
266
299
  let lockJson;
267
300
  try {
268
- pkgJson = execFileSync('git', ['show', `${ref}:${rel('package.json')}`], {
301
+ pkgJson = execFileSyncImpl('git', [...safeDirectoryArgs(repoRoot), 'show', `${ref}:${rel('package.json')}`], {
269
302
  cwd: repoRoot,
270
303
  encoding: 'utf-8',
271
304
  stdio: ['ignore', 'pipe', 'ignore'],
272
305
  });
273
- lockJson = execFileSync('git', ['show', `${ref}:${rel('package-lock.json')}`], {
306
+ lockJson = execFileSyncImpl('git', [...safeDirectoryArgs(repoRoot), 'show', `${ref}:${rel('package-lock.json')}`], {
274
307
  cwd: repoRoot,
275
308
  encoding: 'utf-8',
276
309
  stdio: ['ignore', 'pipe', 'ignore'],
@@ -322,12 +355,12 @@ const NULL_SHA = '0000000000000000000000000000000000000000';
322
355
  * Returns '' if none resolve -- callers fall back to strict zero-tolerance
323
356
  * rather than silently skipping the gate.
324
357
  */
325
- function resolveBaselineRef(repoRoot) {
358
+ function resolveBaselineRef(repoRoot, { execFileSyncImpl = execFileSync } = {}) {
326
359
  if (process.env.AUDIT_BASELINE_REF) return process.env.AUDIT_BASELINE_REF;
327
360
  if (process.env.GITHUB_BASE_REF) return `origin/${process.env.GITHUB_BASE_REF}`;
328
361
  if (process.env.GITHUB_EVENT_NAME === 'push') {
329
362
  try {
330
- const parent = execFileSync('git', ['rev-parse', '--verify', 'HEAD~1'], {
363
+ const parent = execFileSyncImpl('git', [...safeDirectoryArgs(repoRoot), 'rev-parse', '--verify', 'HEAD~1'], {
331
364
  cwd: repoRoot,
332
365
  encoding: 'utf-8',
333
366
  stdio: ['ignore', 'pipe', 'ignore'],
@@ -338,7 +371,7 @@ function resolveBaselineRef(repoRoot) {
338
371
  }
339
372
  }
340
373
  try {
341
- execFileSync('git', ['rev-parse', '--verify', 'origin/next'], {
374
+ execFileSyncImpl('git', [...safeDirectoryArgs(repoRoot), 'rev-parse', '--verify', 'origin/next'], {
342
375
  cwd: repoRoot,
343
376
  stdio: 'ignore',
344
377
  });
@@ -347,7 +380,7 @@ function resolveBaselineRef(repoRoot) {
347
380
  // fall through to a plain local branch
348
381
  }
349
382
  try {
350
- execFileSync('git', ['rev-parse', '--verify', 'next'], {
383
+ execFileSyncImpl('git', [...safeDirectoryArgs(repoRoot), 'rev-parse', '--verify', 'next'], {
351
384
  cwd: repoRoot,
352
385
  stdio: 'ignore',
353
386
  });
@@ -366,6 +399,7 @@ module.exports = {
366
399
  runNpmAuditWithRetry,
367
400
  extractBaselineTree,
368
401
  resolveBaselineRef,
402
+ explainNoBaseline,
369
403
  isTimeoutKill,
370
404
  buildTimeoutKillError,
371
405
  sleepSyncMs,
@@ -703,6 +703,7 @@ function runSmoke({
703
703
  ...effectiveNpmEnv,
704
704
  HOME: runtimeHome,
705
705
  USERPROFILE: runtimeHome,
706
+ GSD_HOME: runtimeHome, // #5017: the defaults store root follows HOME
706
707
  // Same reason as the init check above: install.js skips its main()
707
708
  // block when GSD_TEST_MODE is set and would exit 0 writing nothing.
708
709
  GSD_TEST_MODE: '',