@opengsd/gsd-path 1.3.1 → 1.5.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 (481) hide show
  1. package/AGENTS.md +2 -207
  2. package/CHANGELOG.md +331 -69
  3. package/DOCS.md +25 -9
  4. package/FULL.md +12 -5
  5. package/GUIDE.md +1 -1
  6. package/HOOKS.md +104 -14
  7. package/QUICK.md +5 -2
  8. package/README.md +131 -111
  9. package/RUNTIME.md +2 -2
  10. package/UPDATE.md +61 -11
  11. package/WORKFLOW.md +44 -7
  12. package/package.json +13 -9
  13. package/platforms/shared-agents/dispatch.md +13 -0
  14. package/scripts/_common.py +619 -18
  15. package/scripts/archive_milestone.py +160 -86
  16. package/scripts/bootstrap_repository.py +8 -5
  17. package/scripts/build_recovery.py +100 -32
  18. package/scripts/build_state.py +143 -24
  19. package/scripts/check_docs_audit.py +91 -7
  20. package/scripts/check_handoffs.py +662 -50
  21. package/scripts/check_task_briefs.py +338 -30
  22. package/scripts/check_update.py +2 -2
  23. package/scripts/core_hook_gate.py +10 -1
  24. package/scripts/core_hook_settings.py +11 -4
  25. package/scripts/detect_project.py +587 -32
  26. package/scripts/discussion_records.py +19 -13
  27. package/scripts/discussion_validate.py +152 -50
  28. package/scripts/dispatch_driver.py +501 -46
  29. package/scripts/git_guard.py +118 -31
  30. package/scripts/guard_hook.py +1567 -194
  31. package/scripts/install.mjs +77 -46
  32. package/scripts/install.py +611 -50
  33. package/scripts/integration.py +580 -25
  34. package/scripts/isolation.py +1438 -57
  35. package/scripts/lean_verification.py +99 -19
  36. package/scripts/loop_run.py +31 -29
  37. package/scripts/members.py +706 -0
  38. package/scripts/migrate_core.py +2 -2
  39. package/scripts/path_config.py +5 -5
  40. package/scripts/pipeline_diagnose.py +82 -31
  41. package/scripts/pipeline_git.py +124 -34
  42. package/scripts/pipeline_state.py +287 -87
  43. package/scripts/pipeline_undo.py +218 -30
  44. package/scripts/promote_lookahead.py +1 -1
  45. package/scripts/review_panel.py +1 -1
  46. package/scripts/runtime_store.py +55 -11
  47. package/scripts/skill-resources.json +37 -5
  48. package/scripts/state_checkpoint.py +135 -44
  49. package/scripts/state_promote.py +2 -0
  50. package/scripts/status_runtime.py +58 -10
  51. package/scripts/sync_skill_resources.py +8 -7
  52. package/scripts/task_context.py +12 -3
  53. package/scripts/token_budget.py +12 -8
  54. package/scripts/wizard.mjs +1 -0
  55. package/scripts/workflow_run.py +107 -30
  56. package/scripts/worktree_paths.py +72 -10
  57. package/skills/gsd-path/BUILD.md +7 -1
  58. package/skills/gsd-path/DECIDE.md +11 -4
  59. package/skills/gsd-path/DEFINE.md +36 -4
  60. package/skills/gsd-path/DOCS-AUDIT.md +6 -4
  61. package/skills/gsd-path/INSPECT.md +5 -4
  62. package/skills/gsd-path/PLAN.md +18 -4
  63. package/skills/gsd-path/RESEARCH.md +13 -1
  64. package/skills/gsd-path/ROADMAP.md +2 -1
  65. package/skills/gsd-path/SHIP.md +33 -11
  66. package/skills/gsd-path/SKILL.md +45 -1
  67. package/skills/gsd-path/references/build-native.md +63 -15
  68. package/skills/gsd-path/references/codebase-mapper.md +2 -1
  69. package/skills/gsd-path/references/dispatch.md +13 -0
  70. package/skills/gsd-path/references/docs-auditor.md +7 -1
  71. package/skills/gsd-path/references/operating-rules.md +214 -0
  72. package/skills/gsd-path/references/planner.md +22 -4
  73. package/skills/gsd-path/references/reviewer-final.md +20 -2
  74. package/skills/gsd-path/references/reviewer-wave.md +18 -5
  75. package/skills/gsd-path/references/reviewer.md +3 -1
  76. package/skills/gsd-path/references/spec-probes.md +150 -0
  77. package/skills/gsd-path/scripts/_common.py +619 -18
  78. package/skills/gsd-path/scripts/archive_milestone.py +160 -86
  79. package/skills/gsd-path/scripts/bootstrap_repository.py +8 -5
  80. package/skills/gsd-path/scripts/build_recovery.py +100 -32
  81. package/skills/gsd-path/scripts/build_state.py +143 -24
  82. package/skills/gsd-path/scripts/check_docs_audit.py +91 -7
  83. package/skills/gsd-path/scripts/check_handoffs.py +662 -50
  84. package/skills/gsd-path/scripts/check_task_briefs.py +338 -30
  85. package/skills/gsd-path/scripts/check_update.py +2 -2
  86. package/skills/gsd-path/scripts/detect_project.py +587 -32
  87. package/skills/gsd-path/scripts/discussion_records.py +19 -13
  88. package/skills/gsd-path/scripts/discussion_validate.py +152 -50
  89. package/skills/gsd-path/scripts/dispatch_driver.py +501 -46
  90. package/skills/gsd-path/scripts/git_guard.py +118 -31
  91. package/skills/gsd-path/scripts/integration.py +580 -25
  92. package/skills/gsd-path/scripts/isolation.py +1438 -57
  93. package/skills/gsd-path/scripts/lean_verification.py +99 -19
  94. package/skills/gsd-path/scripts/loop_run.py +31 -29
  95. package/skills/gsd-path/scripts/members.py +706 -0
  96. package/skills/gsd-path/scripts/path_config.py +5 -5
  97. package/skills/gsd-path/scripts/pipeline_git.py +124 -34
  98. package/skills/gsd-path/scripts/pipeline_state.py +287 -87
  99. package/skills/gsd-path/scripts/promote_lookahead.py +1 -1
  100. package/skills/gsd-path/scripts/review_panel.py +1 -1
  101. package/skills/gsd-path/scripts/state_checkpoint.py +135 -44
  102. package/skills/gsd-path/scripts/state_promote.py +2 -0
  103. package/skills/gsd-path/scripts/status_runtime.py +58 -10
  104. package/skills/gsd-path/scripts/task_context.py +12 -3
  105. package/skills/gsd-path/scripts/token_budget.py +12 -8
  106. package/skills/gsd-path/scripts/workflow_run.py +107 -30
  107. package/skills/gsd-path/scripts/worktree_paths.py +72 -10
  108. package/skills/gsd-path/templates/codebase.md +1 -1
  109. package/skills/gsd-path/templates/docs-audit.md +6 -2
  110. package/skills/gsd-path/templates/final-review.md +16 -4
  111. package/skills/gsd-path/templates/gap-review.md +2 -1
  112. package/skills/gsd-path/templates/intent.md +30 -0
  113. package/skills/gsd-path/templates/patch-findings.md +3 -3
  114. package/skills/gsd-path/templates/plan.md +17 -2
  115. package/skills/gsd-path/templates/research-handoff.md +14 -3
  116. package/skills/gsd-path/templates/state.md +1 -1
  117. package/skills/gsd-path/templates/task.md +1 -0
  118. package/skills/gsd-path/templates/wave-review.md +16 -4
  119. package/skills/gsd-path-build/SKILL.md +7 -1
  120. package/skills/gsd-path-build/references/build-native.md +63 -15
  121. package/skills/gsd-path-build/references/dispatch.md +13 -0
  122. package/skills/gsd-path-build/references/operating-rules.md +214 -0
  123. package/skills/gsd-path-build/references/reviewer-final.md +20 -2
  124. package/skills/gsd-path-build/references/reviewer-wave.md +18 -5
  125. package/skills/gsd-path-build/references/reviewer.md +3 -1
  126. package/skills/gsd-path-build/references/spec-probes.md +150 -0
  127. package/skills/gsd-path-build/scripts/_common.py +619 -18
  128. package/skills/gsd-path-build/scripts/archive_milestone.py +160 -86
  129. package/skills/gsd-path-build/scripts/build_recovery.py +100 -32
  130. package/skills/gsd-path-build/scripts/build_state.py +143 -24
  131. package/skills/gsd-path-build/scripts/check_handoffs.py +662 -50
  132. package/skills/gsd-path-build/scripts/check_task_briefs.py +338 -30
  133. package/skills/gsd-path-build/scripts/detect_project.py +587 -32
  134. package/skills/gsd-path-build/scripts/discussion_records.py +19 -13
  135. package/skills/gsd-path-build/scripts/discussion_validate.py +152 -50
  136. package/skills/gsd-path-build/scripts/dispatch_driver.py +501 -46
  137. package/skills/gsd-path-build/scripts/integration.py +580 -25
  138. package/skills/gsd-path-build/scripts/isolation.py +1438 -57
  139. package/skills/gsd-path-build/scripts/loop_run.py +31 -29
  140. package/skills/gsd-path-build/scripts/members.py +706 -0
  141. package/skills/gsd-path-build/scripts/path_config.py +5 -5
  142. package/skills/gsd-path-build/scripts/pipeline_git.py +124 -34
  143. package/skills/gsd-path-build/scripts/pipeline_state.py +287 -87
  144. package/skills/gsd-path-build/scripts/promote_lookahead.py +1 -1
  145. package/skills/gsd-path-build/scripts/review_panel.py +1 -1
  146. package/skills/gsd-path-build/scripts/state_checkpoint.py +135 -44
  147. package/skills/gsd-path-build/scripts/state_promote.py +2 -0
  148. package/skills/gsd-path-build/scripts/task_context.py +12 -3
  149. package/skills/gsd-path-build/scripts/token_budget.py +12 -8
  150. package/skills/gsd-path-build/scripts/workflow_run.py +107 -30
  151. package/skills/gsd-path-build/scripts/worktree_paths.py +72 -10
  152. package/skills/gsd-path-build/templates/task.md +1 -0
  153. package/skills/gsd-path-build/templates/wave-review.md +16 -4
  154. package/skills/gsd-path-decide/SKILL.md +11 -4
  155. package/skills/gsd-path-decide/references/dispatch.md +13 -0
  156. package/skills/gsd-path-decide/references/operating-rules.md +214 -0
  157. package/skills/gsd-path-decide/scripts/_common.py +619 -18
  158. package/skills/gsd-path-decide/scripts/archive_milestone.py +160 -86
  159. package/skills/gsd-path-decide/scripts/build_recovery.py +100 -32
  160. package/skills/gsd-path-decide/scripts/check_handoffs.py +662 -50
  161. package/skills/gsd-path-decide/scripts/check_task_briefs.py +338 -30
  162. package/skills/gsd-path-decide/scripts/detect_project.py +587 -32
  163. package/skills/gsd-path-decide/scripts/discussion_records.py +19 -13
  164. package/skills/gsd-path-decide/scripts/discussion_validate.py +152 -50
  165. package/skills/gsd-path-decide/scripts/integration.py +580 -25
  166. package/skills/gsd-path-decide/scripts/isolation.py +1438 -57
  167. package/skills/gsd-path-decide/scripts/loop_run.py +31 -29
  168. package/skills/gsd-path-decide/scripts/members.py +706 -0
  169. package/skills/gsd-path-decide/scripts/path_config.py +5 -5
  170. package/skills/gsd-path-decide/scripts/pipeline_git.py +124 -34
  171. package/skills/gsd-path-decide/scripts/pipeline_state.py +287 -87
  172. package/skills/gsd-path-decide/scripts/promote_lookahead.py +1 -1
  173. package/skills/gsd-path-decide/scripts/review_panel.py +1 -1
  174. package/skills/gsd-path-decide/scripts/state_checkpoint.py +135 -44
  175. package/skills/gsd-path-decide/scripts/state_promote.py +2 -0
  176. package/skills/gsd-path-decide/scripts/worktree_paths.py +72 -10
  177. package/skills/gsd-path-define/SKILL.md +36 -4
  178. package/skills/gsd-path-define/references/operating-rules.md +214 -0
  179. package/skills/gsd-path-define/references/spec-probes.md +150 -0
  180. package/skills/gsd-path-define/scripts/_common.py +619 -18
  181. package/skills/gsd-path-define/scripts/archive_milestone.py +160 -86
  182. package/skills/gsd-path-define/scripts/build_recovery.py +100 -32
  183. package/skills/gsd-path-define/scripts/check_handoffs.py +662 -50
  184. package/skills/gsd-path-define/scripts/check_task_briefs.py +338 -30
  185. package/skills/gsd-path-define/scripts/detect_project.py +587 -32
  186. package/skills/gsd-path-define/scripts/discussion_records.py +19 -13
  187. package/skills/gsd-path-define/scripts/discussion_validate.py +152 -50
  188. package/skills/gsd-path-define/scripts/integration.py +580 -25
  189. package/skills/gsd-path-define/scripts/isolation.py +1438 -57
  190. package/skills/gsd-path-define/scripts/loop_run.py +31 -29
  191. package/skills/gsd-path-define/scripts/members.py +706 -0
  192. package/skills/gsd-path-define/scripts/path_config.py +5 -5
  193. package/skills/gsd-path-define/scripts/pipeline_git.py +124 -34
  194. package/skills/gsd-path-define/scripts/pipeline_state.py +287 -87
  195. package/skills/gsd-path-define/scripts/promote_lookahead.py +1 -1
  196. package/skills/gsd-path-define/scripts/review_panel.py +1 -1
  197. package/skills/gsd-path-define/scripts/state_checkpoint.py +135 -44
  198. package/skills/gsd-path-define/scripts/state_promote.py +2 -0
  199. package/skills/gsd-path-define/scripts/worktree_paths.py +72 -10
  200. package/skills/gsd-path-define/templates/intent.md +30 -0
  201. package/skills/gsd-path-define/templates/state.md +1 -1
  202. package/skills/gsd-path-discuss/SKILL.md +2 -1
  203. package/skills/gsd-path-discuss/references/operating-rules.md +214 -0
  204. package/skills/gsd-path-discuss/scripts/_common.py +619 -18
  205. package/skills/gsd-path-discuss/scripts/discussion_records.py +19 -13
  206. package/skills/gsd-path-discuss/scripts/loop_run.py +31 -29
  207. package/skills/gsd-path-discuss/scripts/path_config.py +5 -5
  208. package/skills/gsd-path-discuss/scripts/review_panel.py +1 -1
  209. package/skills/gsd-path-discuss/scripts/worktree_paths.py +72 -10
  210. package/skills/gsd-path-docs-audit/SKILL.md +6 -4
  211. package/skills/gsd-path-docs-audit/references/dispatch.md +13 -0
  212. package/skills/gsd-path-docs-audit/references/docs-auditor.md +7 -1
  213. package/skills/gsd-path-docs-audit/references/operating-rules.md +214 -0
  214. package/skills/gsd-path-docs-audit/scripts/_common.py +619 -18
  215. package/skills/gsd-path-docs-audit/scripts/archive_milestone.py +160 -86
  216. package/skills/gsd-path-docs-audit/scripts/build_recovery.py +100 -32
  217. package/skills/gsd-path-docs-audit/scripts/check_docs_audit.py +91 -7
  218. package/skills/gsd-path-docs-audit/scripts/check_handoffs.py +662 -50
  219. package/skills/gsd-path-docs-audit/scripts/check_task_briefs.py +338 -30
  220. package/skills/gsd-path-docs-audit/scripts/detect_project.py +587 -32
  221. package/skills/gsd-path-docs-audit/scripts/discussion_records.py +19 -13
  222. package/skills/gsd-path-docs-audit/scripts/discussion_validate.py +152 -50
  223. package/skills/gsd-path-docs-audit/scripts/integration.py +580 -25
  224. package/skills/gsd-path-docs-audit/scripts/isolation.py +1438 -57
  225. package/skills/gsd-path-docs-audit/scripts/loop_run.py +31 -29
  226. package/skills/gsd-path-docs-audit/scripts/members.py +706 -0
  227. package/skills/gsd-path-docs-audit/scripts/path_config.py +5 -5
  228. package/skills/gsd-path-docs-audit/scripts/pipeline_git.py +124 -34
  229. package/skills/gsd-path-docs-audit/scripts/pipeline_state.py +287 -87
  230. package/skills/gsd-path-docs-audit/scripts/promote_lookahead.py +1 -1
  231. package/skills/gsd-path-docs-audit/scripts/review_panel.py +1 -1
  232. package/skills/gsd-path-docs-audit/scripts/state_checkpoint.py +135 -44
  233. package/skills/gsd-path-docs-audit/scripts/state_promote.py +2 -0
  234. package/skills/gsd-path-docs-audit/scripts/worktree_paths.py +72 -10
  235. package/skills/gsd-path-docs-audit/templates/docs-audit.md +6 -2
  236. package/skills/gsd-path-forensics/SKILL.md +2 -1
  237. package/skills/gsd-path-forensics/references/operating-rules.md +214 -0
  238. package/skills/gsd-path-forensics/scripts/_common.py +619 -18
  239. package/skills/gsd-path-forensics/scripts/discussion_records.py +19 -13
  240. package/skills/gsd-path-forensics/scripts/loop_run.py +31 -29
  241. package/skills/gsd-path-forensics/scripts/path_config.py +5 -5
  242. package/skills/gsd-path-forensics/scripts/pipeline_diagnose.py +82 -31
  243. package/skills/gsd-path-forensics/scripts/pipeline_undo.py +218 -30
  244. package/skills/gsd-path-forensics/scripts/review_panel.py +1 -1
  245. package/skills/gsd-path-forensics/scripts/worktree_paths.py +72 -10
  246. package/skills/gsd-path-inspect/SKILL.md +5 -4
  247. package/skills/gsd-path-inspect/references/codebase-mapper.md +2 -1
  248. package/skills/gsd-path-inspect/references/dispatch.md +13 -0
  249. package/skills/gsd-path-inspect/references/docs-auditor.md +7 -1
  250. package/skills/gsd-path-inspect/references/operating-rules.md +214 -0
  251. package/skills/gsd-path-inspect/scripts/_common.py +619 -18
  252. package/skills/gsd-path-inspect/scripts/archive_milestone.py +160 -86
  253. package/skills/gsd-path-inspect/scripts/build_recovery.py +100 -32
  254. package/skills/gsd-path-inspect/scripts/check_docs_audit.py +91 -7
  255. package/skills/gsd-path-inspect/scripts/check_handoffs.py +662 -50
  256. package/skills/gsd-path-inspect/scripts/check_task_briefs.py +338 -30
  257. package/skills/gsd-path-inspect/scripts/detect_project.py +587 -32
  258. package/skills/gsd-path-inspect/scripts/discussion_records.py +19 -13
  259. package/skills/gsd-path-inspect/scripts/discussion_validate.py +152 -50
  260. package/skills/gsd-path-inspect/scripts/integration.py +580 -25
  261. package/skills/gsd-path-inspect/scripts/isolation.py +1438 -57
  262. package/skills/gsd-path-inspect/scripts/loop_run.py +31 -29
  263. package/skills/gsd-path-inspect/scripts/members.py +706 -0
  264. package/skills/gsd-path-inspect/scripts/path_config.py +5 -5
  265. package/skills/gsd-path-inspect/scripts/pipeline_git.py +124 -34
  266. package/skills/gsd-path-inspect/scripts/pipeline_state.py +287 -87
  267. package/skills/gsd-path-inspect/scripts/promote_lookahead.py +1 -1
  268. package/skills/gsd-path-inspect/scripts/review_panel.py +1 -1
  269. package/skills/gsd-path-inspect/scripts/state_checkpoint.py +135 -44
  270. package/skills/gsd-path-inspect/scripts/state_promote.py +2 -0
  271. package/skills/gsd-path-inspect/scripts/workflow_run.py +107 -30
  272. package/skills/gsd-path-inspect/scripts/worktree_paths.py +72 -10
  273. package/skills/gsd-path-inspect/templates/codebase.md +1 -1
  274. package/skills/gsd-path-inspect/templates/docs-audit.md +6 -2
  275. package/skills/gsd-path-inspect/templates/state.md +1 -1
  276. package/skills/gsd-path-loop/SKILL.md +2 -1
  277. package/skills/gsd-path-loop/references/operating-rules.md +214 -0
  278. package/skills/gsd-path-loop/scripts/_common.py +619 -18
  279. package/skills/gsd-path-loop/scripts/discussion_records.py +19 -13
  280. package/skills/gsd-path-loop/scripts/loop_run.py +31 -29
  281. package/skills/gsd-path-loop/scripts/path_config.py +5 -5
  282. package/skills/gsd-path-loop/scripts/review_panel.py +1 -1
  283. package/skills/gsd-path-loop/scripts/worktree_paths.py +72 -10
  284. package/skills/gsd-path-migrate/SKILL.md +2 -1
  285. package/skills/gsd-path-migrate/references/operating-rules.md +214 -0
  286. package/skills/gsd-path-migrate/scripts/_common.py +619 -18
  287. package/skills/gsd-path-migrate/scripts/core_hook_gate.py +10 -1
  288. package/skills/gsd-path-migrate/scripts/core_hook_settings.py +11 -4
  289. package/skills/gsd-path-migrate/scripts/discussion_records.py +19 -13
  290. package/skills/gsd-path-migrate/scripts/loop_run.py +31 -29
  291. package/skills/gsd-path-migrate/scripts/migrate_core.py +2 -2
  292. package/skills/gsd-path-migrate/scripts/path_config.py +5 -5
  293. package/skills/gsd-path-migrate/scripts/review_panel.py +1 -1
  294. package/skills/gsd-path-plan/SKILL.md +18 -4
  295. package/skills/gsd-path-plan/references/dispatch.md +13 -0
  296. package/skills/gsd-path-plan/references/operating-rules.md +214 -0
  297. package/skills/gsd-path-plan/references/planner.md +22 -4
  298. package/skills/gsd-path-plan/references/spec-probes.md +150 -0
  299. package/skills/gsd-path-plan/scripts/_common.py +619 -18
  300. package/skills/gsd-path-plan/scripts/archive_milestone.py +160 -86
  301. package/skills/gsd-path-plan/scripts/build_recovery.py +100 -32
  302. package/skills/gsd-path-plan/scripts/check_handoffs.py +662 -50
  303. package/skills/gsd-path-plan/scripts/check_task_briefs.py +338 -30
  304. package/skills/gsd-path-plan/scripts/detect_project.py +587 -32
  305. package/skills/gsd-path-plan/scripts/discussion_records.py +19 -13
  306. package/skills/gsd-path-plan/scripts/discussion_validate.py +152 -50
  307. package/skills/gsd-path-plan/scripts/integration.py +580 -25
  308. package/skills/gsd-path-plan/scripts/isolation.py +1438 -57
  309. package/skills/gsd-path-plan/scripts/loop_run.py +31 -29
  310. package/skills/gsd-path-plan/scripts/members.py +706 -0
  311. package/skills/gsd-path-plan/scripts/path_config.py +5 -5
  312. package/skills/gsd-path-plan/scripts/pipeline_git.py +124 -34
  313. package/skills/gsd-path-plan/scripts/pipeline_state.py +287 -87
  314. package/skills/gsd-path-plan/scripts/promote_lookahead.py +1 -1
  315. package/skills/gsd-path-plan/scripts/review_panel.py +1 -1
  316. package/skills/gsd-path-plan/scripts/state_checkpoint.py +135 -44
  317. package/skills/gsd-path-plan/scripts/state_promote.py +2 -0
  318. package/skills/gsd-path-plan/scripts/workflow_run.py +107 -30
  319. package/skills/gsd-path-plan/scripts/worktree_paths.py +72 -10
  320. package/skills/gsd-path-plan/templates/patch-findings.md +3 -3
  321. package/skills/gsd-path-plan/templates/plan.md +17 -2
  322. package/skills/gsd-path-plan/templates/task.md +1 -0
  323. package/skills/gsd-path-research/SKILL.md +13 -1
  324. package/skills/gsd-path-research/references/dispatch.md +13 -0
  325. package/skills/gsd-path-research/references/operating-rules.md +214 -0
  326. package/skills/gsd-path-research/scripts/_common.py +619 -18
  327. package/skills/gsd-path-research/scripts/archive_milestone.py +160 -86
  328. package/skills/gsd-path-research/scripts/build_recovery.py +100 -32
  329. package/skills/gsd-path-research/scripts/check_handoffs.py +662 -50
  330. package/skills/gsd-path-research/scripts/check_task_briefs.py +338 -30
  331. package/skills/gsd-path-research/scripts/detect_project.py +587 -32
  332. package/skills/gsd-path-research/scripts/discussion_records.py +19 -13
  333. package/skills/gsd-path-research/scripts/discussion_validate.py +152 -50
  334. package/skills/gsd-path-research/scripts/integration.py +580 -25
  335. package/skills/gsd-path-research/scripts/isolation.py +1438 -57
  336. package/skills/gsd-path-research/scripts/loop_run.py +31 -29
  337. package/skills/gsd-path-research/scripts/members.py +706 -0
  338. package/skills/gsd-path-research/scripts/path_config.py +5 -5
  339. package/skills/gsd-path-research/scripts/pipeline_git.py +124 -34
  340. package/skills/gsd-path-research/scripts/pipeline_state.py +287 -87
  341. package/skills/gsd-path-research/scripts/promote_lookahead.py +1 -1
  342. package/skills/gsd-path-research/scripts/review_panel.py +1 -1
  343. package/skills/gsd-path-research/scripts/state_checkpoint.py +135 -44
  344. package/skills/gsd-path-research/scripts/state_promote.py +2 -0
  345. package/skills/gsd-path-research/scripts/worktree_paths.py +72 -10
  346. package/skills/gsd-path-research/templates/research-handoff.md +14 -3
  347. package/skills/gsd-path-roadmap/SKILL.md +2 -1
  348. package/skills/gsd-path-roadmap/references/dispatch.md +13 -0
  349. package/skills/gsd-path-roadmap/references/operating-rules.md +214 -0
  350. package/skills/gsd-path-roadmap/scripts/_common.py +619 -18
  351. package/skills/gsd-path-roadmap/scripts/archive_milestone.py +160 -86
  352. package/skills/gsd-path-roadmap/scripts/build_recovery.py +100 -32
  353. package/skills/gsd-path-roadmap/scripts/check_handoffs.py +662 -50
  354. package/skills/gsd-path-roadmap/scripts/check_task_briefs.py +338 -30
  355. package/skills/gsd-path-roadmap/scripts/detect_project.py +587 -32
  356. package/skills/gsd-path-roadmap/scripts/discussion_records.py +19 -13
  357. package/skills/gsd-path-roadmap/scripts/discussion_validate.py +152 -50
  358. package/skills/gsd-path-roadmap/scripts/integration.py +580 -25
  359. package/skills/gsd-path-roadmap/scripts/isolation.py +1438 -57
  360. package/skills/gsd-path-roadmap/scripts/loop_run.py +31 -29
  361. package/skills/gsd-path-roadmap/scripts/members.py +706 -0
  362. package/skills/gsd-path-roadmap/scripts/path_config.py +5 -5
  363. package/skills/gsd-path-roadmap/scripts/pipeline_git.py +124 -34
  364. package/skills/gsd-path-roadmap/scripts/pipeline_state.py +287 -87
  365. package/skills/gsd-path-roadmap/scripts/promote_lookahead.py +1 -1
  366. package/skills/gsd-path-roadmap/scripts/review_panel.py +1 -1
  367. package/skills/gsd-path-roadmap/scripts/state_checkpoint.py +135 -44
  368. package/skills/gsd-path-roadmap/scripts/state_promote.py +2 -0
  369. package/skills/gsd-path-roadmap/scripts/worktree_paths.py +72 -10
  370. package/skills/gsd-path-ship/SKILL.md +33 -11
  371. package/skills/gsd-path-ship/references/dispatch.md +13 -0
  372. package/skills/gsd-path-ship/references/operating-rules.md +214 -0
  373. package/skills/gsd-path-ship/references/reviewer-final.md +20 -2
  374. package/skills/gsd-path-ship/references/reviewer-wave.md +18 -5
  375. package/skills/gsd-path-ship/references/reviewer.md +3 -1
  376. package/skills/gsd-path-ship/references/spec-probes.md +150 -0
  377. package/skills/gsd-path-ship/scripts/_common.py +619 -18
  378. package/skills/gsd-path-ship/scripts/archive_milestone.py +160 -86
  379. package/skills/gsd-path-ship/scripts/build_recovery.py +100 -32
  380. package/skills/gsd-path-ship/scripts/build_state.py +143 -24
  381. package/skills/gsd-path-ship/scripts/check_handoffs.py +662 -50
  382. package/skills/gsd-path-ship/scripts/check_task_briefs.py +338 -30
  383. package/skills/gsd-path-ship/scripts/detect_project.py +587 -32
  384. package/skills/gsd-path-ship/scripts/discussion_records.py +19 -13
  385. package/skills/gsd-path-ship/scripts/discussion_validate.py +152 -50
  386. package/skills/gsd-path-ship/scripts/integration.py +580 -25
  387. package/skills/gsd-path-ship/scripts/isolation.py +1438 -57
  388. package/skills/gsd-path-ship/scripts/lean_verification.py +99 -19
  389. package/skills/gsd-path-ship/scripts/loop_run.py +31 -29
  390. package/skills/gsd-path-ship/scripts/members.py +706 -0
  391. package/skills/gsd-path-ship/scripts/path_config.py +5 -5
  392. package/skills/gsd-path-ship/scripts/pipeline_git.py +124 -34
  393. package/skills/gsd-path-ship/scripts/pipeline_state.py +287 -87
  394. package/skills/gsd-path-ship/scripts/promote_lookahead.py +1 -1
  395. package/skills/gsd-path-ship/scripts/review_panel.py +1 -1
  396. package/skills/gsd-path-ship/scripts/state_checkpoint.py +135 -44
  397. package/skills/gsd-path-ship/scripts/state_promote.py +2 -0
  398. package/skills/gsd-path-ship/scripts/workflow_run.py +107 -30
  399. package/skills/gsd-path-ship/scripts/worktree_paths.py +72 -10
  400. package/skills/gsd-path-ship/templates/final-review.md +16 -4
  401. package/skills/gsd-path-ship/templates/gap-review.md +2 -1
  402. package/skills/gsd-path-ship/templates/patch-findings.md +3 -3
  403. package/skills/gsd-path-ship/templates/wave-review.md +16 -4
  404. package/skills/gsd-path-undo/SKILL.md +2 -1
  405. package/skills/gsd-path-undo/references/operating-rules.md +214 -0
  406. package/skills/gsd-path-undo/scripts/_common.py +619 -18
  407. package/skills/gsd-path-undo/scripts/discussion_records.py +19 -13
  408. package/skills/gsd-path-undo/scripts/loop_run.py +31 -29
  409. package/skills/gsd-path-undo/scripts/path_config.py +5 -5
  410. package/skills/gsd-path-undo/scripts/pipeline_undo.py +218 -30
  411. package/skills/gsd-path-undo/scripts/review_panel.py +1 -1
  412. package/skills/gsd-path-undo/scripts/worktree_paths.py +72 -10
  413. package/skills/path/BUILD.md +7 -1
  414. package/skills/path/DECIDE.md +11 -4
  415. package/skills/path/DEFINE.md +36 -4
  416. package/skills/path/DOCS-AUDIT.md +6 -4
  417. package/skills/path/INSPECT.md +5 -4
  418. package/skills/path/PLAN.md +18 -4
  419. package/skills/path/RESEARCH.md +13 -1
  420. package/skills/path/ROADMAP.md +2 -1
  421. package/skills/path/SHIP.md +33 -11
  422. package/skills/path/SKILL.md +45 -1
  423. package/skills/path/references/build-native.md +63 -15
  424. package/skills/path/references/codebase-mapper.md +2 -1
  425. package/skills/path/references/dispatch.md +13 -0
  426. package/skills/path/references/docs-auditor.md +7 -1
  427. package/skills/path/references/operating-rules.md +214 -0
  428. package/skills/path/references/planner.md +22 -4
  429. package/skills/path/references/reviewer-final.md +20 -2
  430. package/skills/path/references/reviewer-wave.md +18 -5
  431. package/skills/path/references/reviewer.md +3 -1
  432. package/skills/path/references/spec-probes.md +150 -0
  433. package/skills/path/scripts/_common.py +619 -18
  434. package/skills/path/scripts/archive_milestone.py +160 -86
  435. package/skills/path/scripts/bootstrap_repository.py +8 -5
  436. package/skills/path/scripts/build_recovery.py +100 -32
  437. package/skills/path/scripts/build_state.py +143 -24
  438. package/skills/path/scripts/check_docs_audit.py +91 -7
  439. package/skills/path/scripts/check_handoffs.py +662 -50
  440. package/skills/path/scripts/check_task_briefs.py +338 -30
  441. package/skills/path/scripts/check_update.py +2 -2
  442. package/skills/path/scripts/detect_project.py +587 -32
  443. package/skills/path/scripts/discussion_records.py +19 -13
  444. package/skills/path/scripts/discussion_validate.py +152 -50
  445. package/skills/path/scripts/dispatch_driver.py +501 -46
  446. package/skills/path/scripts/git_guard.py +118 -31
  447. package/skills/path/scripts/integration.py +580 -25
  448. package/skills/path/scripts/isolation.py +1438 -57
  449. package/skills/path/scripts/lean_verification.py +99 -19
  450. package/skills/path/scripts/loop_run.py +31 -29
  451. package/skills/path/scripts/members.py +706 -0
  452. package/skills/path/scripts/path_config.py +5 -5
  453. package/skills/path/scripts/pipeline_git.py +124 -34
  454. package/skills/path/scripts/pipeline_state.py +287 -87
  455. package/skills/path/scripts/promote_lookahead.py +1 -1
  456. package/skills/path/scripts/review_panel.py +1 -1
  457. package/skills/path/scripts/state_checkpoint.py +135 -44
  458. package/skills/path/scripts/state_promote.py +2 -0
  459. package/skills/path/scripts/status_runtime.py +58 -10
  460. package/skills/path/scripts/task_context.py +12 -3
  461. package/skills/path/scripts/token_budget.py +12 -8
  462. package/skills/path/scripts/workflow_run.py +107 -30
  463. package/skills/path/scripts/worktree_paths.py +72 -10
  464. package/skills/path/templates/codebase.md +1 -1
  465. package/skills/path/templates/docs-audit.md +6 -2
  466. package/skills/path/templates/final-review.md +16 -4
  467. package/skills/path/templates/gap-review.md +2 -1
  468. package/skills/path/templates/intent.md +30 -0
  469. package/skills/path/templates/patch-findings.md +3 -3
  470. package/skills/path/templates/plan.md +17 -2
  471. package/skills/path/templates/research-handoff.md +14 -3
  472. package/skills/path/templates/state.md +1 -1
  473. package/skills/path/templates/task.md +1 -0
  474. package/skills/path/templates/wave-review.md +16 -4
  475. package/skills/gsd-path/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  476. package/skills/gsd-path/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
  477. package/skills/gsd-path-build/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  478. package/skills/gsd-path-build/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
  479. package/skills/gsd-path-inspect/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  480. package/skills/gsd-path-plan/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  481. package/skills/gsd-path-ship/scripts/__pycache__/_common.cpython-312.pyc +0 -0
