@opengsd/gsd-path 1.4.0 → 1.6.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 (476) hide show
  1. package/CHANGELOG.md +460 -341
  2. package/DOCS.md +16 -5
  3. package/FULL.md +67 -6
  4. package/HOOKS.md +158 -10
  5. package/MIGRATE.md +12 -0
  6. package/QUICK.md +4 -2
  7. package/README.md +136 -116
  8. package/RUNTIME.md +24 -6
  9. package/UPDATE.md +39 -3
  10. package/WORKFLOW.md +80 -4
  11. package/package.json +5 -2
  12. package/platforms/shared-agents/dispatch.md +13 -0
  13. package/scripts/_common.py +256 -2
  14. package/scripts/archive_milestone.py +14 -13
  15. package/scripts/build_recovery.py +155 -58
  16. package/scripts/build_state.py +274 -8
  17. package/scripts/check_docs_audit.py +77 -4
  18. package/scripts/check_handoffs.py +635 -57
  19. package/scripts/check_task_briefs.py +293 -32
  20. package/scripts/detect_project.py +260 -20
  21. package/scripts/discussion_records.py +9 -1
  22. package/scripts/discussion_validate.py +93 -35
  23. package/scripts/dispatch_driver.py +549 -53
  24. package/scripts/git_guard.py +27 -8
  25. package/scripts/guard_hook.py +2630 -210
  26. package/scripts/install.mjs +99 -11
  27. package/scripts/install.py +231 -46
  28. package/scripts/integration.py +244 -65
  29. package/scripts/isolation.py +539 -70
  30. package/scripts/loop_run.py +16 -4
  31. package/scripts/members.py +77 -32
  32. package/scripts/migrate_core.py +2 -0
  33. package/scripts/model_policy.py +5 -1
  34. package/scripts/path_config.py +3 -3
  35. package/scripts/pipeline_diagnose.py +17 -2
  36. package/scripts/pipeline_git.py +131 -42
  37. package/scripts/pipeline_state.py +139 -39
  38. package/scripts/pipeline_undo.py +118 -16
  39. package/scripts/promote_lookahead.py +3 -3
  40. package/scripts/review_findings.py +180 -44
  41. package/scripts/roadmap.py +9 -1
  42. package/scripts/runtime_store.py +21 -2
  43. package/scripts/skill-resources.json +9 -2
  44. package/scripts/state_checkpoint.py +39 -36
  45. package/scripts/state_promote.py +15 -4
  46. package/scripts/status_runtime.py +22 -4
  47. package/scripts/task_context.py +14 -3
  48. package/scripts/wizard.mjs +1 -0
  49. package/scripts/workflow_run.py +14 -4
  50. package/scripts/worktree_paths.py +54 -2
  51. package/skills/gsd-path/DEFINE.md +34 -5
  52. package/skills/gsd-path/PLAN.md +14 -3
  53. package/skills/gsd-path/RESEARCH.md +11 -0
  54. package/skills/gsd-path/ROADMAP.md +16 -6
  55. package/skills/gsd-path/SHIP.md +32 -5
  56. package/skills/gsd-path/SKILL.md +52 -24
  57. package/skills/gsd-path/references/build-native.md +112 -10
  58. package/skills/gsd-path/references/build-recovery.md +13 -0
  59. package/skills/gsd-path/references/coder.md +7 -3
  60. package/skills/gsd-path/references/dispatch.md +13 -0
  61. package/skills/gsd-path/references/docs-auditor.md +5 -0
  62. package/skills/gsd-path/references/operating-rules.md +11 -3
  63. package/skills/gsd-path/references/planner.md +26 -4
  64. package/skills/gsd-path/references/reviewer-final.md +20 -2
  65. package/skills/gsd-path/references/reviewer-wave.md +56 -12
  66. package/skills/gsd-path/references/reviewer.md +3 -1
  67. package/skills/gsd-path/references/runtime-selection.md +9 -0
  68. package/skills/gsd-path/references/spec-probes.md +150 -0
  69. package/skills/gsd-path/scripts/_common.py +256 -2
  70. package/skills/gsd-path/scripts/archive_milestone.py +14 -13
  71. package/skills/gsd-path/scripts/build_recovery.py +155 -58
  72. package/skills/gsd-path/scripts/build_state.py +274 -8
  73. package/skills/gsd-path/scripts/check_docs_audit.py +77 -4
  74. package/skills/gsd-path/scripts/check_handoffs.py +635 -57
  75. package/skills/gsd-path/scripts/check_task_briefs.py +293 -32
  76. package/skills/gsd-path/scripts/detect_project.py +260 -20
  77. package/skills/gsd-path/scripts/discussion_records.py +9 -1
  78. package/skills/gsd-path/scripts/discussion_validate.py +93 -35
  79. package/skills/gsd-path/scripts/dispatch_driver.py +549 -53
  80. package/skills/gsd-path/scripts/git_guard.py +27 -8
  81. package/skills/gsd-path/scripts/integration.py +244 -65
  82. package/skills/gsd-path/scripts/isolation.py +539 -70
  83. package/skills/gsd-path/scripts/loop_run.py +16 -4
  84. package/skills/gsd-path/scripts/members.py +77 -32
  85. package/skills/gsd-path/scripts/model_policy.py +5 -1
  86. package/skills/gsd-path/scripts/path_config.py +3 -3
  87. package/skills/gsd-path/scripts/pipeline_git.py +131 -42
  88. package/skills/gsd-path/scripts/pipeline_state.py +139 -39
  89. package/skills/gsd-path/scripts/promote_lookahead.py +3 -3
  90. package/skills/gsd-path/scripts/review_findings.py +180 -44
  91. package/skills/gsd-path/scripts/roadmap.py +9 -1
  92. package/skills/gsd-path/scripts/state_checkpoint.py +39 -36
  93. package/skills/gsd-path/scripts/state_promote.py +15 -4
  94. package/skills/gsd-path/scripts/status_runtime.py +22 -4
  95. package/skills/gsd-path/scripts/task_context.py +14 -3
  96. package/skills/gsd-path/scripts/workflow_run.py +14 -4
  97. package/skills/gsd-path/scripts/worktree_paths.py +54 -2
  98. package/skills/gsd-path/templates/docs-audit.md +5 -1
  99. package/skills/gsd-path/templates/final-review.md +11 -2
  100. package/skills/gsd-path/templates/intent.md +30 -0
  101. package/skills/gsd-path/templates/patch-findings.md +3 -3
  102. package/skills/gsd-path/templates/plan.md +17 -2
  103. package/skills/gsd-path/templates/research-handoff.md +14 -3
  104. package/skills/gsd-path/templates/state.md +2 -1
  105. package/skills/gsd-path/templates/task.md +1 -0
  106. package/skills/gsd-path/templates/wave-review.md +28 -9
  107. package/skills/gsd-path-build/references/build-native.md +112 -10
  108. package/skills/gsd-path-build/references/build-recovery.md +13 -0
  109. package/skills/gsd-path-build/references/coder.md +7 -3
  110. package/skills/gsd-path-build/references/dispatch.md +13 -0
  111. package/skills/gsd-path-build/references/operating-rules.md +11 -3
  112. package/skills/gsd-path-build/references/reviewer-final.md +20 -2
  113. package/skills/gsd-path-build/references/reviewer-wave.md +56 -12
  114. package/skills/gsd-path-build/references/reviewer.md +3 -1
  115. package/skills/gsd-path-build/references/runtime-selection.md +9 -0
  116. package/skills/gsd-path-build/references/spec-probes.md +150 -0
  117. package/skills/gsd-path-build/scripts/_common.py +256 -2
  118. package/skills/gsd-path-build/scripts/archive_milestone.py +14 -13
  119. package/skills/gsd-path-build/scripts/build_recovery.py +155 -58
  120. package/skills/gsd-path-build/scripts/build_state.py +274 -8
  121. package/skills/gsd-path-build/scripts/check_handoffs.py +635 -57
  122. package/skills/gsd-path-build/scripts/check_task_briefs.py +293 -32
  123. package/skills/gsd-path-build/scripts/detect_project.py +260 -20
  124. package/skills/gsd-path-build/scripts/discussion_records.py +9 -1
  125. package/skills/gsd-path-build/scripts/discussion_validate.py +93 -35
  126. package/skills/gsd-path-build/scripts/dispatch_driver.py +549 -53
  127. package/skills/gsd-path-build/scripts/integration.py +244 -65
  128. package/skills/gsd-path-build/scripts/isolation.py +539 -70
  129. package/skills/gsd-path-build/scripts/loop_run.py +16 -4
  130. package/skills/gsd-path-build/scripts/members.py +77 -32
  131. package/skills/gsd-path-build/scripts/model_policy.py +5 -1
  132. package/skills/gsd-path-build/scripts/path_config.py +3 -3
  133. package/skills/gsd-path-build/scripts/pipeline_git.py +131 -42
  134. package/skills/gsd-path-build/scripts/pipeline_state.py +139 -39
  135. package/skills/gsd-path-build/scripts/promote_lookahead.py +3 -3
  136. package/skills/gsd-path-build/scripts/review_findings.py +180 -44
  137. package/skills/gsd-path-build/scripts/roadmap.py +9 -1
  138. package/skills/gsd-path-build/scripts/state_checkpoint.py +39 -36
  139. package/skills/gsd-path-build/scripts/state_promote.py +15 -4
  140. package/skills/gsd-path-build/scripts/task_context.py +14 -3
  141. package/skills/gsd-path-build/scripts/workflow_run.py +14 -4
  142. package/skills/gsd-path-build/scripts/worktree_paths.py +54 -2
  143. package/skills/gsd-path-build/templates/task.md +1 -0
  144. package/skills/gsd-path-build/templates/wave-review.md +28 -9
  145. package/skills/gsd-path-decide/references/dispatch.md +13 -0
  146. package/skills/gsd-path-decide/references/operating-rules.md +11 -3
  147. package/skills/gsd-path-decide/references/runtime-selection.md +9 -0
  148. package/skills/gsd-path-decide/scripts/_common.py +256 -2
  149. package/skills/gsd-path-decide/scripts/archive_milestone.py +14 -13
  150. package/skills/gsd-path-decide/scripts/build_recovery.py +155 -58
  151. package/skills/gsd-path-decide/scripts/check_handoffs.py +635 -57
  152. package/skills/gsd-path-decide/scripts/check_task_briefs.py +293 -32
  153. package/skills/gsd-path-decide/scripts/detect_project.py +260 -20
  154. package/skills/gsd-path-decide/scripts/discussion_records.py +9 -1
  155. package/skills/gsd-path-decide/scripts/discussion_validate.py +93 -35
  156. package/skills/gsd-path-decide/scripts/integration.py +244 -65
  157. package/skills/gsd-path-decide/scripts/isolation.py +539 -70
  158. package/skills/gsd-path-decide/scripts/loop_run.py +16 -4
  159. package/skills/gsd-path-decide/scripts/members.py +77 -32
  160. package/skills/gsd-path-decide/scripts/model_policy.py +5 -1
  161. package/skills/gsd-path-decide/scripts/path_config.py +3 -3
  162. package/skills/gsd-path-decide/scripts/pipeline_git.py +131 -42
  163. package/skills/gsd-path-decide/scripts/pipeline_state.py +139 -39
  164. package/skills/gsd-path-decide/scripts/promote_lookahead.py +3 -3
  165. package/skills/gsd-path-decide/scripts/roadmap.py +9 -1
  166. package/skills/gsd-path-decide/scripts/state_checkpoint.py +39 -36
  167. package/skills/gsd-path-decide/scripts/state_promote.py +15 -4
  168. package/skills/gsd-path-decide/scripts/worktree_paths.py +54 -2
  169. package/skills/gsd-path-define/SKILL.md +34 -5
  170. package/skills/gsd-path-define/references/build-recovery.md +13 -0
  171. package/skills/gsd-path-define/references/operating-rules.md +11 -3
  172. package/skills/gsd-path-define/references/runtime-selection.md +9 -0
  173. package/skills/gsd-path-define/references/spec-probes.md +150 -0
  174. package/skills/gsd-path-define/scripts/_common.py +256 -2
  175. package/skills/gsd-path-define/scripts/archive_milestone.py +14 -13
  176. package/skills/gsd-path-define/scripts/build_recovery.py +155 -58
  177. package/skills/gsd-path-define/scripts/check_handoffs.py +635 -57
  178. package/skills/gsd-path-define/scripts/check_task_briefs.py +293 -32
  179. package/skills/gsd-path-define/scripts/detect_project.py +260 -20
  180. package/skills/gsd-path-define/scripts/discussion_records.py +9 -1
  181. package/skills/gsd-path-define/scripts/discussion_validate.py +93 -35
  182. package/skills/gsd-path-define/scripts/integration.py +244 -65
  183. package/skills/gsd-path-define/scripts/isolation.py +539 -70
  184. package/skills/gsd-path-define/scripts/loop_run.py +16 -4
  185. package/skills/gsd-path-define/scripts/members.py +77 -32
  186. package/skills/gsd-path-define/scripts/model_policy.py +5 -1
  187. package/skills/gsd-path-define/scripts/path_config.py +3 -3
  188. package/skills/gsd-path-define/scripts/pipeline_git.py +131 -42
  189. package/skills/gsd-path-define/scripts/pipeline_state.py +139 -39
  190. package/skills/gsd-path-define/scripts/promote_lookahead.py +3 -3
  191. package/skills/gsd-path-define/scripts/roadmap.py +9 -1
  192. package/skills/gsd-path-define/scripts/state_checkpoint.py +39 -36
  193. package/skills/gsd-path-define/scripts/state_promote.py +15 -4
  194. package/skills/gsd-path-define/scripts/worktree_paths.py +54 -2
  195. package/skills/gsd-path-define/templates/intent.md +30 -0
  196. package/skills/gsd-path-define/templates/state.md +2 -1
  197. package/skills/gsd-path-discuss/references/operating-rules.md +11 -3
  198. package/skills/gsd-path-discuss/references/runtime-selection.md +9 -0
  199. package/skills/gsd-path-discuss/scripts/_common.py +256 -2
  200. package/skills/gsd-path-discuss/scripts/discussion_records.py +9 -1
  201. package/skills/gsd-path-discuss/scripts/loop_run.py +16 -4
  202. package/skills/gsd-path-discuss/scripts/model_policy.py +5 -1
  203. package/skills/gsd-path-discuss/scripts/path_config.py +3 -3
  204. package/skills/gsd-path-discuss/scripts/worktree_paths.py +54 -2
  205. package/skills/gsd-path-docs-audit/references/dispatch.md +13 -0
  206. package/skills/gsd-path-docs-audit/references/docs-auditor.md +5 -0
  207. package/skills/gsd-path-docs-audit/references/operating-rules.md +11 -3
  208. package/skills/gsd-path-docs-audit/references/runtime-selection.md +9 -0
  209. package/skills/gsd-path-docs-audit/scripts/_common.py +256 -2
  210. package/skills/gsd-path-docs-audit/scripts/archive_milestone.py +14 -13
  211. package/skills/gsd-path-docs-audit/scripts/build_recovery.py +155 -58
  212. package/skills/gsd-path-docs-audit/scripts/check_docs_audit.py +77 -4
  213. package/skills/gsd-path-docs-audit/scripts/check_handoffs.py +635 -57
  214. package/skills/gsd-path-docs-audit/scripts/check_task_briefs.py +293 -32
  215. package/skills/gsd-path-docs-audit/scripts/detect_project.py +260 -20
  216. package/skills/gsd-path-docs-audit/scripts/discussion_records.py +9 -1
  217. package/skills/gsd-path-docs-audit/scripts/discussion_validate.py +93 -35
  218. package/skills/gsd-path-docs-audit/scripts/integration.py +244 -65
  219. package/skills/gsd-path-docs-audit/scripts/isolation.py +539 -70
  220. package/skills/gsd-path-docs-audit/scripts/loop_run.py +16 -4
  221. package/skills/gsd-path-docs-audit/scripts/members.py +77 -32
  222. package/skills/gsd-path-docs-audit/scripts/model_policy.py +5 -1
  223. package/skills/gsd-path-docs-audit/scripts/path_config.py +3 -3
  224. package/skills/gsd-path-docs-audit/scripts/pipeline_git.py +131 -42
  225. package/skills/gsd-path-docs-audit/scripts/pipeline_state.py +139 -39
  226. package/skills/gsd-path-docs-audit/scripts/promote_lookahead.py +3 -3
  227. package/skills/gsd-path-docs-audit/scripts/roadmap.py +9 -1
  228. package/skills/gsd-path-docs-audit/scripts/state_checkpoint.py +39 -36
  229. package/skills/gsd-path-docs-audit/scripts/state_promote.py +15 -4
  230. package/skills/gsd-path-docs-audit/scripts/worktree_paths.py +54 -2
  231. package/skills/gsd-path-docs-audit/templates/docs-audit.md +5 -1
  232. package/skills/gsd-path-forensics/references/operating-rules.md +11 -3
  233. package/skills/gsd-path-forensics/references/runtime-selection.md +9 -0
  234. package/skills/gsd-path-forensics/scripts/_common.py +256 -2
  235. package/skills/gsd-path-forensics/scripts/discussion_records.py +9 -1
  236. package/skills/gsd-path-forensics/scripts/loop_run.py +16 -4
  237. package/skills/gsd-path-forensics/scripts/model_policy.py +5 -1
  238. package/skills/gsd-path-forensics/scripts/path_config.py +3 -3
  239. package/skills/gsd-path-forensics/scripts/pipeline_diagnose.py +17 -2
  240. package/skills/gsd-path-forensics/scripts/pipeline_undo.py +118 -16
  241. package/skills/gsd-path-forensics/scripts/worktree_paths.py +54 -2
  242. package/skills/gsd-path-inspect/references/dispatch.md +13 -0
  243. package/skills/gsd-path-inspect/references/docs-auditor.md +5 -0
  244. package/skills/gsd-path-inspect/references/operating-rules.md +11 -3
  245. package/skills/gsd-path-inspect/references/runtime-selection.md +9 -0
  246. package/skills/gsd-path-inspect/scripts/_common.py +256 -2
  247. package/skills/gsd-path-inspect/scripts/archive_milestone.py +14 -13
  248. package/skills/gsd-path-inspect/scripts/build_recovery.py +155 -58
  249. package/skills/gsd-path-inspect/scripts/check_docs_audit.py +77 -4
  250. package/skills/gsd-path-inspect/scripts/check_handoffs.py +635 -57
  251. package/skills/gsd-path-inspect/scripts/check_task_briefs.py +293 -32
  252. package/skills/gsd-path-inspect/scripts/detect_project.py +260 -20
  253. package/skills/gsd-path-inspect/scripts/discussion_records.py +9 -1
  254. package/skills/gsd-path-inspect/scripts/discussion_validate.py +93 -35
  255. package/skills/gsd-path-inspect/scripts/integration.py +244 -65
  256. package/skills/gsd-path-inspect/scripts/isolation.py +539 -70
  257. package/skills/gsd-path-inspect/scripts/loop_run.py +16 -4
  258. package/skills/gsd-path-inspect/scripts/members.py +77 -32
  259. package/skills/gsd-path-inspect/scripts/model_policy.py +5 -1
  260. package/skills/gsd-path-inspect/scripts/path_config.py +3 -3
  261. package/skills/gsd-path-inspect/scripts/pipeline_git.py +131 -42
  262. package/skills/gsd-path-inspect/scripts/pipeline_state.py +139 -39
  263. package/skills/gsd-path-inspect/scripts/promote_lookahead.py +3 -3
  264. package/skills/gsd-path-inspect/scripts/roadmap.py +9 -1
  265. package/skills/gsd-path-inspect/scripts/state_checkpoint.py +39 -36
  266. package/skills/gsd-path-inspect/scripts/state_promote.py +15 -4
  267. package/skills/gsd-path-inspect/scripts/workflow_run.py +14 -4
  268. package/skills/gsd-path-inspect/scripts/worktree_paths.py +54 -2
  269. package/skills/gsd-path-inspect/templates/docs-audit.md +5 -1
  270. package/skills/gsd-path-inspect/templates/state.md +2 -1
  271. package/skills/gsd-path-loop/references/operating-rules.md +11 -3
  272. package/skills/gsd-path-loop/references/runtime-selection.md +9 -0
  273. package/skills/gsd-path-loop/scripts/_common.py +256 -2
  274. package/skills/gsd-path-loop/scripts/discussion_records.py +9 -1
  275. package/skills/gsd-path-loop/scripts/loop_run.py +16 -4
  276. package/skills/gsd-path-loop/scripts/model_policy.py +5 -1
  277. package/skills/gsd-path-loop/scripts/path_config.py +3 -3
  278. package/skills/gsd-path-loop/scripts/worktree_paths.py +54 -2
  279. package/skills/gsd-path-migrate/SKILL.md +8 -0
  280. package/skills/gsd-path-migrate/references/operating-rules.md +11 -3
  281. package/skills/gsd-path-migrate/references/runtime-selection.md +9 -0
  282. package/skills/gsd-path-migrate/scripts/_common.py +256 -2
  283. package/skills/gsd-path-migrate/scripts/discussion_records.py +9 -1
  284. package/skills/gsd-path-migrate/scripts/loop_run.py +16 -4
  285. package/skills/gsd-path-migrate/scripts/migrate_core.py +2 -0
  286. package/skills/gsd-path-migrate/scripts/model_policy.py +5 -1
  287. package/skills/gsd-path-migrate/scripts/path_config.py +3 -3
  288. package/skills/gsd-path-plan/SKILL.md +14 -3
  289. package/skills/gsd-path-plan/references/build-recovery.md +13 -0
  290. package/skills/gsd-path-plan/references/dispatch.md +13 -0
  291. package/skills/gsd-path-plan/references/operating-rules.md +11 -3
  292. package/skills/gsd-path-plan/references/planner.md +26 -4
  293. package/skills/gsd-path-plan/references/runtime-selection.md +9 -0
  294. package/skills/gsd-path-plan/references/spec-probes.md +150 -0
  295. package/skills/gsd-path-plan/scripts/_common.py +256 -2
  296. package/skills/gsd-path-plan/scripts/archive_milestone.py +14 -13
  297. package/skills/gsd-path-plan/scripts/build_recovery.py +155 -58
  298. package/skills/gsd-path-plan/scripts/check_handoffs.py +635 -57
  299. package/skills/gsd-path-plan/scripts/check_task_briefs.py +293 -32
  300. package/skills/gsd-path-plan/scripts/detect_project.py +260 -20
  301. package/skills/gsd-path-plan/scripts/discussion_records.py +9 -1
  302. package/skills/gsd-path-plan/scripts/discussion_validate.py +93 -35
  303. package/skills/gsd-path-plan/scripts/integration.py +244 -65
  304. package/skills/gsd-path-plan/scripts/isolation.py +539 -70
  305. package/skills/gsd-path-plan/scripts/loop_run.py +16 -4
  306. package/skills/gsd-path-plan/scripts/members.py +77 -32
  307. package/skills/gsd-path-plan/scripts/model_policy.py +5 -1
  308. package/skills/gsd-path-plan/scripts/path_config.py +3 -3
  309. package/skills/gsd-path-plan/scripts/pipeline_git.py +131 -42
  310. package/skills/gsd-path-plan/scripts/pipeline_state.py +139 -39
  311. package/skills/gsd-path-plan/scripts/promote_lookahead.py +3 -3
  312. package/skills/gsd-path-plan/scripts/roadmap.py +9 -1
  313. package/skills/gsd-path-plan/scripts/state_checkpoint.py +39 -36
  314. package/skills/gsd-path-plan/scripts/state_promote.py +15 -4
  315. package/skills/gsd-path-plan/scripts/workflow_run.py +14 -4
  316. package/skills/gsd-path-plan/scripts/worktree_paths.py +54 -2
  317. package/skills/gsd-path-plan/templates/patch-findings.md +3 -3
  318. package/skills/gsd-path-plan/templates/plan.md +17 -2
  319. package/skills/gsd-path-plan/templates/task.md +1 -0
  320. package/skills/gsd-path-research/SKILL.md +11 -0
  321. package/skills/gsd-path-research/references/dispatch.md +13 -0
  322. package/skills/gsd-path-research/references/operating-rules.md +11 -3
  323. package/skills/gsd-path-research/references/runtime-selection.md +9 -0
  324. package/skills/gsd-path-research/scripts/_common.py +256 -2
  325. package/skills/gsd-path-research/scripts/archive_milestone.py +14 -13
  326. package/skills/gsd-path-research/scripts/build_recovery.py +155 -58
  327. package/skills/gsd-path-research/scripts/check_handoffs.py +635 -57
  328. package/skills/gsd-path-research/scripts/check_task_briefs.py +293 -32
  329. package/skills/gsd-path-research/scripts/detect_project.py +260 -20
  330. package/skills/gsd-path-research/scripts/discussion_records.py +9 -1
  331. package/skills/gsd-path-research/scripts/discussion_validate.py +93 -35
  332. package/skills/gsd-path-research/scripts/integration.py +244 -65
  333. package/skills/gsd-path-research/scripts/isolation.py +539 -70
  334. package/skills/gsd-path-research/scripts/loop_run.py +16 -4
  335. package/skills/gsd-path-research/scripts/members.py +77 -32
  336. package/skills/gsd-path-research/scripts/model_policy.py +5 -1
  337. package/skills/gsd-path-research/scripts/path_config.py +3 -3
  338. package/skills/gsd-path-research/scripts/pipeline_git.py +131 -42
  339. package/skills/gsd-path-research/scripts/pipeline_state.py +139 -39
  340. package/skills/gsd-path-research/scripts/promote_lookahead.py +3 -3
  341. package/skills/gsd-path-research/scripts/roadmap.py +9 -1
  342. package/skills/gsd-path-research/scripts/state_checkpoint.py +39 -36
  343. package/skills/gsd-path-research/scripts/state_promote.py +15 -4
  344. package/skills/gsd-path-research/scripts/worktree_paths.py +54 -2
  345. package/skills/gsd-path-research/templates/research-handoff.md +14 -3
  346. package/skills/gsd-path-roadmap/SKILL.md +16 -6
  347. package/skills/gsd-path-roadmap/references/dispatch.md +13 -0
  348. package/skills/gsd-path-roadmap/references/operating-rules.md +11 -3
  349. package/skills/gsd-path-roadmap/references/runtime-selection.md +9 -0
  350. package/skills/gsd-path-roadmap/scripts/_common.py +256 -2
  351. package/skills/gsd-path-roadmap/scripts/archive_milestone.py +14 -13
  352. package/skills/gsd-path-roadmap/scripts/build_recovery.py +155 -58
  353. package/skills/gsd-path-roadmap/scripts/check_handoffs.py +635 -57
  354. package/skills/gsd-path-roadmap/scripts/check_task_briefs.py +293 -32
  355. package/skills/gsd-path-roadmap/scripts/detect_project.py +260 -20
  356. package/skills/gsd-path-roadmap/scripts/discussion_records.py +9 -1
  357. package/skills/gsd-path-roadmap/scripts/discussion_validate.py +93 -35
  358. package/skills/gsd-path-roadmap/scripts/integration.py +244 -65
  359. package/skills/gsd-path-roadmap/scripts/isolation.py +539 -70
  360. package/skills/gsd-path-roadmap/scripts/loop_run.py +16 -4
  361. package/skills/gsd-path-roadmap/scripts/members.py +77 -32
  362. package/skills/gsd-path-roadmap/scripts/model_policy.py +5 -1
  363. package/skills/gsd-path-roadmap/scripts/path_config.py +3 -3
  364. package/skills/gsd-path-roadmap/scripts/pipeline_git.py +131 -42
  365. package/skills/gsd-path-roadmap/scripts/pipeline_state.py +139 -39
  366. package/skills/gsd-path-roadmap/scripts/promote_lookahead.py +3 -3
  367. package/skills/gsd-path-roadmap/scripts/roadmap.py +9 -1
  368. package/skills/gsd-path-roadmap/scripts/state_checkpoint.py +39 -36
  369. package/skills/gsd-path-roadmap/scripts/state_promote.py +15 -4
  370. package/skills/gsd-path-roadmap/scripts/worktree_paths.py +54 -2
  371. package/skills/gsd-path-ship/SKILL.md +32 -5
  372. package/skills/gsd-path-ship/references/dispatch.md +13 -0
  373. package/skills/gsd-path-ship/references/operating-rules.md +11 -3
  374. package/skills/gsd-path-ship/references/reviewer-final.md +20 -2
  375. package/skills/gsd-path-ship/references/reviewer-wave.md +56 -12
  376. package/skills/gsd-path-ship/references/reviewer.md +3 -1
  377. package/skills/gsd-path-ship/references/runtime-selection.md +9 -0
  378. package/skills/gsd-path-ship/references/spec-probes.md +150 -0
  379. package/skills/gsd-path-ship/scripts/_common.py +256 -2
  380. package/skills/gsd-path-ship/scripts/archive_milestone.py +14 -13
  381. package/skills/gsd-path-ship/scripts/build_recovery.py +155 -58
  382. package/skills/gsd-path-ship/scripts/build_state.py +274 -8
  383. package/skills/gsd-path-ship/scripts/check_handoffs.py +635 -57
  384. package/skills/gsd-path-ship/scripts/check_task_briefs.py +293 -32
  385. package/skills/gsd-path-ship/scripts/detect_project.py +260 -20
  386. package/skills/gsd-path-ship/scripts/discussion_records.py +9 -1
  387. package/skills/gsd-path-ship/scripts/discussion_validate.py +93 -35
  388. package/skills/gsd-path-ship/scripts/integration.py +244 -65
  389. package/skills/gsd-path-ship/scripts/isolation.py +539 -70
  390. package/skills/gsd-path-ship/scripts/loop_run.py +16 -4
  391. package/skills/gsd-path-ship/scripts/members.py +77 -32
  392. package/skills/gsd-path-ship/scripts/model_policy.py +5 -1
  393. package/skills/gsd-path-ship/scripts/path_config.py +3 -3
  394. package/skills/gsd-path-ship/scripts/pipeline_git.py +131 -42
  395. package/skills/gsd-path-ship/scripts/pipeline_state.py +139 -39
  396. package/skills/gsd-path-ship/scripts/promote_lookahead.py +3 -3
  397. package/skills/gsd-path-ship/scripts/roadmap.py +9 -1
  398. package/skills/gsd-path-ship/scripts/state_checkpoint.py +39 -36
  399. package/skills/gsd-path-ship/scripts/state_promote.py +15 -4
  400. package/skills/gsd-path-ship/scripts/workflow_run.py +14 -4
  401. package/skills/gsd-path-ship/scripts/worktree_paths.py +54 -2
  402. package/skills/gsd-path-ship/templates/final-review.md +11 -2
  403. package/skills/gsd-path-ship/templates/patch-findings.md +3 -3
  404. package/skills/gsd-path-ship/templates/wave-review.md +28 -9
  405. package/skills/gsd-path-undo/references/operating-rules.md +11 -3
  406. package/skills/gsd-path-undo/references/runtime-selection.md +9 -0
  407. package/skills/gsd-path-undo/scripts/_common.py +256 -2
  408. package/skills/gsd-path-undo/scripts/discussion_records.py +9 -1
  409. package/skills/gsd-path-undo/scripts/loop_run.py +16 -4
  410. package/skills/gsd-path-undo/scripts/model_policy.py +5 -1
  411. package/skills/gsd-path-undo/scripts/path_config.py +3 -3
  412. package/skills/gsd-path-undo/scripts/pipeline_undo.py +118 -16
  413. package/skills/gsd-path-undo/scripts/worktree_paths.py +54 -2
  414. package/skills/path/DEFINE.md +34 -5
  415. package/skills/path/PLAN.md +14 -3
  416. package/skills/path/RESEARCH.md +11 -0
  417. package/skills/path/ROADMAP.md +16 -6
  418. package/skills/path/SHIP.md +32 -5
  419. package/skills/path/SKILL.md +52 -24
  420. package/skills/path/references/build-native.md +112 -10
  421. package/skills/path/references/build-recovery.md +13 -0
  422. package/skills/path/references/coder.md +7 -3
  423. package/skills/path/references/dispatch.md +13 -0
  424. package/skills/path/references/docs-auditor.md +5 -0
  425. package/skills/path/references/operating-rules.md +11 -3
  426. package/skills/path/references/planner.md +26 -4
  427. package/skills/path/references/reviewer-final.md +20 -2
  428. package/skills/path/references/reviewer-wave.md +56 -12
  429. package/skills/path/references/reviewer.md +3 -1
  430. package/skills/path/references/runtime-selection.md +9 -0
  431. package/skills/path/references/spec-probes.md +150 -0
  432. package/skills/path/scripts/_common.py +256 -2
  433. package/skills/path/scripts/archive_milestone.py +14 -13
  434. package/skills/path/scripts/build_recovery.py +155 -58
  435. package/skills/path/scripts/build_state.py +274 -8
  436. package/skills/path/scripts/check_docs_audit.py +77 -4
  437. package/skills/path/scripts/check_handoffs.py +635 -57
  438. package/skills/path/scripts/check_task_briefs.py +293 -32
  439. package/skills/path/scripts/detect_project.py +260 -20
  440. package/skills/path/scripts/discussion_records.py +9 -1
  441. package/skills/path/scripts/discussion_validate.py +93 -35
  442. package/skills/path/scripts/dispatch_driver.py +549 -53
  443. package/skills/path/scripts/git_guard.py +27 -8
  444. package/skills/path/scripts/integration.py +244 -65
  445. package/skills/path/scripts/isolation.py +539 -70
  446. package/skills/path/scripts/loop_run.py +16 -4
  447. package/skills/path/scripts/members.py +77 -32
  448. package/skills/path/scripts/model_policy.py +5 -1
  449. package/skills/path/scripts/path_config.py +3 -3
  450. package/skills/path/scripts/pipeline_git.py +131 -42
  451. package/skills/path/scripts/pipeline_state.py +139 -39
  452. package/skills/path/scripts/promote_lookahead.py +3 -3
  453. package/skills/path/scripts/review_findings.py +180 -44
  454. package/skills/path/scripts/roadmap.py +9 -1
  455. package/skills/path/scripts/state_checkpoint.py +39 -36
  456. package/skills/path/scripts/state_promote.py +15 -4
  457. package/skills/path/scripts/status_runtime.py +22 -4
  458. package/skills/path/scripts/task_context.py +14 -3
  459. package/skills/path/scripts/workflow_run.py +14 -4
  460. package/skills/path/scripts/worktree_paths.py +54 -2
  461. package/skills/path/templates/docs-audit.md +5 -1
  462. package/skills/path/templates/final-review.md +11 -2
  463. package/skills/path/templates/intent.md +30 -0
  464. package/skills/path/templates/patch-findings.md +3 -3
  465. package/skills/path/templates/plan.md +17 -2
  466. package/skills/path/templates/research-handoff.md +14 -3
  467. package/skills/path/templates/state.md +2 -1
  468. package/skills/path/templates/task.md +1 -0
  469. package/skills/path/templates/wave-review.md +28 -9
  470. package/skills/gsd-path/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  471. package/skills/gsd-path/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
  472. package/skills/gsd-path-build/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  473. package/skills/gsd-path-build/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
  474. package/skills/gsd-path-inspect/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  475. package/skills/gsd-path-plan/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  476. package/skills/gsd-path-ship/scripts/__pycache__/_common.cpython-312.pyc +0 -0
