@opengsd/gsd-path 1.0.0 → 1.2.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 (498) hide show
  1. package/AGENTS.md +33 -13
  2. package/CHANGELOG.md +68 -0
  3. package/DOCS.md +75 -6
  4. package/FULL.md +12 -15
  5. package/HOOKS.md +18 -9
  6. package/QUICK.md +8 -6
  7. package/README.md +218 -14
  8. package/RUNTIME.md +16 -5
  9. package/UPDATE.md +30 -11
  10. package/WORKFLOW.md +35 -16
  11. package/package.json +23 -1
  12. package/platforms/claude/dispatch.md +4 -4
  13. package/platforms/copilot/dispatch.md +4 -4
  14. package/platforms/cursor/dispatch.md +5 -10
  15. package/platforms/grok/dispatch.md +4 -6
  16. package/platforms/kimi/dispatch.md +4 -4
  17. package/platforms/kiro/dispatch.md +4 -6
  18. package/platforms/opencode/dispatch.md +4 -4
  19. package/platforms/qwen/dispatch.md +4 -4
  20. package/platforms/shared-agents/dispatch.md +12 -19
  21. package/scripts/_common.py +5 -0
  22. package/scripts/archive_milestone.py +30 -124
  23. package/scripts/bootstrap_repository.py +33 -4
  24. package/scripts/build_recovery.py +292 -0
  25. package/scripts/build_state.py +2 -0
  26. package/scripts/check_docs_audit.py +7 -3
  27. package/scripts/check_handoffs.py +7 -1
  28. package/scripts/check_task_briefs.py +3 -0
  29. package/scripts/detect_project.py +22 -3
  30. package/scripts/discussion_records.py +3 -0
  31. package/scripts/discussion_validate.py +8 -3
  32. package/scripts/dispatch_driver.py +233 -22
  33. package/scripts/git_guard.py +14 -5
  34. package/scripts/guard_hook.py +11 -1
  35. package/scripts/install.mjs +54 -1448
  36. package/scripts/install.py +155 -188
  37. package/scripts/integration.py +54 -28
  38. package/scripts/isolation.py +24 -6
  39. package/scripts/jev_review.py +138 -0
  40. package/scripts/lean_verification.py +3 -1
  41. package/scripts/loop_run.py +2 -0
  42. package/scripts/model_policy.py +279 -0
  43. package/scripts/path_config.py +248 -0
  44. package/scripts/pipeline_diagnose.py +15 -3
  45. package/scripts/pipeline_git.py +3 -0
  46. package/scripts/pipeline_state.py +117 -186
  47. package/scripts/pipeline_undo.py +14 -7
  48. package/scripts/promote_lookahead.py +33 -162
  49. package/scripts/review_panel.py +11 -0
  50. package/scripts/roadmap.py +326 -0
  51. package/scripts/runtime_store.py +278 -0
  52. package/scripts/skill-resources.json +182 -4
  53. package/scripts/state_checkpoint.py +114 -72
  54. package/scripts/state_promote.py +47 -44
  55. package/scripts/status_runtime.py +92 -6
  56. package/scripts/task_context.py +73 -0
  57. package/scripts/token_budget.py +40 -1
  58. package/scripts/workflow_run.py +128 -8
  59. package/scripts/worktree_paths.py +94 -0
  60. package/skills/gsd-path/BUILD.md +54 -575
  61. package/skills/gsd-path/DECIDE.md +4 -6
  62. package/skills/gsd-path/DEFINE.md +23 -21
  63. package/skills/gsd-path/DOCS-AUDIT.md +2 -0
  64. package/skills/gsd-path/INSPECT.md +32 -8
  65. package/skills/gsd-path/PLAN.md +29 -19
  66. package/skills/gsd-path/RESEARCH.md +5 -6
  67. package/skills/gsd-path/ROADMAP.md +24 -58
  68. package/skills/gsd-path/SHIP.md +29 -17
  69. package/skills/gsd-path/SKILL.md +46 -22
  70. package/skills/gsd-path/references/build-abandon.md +33 -0
  71. package/skills/gsd-path/references/build-native.md +502 -0
  72. package/skills/gsd-path/references/build-recovery.md +78 -0
  73. package/skills/gsd-path/references/coder.md +8 -3
  74. package/skills/gsd-path/references/config.md +57 -0
  75. package/skills/gsd-path/references/dispatch.md +12 -19
  76. package/skills/gsd-path/references/docs-auditor.md +14 -0
  77. package/skills/gsd-path/references/jev-review.md +82 -0
  78. package/skills/gsd-path/references/model-policy.md +139 -0
  79. package/skills/gsd-path/references/reviewer-final.md +21 -0
  80. package/skills/gsd-path/references/reviewer-panel.md +17 -0
  81. package/skills/gsd-path/references/reviewer-skeptic.md +20 -0
  82. package/skills/gsd-path/references/reviewer-wave.md +89 -0
  83. package/skills/gsd-path/references/reviewer.md +12 -148
  84. package/skills/gsd-path/references/runtime-selection.md +25 -0
  85. package/skills/gsd-path/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  86. package/skills/gsd-path/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
  87. package/skills/gsd-path/scripts/_common.py +5 -0
  88. package/skills/gsd-path/scripts/archive_milestone.py +30 -124
  89. package/skills/gsd-path/scripts/bootstrap_repository.py +33 -4
  90. package/skills/gsd-path/scripts/build_recovery.py +292 -0
  91. package/skills/gsd-path/scripts/build_state.py +2 -0
  92. package/skills/gsd-path/scripts/check_docs_audit.py +7 -3
  93. package/skills/gsd-path/scripts/check_handoffs.py +7 -1
  94. package/skills/gsd-path/scripts/check_task_briefs.py +3 -0
  95. package/skills/gsd-path/scripts/detect_project.py +22 -3
  96. package/skills/gsd-path/scripts/discussion_records.py +3 -0
  97. package/skills/gsd-path/scripts/discussion_validate.py +8 -3
  98. package/skills/gsd-path/scripts/dispatch_driver.py +233 -22
  99. package/skills/gsd-path/scripts/git_guard.py +768 -0
  100. package/skills/gsd-path/scripts/integration.py +54 -28
  101. package/skills/gsd-path/scripts/isolation.py +24 -6
  102. package/skills/gsd-path/scripts/jev_review.py +138 -0
  103. package/skills/gsd-path/scripts/lean_verification.py +3 -1
  104. package/skills/gsd-path/scripts/loop_run.py +2 -0
  105. package/skills/gsd-path/scripts/model_policy.py +279 -0
  106. package/skills/gsd-path/scripts/path_config.py +248 -0
  107. package/skills/gsd-path/scripts/pipeline_git.py +3 -0
  108. package/skills/gsd-path/scripts/pipeline_state.py +117 -186
  109. package/skills/gsd-path/scripts/promote_lookahead.py +33 -162
  110. package/skills/gsd-path/scripts/review_panel.py +11 -0
  111. package/skills/gsd-path/scripts/roadmap.py +326 -0
  112. package/skills/gsd-path/scripts/state_checkpoint.py +114 -72
  113. package/skills/gsd-path/scripts/state_promote.py +47 -44
  114. package/skills/gsd-path/scripts/status_runtime.py +208 -0
  115. package/skills/gsd-path/scripts/task_context.py +73 -0
  116. package/skills/gsd-path/scripts/token_budget.py +40 -1
  117. package/skills/gsd-path/scripts/workflow_run.py +128 -8
  118. package/skills/gsd-path/scripts/worktree_paths.py +94 -0
  119. package/skills/gsd-path/templates/skeptic.md +1 -1
  120. package/skills/gsd-path/templates/task.md +2 -0
  121. package/skills/gsd-path/templates/wave-panel.md +1 -1
  122. package/skills/gsd-path/templates/wave-review.md +1 -1
  123. package/skills/gsd-path-build/SKILL.md +54 -575
  124. package/skills/gsd-path-build/references/build-abandon.md +33 -0
  125. package/skills/gsd-path-build/references/build-native.md +502 -0
  126. package/skills/gsd-path-build/references/build-recovery.md +78 -0
  127. package/skills/gsd-path-build/references/coder.md +8 -3
  128. package/skills/gsd-path-build/references/dispatch.md +12 -19
  129. package/skills/gsd-path-build/references/jev-review.md +82 -0
  130. package/skills/gsd-path-build/references/model-policy.md +139 -0
  131. package/skills/gsd-path-build/references/reviewer-final.md +21 -0
  132. package/skills/gsd-path-build/references/reviewer-panel.md +17 -0
  133. package/skills/gsd-path-build/references/reviewer-skeptic.md +20 -0
  134. package/skills/gsd-path-build/references/reviewer-wave.md +89 -0
  135. package/skills/gsd-path-build/references/reviewer.md +12 -148
  136. package/skills/gsd-path-build/references/runtime-selection.md +25 -0
  137. package/skills/gsd-path-build/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  138. package/skills/gsd-path-build/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
  139. package/skills/gsd-path-build/scripts/_common.py +5 -0
  140. package/skills/gsd-path-build/scripts/archive_milestone.py +30 -124
  141. package/skills/gsd-path-build/scripts/build_recovery.py +292 -0
  142. package/skills/gsd-path-build/scripts/build_state.py +2 -0
  143. package/skills/gsd-path-build/scripts/check_handoffs.py +7 -1
  144. package/skills/gsd-path-build/scripts/check_task_briefs.py +3 -0
  145. package/skills/gsd-path-build/scripts/detect_project.py +1536 -0
  146. package/skills/gsd-path-build/scripts/discussion_records.py +3 -0
  147. package/skills/gsd-path-build/scripts/discussion_validate.py +8 -3
  148. package/skills/gsd-path-build/scripts/dispatch_driver.py +233 -22
  149. package/skills/gsd-path-build/scripts/integration.py +54 -28
  150. package/skills/gsd-path-build/scripts/isolation.py +24 -6
  151. package/skills/gsd-path-build/scripts/jev_review.py +138 -0
  152. package/skills/gsd-path-build/scripts/loop_run.py +2 -0
  153. package/skills/gsd-path-build/scripts/model_policy.py +279 -0
  154. package/skills/gsd-path-build/scripts/path_config.py +248 -0
  155. package/skills/gsd-path-build/scripts/pipeline_git.py +3 -0
  156. package/skills/gsd-path-build/scripts/pipeline_state.py +117 -186
  157. package/skills/gsd-path-build/scripts/promote_lookahead.py +286 -0
  158. package/skills/gsd-path-build/scripts/review_panel.py +11 -0
  159. package/skills/gsd-path-build/scripts/roadmap.py +326 -0
  160. package/skills/gsd-path-build/scripts/state_checkpoint.py +114 -72
  161. package/skills/gsd-path-build/scripts/state_promote.py +47 -44
  162. package/skills/gsd-path-build/scripts/task_context.py +73 -0
  163. package/skills/gsd-path-build/scripts/token_budget.py +40 -1
  164. package/skills/gsd-path-build/scripts/workflow_run.py +128 -8
  165. package/skills/gsd-path-build/scripts/worktree_paths.py +94 -0
  166. package/skills/gsd-path-build/templates/skeptic.md +1 -1
  167. package/skills/gsd-path-build/templates/task.md +2 -0
  168. package/skills/gsd-path-build/templates/wave-panel.md +1 -1
  169. package/skills/gsd-path-build/templates/wave-review.md +1 -1
  170. package/skills/gsd-path-decide/SKILL.md +4 -6
  171. package/skills/gsd-path-decide/references/dispatch.md +12 -19
  172. package/skills/gsd-path-decide/references/model-policy.md +139 -0
  173. package/skills/gsd-path-decide/references/runtime-selection.md +25 -0
  174. package/skills/gsd-path-decide/scripts/_common.py +5 -0
  175. package/skills/gsd-path-decide/scripts/archive_milestone.py +2171 -0
  176. package/skills/gsd-path-decide/scripts/build_recovery.py +292 -0
  177. package/skills/gsd-path-decide/scripts/check_handoffs.py +7 -1
  178. package/skills/gsd-path-decide/scripts/check_task_briefs.py +3 -0
  179. package/skills/gsd-path-decide/scripts/detect_project.py +1536 -0
  180. package/skills/gsd-path-decide/scripts/discussion_records.py +3 -0
  181. package/skills/gsd-path-decide/scripts/discussion_validate.py +1326 -0
  182. package/skills/gsd-path-decide/scripts/integration.py +1459 -0
  183. package/skills/gsd-path-decide/scripts/isolation.py +24 -6
  184. package/skills/gsd-path-decide/scripts/loop_run.py +839 -0
  185. package/skills/gsd-path-decide/scripts/model_policy.py +279 -0
  186. package/skills/gsd-path-decide/scripts/path_config.py +248 -0
  187. package/skills/gsd-path-decide/scripts/pipeline_git.py +3 -0
  188. package/skills/gsd-path-decide/scripts/pipeline_state.py +117 -186
  189. package/skills/gsd-path-decide/scripts/promote_lookahead.py +286 -0
  190. package/skills/gsd-path-decide/scripts/review_panel.py +564 -0
  191. package/skills/gsd-path-decide/scripts/roadmap.py +326 -0
  192. package/skills/gsd-path-decide/scripts/state_checkpoint.py +114 -72
  193. package/skills/gsd-path-decide/scripts/state_promote.py +47 -44
  194. package/skills/gsd-path-decide/scripts/worktree_paths.py +94 -0
  195. package/skills/gsd-path-define/SKILL.md +23 -21
  196. package/skills/gsd-path-define/references/build-recovery.md +78 -0
  197. package/skills/gsd-path-define/references/runtime-selection.md +25 -0
  198. package/skills/gsd-path-define/scripts/_common.py +5 -0
  199. package/skills/gsd-path-define/scripts/archive_milestone.py +2171 -0
  200. package/skills/gsd-path-define/scripts/build_recovery.py +292 -0
  201. package/skills/gsd-path-define/scripts/check_handoffs.py +7 -1
  202. package/skills/gsd-path-define/scripts/check_task_briefs.py +3 -0
  203. package/skills/gsd-path-define/scripts/detect_project.py +22 -3
  204. package/skills/gsd-path-define/scripts/discussion_records.py +3 -0
  205. package/skills/gsd-path-define/scripts/discussion_validate.py +1326 -0
  206. package/skills/gsd-path-define/scripts/integration.py +1459 -0
  207. package/skills/gsd-path-define/scripts/isolation.py +24 -6
  208. package/skills/gsd-path-define/scripts/loop_run.py +839 -0
  209. package/skills/gsd-path-define/scripts/model_policy.py +279 -0
  210. package/skills/gsd-path-define/scripts/path_config.py +248 -0
  211. package/skills/gsd-path-define/scripts/pipeline_git.py +3 -0
  212. package/skills/gsd-path-define/scripts/pipeline_state.py +117 -186
  213. package/skills/gsd-path-define/scripts/promote_lookahead.py +286 -0
  214. package/skills/gsd-path-define/scripts/review_panel.py +564 -0
  215. package/skills/gsd-path-define/scripts/roadmap.py +326 -0
  216. package/skills/gsd-path-define/scripts/state_checkpoint.py +114 -72
  217. package/skills/gsd-path-define/scripts/state_promote.py +47 -44
  218. package/skills/gsd-path-define/scripts/worktree_paths.py +94 -0
  219. package/skills/gsd-path-discuss/SKILL.md +2 -0
  220. package/skills/gsd-path-discuss/references/runtime-selection.md +25 -0
  221. package/skills/gsd-path-discuss/scripts/_common.py +5 -0
  222. package/skills/gsd-path-discuss/scripts/discussion_records.py +3 -0
  223. package/skills/gsd-path-discuss/scripts/loop_run.py +839 -0
  224. package/skills/gsd-path-discuss/scripts/model_policy.py +279 -0
  225. package/skills/gsd-path-discuss/scripts/path_config.py +248 -0
  226. package/skills/gsd-path-discuss/scripts/review_panel.py +564 -0
  227. package/skills/gsd-path-discuss/scripts/worktree_paths.py +94 -0
  228. package/skills/gsd-path-docs-audit/SKILL.md +2 -0
  229. package/skills/gsd-path-docs-audit/references/dispatch.md +12 -19
  230. package/skills/gsd-path-docs-audit/references/docs-auditor.md +14 -0
  231. package/skills/gsd-path-docs-audit/references/model-policy.md +139 -0
  232. package/skills/gsd-path-docs-audit/references/runtime-selection.md +25 -0
  233. package/skills/gsd-path-docs-audit/scripts/_common.py +5 -0
  234. package/skills/gsd-path-docs-audit/scripts/archive_milestone.py +2171 -0
  235. package/skills/gsd-path-docs-audit/scripts/build_recovery.py +292 -0
  236. package/skills/gsd-path-docs-audit/scripts/check_docs_audit.py +7 -3
  237. package/skills/gsd-path-docs-audit/scripts/check_handoffs.py +7 -1
  238. package/skills/gsd-path-docs-audit/scripts/check_task_briefs.py +3 -0
  239. package/skills/gsd-path-docs-audit/scripts/detect_project.py +1536 -0
  240. package/skills/gsd-path-docs-audit/scripts/discussion_records.py +3 -0
  241. package/skills/gsd-path-docs-audit/scripts/discussion_validate.py +1326 -0
  242. package/skills/gsd-path-docs-audit/scripts/integration.py +1459 -0
  243. package/skills/gsd-path-docs-audit/scripts/isolation.py +24 -6
  244. package/skills/gsd-path-docs-audit/scripts/loop_run.py +839 -0
  245. package/skills/gsd-path-docs-audit/scripts/model_policy.py +279 -0
  246. package/skills/gsd-path-docs-audit/scripts/path_config.py +248 -0
  247. package/skills/gsd-path-docs-audit/scripts/pipeline_git.py +3 -0
  248. package/skills/gsd-path-docs-audit/scripts/pipeline_state.py +117 -186
  249. package/skills/gsd-path-docs-audit/scripts/promote_lookahead.py +286 -0
  250. package/skills/gsd-path-docs-audit/scripts/review_panel.py +564 -0
  251. package/skills/gsd-path-docs-audit/scripts/roadmap.py +326 -0
  252. package/skills/gsd-path-docs-audit/scripts/state_checkpoint.py +114 -72
  253. package/skills/gsd-path-docs-audit/scripts/state_promote.py +47 -44
  254. package/skills/gsd-path-docs-audit/scripts/worktree_paths.py +94 -0
  255. package/skills/gsd-path-forensics/SKILL.md +9 -5
  256. package/skills/gsd-path-forensics/references/runtime-selection.md +25 -0
  257. package/skills/gsd-path-forensics/scripts/_common.py +5 -0
  258. package/skills/gsd-path-forensics/scripts/discussion_records.py +3 -0
  259. package/skills/gsd-path-forensics/scripts/loop_run.py +839 -0
  260. package/skills/gsd-path-forensics/scripts/model_policy.py +279 -0
  261. package/skills/gsd-path-forensics/scripts/path_config.py +248 -0
  262. package/skills/gsd-path-forensics/scripts/pipeline_diagnose.py +15 -3
  263. package/skills/gsd-path-forensics/scripts/pipeline_undo.py +14 -7
  264. package/skills/gsd-path-forensics/scripts/review_panel.py +564 -0
  265. package/skills/gsd-path-forensics/scripts/worktree_paths.py +94 -0
  266. package/skills/gsd-path-inspect/SKILL.md +32 -8
  267. package/skills/gsd-path-inspect/references/dispatch.md +12 -19
  268. package/skills/gsd-path-inspect/references/docs-auditor.md +14 -0
  269. package/skills/gsd-path-inspect/references/model-policy.md +139 -0
  270. package/skills/gsd-path-inspect/references/runtime-selection.md +25 -0
  271. package/skills/gsd-path-inspect/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  272. package/skills/gsd-path-inspect/scripts/_common.py +5 -0
  273. package/skills/gsd-path-inspect/scripts/archive_milestone.py +2171 -0
  274. package/skills/gsd-path-inspect/scripts/build_recovery.py +292 -0
  275. package/skills/gsd-path-inspect/scripts/check_docs_audit.py +7 -3
  276. package/skills/gsd-path-inspect/scripts/check_handoffs.py +7 -1
  277. package/skills/gsd-path-inspect/scripts/check_task_briefs.py +3 -0
  278. package/skills/gsd-path-inspect/scripts/detect_project.py +22 -3
  279. package/skills/gsd-path-inspect/scripts/discussion_records.py +3 -0
  280. package/skills/gsd-path-inspect/scripts/discussion_validate.py +1326 -0
  281. package/skills/gsd-path-inspect/scripts/integration.py +1459 -0
  282. package/skills/gsd-path-inspect/scripts/isolation.py +24 -6
  283. package/skills/gsd-path-inspect/scripts/loop_run.py +839 -0
  284. package/skills/gsd-path-inspect/scripts/model_policy.py +279 -0
  285. package/skills/gsd-path-inspect/scripts/path_config.py +248 -0
  286. package/skills/gsd-path-inspect/scripts/pipeline_git.py +3 -0
  287. package/skills/gsd-path-inspect/scripts/pipeline_state.py +117 -186
  288. package/skills/gsd-path-inspect/scripts/promote_lookahead.py +286 -0
  289. package/skills/gsd-path-inspect/scripts/review_panel.py +564 -0
  290. package/skills/gsd-path-inspect/scripts/roadmap.py +326 -0
  291. package/skills/gsd-path-inspect/scripts/state_checkpoint.py +114 -72
  292. package/skills/gsd-path-inspect/scripts/state_promote.py +47 -44
  293. package/skills/gsd-path-inspect/scripts/workflow_run.py +237 -0
  294. package/skills/gsd-path-inspect/scripts/worktree_paths.py +94 -0
  295. package/skills/gsd-path-loop/SKILL.md +2 -0
  296. package/skills/gsd-path-loop/references/runtime-selection.md +25 -0
  297. package/skills/gsd-path-loop/scripts/_common.py +5 -0
  298. package/skills/gsd-path-loop/scripts/discussion_records.py +3 -0
  299. package/skills/gsd-path-loop/scripts/loop_run.py +2 -0
  300. package/skills/gsd-path-loop/scripts/model_policy.py +279 -0
  301. package/skills/gsd-path-loop/scripts/path_config.py +248 -0
  302. package/skills/gsd-path-loop/scripts/review_panel.py +564 -0
  303. package/skills/gsd-path-loop/scripts/worktree_paths.py +94 -0
  304. package/skills/gsd-path-migrate/SKILL.md +2 -0
  305. package/skills/gsd-path-migrate/references/runtime-selection.md +25 -0
  306. package/skills/gsd-path-migrate/scripts/_common.py +185 -0
  307. package/skills/gsd-path-migrate/scripts/discussion_records.py +3 -0
  308. package/skills/gsd-path-migrate/scripts/loop_run.py +839 -0
  309. package/skills/gsd-path-migrate/scripts/model_policy.py +279 -0
  310. package/skills/gsd-path-migrate/scripts/path_config.py +248 -0
  311. package/skills/gsd-path-migrate/scripts/review_panel.py +564 -0
  312. package/skills/gsd-path-plan/SKILL.md +29 -19
  313. package/skills/gsd-path-plan/references/build-recovery.md +78 -0
  314. package/skills/gsd-path-plan/references/dispatch.md +12 -19
  315. package/skills/gsd-path-plan/references/model-policy.md +139 -0
  316. package/skills/gsd-path-plan/references/runtime-selection.md +25 -0
  317. package/skills/gsd-path-plan/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  318. package/skills/gsd-path-plan/scripts/_common.py +5 -0
  319. package/skills/gsd-path-plan/scripts/archive_milestone.py +2171 -0
  320. package/skills/gsd-path-plan/scripts/build_recovery.py +292 -0
  321. package/skills/gsd-path-plan/scripts/check_handoffs.py +7 -1
  322. package/skills/gsd-path-plan/scripts/check_task_briefs.py +3 -0
  323. package/skills/gsd-path-plan/scripts/detect_project.py +1536 -0
  324. package/skills/gsd-path-plan/scripts/discussion_records.py +3 -0
  325. package/skills/gsd-path-plan/scripts/discussion_validate.py +1326 -0
  326. package/skills/gsd-path-plan/scripts/integration.py +1459 -0
  327. package/skills/gsd-path-plan/scripts/isolation.py +24 -6
  328. package/skills/gsd-path-plan/scripts/loop_run.py +839 -0
  329. package/skills/gsd-path-plan/scripts/model_policy.py +279 -0
  330. package/skills/gsd-path-plan/scripts/path_config.py +248 -0
  331. package/skills/gsd-path-plan/scripts/pipeline_git.py +3 -0
  332. package/skills/gsd-path-plan/scripts/pipeline_state.py +117 -186
  333. package/skills/gsd-path-plan/scripts/promote_lookahead.py +286 -0
  334. package/skills/gsd-path-plan/scripts/review_panel.py +11 -0
  335. package/skills/gsd-path-plan/scripts/roadmap.py +326 -0
  336. package/skills/gsd-path-plan/scripts/state_checkpoint.py +114 -72
  337. package/skills/gsd-path-plan/scripts/state_promote.py +47 -44
  338. package/skills/gsd-path-plan/scripts/workflow_run.py +128 -8
  339. package/skills/gsd-path-plan/scripts/worktree_paths.py +94 -0
  340. package/skills/gsd-path-plan/templates/task.md +2 -0
  341. package/skills/gsd-path-research/SKILL.md +5 -6
  342. package/skills/gsd-path-research/references/dispatch.md +12 -19
  343. package/skills/gsd-path-research/references/model-policy.md +139 -0
  344. package/skills/gsd-path-research/references/runtime-selection.md +25 -0
  345. package/skills/gsd-path-research/scripts/_common.py +5 -0
  346. package/skills/gsd-path-research/scripts/archive_milestone.py +2171 -0
  347. package/skills/gsd-path-research/scripts/build_recovery.py +292 -0
  348. package/skills/gsd-path-research/scripts/check_handoffs.py +7 -1
  349. package/skills/gsd-path-research/scripts/check_task_briefs.py +3 -0
  350. package/skills/gsd-path-research/scripts/detect_project.py +1536 -0
  351. package/skills/gsd-path-research/scripts/discussion_records.py +3 -0
  352. package/skills/gsd-path-research/scripts/discussion_validate.py +1326 -0
  353. package/skills/gsd-path-research/scripts/integration.py +1459 -0
  354. package/skills/gsd-path-research/scripts/isolation.py +24 -6
  355. package/skills/gsd-path-research/scripts/loop_run.py +839 -0
  356. package/skills/gsd-path-research/scripts/model_policy.py +279 -0
  357. package/skills/gsd-path-research/scripts/path_config.py +248 -0
  358. package/skills/gsd-path-research/scripts/pipeline_git.py +3 -0
  359. package/skills/gsd-path-research/scripts/pipeline_state.py +117 -186
  360. package/skills/gsd-path-research/scripts/promote_lookahead.py +286 -0
  361. package/skills/gsd-path-research/scripts/review_panel.py +564 -0
  362. package/skills/gsd-path-research/scripts/roadmap.py +326 -0
  363. package/skills/gsd-path-research/scripts/state_checkpoint.py +114 -72
  364. package/skills/gsd-path-research/scripts/state_promote.py +47 -44
  365. package/skills/gsd-path-research/scripts/worktree_paths.py +94 -0
  366. package/skills/gsd-path-roadmap/SKILL.md +24 -58
  367. package/skills/gsd-path-roadmap/references/dispatch.md +12 -19
  368. package/skills/gsd-path-roadmap/references/model-policy.md +139 -0
  369. package/skills/gsd-path-roadmap/references/runtime-selection.md +25 -0
  370. package/skills/gsd-path-roadmap/scripts/_common.py +5 -0
  371. package/skills/gsd-path-roadmap/scripts/archive_milestone.py +30 -124
  372. package/skills/gsd-path-roadmap/scripts/build_recovery.py +292 -0
  373. package/skills/gsd-path-roadmap/scripts/check_handoffs.py +7 -1
  374. package/skills/gsd-path-roadmap/scripts/check_task_briefs.py +3 -0
  375. package/skills/gsd-path-roadmap/scripts/detect_project.py +22 -3
  376. package/skills/gsd-path-roadmap/scripts/discussion_records.py +3 -0
  377. package/skills/gsd-path-roadmap/scripts/discussion_validate.py +8 -3
  378. package/skills/gsd-path-roadmap/scripts/integration.py +54 -28
  379. package/skills/gsd-path-roadmap/scripts/isolation.py +24 -6
  380. package/skills/gsd-path-roadmap/scripts/loop_run.py +839 -0
  381. package/skills/gsd-path-roadmap/scripts/model_policy.py +279 -0
  382. package/skills/gsd-path-roadmap/scripts/path_config.py +248 -0
  383. package/skills/gsd-path-roadmap/scripts/pipeline_git.py +3 -0
  384. package/skills/gsd-path-roadmap/scripts/pipeline_state.py +117 -186
  385. package/skills/gsd-path-roadmap/scripts/promote_lookahead.py +33 -162
  386. package/skills/gsd-path-roadmap/scripts/review_panel.py +11 -0
  387. package/skills/gsd-path-roadmap/scripts/roadmap.py +326 -0
  388. package/skills/gsd-path-roadmap/scripts/state_checkpoint.py +114 -72
  389. package/skills/gsd-path-roadmap/scripts/state_promote.py +47 -44
  390. package/skills/gsd-path-roadmap/scripts/worktree_paths.py +94 -0
  391. package/skills/gsd-path-ship/SKILL.md +29 -17
  392. package/skills/gsd-path-ship/references/dispatch.md +12 -19
  393. package/skills/gsd-path-ship/references/jev-review.md +82 -0
  394. package/skills/gsd-path-ship/references/model-policy.md +139 -0
  395. package/skills/gsd-path-ship/references/reviewer-final.md +21 -0
  396. package/skills/gsd-path-ship/references/reviewer-panel.md +17 -0
  397. package/skills/gsd-path-ship/references/reviewer-skeptic.md +20 -0
  398. package/skills/gsd-path-ship/references/reviewer-wave.md +89 -0
  399. package/skills/gsd-path-ship/references/reviewer.md +12 -148
  400. package/skills/gsd-path-ship/references/runtime-selection.md +25 -0
  401. package/skills/gsd-path-ship/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  402. package/skills/gsd-path-ship/scripts/_common.py +5 -0
  403. package/skills/gsd-path-ship/scripts/archive_milestone.py +30 -124
  404. package/skills/gsd-path-ship/scripts/build_recovery.py +292 -0
  405. package/skills/gsd-path-ship/scripts/build_state.py +2 -0
  406. package/skills/gsd-path-ship/scripts/check_handoffs.py +7 -1
  407. package/skills/gsd-path-ship/scripts/check_task_briefs.py +3 -0
  408. package/skills/gsd-path-ship/scripts/detect_project.py +1536 -0
  409. package/skills/gsd-path-ship/scripts/discussion_records.py +3 -0
  410. package/skills/gsd-path-ship/scripts/discussion_validate.py +8 -3
  411. package/skills/gsd-path-ship/scripts/integration.py +54 -28
  412. package/skills/gsd-path-ship/scripts/isolation.py +24 -6
  413. package/skills/gsd-path-ship/scripts/jev_review.py +138 -0
  414. package/skills/gsd-path-ship/scripts/lean_verification.py +3 -1
  415. package/skills/gsd-path-ship/scripts/loop_run.py +839 -0
  416. package/skills/gsd-path-ship/scripts/model_policy.py +279 -0
  417. package/skills/gsd-path-ship/scripts/path_config.py +248 -0
  418. package/skills/gsd-path-ship/scripts/pipeline_git.py +3 -0
  419. package/skills/gsd-path-ship/scripts/pipeline_state.py +117 -186
  420. package/skills/gsd-path-ship/scripts/promote_lookahead.py +286 -0
  421. package/skills/gsd-path-ship/scripts/review_panel.py +11 -0
  422. package/skills/gsd-path-ship/scripts/roadmap.py +326 -0
  423. package/skills/gsd-path-ship/scripts/state_checkpoint.py +114 -72
  424. package/skills/gsd-path-ship/scripts/state_promote.py +47 -44
  425. package/skills/gsd-path-ship/scripts/workflow_run.py +128 -8
  426. package/skills/gsd-path-ship/scripts/worktree_paths.py +94 -0
  427. package/skills/gsd-path-ship/templates/wave-review.md +1 -1
  428. package/skills/gsd-path-undo/SKILL.md +2 -0
  429. package/skills/gsd-path-undo/references/runtime-selection.md +25 -0
  430. package/skills/gsd-path-undo/scripts/_common.py +5 -0
  431. package/skills/gsd-path-undo/scripts/discussion_records.py +3 -0
  432. package/skills/gsd-path-undo/scripts/loop_run.py +839 -0
  433. package/skills/gsd-path-undo/scripts/model_policy.py +279 -0
  434. package/skills/gsd-path-undo/scripts/path_config.py +248 -0
  435. package/skills/gsd-path-undo/scripts/pipeline_undo.py +14 -7
  436. package/skills/gsd-path-undo/scripts/review_panel.py +564 -0
  437. package/skills/gsd-path-undo/scripts/worktree_paths.py +94 -0
  438. package/skills/path/BUILD.md +54 -575
  439. package/skills/path/DECIDE.md +4 -6
  440. package/skills/path/DEFINE.md +23 -21
  441. package/skills/path/DOCS-AUDIT.md +2 -0
  442. package/skills/path/INSPECT.md +32 -8
  443. package/skills/path/PLAN.md +29 -19
  444. package/skills/path/RESEARCH.md +5 -6
  445. package/skills/path/ROADMAP.md +24 -58
  446. package/skills/path/SHIP.md +29 -17
  447. package/skills/path/SKILL.md +46 -22
  448. package/skills/path/references/build-abandon.md +33 -0
  449. package/skills/path/references/build-native.md +502 -0
  450. package/skills/path/references/build-recovery.md +78 -0
  451. package/skills/path/references/coder.md +8 -3
  452. package/skills/path/references/config.md +57 -0
  453. package/skills/path/references/dispatch.md +12 -19
  454. package/skills/path/references/docs-auditor.md +14 -0
  455. package/skills/path/references/jev-review.md +82 -0
  456. package/skills/path/references/model-policy.md +139 -0
  457. package/skills/path/references/reviewer-final.md +21 -0
  458. package/skills/path/references/reviewer-panel.md +17 -0
  459. package/skills/path/references/reviewer-skeptic.md +20 -0
  460. package/skills/path/references/reviewer-wave.md +89 -0
  461. package/skills/path/references/reviewer.md +12 -148
  462. package/skills/path/references/runtime-selection.md +25 -0
  463. package/skills/path/scripts/_common.py +5 -0
  464. package/skills/path/scripts/archive_milestone.py +30 -124
  465. package/skills/path/scripts/bootstrap_repository.py +33 -4
  466. package/skills/path/scripts/build_recovery.py +292 -0
  467. package/skills/path/scripts/build_state.py +2 -0
  468. package/skills/path/scripts/check_docs_audit.py +7 -3
  469. package/skills/path/scripts/check_handoffs.py +7 -1
  470. package/skills/path/scripts/check_task_briefs.py +3 -0
  471. package/skills/path/scripts/detect_project.py +22 -3
  472. package/skills/path/scripts/discussion_records.py +3 -0
  473. package/skills/path/scripts/discussion_validate.py +8 -3
  474. package/skills/path/scripts/dispatch_driver.py +233 -22
  475. package/skills/path/scripts/git_guard.py +768 -0
  476. package/skills/path/scripts/integration.py +54 -28
  477. package/skills/path/scripts/isolation.py +24 -6
  478. package/skills/path/scripts/jev_review.py +138 -0
  479. package/skills/path/scripts/lean_verification.py +3 -1
  480. package/skills/path/scripts/loop_run.py +2 -0
  481. package/skills/path/scripts/model_policy.py +279 -0
  482. package/skills/path/scripts/path_config.py +248 -0
  483. package/skills/path/scripts/pipeline_git.py +3 -0
  484. package/skills/path/scripts/pipeline_state.py +117 -186
  485. package/skills/path/scripts/promote_lookahead.py +33 -162
  486. package/skills/path/scripts/review_panel.py +11 -0
  487. package/skills/path/scripts/roadmap.py +326 -0
  488. package/skills/path/scripts/state_checkpoint.py +114 -72
  489. package/skills/path/scripts/state_promote.py +47 -44
  490. package/skills/path/scripts/status_runtime.py +208 -0
  491. package/skills/path/scripts/task_context.py +73 -0
  492. package/skills/path/scripts/token_budget.py +40 -1
  493. package/skills/path/scripts/workflow_run.py +128 -8
  494. package/skills/path/scripts/worktree_paths.py +94 -0
  495. package/skills/path/templates/skeptic.md +1 -1
  496. package/skills/path/templates/task.md +2 -0
  497. package/skills/path/templates/wave-panel.md +1 -1
  498. package/skills/path/templates/wave-review.md +1 -1