package/HOOKS.md CHANGED
@@ -42,7 +42,8 @@ node scripts/install.mjs --claude --project /path/to/repo --hooks
42
42
  ```
43
43
 
44
44
  For a project that already has `AGENTS.md` and `WORKFLOW.md`, initialize only
45
- the guards and keep those contracts unchanged:
45
+ the guards and keep those contracts unchanged (use `--update --project` to
46
+ refresh the `AGENTS.md` block):
46
47
 
47
48
  ```bash
48
49
  npx @opengsd/gsd-path --hooks-init --claude --project /path/to/repo
@@ -86,11 +87,13 @@ manual activation is complete, Codex's guaranteed manifest tier is `git-only`;
86
87
  changing the hook requires review again.
87
88
 
88
89
  **Windows / interpreter caveat:** hooks and native host settings invoke a
89
- Python interpreter that the installer probes at install time — `python3` first,
90
- then `python` (plain `python3` usually does not exist on Windows). If neither
91
- runs, hook installation stops before writing instead of pinning a missing
92
- interpreter. The `sh` hook scripts themselves need a POSIX shell (Git for
93
- Windows provides one).
90
+ Python interpreter that the installer probes at install time: `python3` first,
91
+ then `python`, then the `py -3` launcher (plain `python3` usually does not
92
+ exist on Windows). If none runs, hook installation stops before writing
93
+ instead of pinning a missing interpreter. The `sh` hook scripts themselves need
94
+ a POSIX shell, which Git for Windows provides. Claude Code runs Windows hook
95
+ commands in Git Bash, so wrapped Core hooks are bash-quoted and their original
96
+ command runs through Git Bash, not cmd.exe.
94
97
 
