@opengsd/gsd-path 1.1.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 (577) hide show
  1. package/AGENTS.md +5 -2
  2. package/CHANGELOG.md +68 -0
  3. package/DOCS.md +69 -1
  4. package/FULL.md +3 -2
  5. package/HOOKS.md +18 -9
  6. package/QUICK.md +5 -3
  7. package/README.md +72 -5
  8. package/RUNTIME.md +9 -4
  9. package/UPDATE.md +30 -11
  10. package/WORKFLOW.md +5 -2
  11. package/package.json +9 -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 +6 -19
  21. package/scripts/_common.py +5 -0
  22. package/scripts/archive_milestone.py +20 -6
  23. package/scripts/bootstrap_repository.py +8 -1
  24. package/scripts/build_recovery.py +5 -0
  25. package/scripts/build_state.py +2 -0
  26. package/scripts/check_docs_audit.py +2 -0
  27. package/scripts/check_handoffs.py +6 -0
  28. package/scripts/check_task_briefs.py +3 -0
  29. package/scripts/detect_project.py +11 -1
  30. package/scripts/discussion_records.py +3 -0
  31. package/scripts/discussion_validate.py +8 -3
  32. package/scripts/dispatch_driver.py +230 -21
  33. package/scripts/git_guard.py +12 -4
  34. package/scripts/guard_hook.py +11 -1
  35. package/scripts/install.mjs +52 -1448
  36. package/scripts/install.py +155 -190
  37. package/scripts/integration.py +28 -8
  38. package/scripts/isolation.py +15 -5
  39. package/scripts/jev_review.py +138 -0
  40. package/scripts/lean_verification.py +2 -0
  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 +3 -0
  45. package/scripts/pipeline_git.py +3 -0
  46. package/scripts/pipeline_state.py +4 -1
  47. package/scripts/pipeline_undo.py +3 -0
  48. package/scripts/promote_lookahead.py +3 -0
  49. package/scripts/review_panel.py +11 -0
  50. package/scripts/roadmap.py +5 -0
  51. package/scripts/runtime_store.py +278 -0
  52. package/scripts/skill-resources.json +104 -4
  53. package/scripts/state_checkpoint.py +5 -0
  54. package/scripts/state_promote.py +5 -0
  55. package/scripts/status_runtime.py +92 -6
  56. package/scripts/workflow_run.py +12 -1
  57. package/scripts/worktree_paths.py +94 -0
  58. package/skills/gsd-path/BUILD.md +7 -0
  59. package/skills/gsd-path/DECIDE.md +2 -0
  60. package/skills/gsd-path/DEFINE.md +13 -7
  61. package/skills/gsd-path/DOCS-AUDIT.md +2 -0
  62. package/skills/gsd-path/INSPECT.md +2 -0
  63. package/skills/gsd-path/PLAN.md +4 -2
  64. package/skills/gsd-path/RESEARCH.md +2 -0
  65. package/skills/gsd-path/ROADMAP.md +2 -0
  66. package/skills/gsd-path/SHIP.md +24 -13
  67. package/skills/gsd-path/SKILL.md +23 -9
  68. package/skills/gsd-path/references/build-native.md +15 -7
  69. package/skills/gsd-path/references/config.md +57 -0
  70. package/skills/gsd-path/references/dispatch.md +6 -19
  71. package/skills/gsd-path/references/jev-review.md +82 -0
  72. package/skills/gsd-path/references/model-policy.md +139 -0
  73. package/skills/gsd-path/references/reviewer-panel.md +1 -1
  74. package/skills/gsd-path/references/reviewer.md +2 -0
  75. package/skills/gsd-path/references/runtime-selection.md +25 -0
  76. package/skills/gsd-path/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  77. package/skills/gsd-path/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
  78. package/skills/gsd-path/scripts/_common.py +5 -0
  79. package/skills/gsd-path/scripts/archive_milestone.py +20 -6
  80. package/skills/gsd-path/scripts/bootstrap_repository.py +8 -1
  81. package/skills/gsd-path/scripts/build_recovery.py +5 -0
  82. package/skills/gsd-path/scripts/build_state.py +2 -0
  83. package/skills/gsd-path/scripts/check_docs_audit.py +2 -0
  84. package/skills/gsd-path/scripts/check_handoffs.py +6 -0
  85. package/skills/gsd-path/scripts/check_task_briefs.py +3 -0
  86. package/skills/gsd-path/scripts/detect_project.py +11 -1
  87. package/skills/gsd-path/scripts/discussion_records.py +3 -0
  88. package/skills/gsd-path/scripts/discussion_validate.py +8 -3
  89. package/skills/gsd-path/scripts/dispatch_driver.py +230 -21
  90. package/skills/gsd-path/scripts/git_guard.py +768 -0
  91. package/skills/gsd-path/scripts/integration.py +28 -8
  92. package/skills/gsd-path/scripts/isolation.py +15 -5
  93. package/skills/gsd-path/scripts/jev_review.py +138 -0
  94. package/skills/gsd-path/scripts/lean_verification.py +2 -0
  95. package/skills/gsd-path/scripts/loop_run.py +2 -0
  96. package/skills/gsd-path/scripts/model_policy.py +279 -0
  97. package/skills/gsd-path/scripts/path_config.py +248 -0
  98. package/skills/gsd-path/scripts/pipeline_git.py +3 -0
  99. package/skills/gsd-path/scripts/pipeline_state.py +4 -1
  100. package/skills/gsd-path/scripts/promote_lookahead.py +3 -0
  101. package/skills/gsd-path/scripts/review_panel.py +11 -0
  102. package/skills/gsd-path/scripts/roadmap.py +5 -0
  103. package/skills/gsd-path/scripts/state_checkpoint.py +5 -0
  104. package/skills/gsd-path/scripts/state_promote.py +5 -0
  105. package/skills/gsd-path/scripts/status_runtime.py +208 -0
  106. package/skills/gsd-path/scripts/workflow_run.py +12 -1
  107. package/skills/gsd-path/scripts/worktree_paths.py +94 -0
  108. package/skills/gsd-path/templates/skeptic.md +1 -1
  109. package/skills/gsd-path/templates/task.md +2 -0
  110. package/skills/gsd-path/templates/wave-panel.md +1 -1
  111. package/skills/gsd-path-build/SKILL.md +7 -0
  112. package/skills/gsd-path-build/references/build-native.md +15 -7
  113. package/skills/gsd-path-build/references/dispatch.md +6 -19
  114. package/skills/gsd-path-build/references/jev-review.md +82 -0
  115. package/skills/gsd-path-build/references/model-policy.md +139 -0
  116. package/skills/gsd-path-build/references/reviewer-panel.md +1 -1
  117. package/skills/gsd-path-build/references/reviewer.md +2 -0
  118. package/skills/gsd-path-build/references/runtime-selection.md +25 -0
  119. package/skills/gsd-path-build/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  120. package/skills/gsd-path-build/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
  121. package/skills/gsd-path-build/scripts/_common.py +5 -0
  122. package/skills/gsd-path-build/scripts/archive_milestone.py +20 -6
  123. package/skills/gsd-path-build/scripts/build_recovery.py +5 -0
  124. package/skills/gsd-path-build/scripts/build_state.py +2 -0
  125. package/skills/gsd-path-build/scripts/check_handoffs.py +6 -0
  126. package/skills/gsd-path-build/scripts/check_task_briefs.py +3 -0
  127. package/skills/gsd-path-build/scripts/detect_project.py +11 -1
  128. package/skills/gsd-path-build/scripts/discussion_records.py +3 -0
  129. package/skills/gsd-path-build/scripts/discussion_validate.py +8 -3
  130. package/skills/gsd-path-build/scripts/dispatch_driver.py +230 -21
  131. package/skills/gsd-path-build/scripts/integration.py +28 -8
  132. package/skills/gsd-path-build/scripts/isolation.py +15 -5
  133. package/skills/gsd-path-build/scripts/jev_review.py +138 -0
  134. package/skills/gsd-path-build/scripts/loop_run.py +2 -0
  135. package/skills/gsd-path-build/scripts/model_policy.py +279 -0
  136. package/skills/gsd-path-build/scripts/path_config.py +248 -0
  137. package/skills/gsd-path-build/scripts/pipeline_git.py +3 -0
  138. package/skills/gsd-path-build/scripts/pipeline_state.py +4 -1
  139. package/skills/gsd-path-build/scripts/promote_lookahead.py +3 -0
  140. package/skills/gsd-path-build/scripts/review_panel.py +11 -0
  141. package/skills/gsd-path-build/scripts/roadmap.py +5 -0
  142. package/skills/gsd-path-build/scripts/state_checkpoint.py +5 -0
  143. package/skills/gsd-path-build/scripts/state_promote.py +5 -0
  144. package/skills/gsd-path-build/scripts/workflow_run.py +12 -1
  145. package/skills/gsd-path-build/scripts/worktree_paths.py +94 -0
  146. package/skills/gsd-path-build/templates/skeptic.md +1 -1
  147. package/skills/gsd-path-build/templates/task.md +2 -0
  148. package/skills/gsd-path-build/templates/wave-panel.md +1 -1
  149. package/skills/gsd-path-decide/SKILL.md +2 -0
  150. package/skills/gsd-path-decide/references/dispatch.md +6 -19
  151. package/skills/gsd-path-decide/references/model-policy.md +139 -0
  152. package/skills/gsd-path-decide/references/runtime-selection.md +25 -0
  153. package/skills/gsd-path-decide/scripts/_common.py +5 -0
  154. package/skills/gsd-path-decide/scripts/archive_milestone.py +20 -6
  155. package/skills/gsd-path-decide/scripts/build_recovery.py +5 -0
  156. package/skills/gsd-path-decide/scripts/check_handoffs.py +6 -0
  157. package/skills/gsd-path-decide/scripts/check_task_briefs.py +3 -0
  158. package/skills/gsd-path-decide/scripts/detect_project.py +11 -1
  159. package/skills/gsd-path-decide/scripts/discussion_records.py +3 -0
  160. package/skills/gsd-path-decide/scripts/discussion_validate.py +8 -3
  161. package/skills/gsd-path-decide/scripts/integration.py +28 -8
  162. package/skills/gsd-path-decide/scripts/isolation.py +15 -5
  163. package/skills/gsd-path-decide/scripts/loop_run.py +839 -0
  164. package/skills/gsd-path-decide/scripts/model_policy.py +279 -0
  165. package/skills/gsd-path-decide/scripts/path_config.py +248 -0
  166. package/skills/gsd-path-decide/scripts/pipeline_git.py +3 -0
  167. package/skills/gsd-path-decide/scripts/pipeline_state.py +4 -1
  168. package/skills/gsd-path-decide/scripts/promote_lookahead.py +3 -0
  169. package/skills/gsd-path-decide/scripts/review_panel.py +11 -0
  170. package/skills/gsd-path-decide/scripts/roadmap.py +5 -0
  171. package/skills/gsd-path-decide/scripts/state_checkpoint.py +5 -0
  172. package/skills/gsd-path-decide/scripts/state_promote.py +5 -0
  173. package/skills/gsd-path-decide/scripts/worktree_paths.py +94 -0
  174. package/skills/gsd-path-define/SKILL.md +13 -7
  175. package/skills/gsd-path-define/references/runtime-selection.md +25 -0
  176. package/skills/gsd-path-define/scripts/_common.py +5 -0
  177. package/skills/gsd-path-define/scripts/archive_milestone.py +20 -6
  178. package/skills/gsd-path-define/scripts/build_recovery.py +5 -0
  179. package/skills/gsd-path-define/scripts/check_handoffs.py +6 -0
  180. package/skills/gsd-path-define/scripts/check_task_briefs.py +3 -0
  181. package/skills/gsd-path-define/scripts/detect_project.py +11 -1
  182. package/skills/gsd-path-define/scripts/discussion_records.py +3 -0
  183. package/skills/gsd-path-define/scripts/discussion_validate.py +8 -3
  184. package/skills/gsd-path-define/scripts/integration.py +28 -8
  185. package/skills/gsd-path-define/scripts/isolation.py +15 -5
  186. package/skills/gsd-path-define/scripts/loop_run.py +839 -0
  187. package/skills/gsd-path-define/scripts/model_policy.py +279 -0
  188. package/skills/gsd-path-define/scripts/path_config.py +248 -0
  189. package/skills/gsd-path-define/scripts/pipeline_git.py +3 -0
  190. package/skills/gsd-path-define/scripts/pipeline_state.py +4 -1
  191. package/skills/gsd-path-define/scripts/promote_lookahead.py +3 -0
  192. package/skills/gsd-path-define/scripts/review_panel.py +11 -0
  193. package/skills/gsd-path-define/scripts/roadmap.py +5 -0
  194. package/skills/gsd-path-define/scripts/state_checkpoint.py +5 -0
  195. package/skills/gsd-path-define/scripts/state_promote.py +5 -0
  196. package/skills/gsd-path-define/scripts/worktree_paths.py +94 -0
  197. package/skills/gsd-path-discuss/SKILL.md +2 -0
  198. package/skills/gsd-path-discuss/references/runtime-selection.md +25 -0
  199. package/skills/gsd-path-discuss/scripts/_common.py +5 -0
  200. package/skills/gsd-path-discuss/scripts/discussion_records.py +3 -0
  201. package/skills/gsd-path-discuss/scripts/loop_run.py +839 -0
  202. package/skills/gsd-path-discuss/scripts/model_policy.py +279 -0
  203. package/skills/gsd-path-discuss/scripts/path_config.py +248 -0
  204. package/skills/gsd-path-discuss/scripts/review_panel.py +564 -0
  205. package/skills/gsd-path-discuss/scripts/worktree_paths.py +94 -0
  206. package/skills/gsd-path-docs-audit/SKILL.md +2 -0
  207. package/skills/gsd-path-docs-audit/references/dispatch.md +6 -19
  208. package/skills/gsd-path-docs-audit/references/model-policy.md +139 -0
  209. package/skills/gsd-path-docs-audit/references/runtime-selection.md +25 -0
  210. package/skills/gsd-path-docs-audit/scripts/_common.py +5 -0
  211. package/skills/gsd-path-docs-audit/scripts/archive_milestone.py +20 -6
  212. package/skills/gsd-path-docs-audit/scripts/build_recovery.py +5 -0
  213. package/skills/gsd-path-docs-audit/scripts/check_docs_audit.py +2 -0
  214. package/skills/gsd-path-docs-audit/scripts/check_handoffs.py +6 -0
  215. package/skills/gsd-path-docs-audit/scripts/check_task_briefs.py +3 -0
  216. package/skills/gsd-path-docs-audit/scripts/detect_project.py +11 -1
  217. package/skills/gsd-path-docs-audit/scripts/discussion_records.py +3 -0
  218. package/skills/gsd-path-docs-audit/scripts/discussion_validate.py +8 -3
  219. package/skills/gsd-path-docs-audit/scripts/integration.py +28 -8
  220. package/skills/gsd-path-docs-audit/scripts/isolation.py +15 -5
  221. package/skills/gsd-path-docs-audit/scripts/loop_run.py +839 -0
  222. package/skills/gsd-path-docs-audit/scripts/model_policy.py +279 -0
  223. package/skills/gsd-path-docs-audit/scripts/path_config.py +248 -0
  224. package/skills/gsd-path-docs-audit/scripts/pipeline_git.py +3 -0
  225. package/skills/gsd-path-docs-audit/scripts/pipeline_state.py +4 -1
  226. package/skills/gsd-path-docs-audit/scripts/promote_lookahead.py +3 -0
  227. package/skills/gsd-path-docs-audit/scripts/review_panel.py +11 -0
  228. package/skills/gsd-path-docs-audit/scripts/roadmap.py +5 -0
  229. package/skills/gsd-path-docs-audit/scripts/state_checkpoint.py +5 -0
  230. package/skills/gsd-path-docs-audit/scripts/state_promote.py +5 -0
  231. package/skills/gsd-path-docs-audit/scripts/worktree_paths.py +94 -0
  232. package/skills/gsd-path-forensics/SKILL.md +9 -5
  233. package/skills/gsd-path-forensics/references/runtime-selection.md +25 -0
  234. package/skills/gsd-path-forensics/scripts/_common.py +5 -0
  235. package/skills/gsd-path-forensics/scripts/discussion_records.py +3 -0
  236. package/skills/gsd-path-forensics/scripts/loop_run.py +839 -0
  237. package/skills/gsd-path-forensics/scripts/model_policy.py +279 -0
  238. package/skills/gsd-path-forensics/scripts/path_config.py +248 -0
  239. package/skills/gsd-path-forensics/scripts/pipeline_diagnose.py +3 -0
  240. package/skills/gsd-path-forensics/scripts/pipeline_undo.py +3 -0
  241. package/skills/gsd-path-forensics/scripts/review_panel.py +564 -0
  242. package/skills/gsd-path-forensics/scripts/worktree_paths.py +94 -0
  243. package/skills/gsd-path-inspect/SKILL.md +2 -0
  244. package/skills/gsd-path-inspect/references/dispatch.md +6 -19
  245. package/skills/gsd-path-inspect/references/model-policy.md +139 -0
  246. package/skills/gsd-path-inspect/references/runtime-selection.md +25 -0
  247. package/skills/gsd-path-inspect/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  248. package/skills/gsd-path-inspect/scripts/_common.py +5 -0
  249. package/skills/gsd-path-inspect/scripts/archive_milestone.py +20 -6
  250. package/skills/gsd-path-inspect/scripts/build_recovery.py +5 -0
  251. package/skills/gsd-path-inspect/scripts/check_docs_audit.py +2 -0
  252. package/skills/gsd-path-inspect/scripts/check_handoffs.py +6 -0
  253. package/skills/gsd-path-inspect/scripts/check_task_briefs.py +3 -0
  254. package/skills/gsd-path-inspect/scripts/detect_project.py +11 -1
  255. package/skills/gsd-path-inspect/scripts/discussion_records.py +3 -0
  256. package/skills/gsd-path-inspect/scripts/discussion_validate.py +8 -3
  257. package/skills/gsd-path-inspect/scripts/integration.py +28 -8
  258. package/skills/gsd-path-inspect/scripts/isolation.py +15 -5
  259. package/skills/gsd-path-inspect/scripts/loop_run.py +839 -0
  260. package/skills/gsd-path-inspect/scripts/model_policy.py +279 -0
  261. package/skills/gsd-path-inspect/scripts/path_config.py +248 -0
  262. package/skills/gsd-path-inspect/scripts/pipeline_git.py +3 -0
  263. package/skills/gsd-path-inspect/scripts/pipeline_state.py +4 -1
  264. package/skills/gsd-path-inspect/scripts/promote_lookahead.py +3 -0
  265. package/skills/gsd-path-inspect/scripts/review_panel.py +11 -0
  266. package/skills/gsd-path-inspect/scripts/roadmap.py +5 -0
  267. package/skills/gsd-path-inspect/scripts/state_checkpoint.py +5 -0
  268. package/skills/gsd-path-inspect/scripts/state_promote.py +5 -0
  269. package/skills/gsd-path-inspect/scripts/workflow_run.py +12 -1
  270. package/skills/gsd-path-inspect/scripts/worktree_paths.py +94 -0
  271. package/skills/gsd-path-loop/SKILL.md +2 -0
  272. package/skills/gsd-path-loop/references/runtime-selection.md +25 -0
  273. package/skills/gsd-path-loop/scripts/_common.py +5 -0
  274. package/skills/gsd-path-loop/scripts/discussion_records.py +3 -0
  275. package/skills/gsd-path-loop/scripts/loop_run.py +2 -0
  276. package/skills/gsd-path-loop/scripts/model_policy.py +279 -0
  277. package/skills/gsd-path-loop/scripts/path_config.py +248 -0
  278. package/skills/gsd-path-loop/scripts/review_panel.py +564 -0
  279. package/skills/gsd-path-loop/scripts/worktree_paths.py +94 -0
  280. package/skills/gsd-path-migrate/SKILL.md +2 -0
  281. package/skills/gsd-path-migrate/references/runtime-selection.md +25 -0
  282. package/skills/gsd-path-migrate/scripts/_common.py +185 -0
  283. package/skills/gsd-path-migrate/scripts/discussion_records.py +3 -0
  284. package/skills/gsd-path-migrate/scripts/loop_run.py +839 -0
  285. package/skills/gsd-path-migrate/scripts/model_policy.py +279 -0
  286. package/skills/gsd-path-migrate/scripts/path_config.py +248 -0
  287. package/skills/gsd-path-migrate/scripts/review_panel.py +564 -0
  288. package/skills/gsd-path-plan/SKILL.md +4 -2
  289. package/skills/gsd-path-plan/references/dispatch.md +6 -19
  290. package/skills/gsd-path-plan/references/model-policy.md +139 -0
  291. package/skills/gsd-path-plan/references/runtime-selection.md +25 -0
  292. package/skills/gsd-path-plan/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  293. package/skills/gsd-path-plan/scripts/_common.py +5 -0
  294. package/skills/gsd-path-plan/scripts/archive_milestone.py +20 -6
  295. package/skills/gsd-path-plan/scripts/build_recovery.py +5 -0
  296. package/skills/gsd-path-plan/scripts/check_handoffs.py +6 -0
  297. package/skills/gsd-path-plan/scripts/check_task_briefs.py +3 -0
  298. package/skills/gsd-path-plan/scripts/detect_project.py +11 -1
  299. package/skills/gsd-path-plan/scripts/discussion_records.py +3 -0
  300. package/skills/gsd-path-plan/scripts/discussion_validate.py +8 -3
  301. package/skills/gsd-path-plan/scripts/integration.py +28 -8
  302. package/skills/gsd-path-plan/scripts/isolation.py +15 -5
  303. package/skills/gsd-path-plan/scripts/loop_run.py +839 -0
  304. package/skills/gsd-path-plan/scripts/model_policy.py +279 -0
  305. package/skills/gsd-path-plan/scripts/path_config.py +248 -0
  306. package/skills/gsd-path-plan/scripts/pipeline_git.py +3 -0
  307. package/skills/gsd-path-plan/scripts/pipeline_state.py +4 -1
  308. package/skills/gsd-path-plan/scripts/promote_lookahead.py +3 -0
  309. package/skills/gsd-path-plan/scripts/review_panel.py +11 -0
  310. package/skills/gsd-path-plan/scripts/roadmap.py +5 -0
  311. package/skills/gsd-path-plan/scripts/state_checkpoint.py +5 -0
  312. package/skills/gsd-path-plan/scripts/state_promote.py +5 -0
  313. package/skills/gsd-path-plan/scripts/workflow_run.py +12 -1
  314. package/skills/gsd-path-plan/scripts/worktree_paths.py +94 -0
  315. package/skills/gsd-path-plan/templates/task.md +2 -0
  316. package/skills/gsd-path-research/SKILL.md +2 -0
  317. package/skills/gsd-path-research/references/dispatch.md +6 -19
  318. package/skills/gsd-path-research/references/model-policy.md +139 -0
  319. package/skills/gsd-path-research/references/runtime-selection.md +25 -0
  320. package/skills/gsd-path-research/scripts/_common.py +5 -0
  321. package/skills/gsd-path-research/scripts/archive_milestone.py +20 -6
  322. package/skills/gsd-path-research/scripts/build_recovery.py +5 -0
  323. package/skills/gsd-path-research/scripts/check_handoffs.py +6 -0
  324. package/skills/gsd-path-research/scripts/check_task_briefs.py +3 -0
  325. package/skills/gsd-path-research/scripts/detect_project.py +11 -1
  326. package/skills/gsd-path-research/scripts/discussion_records.py +3 -0
  327. package/skills/gsd-path-research/scripts/discussion_validate.py +8 -3
  328. package/skills/gsd-path-research/scripts/integration.py +28 -8
  329. package/skills/gsd-path-research/scripts/isolation.py +15 -5
  330. package/skills/gsd-path-research/scripts/loop_run.py +839 -0
  331. package/skills/gsd-path-research/scripts/model_policy.py +279 -0
  332. package/skills/gsd-path-research/scripts/path_config.py +248 -0
  333. package/skills/gsd-path-research/scripts/pipeline_git.py +3 -0
  334. package/skills/gsd-path-research/scripts/pipeline_state.py +4 -1
  335. package/skills/gsd-path-research/scripts/promote_lookahead.py +3 -0
  336. package/skills/gsd-path-research/scripts/review_panel.py +11 -0
  337. package/skills/gsd-path-research/scripts/roadmap.py +5 -0
  338. package/skills/gsd-path-research/scripts/state_checkpoint.py +5 -0
  339. package/skills/gsd-path-research/scripts/state_promote.py +5 -0
  340. package/skills/gsd-path-research/scripts/worktree_paths.py +94 -0
  341. package/skills/gsd-path-roadmap/SKILL.md +2 -0
  342. package/skills/gsd-path-roadmap/references/dispatch.md +6 -19
  343. package/skills/gsd-path-roadmap/references/model-policy.md +139 -0
  344. package/skills/gsd-path-roadmap/references/runtime-selection.md +25 -0
  345. package/skills/gsd-path-roadmap/scripts/_common.py +5 -0
  346. package/skills/gsd-path-roadmap/scripts/archive_milestone.py +20 -6
  347. package/skills/gsd-path-roadmap/scripts/build_recovery.py +5 -0
  348. package/skills/gsd-path-roadmap/scripts/check_handoffs.py +6 -0
  349. package/skills/gsd-path-roadmap/scripts/check_task_briefs.py +3 -0
  350. package/skills/gsd-path-roadmap/scripts/detect_project.py +11 -1
  351. package/skills/gsd-path-roadmap/scripts/discussion_records.py +3 -0
  352. package/skills/gsd-path-roadmap/scripts/discussion_validate.py +8 -3
  353. package/skills/gsd-path-roadmap/scripts/integration.py +28 -8
  354. package/skills/gsd-path-roadmap/scripts/isolation.py +15 -5
  355. package/skills/gsd-path-roadmap/scripts/loop_run.py +839 -0
  356. package/skills/gsd-path-roadmap/scripts/model_policy.py +279 -0
  357. package/skills/gsd-path-roadmap/scripts/path_config.py +248 -0
  358. package/skills/gsd-path-roadmap/scripts/pipeline_git.py +3 -0
  359. package/skills/gsd-path-roadmap/scripts/pipeline_state.py +4 -1
  360. package/skills/gsd-path-roadmap/scripts/promote_lookahead.py +3 -0
  361. package/skills/gsd-path-roadmap/scripts/review_panel.py +11 -0
  362. package/skills/gsd-path-roadmap/scripts/roadmap.py +5 -0
  363. package/skills/gsd-path-roadmap/scripts/state_checkpoint.py +5 -0
  364. package/skills/gsd-path-roadmap/scripts/state_promote.py +5 -0
  365. package/skills/gsd-path-roadmap/scripts/worktree_paths.py +94 -0
  366. package/skills/gsd-path-ship/SKILL.md +24 -13
  367. package/skills/gsd-path-ship/references/dispatch.md +6 -19
  368. package/skills/gsd-path-ship/references/jev-review.md +82 -0
  369. package/skills/gsd-path-ship/references/model-policy.md +139 -0
  370. package/skills/gsd-path-ship/references/reviewer-panel.md +1 -1
  371. package/skills/gsd-path-ship/references/reviewer.md +2 -0
  372. package/skills/gsd-path-ship/references/runtime-selection.md +25 -0
  373. package/skills/gsd-path-ship/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  374. package/skills/gsd-path-ship/scripts/_common.py +5 -0
  375. package/skills/gsd-path-ship/scripts/archive_milestone.py +20 -6
  376. package/skills/gsd-path-ship/scripts/build_recovery.py +5 -0
  377. package/skills/gsd-path-ship/scripts/build_state.py +2 -0
  378. package/skills/gsd-path-ship/scripts/check_handoffs.py +6 -0
  379. package/skills/gsd-path-ship/scripts/check_task_briefs.py +3 -0
  380. package/skills/gsd-path-ship/scripts/detect_project.py +11 -1
  381. package/skills/gsd-path-ship/scripts/discussion_records.py +3 -0
  382. package/skills/gsd-path-ship/scripts/discussion_validate.py +8 -3
  383. package/skills/gsd-path-ship/scripts/integration.py +28 -8
  384. package/skills/gsd-path-ship/scripts/isolation.py +15 -5
  385. package/skills/gsd-path-ship/scripts/jev_review.py +138 -0
  386. package/skills/gsd-path-ship/scripts/lean_verification.py +2 -0
  387. package/skills/gsd-path-ship/scripts/loop_run.py +839 -0
  388. package/skills/gsd-path-ship/scripts/model_policy.py +279 -0
  389. package/skills/gsd-path-ship/scripts/path_config.py +248 -0
  390. package/skills/gsd-path-ship/scripts/pipeline_git.py +3 -0
  391. package/skills/gsd-path-ship/scripts/pipeline_state.py +4 -1
  392. package/skills/gsd-path-ship/scripts/promote_lookahead.py +3 -0
  393. package/skills/gsd-path-ship/scripts/review_panel.py +11 -0
  394. package/skills/gsd-path-ship/scripts/roadmap.py +5 -0
  395. package/skills/gsd-path-ship/scripts/state_checkpoint.py +5 -0
  396. package/skills/gsd-path-ship/scripts/state_promote.py +5 -0
  397. package/skills/gsd-path-ship/scripts/workflow_run.py +12 -1
  398. package/skills/gsd-path-ship/scripts/worktree_paths.py +94 -0
  399. package/skills/gsd-path-undo/SKILL.md +2 -0
  400. package/skills/gsd-path-undo/references/runtime-selection.md +25 -0
  401. package/skills/gsd-path-undo/scripts/_common.py +5 -0
  402. package/skills/gsd-path-undo/scripts/discussion_records.py +3 -0
  403. package/skills/gsd-path-undo/scripts/loop_run.py +839 -0
  404. package/skills/gsd-path-undo/scripts/model_policy.py +279 -0
  405. package/skills/gsd-path-undo/scripts/path_config.py +248 -0
  406. package/skills/gsd-path-undo/scripts/pipeline_undo.py +3 -0
  407. package/skills/gsd-path-undo/scripts/review_panel.py +564 -0
  408. package/skills/gsd-path-undo/scripts/worktree_paths.py +94 -0
  409. package/skills/path/BUILD.md +7 -0
  410. package/skills/path/DECIDE.md +2 -0
  411. package/skills/path/DEFINE.md +13 -7
  412. package/skills/path/DOCS-AUDIT.md +2 -0
  413. package/skills/path/INSPECT.md +2 -0
  414. package/skills/path/PLAN.md +4 -2
  415. package/skills/path/RESEARCH.md +2 -0
  416. package/skills/path/ROADMAP.md +2 -0
  417. package/skills/path/SHIP.md +24 -13
  418. package/skills/path/SKILL.md +23 -9
  419. package/skills/path/references/build-native.md +15 -7
  420. package/skills/path/references/config.md +57 -0
  421. package/skills/path/references/dispatch.md +6 -19
  422. package/skills/path/references/jev-review.md +82 -0
  423. package/skills/path/references/model-policy.md +139 -0
  424. package/skills/path/references/reviewer-panel.md +1 -1
  425. package/skills/path/references/reviewer.md +2 -0
  426. package/skills/path/references/runtime-selection.md +25 -0
  427. package/skills/path/scripts/_common.py +5 -0
  428. package/skills/path/scripts/archive_milestone.py +20 -6
  429. package/skills/path/scripts/bootstrap_repository.py +8 -1
  430. package/skills/path/scripts/build_recovery.py +5 -0
  431. package/skills/path/scripts/build_state.py +2 -0
  432. package/skills/path/scripts/check_docs_audit.py +2 -0
  433. package/skills/path/scripts/check_handoffs.py +6 -0
  434. package/skills/path/scripts/check_task_briefs.py +3 -0
  435. package/skills/path/scripts/detect_project.py +11 -1
  436. package/skills/path/scripts/discussion_records.py +3 -0
  437. package/skills/path/scripts/discussion_validate.py +8 -3
  438. package/skills/path/scripts/dispatch_driver.py +230 -21
  439. package/skills/path/scripts/git_guard.py +768 -0
  440. package/skills/path/scripts/integration.py +28 -8
  441. package/skills/path/scripts/isolation.py +15 -5
  442. package/skills/path/scripts/jev_review.py +138 -0
  443. package/skills/path/scripts/lean_verification.py +2 -0
  444. package/skills/path/scripts/loop_run.py +2 -0
  445. package/skills/path/scripts/model_policy.py +279 -0
  446. package/skills/path/scripts/path_config.py +248 -0
  447. package/skills/path/scripts/pipeline_git.py +3 -0
  448. package/skills/path/scripts/pipeline_state.py +4 -1
  449. package/skills/path/scripts/promote_lookahead.py +3 -0
  450. package/skills/path/scripts/review_panel.py +11 -0
  451. package/skills/path/scripts/roadmap.py +5 -0
  452. package/skills/path/scripts/state_checkpoint.py +5 -0
  453. package/skills/path/scripts/state_promote.py +5 -0
  454. package/skills/path/scripts/status_runtime.py +208 -0
  455. package/skills/path/scripts/workflow_run.py +12 -1
  456. package/skills/path/scripts/worktree_paths.py +94 -0
  457. package/skills/path/templates/skeptic.md +1 -1
  458. package/skills/path/templates/task.md +2 -0
  459. package/skills/path/templates/wave-panel.md +1 -1
  460. package/skills/gsd-path/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
  461. package/skills/gsd-path/scripts/__pycache__/build_recovery.cpython-312.pyc +0 -0
  462. package/skills/gsd-path/scripts/__pycache__/build_state.cpython-312.pyc +0 -0
  463. package/skills/gsd-path/scripts/__pycache__/check_task_briefs.cpython-312.pyc +0 -0
  464. package/skills/gsd-path/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
  465. package/skills/gsd-path/scripts/__pycache__/discussion_records.cpython-312.pyc +0 -0
  466. package/skills/gsd-path/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
  467. package/skills/gsd-path/scripts/__pycache__/integration.cpython-312.pyc +0 -0
  468. package/skills/gsd-path/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
  469. package/skills/gsd-path/scripts/__pycache__/loop_run.cpython-312.pyc +0 -0
  470. package/skills/gsd-path/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
  471. package/skills/gsd-path/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
  472. package/skills/gsd-path/scripts/__pycache__/review_findings.cpython-312.pyc +0 -0
  473. package/skills/gsd-path/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
  474. package/skills/gsd-path/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
  475. package/skills/gsd-path/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
  476. package/skills/gsd-path/scripts/__pycache__/task_context.cpython-312.pyc +0 -0
  477. package/skills/gsd-path/scripts/__pycache__/workflow_run.cpython-312.pyc +0 -0
  478. package/skills/gsd-path-build/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
  479. package/skills/gsd-path-build/scripts/__pycache__/build_recovery.cpython-312.pyc +0 -0
  480. package/skills/gsd-path-build/scripts/__pycache__/build_state.cpython-312.pyc +0 -0
  481. package/skills/gsd-path-build/scripts/__pycache__/check_task_briefs.cpython-312.pyc +0 -0
  482. package/skills/gsd-path-build/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
  483. package/skills/gsd-path-build/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
  484. package/skills/gsd-path-build/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
  485. package/skills/gsd-path-build/scripts/__pycache__/loop_run.cpython-312.pyc +0 -0
  486. package/skills/gsd-path-build/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
  487. package/skills/gsd-path-build/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
  488. package/skills/gsd-path-build/scripts/__pycache__/review_findings.cpython-312.pyc +0 -0
  489. package/skills/gsd-path-build/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
  490. package/skills/gsd-path-build/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
  491. package/skills/gsd-path-build/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
  492. package/skills/gsd-path-build/scripts/__pycache__/task_context.cpython-312.pyc +0 -0
  493. package/skills/gsd-path-build/scripts/__pycache__/workflow_run.cpython-312.pyc +0 -0
  494. package/skills/gsd-path-decide/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  495. package/skills/gsd-path-decide/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
  496. package/skills/gsd-path-decide/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
  497. package/skills/gsd-path-decide/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
  498. package/skills/gsd-path-decide/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
  499. package/skills/gsd-path-decide/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
  500. package/skills/gsd-path-decide/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
  501. package/skills/gsd-path-decide/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
  502. package/skills/gsd-path-decide/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
  503. package/skills/gsd-path-decide/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
  504. package/skills/gsd-path-define/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  505. package/skills/gsd-path-define/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
  506. package/skills/gsd-path-define/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
  507. package/skills/gsd-path-define/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
  508. package/skills/gsd-path-define/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
  509. package/skills/gsd-path-define/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
  510. package/skills/gsd-path-define/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
  511. package/skills/gsd-path-define/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
  512. package/skills/gsd-path-define/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
  513. package/skills/gsd-path-define/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
  514. package/skills/gsd-path-docs-audit/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  515. package/skills/gsd-path-docs-audit/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
  516. package/skills/gsd-path-docs-audit/scripts/__pycache__/build_recovery.cpython-312.pyc +0 -0
  517. package/skills/gsd-path-docs-audit/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
  518. package/skills/gsd-path-docs-audit/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
  519. package/skills/gsd-path-docs-audit/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
  520. package/skills/gsd-path-docs-audit/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
  521. package/skills/gsd-path-docs-audit/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
  522. package/skills/gsd-path-docs-audit/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
  523. package/skills/gsd-path-docs-audit/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
  524. package/skills/gsd-path-docs-audit/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
  525. package/skills/gsd-path-forensics/scripts/__pycache__/pipeline_undo.cpython-312.pyc +0 -0
  526. package/skills/gsd-path-inspect/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
  527. package/skills/gsd-path-inspect/scripts/__pycache__/build_recovery.cpython-312.pyc +0 -0
  528. package/skills/gsd-path-inspect/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
  529. package/skills/gsd-path-inspect/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
  530. package/skills/gsd-path-inspect/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
  531. package/skills/gsd-path-inspect/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
  532. package/skills/gsd-path-inspect/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
  533. package/skills/gsd-path-inspect/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
  534. package/skills/gsd-path-inspect/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
  535. package/skills/gsd-path-inspect/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
  536. package/skills/gsd-path-plan/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
  537. package/skills/gsd-path-plan/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
  538. package/skills/gsd-path-plan/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
  539. package/skills/gsd-path-plan/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
  540. package/skills/gsd-path-plan/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
  541. package/skills/gsd-path-plan/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
  542. package/skills/gsd-path-plan/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
  543. package/skills/gsd-path-plan/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
  544. package/skills/gsd-path-plan/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
  545. package/skills/gsd-path-research/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  546. package/skills/gsd-path-research/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
  547. package/skills/gsd-path-research/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
  548. package/skills/gsd-path-research/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
  549. package/skills/gsd-path-research/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
  550. package/skills/gsd-path-research/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
  551. package/skills/gsd-path-research/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
  552. package/skills/gsd-path-research/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
  553. package/skills/gsd-path-research/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
  554. package/skills/gsd-path-research/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
  555. package/skills/gsd-path-roadmap/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  556. package/skills/gsd-path-roadmap/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
  557. package/skills/gsd-path-roadmap/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
  558. package/skills/gsd-path-roadmap/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
  559. package/skills/gsd-path-roadmap/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
  560. package/skills/gsd-path-roadmap/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
  561. package/skills/gsd-path-roadmap/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
  562. package/skills/gsd-path-roadmap/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
  563. package/skills/gsd-path-roadmap/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
  564. package/skills/gsd-path-roadmap/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
  565. package/skills/gsd-path-ship/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
  566. package/skills/gsd-path-ship/scripts/__pycache__/build_recovery.cpython-312.pyc +0 -0
  567. package/skills/gsd-path-ship/scripts/__pycache__/build_state.cpython-312.pyc +0 -0
  568. package/skills/gsd-path-ship/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
  569. package/skills/gsd-path-ship/scripts/__pycache__/check_task_briefs.cpython-312.pyc +0 -0
  570. package/skills/gsd-path-ship/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
  571. package/skills/gsd-path-ship/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
  572. package/skills/gsd-path-ship/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
  573. package/skills/gsd-path-ship/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
  574. package/skills/gsd-path-ship/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
  575. package/skills/gsd-path-ship/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
  576. package/skills/gsd-path-ship/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
  577. package/skills/gsd-path-ship/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