package/AGENTS.md CHANGED
@@ -69,7 +69,10 @@ full-repo suite on a tiny edit outrank the phase brief.
69
69
  needs verbal explanation is defective.
70
70
  - With no `.project/STATE.md`, route through the bundled
71
71
  `scripts/detect_project.py initialize --repo <absolute-root> --template
72
- <absolute-state-template>` helper; do not classify from a directory listing
72
+ <absolute-state-template> --require-git` helper; `route: setup-repository`
73
+ leaves the invocation folder unchanged and routes to repository setup before
74
+ state creation or branch binding. Never delete the invocation folder or its
75
+ state to satisfy bootstrap path checks. Do not classify from a directory listing
73
76
  or conversation. Follow its JSON `verdict` and `route`. Reserve `classify`
74
77
  for read-only inspection; do not use it as a state-initialization preflight.
75
78
  - `.project/STATE.md` tracks phase position. Parse and validate it only with
@@ -98,11 +101,19 @@ full-repo suite on a tiny edit outrank the phase brief.
98
101
  deterministic logical task name, and a bounded responsibility. Independent
99
102
  briefs may run in parallel up to available child capacity; a dependent
100
103
  brief runs as soon as its dependencies complete.
101
- - Any phase-contract instruction to route, return, or invoke another GSD Path
102
- phase is a caller handoff, not permission to trigger an explicit-only
103
- skill. If an active router or orchestrator supplied the contract, return
104
- control to it. On a direct invocation, report the exact next skill and stop
105
- until the user explicitly invokes it.
104
+ - After a phase completes its gate and state update, run the bundled
105
+ `pipeline_state.py status --repo <absolute-root>` with the routed
106
+ `--project-dir`. Its `handoff` is the shared phase handoff for chat and the
107
+ dashboard. Present **Outcome** from `handoff.outcome` plus the completed
108
+ work; **Review** links the phase artifact, or `handoff.review` when absent.
109
+ An active router uses `handoff.router_next` for **Next** and follows the
110
+ returned route. A directly invoked phase uses `handoff.phase_next` and
111
+ stops. A status or plain-prompt reply uses `handoff.next` and stays read-only.
112
+ Convert the `$` invocation prefix to the host's slash form when needed.
113
+ Phase owners still stop for required input and approval before completion;
114
+ a route is not approval. Return to an active caller instead of invoking an
115
+ explicit-only sibling skill. Derive the next phase from this result, not
116
+ from another lane table in prose.
106
117
 
107
118
  ## Plain-prompt re-entry
108
119
 
@@ -116,15 +127,17 @@ full-repo suite on a tiny edit outrank the phase brief.
116
127
  with `-B .gsd-path/status_runtime.py --repo <absolute-root>`
117
128
  before any requested repository mutation. Treat its JSON as the only route
118
129
  authority.
119
- A plain change request does not authorize work outside the pipeline: make no
130
+ When `completion.status` is `verified` and `git.branch` is an ordinary
131
+ branch (not `gsd-path/M###`), requested product work may proceed normally.
132
+ Archives and pipeline control files remain protected. Otherwise,
133
+ a plain change request does not authorize work outside the pipeline: make no
120
134
  changes and report **Outcome**, link the returned `path` under **Review**, and