95
98
  ### Updating after package upgrade
96
99
 
@@ -130,7 +133,8 @@ See [UPDATE.md](UPDATE.md).
130
133
  `git checkout -- .`/`git restore .`
131
134
  - shell writes (redirections, `tee`, `cp`, `mv`, `rm`, `sed -i`, ...) that
132
135
  target a routing control (`.git`, `.project/STATE.md`, `.project/next`,
133
- `.gsd-path`) while `.project/STATE.md` exists
136
+ `.gsd-path`) while `.project/STATE.md` exists, or target a product file
137
+ outside the routed build phase (same rule as direct file-edit tools)
134
138
  - repeated assignments to the same shell variable within one command; split
135
139
  these into separate tool calls so write targets can be resolved
136
140
  - copies whose destinations, including nested recursive-copy entries, resolve
@@ -142,7 +146,8 @@ See [UPDATE.md](UPDATE.md).
142
146
  source trees containing directory symlinks are denied; use literal directory
143
147
  paths and copy directory links separately
144
148
  - shell commands that reference the archive unless the whole command is a
145
- recognized standalone read or a single-command invocation of the bundled
149
+ recognized standalone read, a pipeline in which each segment is a recognized
150
+ read, or a single-command invocation of the bundled
146
151
  `pipeline_state.py` / `archive_milestone.py` helper, resolved to a regular file