@@ -3,7 +3,7 @@
3
3
  Apply this contract whenever a GSD Path skill delegates work:
4
4
 
5
5
  - Use Cursor's `Task` tool with the installed custom `gsd-path` subagent. Its
6
- model is `inherit` and it has full tool access; the linked role brief supplies
6
+ model inherits unless the model-policy helper selects an override; it has full tool access; the linked role brief supplies
7
7
  the read-only boundary for auditors and reviewers.
8
8
  - Supply the deterministic logical task name as the task description:
9
9
  `inspect_codebase`, `inspect_docs`, `docs_audit`,
@@ -25,15 +25,10 @@ Apply this contract whenever a GSD Path skill delegates work:
25
25
  brief. If the prior child is still running, wait; never collide targets.
26
26
  - Resolve the phase's linked role brief to an absolute path. Include that path
27
27
  in the prompt and require the child to read it before acting.
28
- - Tier hints: when the host advertises model or reasoning-effort selection,
29
- request `heavy` for `plan`, `plan_patch`, `decide`, and `roadmap`, and
30
- `light` for `inspect_docs` and `docs_audit`; when it offers no such
31
- selection, do not override the model. The only exception is a review-panel
32
- child: pass the exact slug returned by `scripts/review_panel.py resolve`
33
- for that family. Never override the model on the canonical reviewer,
34
- planner, or coder. Set the task working directory to the
35
- exact repository or linked-worktree root supplied by GSD Path; do not ask
36
- Cursor or the child to create another worktree. Host isolation: none.
28
+ - Model selection: before every child launch or continuation, follow
29
+ [the model-policy contract](model-policy.md) and apply its recorded
30
+ native arguments. It owns defaults, project settings, task overrides,
31
+ capability failures, and reassignment. Host isolation: none. Use the exact GSD Path supplied root; create no extra checkout.
37
32
  - Give every child a self-contained prompt with absolute input, template, and