package/DOCS.md CHANGED
@@ -36,6 +36,7 @@ DOCS.md (here) four journeys in one place
36
36
  | **Team** — pin skills in repo | `--local` install; see [Installing](#installing) |
37
37
  | **Shipping broke** — archive commit blocked | [HOOKS.md](HOOKS.md) (expected with hooks) |
38
38
  | **Several repos** — one milestone changes them all | [Multi-repo milestones](README.md#multi-repo-milestones) |
39
+ | **Several people** — one project | [Working with more than one person](FULL.md#working-with-more-than-one-person) |
39
40
 
40
41
  ---
41
42
 
@@ -101,9 +102,9 @@ README's Windows notes). **Always** restart the agent session after install.
101
102
 
102
103
  Full roots and invocation table: [README.md](README.md#install-summary).
103
104
 
104
- **Python installer:** `scripts/install.py` supports global and `--local`
105
- installs plus `--update`. The Node CLI remains the interactive wizard and npm
106
- entry point.
105
+ **Python installer:** `scripts/install.py`; see
106
+ [README.md](README.md#install-summary) for what it supports. The Node CLI
107
+ remains the interactive wizard and npm entry point.
107
108
  Help: `node scripts/install.mjs --help`
108
109
 
109
110
  ---
@@ -247,8 +248,10 @@ resolved Git common directory and primary path, so separate clones and
247
248
  primary folders do not share a location.
248
249
 
249
250
  The first allocation pins the workspace location in
250
- `<git-common-dir>/gsd-path/workspaces/<workspace-id>.json`. Later environment
251
- changes do not move it. Existing sibling worktrees remain at their original
251
+ `<git-common-dir>/gsd-path/workspaces/<workspace-id>.json`. Environment
252
+ changes do not move it while a linked worktree remains. When a sidecar is
253
+ retired and no linked worktree remains, Path removes the pin, and the next
254
+ allocation reads `GSD_PATH_WORKTREE_ROOT` again. Existing sibling worktrees remain at their original
252
255
  paths and retain the same recovery and cleanup checks. These folders contain
253
256
  active work and evidence; they are not a disposable cache. Relocation needs
254
257
  a separate migration; do not edit placement records or move folders manually.
@@ -397,6 +400,14 @@ the supplied package's runtime and its compatible status launcher. Review those
397
400
  configuration changes before committing them. Existing versions remain available
398
401
  for other projects and branches.
399
402
 
403
+ To record where a patched runtime came from, add `--runtime-provenance-source`,
404
+ `--runtime-provenance-patch`, or `--runtime-provenance-note` to
405
+ `--runtime-upgrade`. The values are written to the `provenance` object
406
+ (`source`, `patch_ref`, `note`) in `.gsd-path/runtime.json`. Without a patch
407
+ value, a source root that is a Git checkout records its `HEAD` commit. A later
408
+ upgrade without these flags keeps the object only when the digest is unchanged.
409
+ Provenance is a record only; it does not change the digest or runtime validation.
410
+
400
411
  A new machine needs the selected runtime installed before status and guards can
401
412
  run. `gsd-path --runtime-restore --project /absolute/project --source-root
402
413
  /path/to/matching/package` restores that exact version without changing project
package/FULL.md CHANGED
@@ -8,7 +8,8 @@ Complete walkthrough from install to shipped milestone.
8
8
 
9
9
  **Contents:** [What it is](#what-gsd-path-is) · [Installation](#installation) ·
10
10
  [Starting a milestone](#starting-a-milestone) · [Phases](#phases-and-your-role) ·
11
- [Shipping](#shipping) · [Resume](#resume-and-recovery) · [Troubleshooting](#troubleshooting)
11
+ [Shipping](#shipping) · [Resume](#resume-and-recovery) ·
12
+ [More than one person](#working-with-more-than-one-person) · [Troubleshooting](#troubleshooting)
12
13
 
13
14
  **Related docs**
14
15
 
@@ -86,8 +87,8 @@ Use the [router and phase invocation table](README.md#install-summary) for your
86
87
  - **Python 3.9+** found as `python3`, `python`, or `py -3`; required for project
87
88
  installs, project refresh, and project-state
88
89
  doctor checks; optional for global-only Node installs. `scripts/install.py`
89
- mirrors global and `--local` install transactions and `--update`; it does not
90
- provide the interactive wizard
90
+ does not provide the interactive wizard; see
91
+ [README.md](README.md#install-summary) for what it supports
91
92
 
92
93
  ### Global install (default)
93
94
 
@@ -106,7 +107,7 @@ node scripts/install.mjs --codex --claude --cursor
106
107
 
107
108
  | Flag | Skills root |
108
109
  | --- | --- |
109
- | `--codex`, `--zed` | `~/.agents/skills` (shared bundle) |
110
+ | `--codex`, `--zed`, `--muse` | `~/.agents/skills` (shared bundle) |
110
111
  | `--claude` | `~/.claude/skills` |
111
112
  | `--grok` | `~/.grok/skills` |
112
113
  | `--opencode` | OpenCode config `skills/` |
@@ -176,7 +177,7 @@ also print a one-line update notice (24h cache, fail-silent).
176
177
  - Validates synchronized package before writing
177
178
  - Uses the [managed-skill backup and collision rules](UPDATE.md#what-auto-updates)
178
179
  - Rolls back **all** selected targets if any one fails
179
- - Codex, Antigravity, and Zed share one local physical root — installed once
180
+ - Codex, Antigravity, Zed, and Muse share one local physical root — installed once
180
181
  with a shared host-aware bundle
181
182
 
182
183
  Restart the host session after install if skills do not appear.
@@ -328,7 +329,11 @@ approve **Archive and ship**, the archive transaction begins:
328
329
 
329
330
  Direct integration is the project default. Before build, ask the router to set
330
331
  `pull-request` as the project default or as an override for the current
331
- milestone. The setting locks when build starts.
332
+ milestone. The setting locks when build starts. When origin is not GitHub.com
333
+ and `main` accepts merge requests only, set `external-landing`: Path publishes
334
+ the milestone branch, you merge it in your own forge with the merge message
335
+ that Path returns, and Path then validates the merge and tags it. See
336
+ [integration](WORKFLOW.md#integration).
332
337
 
333
338
  After `validate-integrated` passes, the next milestone starts clean on a new
334
339
  `gsd-path/M00N` cut from `origin/main`. Invoke the router again; brownfield
@@ -407,6 +412,61 @@ in force; see [the collection helper](scripts/isolation.py).
407
412
 
408
413
  ---
409
414
 
415
+ ## Working with more than one person
416
+
417
+ One operator drives a milestone. One checkout holds the bound branch
418
+ `gsd-path/M00N` and the `.project/` state of that milestone. A multi-repo
419
+ milestone does not change this: one coordinator checkout holds the state.
420
+
421
+ GSD Path does not record or check who approves a gate. The `STATE.md` log
422
+ keeps the date, the phase, and the event. The only name is the Git author of a
423
+ checkpoint commit, and GSD Path does not read it. Agree in your team who
424
+ approves.
425
+
426
+ **Supported**
427
+
428
+ - One person runs the router and approves the gates, in one checkout.
429
+ - Other people review and merge the result. Set `pull-request` integration
430
+ before build. Path opens the pull request and waits until a GitHub user
431
+ account merges it with a merge commit. Path does not check which user. With
432
+ `external-landing`, the review is the merge request in your own forge.
433
+ - A second session in the same checkout can ask for status and can run the
434
+ discussion skill. Status only reads. The discussion helper takes a lock and
435
+ only appends records.
436
+ - The desktop app and the monitor only read a watched project in the
437
+ background. Their explicit actions change install and configuration files.
438
+ They cannot advance a phase. See [daemon/README.md](daemon/README.md).
439
+
440
+ **Not protected**
441
+
442
+ - The locks are file locks on one computer, in one clone. They put helper
443
+ calls in sequence: state changes, approvals, discussion records, and
444
+ dispatch driver calls. A state change from an old view fails with
445
+ `expected state does not match`. A second dispatch driver call returns
446
+ `blocked`.
447
+ - The locks do not cover the files that agents write: the artifacts in
448
+ `.project/` and the product files. Two sessions that do phase work in one
449
+ checkout write to the same working tree.
450
+ - The locks do not reach a second clone. Each clone keeps its own `STATE.md`,
451
+ task landings, and approvals. GSD Path does not merge them. Ship stops
452
+ (`moved or collides`) when `origin` already has `gsd-path/M00N` from another
453
+ clone.
454
+ - You cannot share a milestone in progress through the remote. With
455
+ [guard hooks](HOOKS.md) installed, the pre-push hook refuses `gsd-path/M00N`
456
+ before its ship commit. It also refuses any other branch that carries the
457
+ unfinished state. Hooks are optional and local to each clone. A clone
458
+ without hooks has no such check.
459
+
460
+ **Do not**
461
+
462
+ - Do not run the router or a phase skill for one milestone from two clones, or
463
+ from two sessions at the same time.
464
+ - Do not push `gsd-path/M00N` by hand, and do not merge another branch into
465
+ it.
466
+ - Do not squash or rebase the integration pull request or merge request.
467
+
468
+ ---
469
+
410
470
  ## Standalone docs audit
411
471
 
412
472
  `/gsd-path-docs-audit` runs between phases as a drift check. Findings get
@@ -432,6 +492,7 @@ your skills:
432
492
  | Antigravity | `invoke_subagent` | |
433
493
  | Cursor | `Task` | installed `gsd-path` subagent |
434
494
  | Zed | `spawn_agent` | |
495
+ | Muse Code | `muse.subagent_spawn` | trusted workspace required |
435
496
  | Kiro | subagent facility | |
436
497
  | Kimi | `Agent` | `coder` child type |
437
498
 
package/HOOKS.md CHANGED
@@ -77,6 +77,29 @@ setups (Husky and friends) and linked worktrees (where `.git` is a file).
77
77
  Every selected host requires an initialized repository with a resolvable hooks
78
78
  directory; otherwise installation stops before writing.
79
79
 
80
+ ### Existing Git hooks
81
+
82
+ A repository can already have its own `pre-commit`, `commit-msg`, or `pre-push`
83
+ hook.
84
+
85
+ - **In the repository's own `.git/hooks`:** the installer keeps your hook as
86
+ `<hook>.gsd-path-chained` and writes the guard hook in its place. The guard
87
+ runs first. Your hook runs after it, with the same arguments and the same
88
+ `pre-push` input, only when the guard accepts. If the installation fails,
89
+ your hook is put back unchanged.
90
+ - **In a `core.hooksPath` directory (for example Husky) or a linked worktree:**
91
+ the installer stops with `cannot chain` and changes nothing. That directory
92
+ can be tracked or shared, so a rename there reaches other clones. Rename your
93
+ hook to `<hook>.gsd-path-chained` yourself, then rerun the installer. Commit
94
+ the rename when the directory is tracked.
95
+ - **`<hook>.gsd-path-chained` already exists beside a foreign hook:** the
96
+ installer stops. Decide which of the two files you want to keep.
97
+
98
+ Git hooks are local to a clone. A bot that merges on the server, such as
99
+ Renovate, never runs them, and its commits on the default branch do not
100
+ disturb milestone validation. A merge request can still conflict when the bot
101
+ and the milestone change the same file; Path does not resolve that conflict.
102
+
80
103
  Git hooks work for **any** agent that commits. Native guard wiring denies a tool
81
104
  call when its event is malformed or the guard cannot validate it.
82
105
 
@@ -128,12 +151,50 @@ See [UPDATE.md](UPDATE.md).
128
151
  the archive tree; shell operands count an ancestor only for deletion or move
129
152
  commands
130
153
  - `git reset --hard`, destructive `git clean` modes, force pushes (including
131
- `+` refspecs), destructive branch or ref deletion, `git branch -m`,
132
- `git worktree remove --force`, `git stash drop`/`clear`, and whole-tree
154
+ `+` refspecs), `git branch -m`, `git stash drop`/`clear`, and whole-tree
133
155
  `git checkout -- .`/`git restore .`
156
+ - forced branch deletion (`git branch -D`), `git update-ref` deletion, and
157
+ `git worktree remove --force` when the target is Path-owned: a `gsd-path/`,
158
+ `gsd-path-task/`, `gsd-path-verify/`, or `gsd-path-integrate/` branch, a
159
+ `refs/gsd-path/` ref, the bound `STATE.branch`, a task branch or worktree
160
+ that task frontmatter records, a worktree on one of these branches, and a
161
+ worktree below a managed worktree root (`~/.gsd-path`,
162
+ `GSD_PATH_WORKTREE_ROOT`, a pinned workspace root, or the earlier
163
+ `<repo>.gsd-path/` and `.<repo>-gsd-path-integrate-*` locations beside the
164
+ repository). The text `gsd-path` in a path does not make a worktree
165
+ Path-owned. Also Path-owned: the remote-tracking ref of one of these
166
+ branches (`origin/gsd-path/M001`), `refs/stash`, and a name that differs
167
+ from a recorded branch only in letter case. Other branches, refs, and
168
+ registered worktrees are allowed in each pipeline state. These three
169
+ commands are also denied when the guard cannot prove the target: a missing,
170
+ non-literal, or unregistered target, a shell parameter in the Git command
171
+ (`git -C "$dir" branch -D x`), a `~` or glob in a Git option value,
172
+ `update-ref --stdin`, an `update-ref` name outside `refs/` (`HEAD`) or an
173
+ option cluster (`-dm`), an `update-ref` deletion without `--no-deref` after
174
+ another Git command in the same command line, ownership metadata it cannot
175
+ read, a working directory that does not exist yet, or an `env` wrapper that
176
+ resets or unsets `HOME`, `XDG_CONFIG_HOME`, or a `GIT_*` variable. They are
177
+ denied too after a directory change the guard cannot model. Only
178
+ `cd <directory>` or `cd -- <directory>` is modeled, with one literal
179
+ directory that is absolute or starts with `./` or `../` (a shell with
180
+ `CDPATH` looks for a plain relative name in other directories). Another
181
+ command name (`pushd`, `chdir`), an option, a second operand, a redirection,
182
+ a `cd` in a subshell, pipeline, condition, function, alias, trap, or
183
+ comment line is not modeled. Use `git -C <directory>` there. A plain
184
+ redirection on the Git command (`2>/dev/null`, `>file`, `>>file`, `<file`,
185
+ `2>&1`, `&>file`) is not a target. A here-document, here-string, process
186
+ substitution, a redirection target that is not one literal word, or a
187
+ `# comment` after the command keeps the denial. So does a file
188
+ descriptor word of more than one digit or a `{name}` word against a
189
+ redirection (`10>file`, `{fd}>file`), because bash and zsh read that word
190
+ differently. With
191
+ such an `env` wrapper, or in a directory that does not exist yet, a Git
192
+ command that is not a built-in command is denied too, because its alias
193
+ cannot be inspected
134
194
  - shell writes (redirections, `tee`, `cp`, `mv`, `rm`, `sed -i`, ...) that
135
195
  target a routing control (`.git`, `.project/STATE.md`, `.project/next`,
136
- `.gsd-path`) while `.project/STATE.md` exists
196
+ `.gsd-path`) while `.project/STATE.md` exists, or target a product file
197
+ outside the routed build phase (same rule as direct file-edit tools)
137
198
  - repeated assignments to the same shell variable within one command; split
138
199
  these into separate tool calls so write targets can be resolved
139
200
  - copies whose destinations, including nested recursive-copy entries, resolve
@@ -145,7 +206,8 @@ See [UPDATE.md](UPDATE.md).
145
206
  source trees containing directory symlinks are denied; use literal directory
146
207
  paths and copy directory links separately
147
208
  - shell commands that reference the archive unless the whole command is a
148
- recognized standalone read or a single-command invocation of the bundled
209
+ recognized standalone read, a pipeline in which each segment is a recognized
210
+ read, or a single-command invocation of the bundled
149
211
  `pipeline_state.py` / `archive_milestone.py` helper, resolved to a regular file
150
212
  inside the verified runtime selected by `.gsd-path/runtime.json` (legacy projects use `.gsd-path/runtime/` beside `guard_hook.py`
151
213
  in the repository layout), using exactly `python` or `python3` with optional
@@ -161,11 +223,93 @@ See [UPDATE.md](UPDATE.md).
161
223
  - deletion or move commands outside a single simple segment, including command
162
224
  chains, pipes, newlines, grouping, directory changes, and command substitution
163
225
  - deletion or move commands with any argument outside the literal-path character
164
- set: ASCII letters, digits, `.`, `_`, `-`, and `/` (plus a drive prefix and
165
- backslashes on Windows). One matching pair of surrounding quotes is allowed;
166
- spaces, parameters, wildcards, braces, and tilde paths are denied even when
167
- quoted. This also applies to `find -delete` and supported destructive aliases
226
+ set: ASCII letters, digits, `.`, `_`, `-`, `/`, and ASCII spaces inside one
227
+ shell unit (plus a drive prefix and backslashes on Windows). One matching
228
+ pair of surrounding quotes is allowed; parameters, wildcards, braces, and
229
+ tilde paths are denied even when quoted. This also applies to
230
+ `find -delete` and supported destructive aliases
168
231
  - destructive Git commands nested in supported shell and command wrappers
232
+ - Git arguments that contain a shell parameter. Only plain `$name` and
233
+ `${name}` expansions pass, and only inside plain double-quoted spans of
234
+ read-only subcommands (`status`, `log`, `diff`, `show`, and the other
235
+ inspection commands) that the guard parses directly, such as
236
+ `git log --format="$t %H"` or `git show "HEAD:$f"`, because only double
237
+ quoting prevents word-splitting into options. A parameter outside double
238
+ quotes (`$x`, `HEAD:$f`, `--format=$x`, `"a b"$x`) is denied because its
239
+ expansion can split into a write option such as `--output`. Every other
240
+ parameter form (`${=x}`, `${(z)x}`, `${x:-y}`, `$x[@]`, `$1`, `$@`, `$*`,
241
+ `$#`, and the unbraced zsh flags `$=x`, `$~x`, `$^x`, `$+x`) is denied even
242
+ inside double quotes, because it can expand to more than one word; a
243
+ backslash-escaped marker (`"\$t"`) is likewise denied, because the shell
244
+ executes the literal text while the argument still shows the bare marker.
245
+ The same four zsh flags are denied in a `git -C` directory. A literal `$`
246
+ that starts no expansion (a regex anchor such as `--grep='fix$'`) passes.
247
+ A `-c`/`--config` key whose value git executes as a program —
248
+ `core.fsmonitor`, editors and pagers, `core.sshCommand`,
249
+ `core.askPass`, `filter.*` clean/smudge/process, `diff.*`
250
+ textconv/external/command, `merge.*` drivers, `core.gitProxy`,
251
+ `interactive.diffFilter`,
252
+ `remote.*` uploadpack/receivepack, `gpg.program` and `gpg.*.program`, `credential.helper` and
253
+ `credential.*.helper`, each `pager.<cmd>` key — is denied with a literal
254
+ value as with a parameter, because git runs it during an otherwise
255
+ read-only subcommand. A disabling form of such a key passes: the bare key,
256
+ an empty value, or `false`. A `--config-env` form is always denied, because
257
+ its value comes from the environment. A key through which git loads code —
258
+ `core.hooksPath`, `include.path`, `includeIf.*.path`, `url.*.insteadOf`,
259
+ `url.*.pushInsteadOf` — is denied with each value. `git config` is denied
260
+ when it sets one of these keys; to read or unset the key stays allowed.
261
+ A redirection at the end of a read (`git config <key> 2>/dev/null`) is not
262
+ a value. A separate digit before a redirection (`5 >/dev/null`), a word of two
263
+ or more digits (`12>/dev/null`) and a quoted operator are values, so they
264
+ make a set.
265
+ Each `git config` argument must be a plain literal word, bare or in one
266
+ pair of quotes: a backslash, mixed quotes, an unquoted glob (`*`, `?`, `[`),
267
+ an unquoted brace list or range (`{a,b}`, `{1..3}`) or a line continuation
268
+ in the word or one that joins it to the next word is denied, because the shell can make a different
269
+ argument list from it.
270
+ An unquoted word that starts with `#` among the `git config` arguments
271
+ is denied, because the shell reads it and the words after it as a comment.
272
+ The git subcommand word must be a plain literal word in each git command:
273
+ `git {config,...}` and a subcommand split by a line continuation are denied.
274
+ A program that runs the command in its arguments (`nice`, `nohup`,
275
+ `timeout`, `sudo`, `watch`, `time`, `env`, `stdbuf`, `setsid`) is
276
+ unwrapped: the guard skips the options of the program and checks the
277
+ command that it runs, so `nice git -c core.fsmonitor=/abs/h.sh status` is
278
+ denied by the git rule and `sudo apt install git` passes. A runner
279
+ option that writes, edits or enters a file or directory by itself is
280
+ denied (`time -o`, `sudo -e`, `sudo -D`, `sudo -R`, `watch -s`). The
281
+ `timeout` duration and the `watch` interval must be literal numbers, and
282
+ each runner option word must be a literal word; only a separate option
283
+ value can be a parameter in double quotes (`sudo -u "$USER" ls`). A short
284
+ option word is read as getopt reads it, so the attached value in
285
+ `sudo -upostgres psql` is not taken as more options. With an archive working directory a command runner is not
286
+ unwrapped and is denied as an unknown program. Other command
287
+ runners (`doas`, `ionice`, `noglob`) are not unwrapped, and `watch` with
288
+ the command in one quoted word is not checked.
289
+ Each git global option word, and the value word of `-c`, `-C`,
290
+ `--git-dir`, `--work-tree`, `--namespace` and `--config-env`, must resolve
291
+ to one word: a backslash, an unquoted glob or an unquoted brace list or
292
+ range in it is denied (`git -c {core.fsmonitor=/abs/h.sh,status}`,
293
+ `git -{p,c} core.fsmonitor=/abs/h.sh status`). A parameter in such a value
294
+ is denied also when no subcommand follows (`git -c $x`). Plain quoted parts
295
+ pass (`git -c user.name='A B' log`).
296
+ `git config` section renames and removals (`--rename-section`,
297
+ `--remove-section`) and `--edit` are denied, because a rename can move a
298
+ key into an executed section and `--edit` starts an editor.
299
+ Command substitution output, a parameter that starts an
300
+ argument, and a parameter in the value of an option that git writes to or
301
+ runs as a command (`--output`, `--upload-pack`, `--receive-pack`, `--exec`,
302
+ `-c`, `--config-env`, or a `<transport>::<address>` remote) are denied in
303
+ every form. These option names match by prefix (`--upload-pa`, `--exe`),
304
+ because git accepts abbreviated long options; in archive context the same
305
+ prefix match applies to `--output`, `--ext-diff`, and `--textconv`. The
306
+ exact read-only option `--text` is not an abbreviation and stays allowed. Any
307
+ other quoting construct in the command (`$'...'`, `$"..."`, quotes inside `${...}`, quotes or
308
+ backslashes in a comment, here-documents and here-strings) disables the
309
+ exception, so every parameter in a git argument of that command is denied.
310
+ The exception applies only to commands the guard parses directly, never
311
+ inside wrapped shell strings (`eval`, `bash -c`, `sh -c`, PowerShell or
312
+ `cmd` command strings), where the outer shell expands the parameter first
169
313
  - archive glob/brace expansions and execution-capable read options such as
170
314
  `rg --pre`
171
315
  - direct write, edit, and patch tool calls targeting `.project/STATE.md`,
@@ -265,9 +409,12 @@ writes nor verifies that wiring. To add it yourself, register
265
409
  | Antigravity | `.agents/hooks.json` `PreToolUse` | [Antigravity hooks](https://antigravity.google/docs/hooks) |
266
410
  | OpenCode | JS plugin `tool.execute.before` | [OpenCode plugins](https://opencode.ai/docs/plugins/) |
267
411
  | Zed | no hook API — git hooks only | — |
412
+ | Muse Code | no GSD Path hook integration — git hooks only | — |
268
413
 
269
- **Caveats:** The hook cannot prove which skill initiated a shell command or a
270
- build-phase edit, so AGENTS.md owns those re-entry cases. Grok and Kimi
414
+ **Caveats:** The hook cannot prove which skill initiated a build-phase edit
415
+ when the routed build phase is already active. Shell product writes use the
416
+ same phase gate as file-edit tools; AGENTS.md still owns plain-prompt re-entry
417
+ when no `.project/STATE.md` exists. Grok and Kimi
271
418
  fail-open on hook errors by design. Copilot, Kimi, Kiro, and Antigravity may
272
419
  not intercept subagent tools — treat coverage as orchestrator-level.
273
420
 
@@ -279,6 +426,7 @@ not intercept subagent tools — treat coverage as orchestrator-level.
279
426
  | `ship:` commit blocked with `app.py` staged | Ship commits may only touch `.project/` |
280
427
  | Tool denied editing archive | Pre-tool guard — use active paths, not archive |
281
428
  | Hook not running in Cursor | Run `--hooks-refresh-full --cursor --project /path/to/repo` |
429
+ | Installer stops with `cannot chain` | See [existing Git hooks](#existing-git-hooks): rename your hook to `<hook>.gsd-path-chained`, or remove the stale chained file, then rerun |
282
430
  | `--hooks-refresh` rejects an unmanaged guard | Move the foreign guard aside, then rerun refresh; use `--hooks-init` if guards are wanted |
283
431
  | Runtime missing, invalid, or legacy | Follow [runtime restoration or migration](DOCS.md#project-runtime-versions) |
284
432
 
package/MIGRATE.md CHANGED
@@ -10,6 +10,18 @@ selected project. Core history stays in `.planning/`; Path creates its own
10
10
  `.project/` state through the normal router. Core phase positions and completed
11
11
  plans do not become passed Path gates.
12
12
 
13
+ ## Requirements
14
+
15
+ - The default branch of `origin` can have any name, for example `master`.
16
+ Path initialization records it in `.project/STATE.md` as `default_branch`
17
+ and ships onto it. Run `git remote set-head origin --auto` before the first
18
+ Path run: an unset `origin/HEAD` records `main`. See
19
+ [default branch](WORKFLOW.md#default-branch).
20
+ - Pull-request shipping supports GitHub.com only. On GitLab, Gitea, or GitHub
21
+ Enterprise Server, ship with `direct`, or with
22
+ [`external-landing`](WORKFLOW.md#integration) when the default branch
23
+ accepts merge requests only.
24
+
13
25
  ## Start
14
26
 
15
27
  Install or update GSD Path using [the install guide](QUICK.md). In the Core
package/QUICK.md CHANGED
@@ -13,8 +13,10 @@
13
13
  One router skill drives a gated pipeline: inspect → define → research → decide →
14
14
  plan → build → ship. Every handoff lives in `.project/` so any session can resume from disk.
15
15
 
16
- **Hosts:** Codex, Claude Code, Grok, OpenCode, Copilot CLI, Qwen, Antigravity,
17
- Cursor, Zed, Kiro, Kimi Code.
16
+ **Hosts:** Codex, Claude Code, Grok, OpenCode, Antigravity, Cursor, and Kimi
17
+ Code have a passing live milestone for release 1.6.0. Copilot CLI, Qwen, Zed,
18
+ Kiro, and Muse Code install, but have no live milestone for that release. See
19
+ [host tiers](README.md).
18
20
 
19
21
  ---
20
22