147
152
  inside the verified runtime selected by `.gsd-path/runtime.json` (legacy projects use `.gsd-path/runtime/` beside `guard_hook.py`
148
153
  in the repository layout), using exactly `python` or `python3` with optional
@@ -158,11 +163,93 @@ See [UPDATE.md](UPDATE.md).
158
163
  - deletion or move commands outside a single simple segment, including command
159
164
  chains, pipes, newlines, grouping, directory changes, and command substitution
160
165
  - deletion or move commands with any argument outside the literal-path character
161
- set: ASCII letters, digits, `.`, `_`, `-`, and `/` (plus a drive prefix and
162
- backslashes on Windows). One matching pair of surrounding quotes is allowed;
163
- spaces, parameters, wildcards, braces, and tilde paths are denied even when
164
- quoted. This also applies to `find -delete` and supported destructive aliases
166
+ set: ASCII letters, digits, `.`, `_`, `-`, `/`, and ASCII spaces inside one
167
+ shell unit (plus a drive prefix and backslashes on Windows). One matching
168
+ pair of surrounding quotes is allowed; parameters, wildcards, braces, and
169
+ tilde paths are denied even when quoted. This also applies to
170
+ `find -delete` and supported destructive aliases
165
171
  - destructive Git commands nested in supported shell and command wrappers