38
33
  output paths plus its bounded responsibility. A coder prompt also names its
39
34
  isolated linked-worktree root; no child may infer the primary worktree.
@@ -26,12 +26,10 @@ Apply this contract whenever a GSD Path skill delegates work:
26
26
  it; never create a colliding logical target.
27
27
  - Resolve the phase's linked role brief to an absolute path. Include that path
28
28
  in the prompt and require the subagent to read it before acting.
29
- - Tier hints: when the host advertises model or reasoning-effort selection,
30
- request `heavy` for `plan`, `plan_patch`, `decide`, and `roadmap`, and
31
- `light` for `inspect_docs` and `docs_audit`; when it offers no such
32
- selection, do not override the model except on a review-panel child, which receives the exact slug from `scripts/review_panel.py resolve`. Set `cwd` to the exact root supplied
33
- by GSD Path and use `isolation: none`; the pipeline already owns any
34
- required linked worktree. Host isolation: none.
29
+ - Model selection: before every child launch or continuation, follow
30
+ [the model-policy contract](model-policy.md) and apply its recorded
31
+ native arguments. It owns defaults, project settings, task overrides,
32
+ capability failures, and reassignment. Host isolation: none. Use the exact GSD Path supplied root; create no extra checkout.
35
33
  - Give every subagent a self-contained prompt with absolute input, template,