121
- under **Next** name `next_skill` only for a `run-phase` route; for every other
122
- route, report `route.action` and `route.reason`. An explicit request to leave
135
+ under **Next** use `handoff.next`. An explicit request to leave
123
136
  or bypass the pipeline is a user ruling;
124
137
  route it through the router's undo or abandon flow instead of editing directly.
125
138
  - After any other plain-prompt turn with owned state, rerun the same read-only
126
139
  status command immediately before the final response and append the same
127
- **Outcome** / **Review** / **Next** handoff with the same exact-route rule.
140
+ **Outcome** / **Review** / **Next** handoff with the same shared handoff rule.
128
141
  Keep an informational turn read-only from start to finish: do not use repository
129
142
  mutation tools or run commands that can create or alter files. A GSD Path skill
130
143
  already supplies this handoff, so emit it once. With no STATE.md, respond
@@ -243,7 +256,7 @@ full-repo suite on a tiny edit outrank the phase brief.
243
256
  orchestrator.
244
257
  - Reviewers verify and block; they never fix. A block names the criterion,
245
258
  observed result, evidence location, and concrete fix direction. An optional
246
- review panel is advisory: the inherit reviewer remains the only wave
259
+ review panel is advisory: the canonical reviewer remains the only wave
247
260
  pass/fail, and panel findings never average or auto-replan. Same-model