172
+ - Git arguments that contain a shell parameter. Only plain `$name` and
173
+ `${name}` expansions pass, and only inside plain double-quoted spans of
174
+ read-only subcommands (`status`, `log`, `diff`, `show`, and the other
175
+ inspection commands) that the guard parses directly, such as
176
+ `git log --format="$t %H"` or `git show "HEAD:$f"`, because only double
177
+ quoting prevents word-splitting into options. A parameter outside double
178
+ quotes (`$x`, `HEAD:$f`, `--format=$x`, `"a b"$x`) is denied because its
179
+ expansion can split into a write option such as `--output`. Every other
180
+ parameter form (`${=x}`, `${(z)x}`, `${x:-y}`, `$x[@]`, `$1`, `$@`, `$*`,
181
+ `$#`, and the unbraced zsh flags `$=x`, `$~x`, `$^x`, `$+x`) is denied even
182
+ inside double quotes, because it can expand to more than one word; a
183
+ backslash-escaped marker (`"\$t"`) is likewise denied, because the shell
184
+ executes the literal text while the argument still shows the bare marker.
185
+ The same four zsh flags are denied in a `git -C` directory. A literal `$`
186
+ that starts no expansion (a regex anchor such as `--grep='fix$'`) passes.
187
+ A `-c`/`--config` key whose value git executes as a program —
188
+ `core.fsmonitor`, editors and pagers, `core.sshCommand`,
189
+ `core.askPass`, `filter.*` clean/smudge/process, `diff.*`
190
+ textconv/external/command, `merge.*` drivers, `core.gitProxy`,
191
+ `interactive.diffFilter`,
192
+ `remote.*` uploadpack/receivepack, `gpg.program` and `gpg.*.program`, `credential.helper` and
193
+ `credential.*.helper`, each `pager.<cmd>` key — is denied with a literal
194
+ value as with a parameter, because git runs it during an otherwise
195
+ read-only subcommand. A disabling form of such a key passes: the bare key,
196
+ an empty value, or `false`. A `--config-env` form is always denied, because
197
+ its value comes from the environment. A key through which git loads code —
198
+ `core.hooksPath`, `include.path`, `includeIf.*.path`, `url.*.insteadOf`,
199
+ `url.*.pushInsteadOf` — is denied with each value. `git config` is denied
200
+ when it sets one of these keys; to read or unset the key stays allowed.
201
+ A redirection at the end of a read (`git config <key> 2>/dev/null`) is not
202
+ a value. A separate digit before a redirection (`5 >/dev/null`), a word of two
203
+ or more digits (`12>/dev/null`) and a quoted operator are values, so they
204
+ make a set.
205
+ Each `git config` argument must be a plain literal word, bare or in one
206
+ pair of quotes: a backslash, mixed quotes, an unquoted glob (`*`, `?`, `[`),
207
+ an unquoted brace list or range (`{a,b}`, `{1..3}`) or a line continuation
208
+ in the word or one that joins it to the next word is denied, because the shell can make a different
209
+ argument list from it.
210
+ An unquoted word that starts with `#` among the `git config` arguments
211
+ is denied, because the shell reads it and the words after it as a comment.
212
+ The git subcommand word must be a plain literal word in each git command:
213
+ `git {config,...}` and a subcommand split by a line continuation are denied.
214
+ A program that runs the command in its arguments (`nice`, `nohup`,
215
+ `timeout`, `sudo`, `watch`, `time`, `env`, `stdbuf`, `setsid`) is
216
+ unwrapped: the guard skips the options of the program and checks the
217
+ command that it runs, so `nice git -c core.fsmonitor=/abs/h.sh status` is
218
+ denied by the git rule and `sudo apt install git` passes. A runner
219
+ option that writes, edits or enters a file or directory by itself is
220
+ denied (`time -o`, `sudo -e`, `sudo -D`, `sudo -R`, `watch -s`). The
221
+ `timeout` duration and the `watch` interval must be literal numbers, and
222
+ each runner option word must be a literal word; only a separate option
223
+ value can be a parameter in double quotes (`sudo -u "$USER" ls`). A short
224
+ option word is read as getopt reads it, so the attached value in
225
+ `sudo -upostgres psql` is not taken as more options. With an archive working directory a command runner is not
226
+ unwrapped and is denied as an unknown program. Other command
227
+ runners (`doas`, `ionice`, `noglob`) are not unwrapped, and `watch` with
228
+ the command in one quoted word is not checked.
229
+ Each git global option word, and the value word of `-c`, `-C`,
230
+ `--git-dir`, `--work-tree`, `--namespace` and `--config-env`, must resolve
231
+ to one word: a backslash, an unquoted glob or an unquoted brace list or
232
+ range in it is denied (`git -c {core.fsmonitor=/abs/h.sh,status}`,
233
+ `git -{p,c} core.fsmonitor=/abs/h.sh status`). A parameter in such a value
234
+ is denied also when no subcommand follows (`git -c $x`). Plain quoted parts
235
+ pass (`git -c user.name='A B' log`).
236
+ `git config` section renames and removals (`--rename-section`,
237
+ `--remove-section`) and `--edit` are denied, because a rename can move a
238
+ key into an executed section and `--edit` starts an editor.
239
+ Command substitution output, a parameter that starts an
240
+ argument, and a parameter in the value of an option that git writes to or
241
+ runs as a command (`--output`, `--upload-pack`, `--receive-pack`, `--exec`,
242
+ `-c`, `--config-env`, or a `<transport>::<address>` remote) are denied in
243
+ every form. These option names match by prefix (`--upload-pa`, `--exe`),
244
+ because git accepts abbreviated long options; in archive context the same
245
+ prefix match applies to `--output`, `--ext-diff`, and `--textconv`. The
246
+ exact read-only option `--text` is not an abbreviation and stays allowed. Any
247
+ other quoting construct in the command (`$'...'`, `$"..."`, quotes inside `${...}`, quotes or
248
+ backslashes in a comment, here-documents and here-strings) disables the
249
+ exception, so every parameter in a git argument of that command is denied.
250
+ The exception applies only to commands the guard parses directly, never
251
+ inside wrapped shell strings (`eval`, `bash -c`, `sh -c`, PowerShell or
252
+ `cmd` command strings), where the outer shell expands the parameter first
166
253
  - archive glob/brace expansions and execution-capable read options such as