36
34
  and output paths plus its bounded responsibility. A coder prompt also names
37
35
  its isolated linked-worktree root; no child may infer the primary worktree.
@@ -27,10 +27,10 @@ Apply this contract whenever a GSD Path skill delegates work:
27
27
  brief, wait for it; never create a colliding logical target.
28
28
  - Resolve the phase's linked role brief to an absolute path. Include that
29
29
  path in the prompt and require the child to read it before acting.
30
- - Tier hints: when the host advertises model or reasoning-effort selection,
31
- request `heavy` for `plan`, `plan_patch`, `decide`, and `roadmap`, and
32
- `light` for `inspect_docs` and `docs_audit`; when it offers no such
33
- selection, do not override the model except on a review-panel child, which receives the exact slug from `scripts/review_panel.py resolve`. Do not ask Kimi to create a worktree:
30
+ - Model selection: before every child launch or continuation, follow
31
+ [the model-policy contract](model-policy.md) and apply its recorded
32
+ native arguments. It owns defaults, project settings, task overrides,
33
+ capability failures, and reassignment. Do not ask Kimi to create a worktree:
34
34
  GSD Path supplies the exact repository or linked-worktree root in the
35
35
  brief, and the child must work only there. Host isolation: none.
36
36
  - Give every child a self-contained prompt with absolute input, template,