248
261
  agreement is not independent verification: matching verdicts from one
249
262
  model family count as a single evidence path. Independence comes from
@@ -337,7 +350,8 @@ full-repo suite on a tiny edit outrank the phase brief.
337
350
  approval of the exact owner/name, visibility, default-checkout path,
338
351
  `gsd-path/M001` branch, and linked primary-worktree path. Before the
339
352
  external action produces an artifact, present those proposed targets as the
340
- inline **Review** surface and mark them not yet created. Do not write a
353
+ inline **Review** surface using the active router's preview contract.
354
+ Do not write a
341
355
  preview file into the invocation directory or another repository. Run the
342
356
  bundled bootstrap helper's read-only `preview` command for this evidence.
343
357
  - After approval, the bootstrap helper persists the exact targets under the
@@ -355,7 +369,8 @@ full-repo suite on a tiny edit outrank the phase brief.
355
369
  build-orchestrator owned.
356
370
  - Keep the cloned default checkout clean on the remote default branch. Run the
357
371
  pipeline from the linked GSD Path worktree; never initialize `.project/` in
358
- the default checkout, reuse an existing branch or path, move an existing
372
+ the default checkout, reuse an existing branch or path (except an explicitly
373
+ approved empty linked-worktree folder via `--reuse-empty-worktree`), move an existing
359
374
  repository, or recover a partial GitHub creation without the exact approved