167
254
  `rg --pre`
168
255
  - direct write, edit, and patch tool calls targeting `.project/STATE.md`,
@@ -262,9 +349,12 @@ writes nor verifies that wiring. To add it yourself, register
262
349
  | Antigravity | `.agents/hooks.json` `PreToolUse` | [Antigravity hooks](https://antigravity.google/docs/hooks) |
263
350
  | OpenCode | JS plugin `tool.execute.before` | [OpenCode plugins](https://opencode.ai/docs/plugins/) |
264
351
  | Zed | no hook API — git hooks only | — |
352
+ | Muse Code | no GSD Path hook integration — git hooks only | — |
265
353
 
266
- **Caveats:** The hook cannot prove which skill initiated a shell command or a
267
- build-phase edit, so AGENTS.md owns those re-entry cases. Grok and Kimi
354
+ **Caveats:** The hook cannot prove which skill initiated a build-phase edit
355
+ when the routed build phase is already active. Shell product writes use the
356
+ same phase gate as file-edit tools; AGENTS.md still owns plain-prompt re-entry
357
+ when no `.project/STATE.md` exists. Grok and Kimi
268
358
  fail-open on hook errors by design. Copilot, Kimi, Kiro, and Antigravity may
269
359
  not intercept subagent tools — treat coverage as orchestrator-level.
270
360
 
package/QUICK.md CHANGED
@@ -14,7 +14,7 @@ One router skill drives a gated pipeline: inspect → define → research → de
14
14
  plan → build → ship. Every handoff lives in `.project/` so any session can resume from disk.
15
15
 
16
16
  **Hosts:** Codex, Claude Code, Grok, OpenCode, Copilot CLI, Qwen, Antigravity,
17
- Cursor, Zed, Kiro, Kimi Code.
17
+ Cursor, Zed, Kiro, Kimi Code, Muse Code.
18
18
 
19
19
  ---
20
20
 
@@ -22,7 +22,7 @@ Cursor, Zed, Kiro, Kimi Code.
22
22
 
23
23
  ```text
24
24
  [ ] 1. Install skills (step 1)
25
- [ ] 2. Install project rules in your repo (step 2) — skip if repo already has AGENTS.md
25
+ [ ] 2. Install project rules in your repo (step 2) — an existing AGENTS.md keeps its text
26
26
  [ ] 3. Restart agent session
27
27
  [ ] 4. Open repo in agent; invoke router (step 3)
28
28
  [ ] 5. Approve gates as they appear (step 4)
@@ -105,6 +105,9 @@ Codex invokes it as `$gsd-path-discuss`.
105
105
  | Build | Escalations only |
106
106
  | Ship | Approve patch waves if blocked; approve archive and ship when green |
107
107
 
108
+ For unattended quick-lane runs, see
109
+ [pre-approval in the README](README.md#start-your-first-project).
110
+
108
111
  ---
109
112
 
110
113
  ## 5. Resume
package/README.md CHANGED
@@ -10,20 +10,20 @@ parallel under `.project/next/` (lookahead); a building milestone can also be
10
10
  abandoned on an explicit ruling, archiving its partial work for a re-slice.
11
11
 
12
12
  **Supported hosts:** Codex, Claude Code, Grok, OpenCode, GitHub Copilot CLI,
13
- Qwen Code, Antigravity CLI, Cursor, Zed, Kiro, and Kimi Code.
13
+ Qwen Code, Antigravity CLI, Cursor, Zed, Kiro, Kimi Code, and Muse Code.
14
14
  Support means the installer and dispatch contract exist. See the
15
15
  [host trust matrix](https://github.com/open-gsd/gsd-path/blob/main/docs/trust-validation/HOST-MATRIX.md) for live milestone
16
16
  proof and each host's guard tier.
17
17
 
18
18
  <!-- release-docs -->
19
- **Latest npm release:** [@opengsd/gsd-path@1.3.1](https://www.npmjs.com/package/@opengsd/gsd-path/v/1.3.1) — [release notes](CHANGELOG.md#131---2026-09-22)
19
+ **Latest npm release:** [@opengsd/gsd-path@1.5.0](https://www.npmjs.com/package/@opengsd/gsd-path/v/1.5.0) — [release notes](CHANGELOG.md#150---2026-10-09)
20
20
 
21
21
  **Recent highlights**
22
- - describe untracked legacy migration in help
23
- - preserve older untracked runtimes during migration
24
- - Clarify legacy runtime backup guidance
25
- - Consolidate legacy runtime migration guidance
26
- - prepare 1.3.1 patch candidate
22
+ - record runtime hotfix provenance on the declaration
23
+ - add signed self-update
24
+ - add the Skills, Stats, Settings, and Environment pages and the setup wizard
25
+ - register the hosts, project operation, and env routes
26
+ - add project setup operations for the app
27
27
 
28
28
  <!-- /release-docs -->
29
29
 
@@ -40,43 +40,52 @@ proof and each host's guard tier.
40
40
  | [WORKFLOW.md](WORKFLOW.md) | Phase-by-phase agent SOP |
41
41
  | [HOOKS.md](HOOKS.md) | Optional archive/git guard hooks |
42
42
  | [Jev screening](skills/gsd-path/references/jev-review.md) | Optional evidence screening; disabled by default, no SDK required |
43
- | [daemon/README.md](daemon/README.md) | Dashboard, menu-bar app, and monitoring setup |
44
- | [CHANGELOG.md](CHANGELOG.md) | Published release notes |
43
+ | [daemon/app/README.md](daemon/app/README.md) | Desktop app: develop, release, and updates |
44
+ | [daemon/README.md](daemon/README.md) | Monitor daemon: routes, configuration, and manual setup |
45
+ | [CHANGELOG.md](CHANGELOG.md) | npm package release notes |
46
+ | [daemon/app/CHANGELOG.md](daemon/app/CHANGELOG.md) | Desktop app release notes |
45
47
  | [RELEASE.md](RELEASE.md) | Maintainer CI and npm release cycle |
46
48
  | [GUIDE.md](GUIDE.md) | Pointer to the guides above |
47
49
 
48
- ## What's new — September 19, 2026
50
+ ## What's new — October 2, 2026
49
51
 
50
52
  These changes are merged into the source checkout; npm installs use the latest
51
53
  published release.
52
54
 
53
- - **Dashboard settings and history:** edit Path settings, browse project files
54
- and Git versions, and load full recorded evidence. See the
55
- [dashboard guide](daemon/README.md#project-history-and-files).
56
- - **Model and effort policy:** set user, project, host, and task choices through
57
- one resolver. Recorded assignments stay pinned; unsupported explicit choices
58
- stop the affected dispatch. See the
59
- [model policy](skills/gsd-path/references/model-policy.md).
60
- - **External worktrees and pinned runtimes:** new parallel task, verification,
61
- and integration worktrees live outside project checkouts. Projects pin runtime
62
- versions by content digest, with explicit upgrade, restore, and legacy migration
63
- commands. See
64
- [worktree locations](DOCS.md#worktree-locations) and
65
- [runtime versions](DOCS.md#project-runtime-versions).
66
- - **Clearer project updates:** the dashboard shows project runtime versions and
67
- update results. After verified integration, ordinary branches can resume
68
- product work while archived milestones remain protected. See
69
- [update guidance](UPDATE.md#update-the-project-runtime-and-guard-hooks).
70
- - **Optional Jev screening:** reviewers can request advisory checks of selected
71
- criteria and evidence. It is disabled by default and never replaces recorded
72
- verification or review gates. See
73
- [Jev screening](skills/gsd-path/references/jev-review.md).
55
+ - **Desktop app (pre-release):** one app for macOS, Windows, and Linux shows
56
+ your projects, manages skills in each coding agent, and updates itself. See
57
+ [Desktop app](#desktop-app).
58
+ - **Skills from the published release:** the monitor installs skills from the
59
+ npm release, checks the download against the registry's sha512, and refuses
60
+ one that does not match. A release picker lets you stay on an older version.
61
+ - **Safer monitor writes:** a monitor started by the app accepts changes only
62
+ with the app's local token, so another web page cannot change your setup.
63
+ - **Environment editor:** edit a project's `.env` files with values masked and
64
+ a diff before each save.
65
+ - **Usage charts:** tokens and cost per day, time per phase, tasks per wave,
66
+ and verify history. Missing data shows as missing, never as zero.
67
+ - **Muse Code** is a supported host.
74
68
 
75
69
  ## Install from npm
76
70
 
77
71
  Requires **Node.js 18.17+** for the npm installer and **Python 3.9+** for
78
72
  project contracts and pipeline helpers. Install and sign in to a supported
79
73
  coding-agent host separately; GSD Path installs its skills, not the host itself.
74
+
75
+ **Windows** runs natively; WSL is not required. Install
76
+ [Git for Windows](https://git-scm.com/download/win): git hooks and task Verify
77
+ commands run in its Git Bash, never the System32 WSL launcher (`GSD_PATH_BASH`
78
+ overrides the path). Install a real Python from python.org or
79
+ `winget install Python.Python.3.12`; the Microsoft Store `python` alias stub
80
+ does not count. The installer accepts `python3`, `python`, or the `py -3`
81
+ launcher. For deep managed-worktree paths, turn on long paths
82
+ (`git config --global core.longpaths true` and Windows' `LongPathsEnabled`);
83
+ `--doctor` warns about both. Git for Windows defaults to
84
+ `core.autocrlf=true`, so project installs add a managed
85
+ `/.project/** text eol=lf` rule to the repository's local `.git/info/attributes`
86
+ (never committed; delete the `# gsd-path:begin` block to remove it). That keeps
87
+ pipeline state LF in every worktree while product files follow your setting.
88
+
80
89
  The public npm package is **[@opengsd/gsd-path](https://www.npmjs.com/package/@opengsd/gsd-path)**.
81
90
 
82
91
  ```bash
@@ -98,7 +107,9 @@ npx @opengsd/gsd-path@latest --update --project /path/to/your-repo
98
107
  Use host flags such as `--claude --codex` instead of `--all` to select hosts.
99
108
  For project-local skills, run from your project directory and add `--local`
100
109
  to install and update commands. `--project PATH` selects where contracts are
101
- written; it does not change the directory used by `--local`. Run
110
+ written; it does not change the directory used by `--local`. If the repo
111
+ already has an `AGENTS.md`, the install adds a marked GSD Path block and keeps
112
+ your text; see [project contracts](UPDATE.md#update-project-contracts). Run
102
113
  `npx @opengsd/gsd-path@latest --help` for all options. After installing, invoke
103
114
  `$path` in Codex or `/path` on slash-command hosts to start the pipeline.
104
115
  See [Install (summary)](#install-summary) for the host list and source-checkout commands.
@@ -116,6 +127,12 @@ contain newer changes.
116
127
  4. Resume later from the same folder with the router. Use `$path status`
117
128
  (Codex) or `/path status` to inspect progress without advancing.
118
129
 
130
+ For an unattended quick-lane run, invoke `$gsd-path --pre-approve intent,plan`
131
+ in Codex or `/gsd-path --pre-approve intent,plan` on slash-command hosts before
132
+ milestone intent approval. This grants those two gates for one milestone when
133
+ their checks pass. Required answers, failed checks, and other approval gates
134
+ still pause for you. Shipping always needs manual approval.
135
+
119
136
  For a missing skill or an install problem, run:
120
137
 
121
138
  ```bash
@@ -134,65 +151,52 @@ project settings. Dashboard users can open **Settings → Path settings** for th
134
151
  same shipping, model/effort, and future review-panel controls. See
135
152
  [Path settings](skills/gsd-path/references/config.md) for precedence and locks.
136
153
 
137
- ## Dashboard and menu-bar toolbar
138
-
139
- The optional **OpenGSD Path monitor** shows your projects without opening each
140
- project's `.project/` files. It watches the folders you choose and reads project
141
- state without advancing phase gates. Explicit Path settings saves use the
142
- validated configuration helper; background monitoring remains read-only.
143
- The monitor is a separate install from the npm skills package.
144
-
145
- ### Dashboard
146
-
147
- The project board shows blocked, active, and shipped work, with milestone and
148
- phase progress, task counts, last activity, and available usage data. Use the
149
- [dashboard controls](daemon/README.md#dashboard) to filter or search projects,
150
- switch between Board and Milestones, refresh status, and manage settings.
151
-
152
- ![OpenGSD Path project board showing sample projects, status filters, milestone progress, tasks, and usage](docs/images/dashboard-board.png)
153
-
154
- Click a project to see its milestone roadmap, tasks, success criteria, review
155
- results, verification history, and activity. Usage includes tokens and turns
156
- from supported host session logs; cost estimates require model prices in the
157
- daemon configuration.
158
-
159
- ![Project dashboard showing the history viewer link, milestone progress, expandable evidence, and usage with sample data](docs/images/dashboard-project.png)
160
-
161
- *Dashboard screenshots captured from the current source on September 19, 2026,
162
- using the repository's sample projects.*
163
-
164
- Open **History & files** to browse project files and archived milestones,
165
- preview Markdown, or read a file at a selected Git commit. Relative document
166
- links keep that selected version. **Records & sources → Load full records**
167
- loads recorded usage, verification, activity, and indexed host turns on demand,
168
- with coverage details that make missing or invalid data visible.
169
-
170
- Open **Settings → Path settings** to change user defaults or project overrides
171
- for shipping mode, model and effort choices, and future review panels. Each
172
- setting shows its source and any lock reason; changes are saved explicitly.
173
-
174
- The **Plugin** settings page shows each watched project's runtime version and
175
- provides an explicit **Update** action with progress and failure details.
176
- Updating global skills does not update a project's pinned runtime.
177
-
178
- ### macOS menu bar
179
-
180
- Click the OpenGSD Path menu-bar icon for a compact project list with phase
181
- meters and task progress. Click a project to open its dashboard page. The
182
- bottom toolbar opens the dashboard, plugin settings, and watched folders;
183
- it also provides rescan, appearance, and quit controls. The daemon row shows
184
- its running state and provides restart and stop controls. Option-click the
185
- menu-bar icon to open the dashboard directly.
186
-
187
- <img src="docs/images/macos-menu-bar.png" alt="OpenGSD Path native macOS panel with sample projects and its bottom toolbar" width="400">
188
-
189
- *Screenshots show the current UI with sample project data. The native panel is
190
- captured in its preview window.*
191
-
192
- ### Install the monitor
193
-
194
- The monitor requires Python 3.9+. From a source checkout, preview the setup,
195
- then install (macOS/Linux shell):
154
+ ## Desktop app
155
+
156
+ The **OpenGSD Path app** shows your projects without opening each project's
157
+ `.project/` files, and manages the Path setup on your computer. It is a
158
+ pre-release for testers.
159
+
160
+ **Get it:** download the installer for your system from the newest `app-v`
161
+ entry on the [releases page](https://github.com/open-gsd/gsd-path/releases):
162
+ `.dmg` (macOS, Apple Silicon or Intel), `.msi` (Windows), `.deb` or AppImage
163
+ (Linux). The app needs Python 3.9+ and Git; its first screen checks for both
164
+ and shows the fix when one is missing.
165
+
166
+ macOS builds are signed with a Developer ID and notarized by Apple from 0.1.1
167
+ on, so they open without an approval in Privacy & Security. Windows builds have
168
+ no code signature yet: SmartScreen shows a warning; choose **More info → Run
169
+ anyway**.
170
+
171
+ What the app does:
172
+
173
+ - **Projects:** blocked, active, and shipped work with milestone and phase
174
+ progress, tasks, last activity, and usage. A project page shows its
175
+ roadmap, tasks, success criteria, reviews, verification history, files at
176
+ any Git version, and full recorded evidence.
177
+ - **Skills:** which coding agents have Path skills, at which version, with
178
+ preview, install, update, and uninstall. Every write shows a preview or a
179
+ plan first.
180
+ - **Project setup:** runtime version, guard hooks, health check, and, for a
181
+ multi-repo coordinator, member hooks and marker repair.
182
+ - **Settings:** updates, Path settings (shipping mode, models, review panel),
183
+ watched folders, model prices, launch at login, and appearance.
184
+ - **Stats** and the per-project **Environment** editor.
185
+ - **Tray:** a compact project list, items that need attention, and controls
186
+ to start, restart, and quit.
187
+
188
+ The app only watches and sets up. It never advances a phase; approvals and
189
+ rulings stay in your agent. It updates itself: it checks a signed update file,
190
+ asks before it installs, and refuses an update whose signature does not match.
191
+
192
+ Background monitoring is read-only. The app starts a local monitor (the
193
+ daemon) and stops it on quit. See the [app guide](daemon/app/README.md) and the
194
+ [daemon guide](daemon/README.md).
195
+
196
+ ### Manual monitor (without the app)
197
+
198
+ From a source checkout you can still run the monitor and its browser
199
+ dashboard without the app. It requires Python 3.9+:
196
200
 
197
201
  ```bash
198
202
  git clone https://github.com/open-gsd/gsd-path.git
@@ -201,33 +205,20 @@ PYTHONPATH=daemon python3 -m gsd_daemon install --dry-run
201
205
  PYTHONPATH=daemon python3 -m gsd_daemon install
202
206
  ```
203
207
 
204
- On Windows, after cloning and entering `gsd-path`, use PowerShell:
208
+ On Windows, use PowerShell in the `gsd-path` folder. The last command starts
209
+ the monitor for this session; it starts by itself at later logins:
205
210
 
206
211
  ```powershell
207
212
  $env:PYTHONPATH = "daemon"
208
213
  python -m gsd_daemon install --dry-run
209
214
  python -m gsd_daemon install
210
- ```
211
-
212
- On Windows, launch the installed shortcut for this session before opening the
213
- dashboard. It starts automatically at future logins:
214
-
215
- ```powershell
216
215
  Start-Process "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\gsd-path-daemon.lnk"
217
216
  ```
218
217
 
219
- Open **http://127.0.0.1:8765**, then use **Settings → Watched folders** to add
220
- your project folders. The installer creates an isolated Python environment and
221
- configures autostart. On macOS it also builds and installs the native menu-bar
222
- app; this requires macOS 12+ and Xcode Command Line Tools (`swiftc`). On
223
- macOS, use `--no-tray` for the dashboard only. Linux autostart runs the
224
- dashboard; launch the optional tray separately with
225
- `~/.gsd-path/venv/bin/gsd-path-daemon tray`. Windows uses a tray-and-dashboard
226
- Startup shortcut; see the [daemon guide](daemon/README.md) for platform details.
227
-
228
- See the [daemon guide](daemon/README.md) for configuration, usage pricing,
229
- manual startup, and platform setup, or the [macOS guide](daemon/macos/README.md)
230
- for native menu-bar details.
218
+ Then open **http://127.0.0.1:8765**. The first launch of the desktop app
219
+ removes this older autostart entry so only one monitor runs. See the
220
+ [daemon guide](daemon/README.md) for platform details, configuration, and
221
+ usage pricing.
231
222
 
232
223
  ## Skills
233
224
 
@@ -362,6 +353,35 @@ default checkout, `gsd-path/M001` branch, and sibling linked worktree. A
362
353
  journaled helper performs the approved creation and safely resumes a matching
363
354
  partial remote/clone/worktree transaction; the default checkout stays clean.
364
355
 
356
+ ## Multi-repo milestones
357
+
358
+ One project can change several repositories in the same milestone. The
359
+ **coordinator** repo holds `.project/` and runs the pipeline; each other repo
360
+ is a **member** listed in `.project/MEMBERS.md`. A member needs a GitHub.com
361
+ `origin` whose default is `main`. See
362
+ [ADR 0002](docs/adr/0002-multi-repo-coordinator.md) for the design.
363
+
364
+ - Add members at a milestone boundary: ask the router to add an existing repo
365
+ (`members.py add`) or to create a new one (`members.py add --create`, after
366
+ you approve the exact owner, name, visibility, and checkout). For optional
367
+ guard hooks, install them in the member with
368
+ `npx @opengsd/gsd-path@latest --member-of <coordinator> --project <member>`.
369
+ - The planner gives each member task `repo: <member>`; one task changes one
370
+ repo. Project Verify runs from the coordinator and reaches a member as
371
+ `../<member>`.
372
+ - Build works in Path-owned member branches `gsd-path/<project>-M00N` and
373
+ records each member landing in the coordinator. The final review names each
374
+ member's reviewed HEAD.
375
+ - Ship closes members in order before the coordinator: `close-members` merges
376
+ each member in its own `direct` or `pull-request` mode and tags it
377
+ `milestone/<project>-<archive>`, then the ship commit records each member.
378
+ A pull-request member waits for you to merge it. The next milestone retires
379
+ the member branches.
380
+ - `members.py detect --checkout <path>` reports whether a repo is a member.
381
+
382
+ Out of scope: submodules, one task across two repos, non-GitHub remotes, and
383
+ an atomic close across repos.
384
+
365
385
  ## Handoff contract
366
386
 
367
387
  ```text
@@ -422,7 +442,7 @@ node scripts/install.mjs --all --update --project /path/to/project # refresh .
422
442
 
423
443
  | Flag | User skills root | Invoke |
424
444
  | --- | --- | --- |
425
- | `--codex`, `--zed` | `~/.agents/skills` | Codex: `$path` or `$gsd-path`; Zed: `/path` or `/gsd-path` |
445
+ | `--codex`, `--zed`, `--muse` | `~/.agents/skills` | Codex: `$path` or `$gsd-path`; Zed, Muse: `/path` or `/gsd-path` |
426
446
  | `--claude` | `~/.claude/skills` | `/path` or `/gsd-path` |
427
447
  | `--cursor` | `~/.cursor/skills` (+ subagent) | `/path` or `/gsd-path` |
428
448
  | `--grok` | `~/.grok/skills` | `/path` or `/gsd-path` |
package/RUNTIME.md CHANGED
@@ -68,7 +68,7 @@ skeptic attempts under `skeptics/`.
68
68
  | `skeptics --repo <root> --wave <N> --cycle <C> --child-command '<cmd>' [--wait <s>] [--child-timeout <s>]` | Step 7 skeptic branch: one read-only skeptic per `skeptic_groups` locator in its own sidecar at the recorded review base, briefed with the criterion, every observation, and the cited tasks verbatim; validate with `review_findings.py`, collect, retire, then rerun the helper. `none` without skeptic groups; `escalate` for structural blockers or the cycle cap. The skeptic files stay uncommitted for the fix-task or ruling checkpoint. |
69
69
  | `fix-tasks --repo <root> --wave <N> --cycle <C>` | Step 7 batching: one fix task per `review_findings.py collect` batch with the failed criteria and observations verbatim, lint-checked; `escalate` for structural blockers, skeptic groups, cycle cap, or all-refuted. |
70
70
  | `complete --repo <root>` | Completion: clean primary at `build/active` (or a crash-left `build/done`), no unfinished wave, the archive-time review cycle check (`discussion_validate.review_cycle_counts`: contiguous cycles, passing last cycle, panel and skeptic artifacts present); `workflow_run.py build-evidence` at HEAD; `pipeline_state.py transition` to `ship/active` with event `build done; final review pending`; checkpoint `build: complete milestone`. |
71
- | `finish --repo <root> --task-id <id>` | Recover first; return a proven landing without repeating Verify, or verify, land, record, and retire one returned task. Without a dispatch record, derive the isolate from task frontmatter. |
71
+ | `finish --repo <root> --task-id <id>` | Recover first; return a proven landing without repeating Verify, or verify, land, record, and retire one returned task. Without a dispatch record, or when the newest record is settled and its base differs from the task's current in-progress base (a native retry after a driver block), read the primary task's in-progress state; if it lacks a recorded base, use the parallel task isolate's state only if that worktree is authorized. A blocked record at the same base still refuses the retry. A deactivated isolate stays blocked. |
72
72
  | `answer --repo <root> --task-id <id> --answer '<text>'` | Append `Orchestrator answer:` to the isolate's task Log; the next `round` redispatches that isolate. |
73
73
  | `status --repo <root>` | Every task's newest dispatch record. |
74
74
 
@@ -91,7 +91,7 @@ argument slots defined in the dispatch model policy.
91
91
  calls. In `round`, an unfinished earlier wave blocks dispatch before the bookkeeping
92
92
  checkpoint. Child completion is recorded in `exit.json`; the parent alone
93
93
  writes `state.json`.
94
- For `review`, `panel`, and `skeptics`, when the child process is gone and `finished_at` is
94
+ For `round`, `review`, `panel`, and `skeptics`, when the child process is gone and `finished_at` is
95
95
  unset, the driver rereads that attempt's state and exit receipt before
96
96
  collecting the result or blocking with
97
97
  `child wrapper exited without recording a result`.