@@ -23,12 +23,10 @@ Apply this contract whenever a GSD Path skill delegates work:
23
23
  self-contained brief. Disk artifacts remain the source of truth.
24
24
  - Resolve the phase's linked role brief to an absolute path. Include that path
25
25
  in the prompt and require the subagent to read it before acting.
26
- - Tier hints: when the host advertises model or reasoning-effort selection,
27
- request `heavy` for `plan`, `plan_patch`, `decide`, and `roadmap`, and
28
- `light` for `inspect_docs` and `docs_audit`; when it offers no such
29
- selection, do not override the model except on a review-panel child, which receives the exact slug from `scripts/review_panel.py resolve`. Set the child working directory to the
30
- exact repository or linked-worktree root supplied by GSD Path; do not ask
31
- Kiro or the child to create another worktree. Host isolation: none.
26
+ - Model selection: before every child launch or continuation, follow
27
+ [the model-policy contract](model-policy.md) and apply its recorded
28
+ native arguments. It owns defaults, project settings, task overrides,
29
+ capability failures, and reassignment. Host isolation: none. Use the exact GSD Path supplied root; create no extra checkout.
32
30
  - Give every child a self-contained prompt with absolute input, template, and
33
31
  output paths plus its bounded responsibility. A coder prompt also names its