360
375
  journal and re-verification.
361
376
 
@@ -379,6 +394,11 @@ STATE.md.
379
394
 
380
395
  ## Distribution layout
381
396
 
397
+ This section describes the GSD Path source checkout. These source paths and
398
+ the sync command do not apply to an application that only installs GSD Path.
399
+ In a consuming project, resolve roles, templates, and helpers from the active
400
+ installed skill's absolute paths; the application need not contain this layout.
401
+
382
402
  | Path | Purpose |
383
403
  |------|---------|
384
404
  | `plugin.json` | Agent Plugins manifest (`agent-plugins.org` 1.0.0 schema) |
package/CHANGELOG.md ADDED
@@ -0,0 +1,68 @@
1
+ # Changelog
2
+
3
+ All notable changes to [@opengsd/gsd-path](https://www.npmjs.com/package/@opengsd/gsd-path)
4
+ are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
+
6
+ ## [1.1.0] - 2026-09-18
7
+
8
+ ### Added
9
+ - Scoped npm package `@opengsd/gsd-path` with trusted publishing workflow
10
+ - Release trust evidence validation and host matrix documentation
11
+
12
+ ### Changed
13
+ - Release workflow and maintainer documentation for npm publication
14
+
15
+ ## [1.0.0] - 2026-09-15
16
+
17
+ ### Added
18
+ - Initial public release of the disk-backed GSD Path pipeline
19
+ - Multi-host installer, skills package, and project contracts
20
+
21
+ ## [1.2.0] - 2026-09-20
22
+
23
+ ### Added
24
+ - add Path settings and project history dashboard
25
+ - add optional Jev evidence screening
26
+ - store worktrees and pinned runtimes outside project checkouts
27
+ - centralize sub-agent model selection policy
28
+
29
+ ### Changed
30
+ - Correct stale release guidance and consolidate scope references
31
+ - record passing eight-host release gate
32
+ - validate corrected OpenCode release evidence
33
+ - validate recovered Claude release evidence
34
+ - record affected release gate results
35
+ - preserve blocked host evaluations without receipt fallback
36
+ - record passing Antigravity Kimi and Grok release runs
37
+ - record remaining 1.2.0 release gate failures
38
+ - record Kimi receipt and complete offline recheck
39
+ - preserve 1.2.0 host receipts and release blockers
40
+ - record v1.3.0 live release evidence and blockers
41
+ - bump version to v1.3.0
42
+ - Align release documentation with risk-based host validation
43
+ - bump version to v1.2.0
44
+ - Automate npm release docs, pack verification, and provenance (#133)
45
+ - refresh README changes and dashboard screenshots
46
+ - Refresh dashboard navigation and file history documentation
47
+ - Clarify Jev receipt fields and consolidate documentation
48
+ - Refresh dashboard update and guard documentation
49
+ - Correct runtime installation, update, guard, and uninstall documentation
50
+ - Correct model policy and dispatch documentation
51
+
52
+ ### Fixed
53
+ - reuse unchanged host receipts for releases
54
+ - verify prepared releases without advancing failed versions
55
+ - scope release evidence to affected hosts
56
+ - show project runtime updates and release completed milestone guards
57
+
58
+ ### Other
59
+ - Fixed tests/package.test.mjs to invoke git_guard.py with pre-commit in a temporary Git repository instead of unsupported --help. The focused test failed before the fix and during restored-original sabotage. All 6 package tests now pass; resource sync and diff checks pass. Verified locally on Node 26; Node 18/20 CI reruns remain with the outer executor
60
+ - Preserve historical commit selection across relative document links
61
+ - Validate Jev probability normalization with CLI regression coverage
62
+ - Record passing focused checks and isolation violation
63
+ - Fix integration guard and runtime installer regression coverage
64
+ - Fixed stale runtime paths in tests/test_git_guard.py using the installed runtime resolver. Both CI failures reproduced before the fix; all 38 Git guard tests now pass. Both corrected tests also caught a temporarily disabled native guard, which was restored. git diff --check passed. Only the test file changed; remote CI remains for the outer executor
65
+ - Fix pinned runtime routing, guard blocking, and launcher bytes
66
+ - Restore same-cycle recovery after partial review completion
67
+ - Isolate assignment rejections and align native panel exclusions
68
+ - Fix dispatch isolation, legacy pinning, and independent panel selection
package/DOCS.md CHANGED
@@ -44,7 +44,8 @@ GSD Path has two install layers:
44
44
 
45
45
  1. **Skills** — router + phase skills for your AI host(s)
46
46
  2. **Project contracts** (optional) — `AGENTS.md`, `WORKFLOW.md`, and the
47
- read-only `.gsd-path/runtime/` status engine in the repo
47
+ tracked runtime declaration and stable status/guard launchers; runtime code
48
+ lives outside the checkout under `~/.gsd-path/runtimes/`
48
49
 
49
50
  ### Decision tree
50
51
 
@@ -70,7 +71,7 @@ node scripts/install.mjs --all --dry-run # preview — safe to run anytime
70
71
  node scripts/install.mjs --all # apply
71
72
  ```
72
73
 
73
- **npm** (no clone — once the package is published to npm):
74
+ **npm** (no clone required):
74
75
 
75
76
  ```bash
76
77
  npx @opengsd/gsd-path --all --dry-run
@@ -223,6 +224,40 @@ route through `NEEDS-ORCHESTRATOR` instead of guesses.
223
224
  **Quick lane:** ≤2 tasks, one wave, no open questions — may skip research/decide
224
225
  ([FULL.md](FULL.md)).
225
226
 
227
+ ### Worktree locations
228
+
229
+ The primary worktree stays in the folder you opened. Serial task work stays
230
+ there too. New parallel task worktrees, verify sidecars, and integration
231
+ worktrees share this managed layout:
232
+
233
+ ```text
234
+ ~/.gsd-path/projects/<repository-id>/<workspace-id>/{task,verify,integrate}/<name>
235
+ ```
236
+
237
+ Set `GSD_PATH_WORKTREE_ROOT` to another absolute directory before the first
238
+ helper-owned allocation in a workspace. The root must be outside the project's
239
+ own worktrees; an unrelated repository tracking your home folder is allowed.
240
+ Repository and workspace IDs are full SHA-256 hashes of the
241
+ resolved Git common directory and primary path, so separate clones and
242
+ primary folders do not share a location.
243
+
244
+ The first allocation pins the workspace location in
245
+ `<git-common-dir>/gsd-path/workspaces/<workspace-id>.json`. Later environment
246
+ changes do not move it. Existing sibling worktrees remain at their original
247
+ paths and retain the same recovery and cleanup checks. These folders contain
248
+ active work and evidence; they are not a disposable cache. Relocation needs
249
+ a separate migration; do not edit placement records or move folders manually.
250
+
251
+ New repository setup can also use an explicitly approved managed primary
252
+ path through the existing `--worktree` option. Its parent must already exist
253
+ for the read-only preview. An approved empty invocation folder is still
254
+ reused in place. This choice does not move the default checkout.
255
+
256
+ In the dashboard's **Watched folders**, add the managed root explicitly;
257
+ watching its home-directory parent does not traverse hidden `.gsd-path`.
258
+ Discovery follows Git's registered bound branches back to the primary and
259
+ applies exclusions there, so task and verify copies do not displace it.
260
+
226
261
  ### Key artifacts
227
262
 
228
263
  | Path | Role |
@@ -263,7 +298,7 @@ Full tree: [README.md](README.md#handoff-contract).
263
298
  | --- | --- |
264
299
  | Global skills | `node scripts/install.mjs --update` |
265
300
  | Project-local skills | `node scripts/install.mjs --update --local` |
266
- | From npm (once published) | `npx @opengsd/gsd-path@latest --update` |
301
+ | From npm | `npx @opengsd/gsd-path@latest --update` |
267
302
  | Guard scripts | `node scripts/install.mjs --hooks-refresh --project PATH` |
268
303
  | `AGENTS.md` / `WORKFLOW.md` | Manual merge — installer refuses overwrite |
269
304
  | Health check | `node scripts/install.mjs --doctor [--project PATH]` — read-only; flags missing/stale skills, hook drift, and bad pipeline state |
@@ -311,9 +346,10 @@ an external import bundle, reviews hook coexistence, and hands off to the Path
311
346
  router through inspect and define. See **[MIGRATE.md](MIGRATE.md)**.
312
347
 
313
348
  **Brownfield vs greenfield?**
314
- The router runs the bundled `scripts/detect_project.py initialize --repo
315
- <absolute-root>` command, which classifies the project before it creates
316
- STATE.md for a brownfield or greenfield verdict. A recognized
349
+ After the [startup prerequisites](README.md#the-flow) are met, the router
350
+ classifies the project before it creates STATE.md for a brownfield or
351
+ greenfield verdict. The exact initializer invocation belongs to the
352
+ [phase workflow](WORKFLOW.md#phase-0--inspect-gsd-path-inspect). A recognized
317
353
  manifest or source file, qualifying tracked Git file, or qualifying Markdown
318
354
  document with a body is brownfield and routes to inspect. A title-only README,
319
355
  `LICENSE`/`COPYING`, `.gitignore`, or content only in ignored trees such as
@@ -339,3 +375,36 @@ initializer. After a milestone ships, the next one inspects again.
339
375
  | Installer flags | `node scripts/install.mjs --help` |
340
376
 
341
377
  [Workflow runner and observed token budgets](RUNTIME.md) documents canonical gate receipts, serial verification preparation, and host budget limits.
378
+
379
+
380
+ ## Project runtime versions
381
+
382
+ `.gsd-path/runtime.json` pins an exact runtime by package version and content
383
+ digest. The runtime is stored under `~/.gsd-path/runtimes/<digest>/`; generated
384
+ implementation files are not copied into project worktrees. Track the declaration
385
+ and stable `.gsd-path` launchers as project configuration. Task isolation, Verify
386
+ sidecars and Integration checkouts inherit this configuration through Git.
387
+
388
+ Skill/plugin updates and `--hooks-refresh` retain the selected runtime. Use
389
+ `gsd-path --runtime-upgrade --project /absolute/project` to explicitly select
390
+ the supplied package's runtime and its compatible status launcher. Review those
391
+ configuration changes before committing them. Existing versions remain available
392
+ for other projects and branches.
393
+
394
+ A new machine needs the selected runtime installed before status and guards can
395
+ run. `gsd-path --runtime-restore --project /absolute/project --source-root
396
+ /path/to/matching/package` restores that exact version without changing project
397
+ files. The supplied package must match both the version and digest; custom source
398
+ builds may share a release version while having different digests. No command
399
+ silently substitutes a newer runtime, and status/guards never install or download.
400
+
401
+ For an old tracked `.gsd-path/runtime/`, run `gsd-path --runtime-migrate --project
402
+ /absolute/project --dry-run`, then the same command without `--dry-run` and review
403
+ the Git diff. Migration removes the generated files from the checkout and writes
404
+ the declaration and stable wiring. It does not stage or commit. Resolve local
405
+ runtime edits or unknown files first. Interrupted migration is recovered by the
406
+ same explicit command; its journal lives outside the checkout.
407
+
408
+ An ignore rule alone cannot migrate tracked runtime files. This runtime lifecycle
409
+ covers runtime code and launch wiring; project-local skill copies, retained skill
410
+ backups, and mixed user/host settings remain separately owned installation output.
package/FULL.md CHANGED
@@ -63,10 +63,9 @@ gsd-path (router: reads STATE.md, runs the next valid phase)
63
63
  phases. See the [canonical skill table](DOCS.md#skills-optional).
64
64
 
65
65
  All skills are **explicit-only** on most hosts — generic “continue the project”
66
- does not inject the pipeline. In a project with an owned `.project/STATE.md`,
67
- such a prompt answers read-only with the current handoff and next skill, and a
68
- plain change request makes no changes (see `WORKFLOW.md`, Plain-prompt
69
- re-entry). On OpenCode stable, Antigravity CLI, and Kiro, treat explicit
66
+ does not inject the pipeline. For plain prompts and their read-only handoff,
67
+ see the [invocation and handoff rules](README.md#the-flow).
68
+ On OpenCode stable, Antigravity CLI, and Kiro, treat explicit
70
69
  invocation as an operating rule.
71
70
 
72
71
  ### Invocation by host
@@ -79,7 +78,7 @@ Use the [router and phase invocation table](README.md#install-summary) for your
79
78
 
80
79
  ### Requirements
81
80
 
82
- - **Node 18.17+** for `scripts/install.mjs` (recommended; also the npm `gsd-path` bin once the package is published to npm)
81
+ - **Node 18.17+** for `scripts/install.mjs` (recommended; also the npm `gsd-path` bin)
83
82
  - **Python 3.9+** required for project installs, project refresh, and project-state
84
83
  doctor checks; optional for global-only Node installs. `scripts/install.py`
85
84
  mirrors global and `--local` install transactions and `--update`; it does not
@@ -132,8 +131,9 @@ Install shared rules into a repo (refuses if managed files already exist):
132
131
  node scripts/install.mjs --all --project /path/to/project
133
132
  ```
134
133
 
135
- Writes `AGENTS.md`, `WORKFLOW.md`, and `.gsd-path/runtime/`; with Claude, also
136
- `.claude/CLAUDE.md`.
134
+ Writes the [project contracts](DOCS.md#installing); with Claude, also
135
+ `.claude/CLAUDE.md`. See [project runtime versions](DOCS.md#project-runtime-versions)
136
+ for runtime storage, restoration, and legacy migration.
137
137
  Merge upgrades manually — the installer will not overwrite existing contracts.
138
138
 
139
139
  ### Guard hooks (optional)
@@ -160,7 +160,7 @@ See [UPDATE.md](UPDATE.md) for the full updating guide. Quick reference:
160
160
  ```bash
161
161
  node scripts/install.mjs --update # global roots with existing install
162
162
  node scripts/install.mjs --update --local # current project only
163
- npx @opengsd/gsd-path@latest --update # from npm, once published
163
+ npx @opengsd/gsd-path@latest --update # from npm
164
164
  ```
165
165
 
166
166
  Previous copies move to `disabled-gsd-skills` beside each root. The router may
@@ -184,12 +184,9 @@ Open your agent in the project directory. Invoke the router explicitly.
184
184
 
185
185
  ### Initial greenfield repository (first milestone)
186
186
 
187
- With no `.project/STATE.md`, a `greenfield` classifier verdict routes to
188
- **define** immediately. The [DOCS.md FAQ](DOCS.md#faq) owns the exact
189
- classification rules.
190
- For an explicit request to create a new GitHub repository, the router first
191
- previews the repository and linked-worktree targets for approval as described
192
- in [README.md](README.md#the-flow).
187
+ Follow the [startup and repository setup guidance](README.md#the-flow) first.
188
+ Once setup is complete, a `greenfield` classifier verdict routes to **define**.
189
+ The [DOCS.md FAQ](DOCS.md#faq) owns the exact classification rules.
193
190
 
194
191
  Define interviews across: problem, users, observable success, scope in,
195
192
  scope out (vetoes), constraints, risks, and surfaces. A surface is anything a
@@ -469,7 +466,7 @@ node scripts/install.mjs --update [--local]
469
466
  node scripts/install.mjs --hooks-refresh --project /path/to/repo
470
467
  node scripts/install.mjs --hooks-refresh-full --project /path/to/repo
471
468
 
472
- # From npm (once the package is published to npm)
469
+ # From npm
473
470
  npx @opengsd/gsd-path --all
474
471
  npx @opengsd/gsd-path@latest --update
475
472
  ```
package/HOOKS.md CHANGED
@@ -59,9 +59,10 @@ Native configs for unselected hosts are ignored.
59
59
 
60
60
  | File | Purpose |
61
61
  | --- | --- |
62
- | `.gsd-path/guard_hook.py` | Pre-tool-use guard (stdin JSON → exit 2 + denial JSON) |
62
+ | `.gsd-path/guard_hook.py` | Pre-tool-use guard (stdin JSON → exit 2 + denial JSON; runtime resolution failures exit 2 with stderr) |
63
63
  | `.gsd-path/git_guard.py` | Commit and publication validator |
64
- | `.gsd-path/runtime/` | Project-local pipeline helpers, including the read-only status engine |
64
+ | `.gsd-path/runtime.json` | Tracked selected runtime version and digest |
65
+ | `~/.gsd-path/runtimes/<digest>/` | Immutable external pipeline helpers and guards |
65
66
  | `.git/hooks/pre-commit` | Runs `git_guard.py` before commit |
66
67
  | `.git/hooks/commit-msg` | Runs `git_guard.py` with commit message |
67
68
  | `.git/hooks/pre-push` | Runs `git_guard.py` on every pushed ref update |
@@ -114,6 +115,12 @@ See [UPDATE.md](UPDATE.md).
114
115
 
115
116
  **`guard_hook.py`** (pre-tool-use):
116
117
 
118
+ - direct product edits outside the routed build phase while milestone work
119
+ remains unfinished. After integration is verified, ordinary branches allow
120
+ product edits, including a dirty product worktree. The proof still checks
121
+ the shipped archive, canonical integration merge, annotated published tag,
122
+ and default-branch ancestry. Missing proof keeps protection active. Closed
123
+ milestone branches, archives, and pipeline control files remain protected.
117
124
  - non-read tool actions targeting archived paths or an existing ancestor of
118
125
  the archive tree; shell operands count an ancestor only for deletion or move
119
126
  commands
@@ -137,7 +144,7 @@ See [UPDATE.md](UPDATE.md).
137
144
  - shell commands that reference the archive unless the whole command is a
138
145
  recognized standalone read or a single-command invocation of the bundled
139
146
  `pipeline_state.py` / `archive_milestone.py` helper, resolved to a regular file
140
- inside the guard-owned `.gsd-path/runtime/` directory (beside `guard_hook.py`
147
+ inside the verified runtime selected by `.gsd-path/runtime.json` (legacy projects use `.gsd-path/runtime/` beside `guard_hook.py`
141
148
  in the repository layout), using exactly `python` or `python3` with optional
142
149
  `-B`; non-empty supplied tool working directories are authoritative. Empty
143
150
  strings, including list items, are treated as absent: nested payloads inherit
@@ -176,16 +183,18 @@ such as `rm -rf scratch` passes the archive check; other guard rules still apply
176
183
 
177
184
  - modifies, deletes, or renames away tracked archive paths
178
185
  - `ship:` commits (case-insensitive) staging paths outside `.project/`
179
- - on unshipped pipeline lineage (the committed `STATE.md` names a bound
180
- `gsd-path/M###` branch that is not `shipped/done`, and HEAD descends from
181
- it — the bound branch itself, `gsd-path-task/` branches, sidecars, and any
182
- branch cut from them): commits staging paths outside `.project/` (or the
186
+ - while committed `STATE.md` names unfinished milestone work, including
187
+ `shipped/done` without verified integration: commits staging paths outside `.project/` (or the
183
188
  guard's own `.gsd-path/` and native hook settings) unless the phase is
184
189
  `build` and they are landing commits as `isolation.py land` writes them —
185
190
  subject `<task id>: <task title>` matching the task file at `Base:`, a full
186
191
  base SHA HEAD descends from, the staged task file, only that task's declared
187
192
  `files:`, and a `Files:` list of exactly the staged paths. Outside build the
188
- reviewed HEAD is frozen; product fixes reopen through the patch plan
193
+ reviewed HEAD is frozen; product fixes reopen through the patch plan.
194
+ The validated integration merge is allowed to complete before publication
195
+ proof exists; an ordinary commit with an integration subject is not exempt
196
+ - deleting the recorded branch or switching to another branch while carrying
197
+ unfinished state does not release product commit protection
189
198
  - pushes (to any remote) that move a `gsd-path/M###` ref anywhere but its
190
199
  strict ship commit, or delete it while it holds anything else; and pushes of
191
200
  any other ref whose commit carries a `STATE.md` that still owes a ship commit
@@ -268,6 +277,6 @@ not intercept subagent tools — treat coverage as orchestrator-level.
268
277
  | Tool denied editing archive | Pre-tool guard — use active paths, not archive |
269
278
  | Hook not running in Cursor | Run `--hooks-refresh-full --cursor --project /path/to/repo` |
270
279
  | `--hooks-refresh` rejects an unmanaged guard | Move the foreign guard aside, then rerun refresh; use `--hooks-init` if guards are wanted |
271
- | `--hooks-refresh` rejects an unmanaged runtime file | Back up or merge that file, move it aside, then rerun refresh |
280
+ | Runtime missing, invalid, or legacy | Follow [runtime restoration or migration](DOCS.md#project-runtime-versions) |
272
281
 
273
282
  More: [DOCS.md](DOCS.md#help) · [UPDATE.md](UPDATE.md)
package/QUICK.md CHANGED
@@ -40,7 +40,7 @@ first (never writes files):
40
40
  node scripts/install.mjs --all --dry-run
41
41
  node scripts/install.mjs --all
42
42
 
43
- # From npm, no clone — once the package is published to npm
43
+ # From npm, no clone required
44
44
  npx @opengsd/gsd-path --all --dry-run
45
45
  npx @opengsd/gsd-path --all
46
46
  ```
@@ -64,11 +64,13 @@ cd /path/to/your/repo
64
64
  node scripts/install.mjs --all --project "$(pwd)"
65
65
  ```
66
66
 
67
- Installs `AGENTS.md`, `WORKFLOW.md`, and `.gsd-path/runtime/`
67
+ Installs the [project contracts](DOCS.md#installing)
68
68
  (+ `.claude/CLAUDE.md` if Claude is selected).
69
69
  If those managed files already exist, a plain install **refuses and installs
70
- nothing** — use `--update --project PATH` to refresh skills and `.gsd-path/`
71
- while keeping your contracts, and merge project-contract changes by hand
70
+ nothing** — see [project runtime versions](DOCS.md#project-runtime-versions)
71
+ for legacy migration, then use `--update --project PATH` to refresh skills and
72
+ hook wiring while keeping your contracts and selected runtime. Merge contract
73
+ changes by hand
72
74
  ([UPDATE.md](UPDATE.md)).
73
75
 
74
76
  **Optional** archive/git guards:
@@ -87,8 +89,8 @@ In the **project directory**, type explicitly:
87
89
 
88
90
  Use the [router and phase invocation table](README.md#install-summary) for your host.
89
91
 
90
- “Continue the project” does not advance a phase. With an owned
91
- `.project/STATE.md` it reports the current handoff and next skill, read-only.
92
+ For plain prompts such as “continue the project,” see the
93
+ [invocation and handoff rules](README.md#the-flow).
92
94
 
93
95
  **One phase only?** e.g. `/gsd-path-plan` — see skill table in [DOCS.md](DOCS.md#using).
94
96
  Need to talk through a question without advancing? Use `/gsd-path-discuss`;