34
32
  isolated linked-worktree root; no child may infer the primary worktree.
@@ -28,10 +28,10 @@ Apply this contract whenever a GSD Path skill delegates work:
28
28
  source of truth.
29
29
  - Resolve the phase's linked role brief to an absolute path. Include that path
30
30
  in the prompt and require the child to read it before acting.
31
- - Tier hints: when the host advertises model or reasoning-effort selection,
32
- request `heavy` for `plan`, `plan_patch`, `decide`, and `roadmap`, and
33
- `light` for `inspect_docs` and `docs_audit`; when it offers no such
34
- selection, do not override the model except on a review-panel child, which receives the exact slug from `scripts/review_panel.py resolve`. Host isolation: none. The child's working directory is the exact absolute root GSD Path supplied; a host SHA checkout or extra worktree is a contract failure.
31
+ - Model selection: before every child launch or continuation, follow
32
+ [the model-policy contract](model-policy.md) and apply its recorded
33
+ native arguments. It owns defaults, project settings, task overrides,
34
+ capability failures, and reassignment. Host isolation: none. Use the exact GSD Path supplied root; create no extra checkout.
35
35
  - Give every child a self-contained prompt with
36
36
  absolute repository, input, template, and output paths plus its bounded
37
37
  responsibility. A coder prompt also names its isolated linked-worktree root;
@@ -25,10 +25,10 @@ Apply this contract whenever a GSD Path skill delegates work:
25
25
  Disk artifacts, not child chat history, remain the source of truth.
26
26
  - Resolve the phase's linked role brief to an absolute path. Include that path
27
27
  in the prompt and require the child to read it before acting.
28
- - Tier hints: when the host advertises model or reasoning-effort selection,
29
- request `heavy` for `plan`, `plan_patch`, `decide`, and `roadmap`, and
30
- `light` for `inspect_docs` and `docs_audit`; when it offers no such
31
- selection, do not override the model except on a review-panel child, which receives the exact slug from `scripts/review_panel.py resolve`. Do not ask Qwen Code to create another
28
+ - Model selection: before every child launch or continuation, follow
29
+ [the model-policy contract](model-policy.md) and apply its recorded
30
+ native arguments. It owns defaults, project settings, task overrides,
31
+ capability failures, and reassignment. Do not ask Qwen Code to create another
32
32
  worktree: GSD Path supplies the exact repository or linked-worktree root,
33
33
  and the child must work only there. Host isolation: none.
34
34
  - Give every child a self-contained prompt with absolute input, template, and
@@ -7,10 +7,7 @@ use exactly one matching branch:
7
7
  - A `spawn_agent` tool exposing `task_name`, `agent_type`, and `fork_turns` is
8
8
  Codex. Use `fork_turns: "none"`; coders use the built-in `worker` type and
9
9
  every other role uses `default`. Reuse a completed logical target with
10
- `followup_task`. For Codex reasoning effort, use `high` for the portable
11
- `heavy` tier and `low` for the portable `light` tier; leave reasoning effort
12
- unset for the session-default tier, and never pass `heavy` or `light` as a
13
- literal Codex value.
10
+ `followup_task`.
14
11
  - A `spawn_agent` tool without those Codex fields is Zed. Spawn one isolated,
15
12
  full-capability child per brief. Zed children are not resumable, so retries
16
13
  use a fresh child and a complete prompt.
@@ -26,7 +23,7 @@ use exactly one matching branch:
26
23
  the complete new prompt for later work. Wait for a colliding active child and
27
24
  collect results with `wait_commands_or_subagents`.
28
25
  - A `Task` tool advertising the custom `gsd-path` subagent is Cursor. Use that
29
- model-inheriting, full-capability child. Resume it by returned agent ID when
26
+ full-capability child. Resume it by returned agent ID when
30
27
  available; otherwise retry with a fresh child and a complete prompt.
31
28
  - A `Task` tool advertising the built-in `general` subagent is OpenCode. Use
32
29
  that child; if an installed OpenCode v2 host exposes the renamed `subagent`
@@ -65,20 +62,10 @@ For every branch:
65
62
  - Resolve the phase's linked role brief to an absolute path, include it in the
66
63
  prompt, and require the child to read it before acting. The role brief
67
64
  supplies the read-only boundary for auditors and reviewers.
68
- - Tier hints: use the portable `heavy` tier for `plan`, `plan_patch`, `decide`,
69
- and `roadmap`, the portable `light` tier for `inspect_docs` and `docs_audit`,
70
- and the session-default tier for every other role. Apply the Codex mapping
71
- above when its schema advertises reasoning-effort selection. On every other
72
- host, use only an exact native equivalent advertised by that host; otherwise
73
- do not override the model or reasoning effort. The only exception is a
74
- review-panel child: when the host advertises model selection, pass the exact
75
- slug returned by `scripts/review_panel.py resolve` for that family. Never
76
- override the model on the canonical reviewer, planner, coder, or any other
77
- role.
78
- Host isolation: none. The child's working directory is the exact absolute
79
- root GSD Path supplied; a host SHA checkout or extra worktree is a contract
80
- failure. Never ask the host to create a worktree. Give the child the exact
81
- repository or linked-worktree root supplied by GSD Path.
65
+ - Model selection: before every child launch or continuation, follow
66
+ [the model-policy contract](model-policy.md) and apply its recorded
67
+ native arguments. It owns defaults, project settings, task overrides,
68
+ capability failures, and reassignment. Host isolation: none. Use the exact GSD Path supplied root; create no extra checkout.
82
69
  - Send a self-contained prompt with absolute input, template, and output paths
83
70
  plus the child's bounded responsibility. Every brief also names the absolute
84
71
  `AGENTS.md` and `WORKFLOW.md` paths (or explicitly says they are absent), the
@@ -9,6 +9,11 @@ consuming module keep working.
9
9
 
10
10
  from __future__ import annotations
11
11
 
12
+ import sys
13
+
14
+ # Runtime helpers must not modify their immutable installation.
15
+ sys.dont_write_bytecode = True
16
+
12
17
  import json
13
18
  import os
14
19
  import re
@@ -16,6 +16,9 @@ import re
16
16
  import shutil
17
17
  import subprocess
18
18
  import sys
19
+
20
+ # Runtime helpers must not modify their immutable installation.
21
+ sys.dont_write_bytecode = True
19
22
  from contextlib import contextmanager
20
23
  from datetime import date
21
24
  from pathlib import Path, PurePosixPath
@@ -1743,6 +1746,12 @@ def require_clean_active_root(active_root: Path, archive: Path) -> None:
1743
1746
  carried_forward = pending_ruling_count(archived_audit)
1744
1747
  # Persistent project metadata ships but never archives with a milestone.
1745
1748
  allowed = {"STATE.md", "REPOSITORY.md", "archive", "LESSONS.md", "next"}
1749
+ for name in ("config.json", "model-policy.json"):
1750
+ path = active_root / name
1751
+ if path.exists() or path.is_symlink():
1752
+ if path.is_symlink() or not path.is_file() or path.stat().st_nlink != 1:
1753
+ raise ArchiveError(f"project settings must be a regular unlinked file: {path}")
1754
+ allowed.add(name)
1746
1755
  if (active_root / "CHARTER.md").is_file():
1747
1756
  # Program flow: these persist at the .project/ top level.
1748
1757
  allowed |= {"CHARTER.md", "ROADMAP.md", "SYNTHESIS.md"}
@@ -1808,6 +1817,7 @@ def prepared_transaction(
1808
1817
  repo: Path,
1809
1818
  phases: Sequence[str],
1810
1819
  must_be_uncommitted: bool = False,
1820
+ *, historical: bool = False,
1811
1821
  ) -> tuple:
1812
1822
  project = repo.resolve()
1813
1823
  active_root = require_project_layout(project)
@@ -1816,7 +1826,7 @@ def prepared_transaction(
1816
1826
  state, _, loaded_state_path = strict_state(project)
1817
1827
  if loaded_state_path.resolve() != state_path.resolve():
1818
1828
  raise ArchiveError("strict STATE.md loader returned an unexpected path")
1819
- require_transaction_context(project, state, phases)
1829
+ require_transaction_context(project, state, phases, historical=historical)
1820
1830
 
1821
1831
  configured = state.archive
1822
1832
  if configured is None:
@@ -1880,10 +1890,11 @@ def require_canonical_commit_body(
1880
1890
  raise ArchiveError(f"{label} commit body does not match required fields")
1881
1891
 
1882
1892
 
1883
- def find_ship_commit(project: Path, archive_name: str) -> str:
1893
+ def find_ship_commit(project: Path, archive_name: str, *, historical: bool = False) -> str:
1884
1894
  expected_subject = ship_subject(archive_name)
1885
1895
  log = require_git_success(
1886
- run_git(project, "log", "--first-parent", "--format=%H%x00%s", "HEAD"),
1896
+ run_git(project, "log", *([] if historical else ["--first-parent"]),
1897
+ "--format=%H%x00%s", "HEAD"),
1887
1898
  "inspect HEAD history for the ship commit",
1888
1899
  )
1889
1900
  matches = []
@@ -1926,19 +1937,22 @@ def validate_shipped_roadmap(text: str, state: PipelineState, archive: str) -> N
1926
1937
  raise ArchiveError("ROADMAP.md must record Status: shipped and the exact Archive")
1927
1938
 
1928
1939
 
1929
- def validate(repo: Path) -> dict:
1940
+ def validate(repo: Path, *, historical: bool = False) -> dict:
1930
1941
  project, _, state, configured, archive, archived_files, reviewed_head = prepared_transaction(
1931
1942
  repo,
1932
1943
  ("shipped",),
1944
+ historical=historical,
1933
1945
  )
1934
1946
  if state.status != "done":
1935
1947
  raise ArchiveError("STATE.md is not shipped/done")
1936
1948
 
1937
- project_status = require_git_success(run_git(project, "status", "--porcelain"), "inspect worktree status")
1949
+ project_status = require_git_success(
1950
+ run_git(project, "status", "--porcelain", *(["--", ".project"] if historical else [])),
1951
+ "inspect worktree status")
1938
1952
  if project_status:
1939
1953
  raise ArchiveError("ship transaction worktree is not clean")
1940
1954
 
1941
- ship_commit = find_ship_commit(project, archive.name)
1955
+ ship_commit = find_ship_commit(project, archive.name, historical=historical)
1942
1956
 
1943
1957
  parents = require_git_success(
1944
1958
  run_git(project, "rev-list", "--parents", "-n", "1", ship_commit),
@@ -561,7 +561,14 @@ def render_state(template: Path, request: BootstrapRequest) -> str:
561
561
  )
562
562
  if "<slug>" in content or "branch: null" in content:
563
563
  raise BootstrapError("state template placeholders were not fully replaced")
564
- return content
564
+ try:
565
+ from .path_config import initial_state
566
+ except ImportError:
567
+ from path_config import initial_state
568
+ try:
569
+ return initial_state(content)
570
+ except (OSError, ValueError, RuntimeError) as error:
571
+ raise BootstrapError(str(error)) from error
565
572
 
566
573
 
567
574
  def render_binding(
@@ -3,6 +3,11 @@
3
3
 
4
4
  from __future__ import annotations
5
5
 
6
+ import sys
7
+
8
+ # Runtime helpers must not modify their immutable installation.
9
+ sys.dont_write_bytecode = True
10
+
6
11
  import json
7
12
  import re
8
13
  from pathlib import Path
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env python3
2
+ # gsd-path project runtime
2
3
  """Build task readiness, landing reconciliation, and the verify ledger."""
3
4
 
4
5
  from __future__ import annotations
@@ -7,6 +8,7 @@ import argparse
7
8
  import json
8
9
  import re
9
10
  import sys
11
+ sys.dont_write_bytecode = True
10
12
  from dataclasses import dataclass
11
13
  from datetime import datetime, timezone
12
14
  from pathlib import Path, PurePosixPath
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env python3
2
+ # gsd-path project runtime
2
3
  """Gate a GSD Path docs audit (.project/research/DOCS-AUDIT.md) against its contract.
3
4
 
4
5
  Checks the rules the docs-audit contract states in prose: the header lines,
@@ -32,6 +33,7 @@ import json
32
33
  import re
33
34
  import subprocess
34
35
  import sys
36
+ sys.dont_write_bytecode = True
35
37
  from datetime import date
36
38
  from pathlib import Path
37
39
  from typing import Dict, List, Optional, Sequence
@@ -7,6 +7,9 @@ import json
7
7
  import re
8
8
  import subprocess
9
9
  import sys
10
+
11
+ # Runtime helpers must not modify their immutable installation.
12
+ sys.dont_write_bytecode = True
10
13
  from pathlib import Path, PurePosixPath
11
14
  from typing import Dict, List, Optional, Sequence, Set, Tuple
12
15
 
@@ -131,6 +134,9 @@ def _strict_frontmatter(text: str, label: str) -> Dict[str, object]:
131
134
  while index < len(lines):
132
135
  line = lines[index]
133
136
  if line == "---":
137
+ for field in ('model', 'effort'):
138
+ if field in values and (not isinstance(values[field], str) or not values[field].strip()):
139
+ raise HandoffError(f'{label}: {field} must be a nonempty scalar or inherit')
134
140
  return values
135
141
  if not line.strip() or line.lstrip().startswith("#"):
136
142
  index += 1
@@ -6,6 +6,9 @@ import argparse
6
6
  import json
7
7
  import re
8
8
  import sys
9
+
10
+ # Runtime helpers must not modify their immutable installation.
11
+ sys.dont_write_bytecode = True
9
12
  from pathlib import Path, PurePosixPath
10
13
  from typing import Dict, List, Optional, Sequence, Set, Tuple
11
14
 
@@ -34,6 +34,9 @@ import re
34
34
  import stat
35
35
  import subprocess
36
36
  import sys
37
+
38
+ # Runtime helpers must not modify their immutable installation.
39
+ sys.dont_write_bytecode = True
37
40
  from datetime import date
38
41
  from pathlib import Path, PurePosixPath, PureWindowsPath
39
42
  from typing import Iterable, NamedTuple, Optional, Sequence
@@ -1200,7 +1203,14 @@ def filled_state_template(template: str, slug: str, phase: str) -> str:
1200
1203
  text = text.replace("YYYY-MM-DD — <phase> — project initialized", stamp)
1201
1204
  if "<slug>" in text or "YYYY-MM-DD" in text:
1202
1205
  raise DetectError("state template placeholder remains")
1203
- return text
1206
+ try:
1207
+ from .path_config import initial_state
1208
+ except ImportError:
1209
+ from path_config import initial_state
1210
+ try:
1211
+ return initial_state(text)
1212
+ except (OSError, ValueError, RuntimeError) as error:
1213
+ raise DetectError(str(error)) from error
1204
1214
 
1205
1215
 
1206
1216
  def write_all(descriptor: int, payload: bytes) -> None:
@@ -7,6 +7,9 @@ import json
7
7
  import os
8
8
  import shutil
9
9
  import sys
10
+
11
+ # Runtime helpers must not modify their immutable installation.
12
+ sys.dont_write_bytecode = True
10
13
  from contextlib import contextmanager
11
14
  from datetime import date
12
15
  from pathlib import Path
@@ -2,6 +2,11 @@
2
2
  # gsd-path project runtime
3
3
  """Validate discussion records, reviews and the manifest for archive_milestone."""
4
4
 
5
+ import sys
6
+
7
+ # Runtime helpers must not modify their immutable installation.
8
+ sys.dont_write_bytecode = True
9
+
5
10
  import json
6
11
  import re
7
12
  import shutil
@@ -409,7 +414,7 @@ def remove_interrupted_carry_copy(active_root: Path, archive: Path) -> None:
409
414
 
410
415
 
411
416
  def require_transaction_context(
412
- project: Path, state: PipelineState, phases: Sequence[str]
417
+ project: Path, state: PipelineState, phases: Sequence[str], *, historical: bool = False
413
418
  ) -> None:
414
419
  phase = state.phase
415
420
  if phase not in phases:
@@ -429,7 +434,7 @@ def require_transaction_context(
429
434
  )
430
435
  if archive_milestone.is_unset(expected_branch):
431
436
  raise ArchiveError("STATE.md does not name a bound build branch")
432
- if current_branch != expected_branch:
437
+ if current_branch != expected_branch and not historical:
433
438
  raise ArchiveError(
434
439
  f"current branch {current_branch!r} does not match STATE.branch {expected_branch!r}"
435
440
  )
@@ -446,7 +451,7 @@ def require_transaction_context(
446
451
  ),
447
452
  "inspect non-project worktree status",
448
453
  )
449
- if non_project_status:
454
+ if non_project_status and not historical:
450
455
  raise ArchiveError("non-.project worktree changes block the archive transaction")
451
456
 
452
457