@opengsd/gsd-path 1.4.0 → 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 (347) hide show
  1. package/CHANGELOG.md +325 -344
  2. package/DOCS.md +12 -2
  3. package/FULL.md +3 -2
  4. package/HOOKS.md +95 -8
  5. package/QUICK.md +1 -1
  6. package/README.md +78 -110
  7. package/RUNTIME.md +1 -1
  8. package/UPDATE.md +4 -3
  9. package/WORKFLOW.md +22 -1
  10. package/package.json +5 -2
  11. package/platforms/shared-agents/dispatch.md +13 -0
  12. package/scripts/_common.py +149 -1
  13. package/scripts/archive_milestone.py +14 -13
  14. package/scripts/build_recovery.py +96 -31
  15. package/scripts/build_state.py +79 -3
  16. package/scripts/check_docs_audit.py +77 -4
  17. package/scripts/check_handoffs.py +546 -30
  18. package/scripts/check_task_briefs.py +279 -23
  19. package/scripts/detect_project.py +243 -18
  20. package/scripts/discussion_validate.py +86 -29
  21. package/scripts/dispatch_driver.py +392 -22
  22. package/scripts/git_guard.py +3 -3
  23. package/scripts/guard_hook.py +1416 -165
  24. package/scripts/install.mjs +23 -8
  25. package/scripts/install.py +49 -9
  26. package/scripts/integration.py +146 -1
  27. package/scripts/isolation.py +392 -60
  28. package/scripts/loop_run.py +16 -4
  29. package/scripts/members.py +11 -9
  30. package/scripts/path_config.py +3 -3
  31. package/scripts/pipeline_git.py +63 -12
  32. package/scripts/pipeline_state.py +111 -33
  33. package/scripts/pipeline_undo.py +101 -8
  34. package/scripts/runtime_store.py +20 -2
  35. package/scripts/skill-resources.json +9 -2
  36. package/scripts/state_checkpoint.py +9 -27
  37. package/scripts/status_runtime.py +22 -4
  38. package/scripts/task_context.py +12 -3
  39. package/scripts/wizard.mjs +1 -0
  40. package/scripts/workflow_run.py +5 -2
  41. package/scripts/worktree_paths.py +54 -2
  42. package/skills/gsd-path/DEFINE.md +28 -3
  43. package/skills/gsd-path/PLAN.md +11 -3
  44. package/skills/gsd-path/RESEARCH.md +11 -0
  45. package/skills/gsd-path/SHIP.md +6 -1
  46. package/skills/gsd-path/references/build-native.md +16 -1
  47. package/skills/gsd-path/references/dispatch.md +13 -0
  48. package/skills/gsd-path/references/docs-auditor.md +5 -0
  49. package/skills/gsd-path/references/planner.md +14 -4
  50. package/skills/gsd-path/references/reviewer-final.md +20 -2
  51. package/skills/gsd-path/references/reviewer-wave.md +15 -4
  52. package/skills/gsd-path/references/reviewer.md +3 -1
  53. package/skills/gsd-path/references/spec-probes.md +150 -0
  54. package/skills/gsd-path/scripts/_common.py +149 -1
  55. package/skills/gsd-path/scripts/archive_milestone.py +14 -13
  56. package/skills/gsd-path/scripts/build_recovery.py +96 -31
  57. package/skills/gsd-path/scripts/build_state.py +79 -3
  58. package/skills/gsd-path/scripts/check_docs_audit.py +77 -4
  59. package/skills/gsd-path/scripts/check_handoffs.py +546 -30
  60. package/skills/gsd-path/scripts/check_task_briefs.py +279 -23
  61. package/skills/gsd-path/scripts/detect_project.py +243 -18
  62. package/skills/gsd-path/scripts/discussion_validate.py +86 -29
  63. package/skills/gsd-path/scripts/dispatch_driver.py +392 -22
  64. package/skills/gsd-path/scripts/git_guard.py +3 -3
  65. package/skills/gsd-path/scripts/integration.py +146 -1
  66. package/skills/gsd-path/scripts/isolation.py +392 -60
  67. package/skills/gsd-path/scripts/loop_run.py +16 -4
  68. package/skills/gsd-path/scripts/members.py +11 -9
  69. package/skills/gsd-path/scripts/path_config.py +3 -3
  70. package/skills/gsd-path/scripts/pipeline_git.py +63 -12
  71. package/skills/gsd-path/scripts/pipeline_state.py +111 -33
  72. package/skills/gsd-path/scripts/state_checkpoint.py +9 -27
  73. package/skills/gsd-path/scripts/status_runtime.py +22 -4
  74. package/skills/gsd-path/scripts/task_context.py +12 -3
  75. package/skills/gsd-path/scripts/workflow_run.py +5 -2
  76. package/skills/gsd-path/scripts/worktree_paths.py +54 -2
  77. package/skills/gsd-path/templates/docs-audit.md +5 -1
  78. package/skills/gsd-path/templates/final-review.md +11 -2
  79. package/skills/gsd-path/templates/intent.md +30 -0
  80. package/skills/gsd-path/templates/patch-findings.md +3 -3
  81. package/skills/gsd-path/templates/plan.md +17 -2
  82. package/skills/gsd-path/templates/research-handoff.md +14 -3
  83. package/skills/gsd-path/templates/state.md +1 -1
  84. package/skills/gsd-path/templates/wave-review.md +16 -6
  85. package/skills/gsd-path-build/references/build-native.md +16 -1
  86. package/skills/gsd-path-build/references/dispatch.md +13 -0
  87. package/skills/gsd-path-build/references/reviewer-final.md +20 -2
  88. package/skills/gsd-path-build/references/reviewer-wave.md +15 -4
  89. package/skills/gsd-path-build/references/reviewer.md +3 -1
  90. package/skills/gsd-path-build/references/spec-probes.md +150 -0
  91. package/skills/gsd-path-build/scripts/_common.py +149 -1
  92. package/skills/gsd-path-build/scripts/archive_milestone.py +14 -13
  93. package/skills/gsd-path-build/scripts/build_recovery.py +96 -31
  94. package/skills/gsd-path-build/scripts/build_state.py +79 -3
  95. package/skills/gsd-path-build/scripts/check_handoffs.py +546 -30
  96. package/skills/gsd-path-build/scripts/check_task_briefs.py +279 -23
  97. package/skills/gsd-path-build/scripts/detect_project.py +243 -18
  98. package/skills/gsd-path-build/scripts/discussion_validate.py +86 -29
  99. package/skills/gsd-path-build/scripts/dispatch_driver.py +392 -22
  100. package/skills/gsd-path-build/scripts/integration.py +146 -1
  101. package/skills/gsd-path-build/scripts/isolation.py +392 -60
  102. package/skills/gsd-path-build/scripts/loop_run.py +16 -4
  103. package/skills/gsd-path-build/scripts/members.py +11 -9
  104. package/skills/gsd-path-build/scripts/path_config.py +3 -3
  105. package/skills/gsd-path-build/scripts/pipeline_git.py +63 -12
  106. package/skills/gsd-path-build/scripts/pipeline_state.py +111 -33
  107. package/skills/gsd-path-build/scripts/state_checkpoint.py +9 -27
  108. package/skills/gsd-path-build/scripts/task_context.py +12 -3
  109. package/skills/gsd-path-build/scripts/workflow_run.py +5 -2
  110. package/skills/gsd-path-build/scripts/worktree_paths.py +54 -2
  111. package/skills/gsd-path-build/templates/wave-review.md +16 -6
  112. package/skills/gsd-path-decide/references/dispatch.md +13 -0
  113. package/skills/gsd-path-decide/scripts/_common.py +149 -1
  114. package/skills/gsd-path-decide/scripts/archive_milestone.py +14 -13
  115. package/skills/gsd-path-decide/scripts/build_recovery.py +96 -31
  116. package/skills/gsd-path-decide/scripts/check_handoffs.py +546 -30
  117. package/skills/gsd-path-decide/scripts/check_task_briefs.py +279 -23
  118. package/skills/gsd-path-decide/scripts/detect_project.py +243 -18
  119. package/skills/gsd-path-decide/scripts/discussion_validate.py +86 -29
  120. package/skills/gsd-path-decide/scripts/integration.py +146 -1
  121. package/skills/gsd-path-decide/scripts/isolation.py +392 -60
  122. package/skills/gsd-path-decide/scripts/loop_run.py +16 -4
  123. package/skills/gsd-path-decide/scripts/members.py +11 -9
  124. package/skills/gsd-path-decide/scripts/path_config.py +3 -3
  125. package/skills/gsd-path-decide/scripts/pipeline_git.py +63 -12
  126. package/skills/gsd-path-decide/scripts/pipeline_state.py +111 -33
  127. package/skills/gsd-path-decide/scripts/state_checkpoint.py +9 -27
  128. package/skills/gsd-path-decide/scripts/worktree_paths.py +54 -2
  129. package/skills/gsd-path-define/SKILL.md +28 -3
  130. package/skills/gsd-path-define/references/spec-probes.md +150 -0
  131. package/skills/gsd-path-define/scripts/_common.py +149 -1
  132. package/skills/gsd-path-define/scripts/archive_milestone.py +14 -13
  133. package/skills/gsd-path-define/scripts/build_recovery.py +96 -31
  134. package/skills/gsd-path-define/scripts/check_handoffs.py +546 -30
  135. package/skills/gsd-path-define/scripts/check_task_briefs.py +279 -23
  136. package/skills/gsd-path-define/scripts/detect_project.py +243 -18
  137. package/skills/gsd-path-define/scripts/discussion_validate.py +86 -29
  138. package/skills/gsd-path-define/scripts/integration.py +146 -1
  139. package/skills/gsd-path-define/scripts/isolation.py +392 -60
  140. package/skills/gsd-path-define/scripts/loop_run.py +16 -4
  141. package/skills/gsd-path-define/scripts/members.py +11 -9
  142. package/skills/gsd-path-define/scripts/path_config.py +3 -3
  143. package/skills/gsd-path-define/scripts/pipeline_git.py +63 -12
  144. package/skills/gsd-path-define/scripts/pipeline_state.py +111 -33
  145. package/skills/gsd-path-define/scripts/state_checkpoint.py +9 -27
  146. package/skills/gsd-path-define/scripts/worktree_paths.py +54 -2
  147. package/skills/gsd-path-define/templates/intent.md +30 -0
  148. package/skills/gsd-path-define/templates/state.md +1 -1
  149. package/skills/gsd-path-discuss/scripts/_common.py +149 -1
  150. package/skills/gsd-path-discuss/scripts/loop_run.py +16 -4
  151. package/skills/gsd-path-discuss/scripts/path_config.py +3 -3
  152. package/skills/gsd-path-discuss/scripts/worktree_paths.py +54 -2
  153. package/skills/gsd-path-docs-audit/references/dispatch.md +13 -0
  154. package/skills/gsd-path-docs-audit/references/docs-auditor.md +5 -0
  155. package/skills/gsd-path-docs-audit/scripts/_common.py +149 -1
  156. package/skills/gsd-path-docs-audit/scripts/archive_milestone.py +14 -13
  157. package/skills/gsd-path-docs-audit/scripts/build_recovery.py +96 -31
  158. package/skills/gsd-path-docs-audit/scripts/check_docs_audit.py +77 -4
  159. package/skills/gsd-path-docs-audit/scripts/check_handoffs.py +546 -30
  160. package/skills/gsd-path-docs-audit/scripts/check_task_briefs.py +279 -23
  161. package/skills/gsd-path-docs-audit/scripts/detect_project.py +243 -18
  162. package/skills/gsd-path-docs-audit/scripts/discussion_validate.py +86 -29
  163. package/skills/gsd-path-docs-audit/scripts/integration.py +146 -1
  164. package/skills/gsd-path-docs-audit/scripts/isolation.py +392 -60
  165. package/skills/gsd-path-docs-audit/scripts/loop_run.py +16 -4
  166. package/skills/gsd-path-docs-audit/scripts/members.py +11 -9
  167. package/skills/gsd-path-docs-audit/scripts/path_config.py +3 -3
  168. package/skills/gsd-path-docs-audit/scripts/pipeline_git.py +63 -12
  169. package/skills/gsd-path-docs-audit/scripts/pipeline_state.py +111 -33
  170. package/skills/gsd-path-docs-audit/scripts/state_checkpoint.py +9 -27
  171. package/skills/gsd-path-docs-audit/scripts/worktree_paths.py +54 -2
  172. package/skills/gsd-path-docs-audit/templates/docs-audit.md +5 -1
  173. package/skills/gsd-path-forensics/scripts/_common.py +149 -1
  174. package/skills/gsd-path-forensics/scripts/loop_run.py +16 -4
  175. package/skills/gsd-path-forensics/scripts/path_config.py +3 -3
  176. package/skills/gsd-path-forensics/scripts/pipeline_undo.py +101 -8
  177. package/skills/gsd-path-forensics/scripts/worktree_paths.py +54 -2
  178. package/skills/gsd-path-inspect/references/dispatch.md +13 -0
  179. package/skills/gsd-path-inspect/references/docs-auditor.md +5 -0
  180. package/skills/gsd-path-inspect/scripts/_common.py +149 -1
  181. package/skills/gsd-path-inspect/scripts/archive_milestone.py +14 -13
  182. package/skills/gsd-path-inspect/scripts/build_recovery.py +96 -31
  183. package/skills/gsd-path-inspect/scripts/check_docs_audit.py +77 -4
  184. package/skills/gsd-path-inspect/scripts/check_handoffs.py +546 -30
  185. package/skills/gsd-path-inspect/scripts/check_task_briefs.py +279 -23
  186. package/skills/gsd-path-inspect/scripts/detect_project.py +243 -18
  187. package/skills/gsd-path-inspect/scripts/discussion_validate.py +86 -29
  188. package/skills/gsd-path-inspect/scripts/integration.py +146 -1
  189. package/skills/gsd-path-inspect/scripts/isolation.py +392 -60
  190. package/skills/gsd-path-inspect/scripts/loop_run.py +16 -4
  191. package/skills/gsd-path-inspect/scripts/members.py +11 -9
  192. package/skills/gsd-path-inspect/scripts/path_config.py +3 -3
  193. package/skills/gsd-path-inspect/scripts/pipeline_git.py +63 -12
  194. package/skills/gsd-path-inspect/scripts/pipeline_state.py +111 -33
  195. package/skills/gsd-path-inspect/scripts/state_checkpoint.py +9 -27
  196. package/skills/gsd-path-inspect/scripts/workflow_run.py +5 -2
  197. package/skills/gsd-path-inspect/scripts/worktree_paths.py +54 -2
  198. package/skills/gsd-path-inspect/templates/docs-audit.md +5 -1
  199. package/skills/gsd-path-inspect/templates/state.md +1 -1
  200. package/skills/gsd-path-loop/scripts/_common.py +149 -1
  201. package/skills/gsd-path-loop/scripts/loop_run.py +16 -4
  202. package/skills/gsd-path-loop/scripts/path_config.py +3 -3
  203. package/skills/gsd-path-loop/scripts/worktree_paths.py +54 -2
  204. package/skills/gsd-path-migrate/scripts/_common.py +149 -1
  205. package/skills/gsd-path-migrate/scripts/loop_run.py +16 -4
  206. package/skills/gsd-path-migrate/scripts/path_config.py +3 -3
  207. package/skills/gsd-path-plan/SKILL.md +11 -3
  208. package/skills/gsd-path-plan/references/dispatch.md +13 -0
  209. package/skills/gsd-path-plan/references/planner.md +14 -4
  210. package/skills/gsd-path-plan/references/spec-probes.md +150 -0
  211. package/skills/gsd-path-plan/scripts/_common.py +149 -1
  212. package/skills/gsd-path-plan/scripts/archive_milestone.py +14 -13
  213. package/skills/gsd-path-plan/scripts/build_recovery.py +96 -31
  214. package/skills/gsd-path-plan/scripts/check_handoffs.py +546 -30
  215. package/skills/gsd-path-plan/scripts/check_task_briefs.py +279 -23
  216. package/skills/gsd-path-plan/scripts/detect_project.py +243 -18
  217. package/skills/gsd-path-plan/scripts/discussion_validate.py +86 -29
  218. package/skills/gsd-path-plan/scripts/integration.py +146 -1
  219. package/skills/gsd-path-plan/scripts/isolation.py +392 -60
  220. package/skills/gsd-path-plan/scripts/loop_run.py +16 -4
  221. package/skills/gsd-path-plan/scripts/members.py +11 -9
  222. package/skills/gsd-path-plan/scripts/path_config.py +3 -3
  223. package/skills/gsd-path-plan/scripts/pipeline_git.py +63 -12
  224. package/skills/gsd-path-plan/scripts/pipeline_state.py +111 -33
  225. package/skills/gsd-path-plan/scripts/state_checkpoint.py +9 -27
  226. package/skills/gsd-path-plan/scripts/workflow_run.py +5 -2
  227. package/skills/gsd-path-plan/scripts/worktree_paths.py +54 -2
  228. package/skills/gsd-path-plan/templates/patch-findings.md +3 -3
  229. package/skills/gsd-path-plan/templates/plan.md +17 -2
  230. package/skills/gsd-path-research/SKILL.md +11 -0
  231. package/skills/gsd-path-research/references/dispatch.md +13 -0
  232. package/skills/gsd-path-research/scripts/_common.py +149 -1
  233. package/skills/gsd-path-research/scripts/archive_milestone.py +14 -13
  234. package/skills/gsd-path-research/scripts/build_recovery.py +96 -31
  235. package/skills/gsd-path-research/scripts/check_handoffs.py +546 -30
  236. package/skills/gsd-path-research/scripts/check_task_briefs.py +279 -23
  237. package/skills/gsd-path-research/scripts/detect_project.py +243 -18
  238. package/skills/gsd-path-research/scripts/discussion_validate.py +86 -29
  239. package/skills/gsd-path-research/scripts/integration.py +146 -1
  240. package/skills/gsd-path-research/scripts/isolation.py +392 -60
  241. package/skills/gsd-path-research/scripts/loop_run.py +16 -4
  242. package/skills/gsd-path-research/scripts/members.py +11 -9
  243. package/skills/gsd-path-research/scripts/path_config.py +3 -3
  244. package/skills/gsd-path-research/scripts/pipeline_git.py +63 -12
  245. package/skills/gsd-path-research/scripts/pipeline_state.py +111 -33
  246. package/skills/gsd-path-research/scripts/state_checkpoint.py +9 -27
  247. package/skills/gsd-path-research/scripts/worktree_paths.py +54 -2
  248. package/skills/gsd-path-research/templates/research-handoff.md +14 -3
  249. package/skills/gsd-path-roadmap/references/dispatch.md +13 -0
  250. package/skills/gsd-path-roadmap/scripts/_common.py +149 -1
  251. package/skills/gsd-path-roadmap/scripts/archive_milestone.py +14 -13
  252. package/skills/gsd-path-roadmap/scripts/build_recovery.py +96 -31
  253. package/skills/gsd-path-roadmap/scripts/check_handoffs.py +546 -30
  254. package/skills/gsd-path-roadmap/scripts/check_task_briefs.py +279 -23
  255. package/skills/gsd-path-roadmap/scripts/detect_project.py +243 -18
  256. package/skills/gsd-path-roadmap/scripts/discussion_validate.py +86 -29
  257. package/skills/gsd-path-roadmap/scripts/integration.py +146 -1
  258. package/skills/gsd-path-roadmap/scripts/isolation.py +392 -60
  259. package/skills/gsd-path-roadmap/scripts/loop_run.py +16 -4
  260. package/skills/gsd-path-roadmap/scripts/members.py +11 -9
  261. package/skills/gsd-path-roadmap/scripts/path_config.py +3 -3
  262. package/skills/gsd-path-roadmap/scripts/pipeline_git.py +63 -12
  263. package/skills/gsd-path-roadmap/scripts/pipeline_state.py +111 -33
  264. package/skills/gsd-path-roadmap/scripts/state_checkpoint.py +9 -27
  265. package/skills/gsd-path-roadmap/scripts/worktree_paths.py +54 -2
  266. package/skills/gsd-path-ship/SKILL.md +6 -1
  267. package/skills/gsd-path-ship/references/dispatch.md +13 -0
  268. package/skills/gsd-path-ship/references/reviewer-final.md +20 -2
  269. package/skills/gsd-path-ship/references/reviewer-wave.md +15 -4
  270. package/skills/gsd-path-ship/references/reviewer.md +3 -1
  271. package/skills/gsd-path-ship/references/spec-probes.md +150 -0
  272. package/skills/gsd-path-ship/scripts/_common.py +149 -1
  273. package/skills/gsd-path-ship/scripts/archive_milestone.py +14 -13
  274. package/skills/gsd-path-ship/scripts/build_recovery.py +96 -31
  275. package/skills/gsd-path-ship/scripts/build_state.py +79 -3
  276. package/skills/gsd-path-ship/scripts/check_handoffs.py +546 -30
  277. package/skills/gsd-path-ship/scripts/check_task_briefs.py +279 -23
  278. package/skills/gsd-path-ship/scripts/detect_project.py +243 -18
  279. package/skills/gsd-path-ship/scripts/discussion_validate.py +86 -29
  280. package/skills/gsd-path-ship/scripts/integration.py +146 -1
  281. package/skills/gsd-path-ship/scripts/isolation.py +392 -60
  282. package/skills/gsd-path-ship/scripts/loop_run.py +16 -4
  283. package/skills/gsd-path-ship/scripts/members.py +11 -9
  284. package/skills/gsd-path-ship/scripts/path_config.py +3 -3
  285. package/skills/gsd-path-ship/scripts/pipeline_git.py +63 -12
  286. package/skills/gsd-path-ship/scripts/pipeline_state.py +111 -33
  287. package/skills/gsd-path-ship/scripts/state_checkpoint.py +9 -27
  288. package/skills/gsd-path-ship/scripts/workflow_run.py +5 -2
  289. package/skills/gsd-path-ship/scripts/worktree_paths.py +54 -2
  290. package/skills/gsd-path-ship/templates/final-review.md +11 -2
  291. package/skills/gsd-path-ship/templates/patch-findings.md +3 -3
  292. package/skills/gsd-path-ship/templates/wave-review.md +16 -6
  293. package/skills/gsd-path-undo/scripts/_common.py +149 -1
  294. package/skills/gsd-path-undo/scripts/loop_run.py +16 -4
  295. package/skills/gsd-path-undo/scripts/path_config.py +3 -3
  296. package/skills/gsd-path-undo/scripts/pipeline_undo.py +101 -8
  297. package/skills/gsd-path-undo/scripts/worktree_paths.py +54 -2
  298. package/skills/path/DEFINE.md +28 -3
  299. package/skills/path/PLAN.md +11 -3
  300. package/skills/path/RESEARCH.md +11 -0
  301. package/skills/path/SHIP.md +6 -1
  302. package/skills/path/references/build-native.md +16 -1
  303. package/skills/path/references/dispatch.md +13 -0
  304. package/skills/path/references/docs-auditor.md +5 -0
  305. package/skills/path/references/planner.md +14 -4
  306. package/skills/path/references/reviewer-final.md +20 -2
  307. package/skills/path/references/reviewer-wave.md +15 -4
  308. package/skills/path/references/reviewer.md +3 -1
  309. package/skills/path/references/spec-probes.md +150 -0
  310. package/skills/path/scripts/_common.py +149 -1
  311. package/skills/path/scripts/archive_milestone.py +14 -13
  312. package/skills/path/scripts/build_recovery.py +96 -31
  313. package/skills/path/scripts/build_state.py +79 -3
  314. package/skills/path/scripts/check_docs_audit.py +77 -4
  315. package/skills/path/scripts/check_handoffs.py +546 -30
  316. package/skills/path/scripts/check_task_briefs.py +279 -23
  317. package/skills/path/scripts/detect_project.py +243 -18
  318. package/skills/path/scripts/discussion_validate.py +86 -29
  319. package/skills/path/scripts/dispatch_driver.py +392 -22
  320. package/skills/path/scripts/git_guard.py +3 -3
  321. package/skills/path/scripts/integration.py +146 -1
  322. package/skills/path/scripts/isolation.py +392 -60
  323. package/skills/path/scripts/loop_run.py +16 -4
  324. package/skills/path/scripts/members.py +11 -9
  325. package/skills/path/scripts/path_config.py +3 -3
  326. package/skills/path/scripts/pipeline_git.py +63 -12
  327. package/skills/path/scripts/pipeline_state.py +111 -33
  328. package/skills/path/scripts/state_checkpoint.py +9 -27
  329. package/skills/path/scripts/status_runtime.py +22 -4
  330. package/skills/path/scripts/task_context.py +12 -3
  331. package/skills/path/scripts/workflow_run.py +5 -2
  332. package/skills/path/scripts/worktree_paths.py +54 -2
  333. package/skills/path/templates/docs-audit.md +5 -1
  334. package/skills/path/templates/final-review.md +11 -2
  335. package/skills/path/templates/intent.md +30 -0
  336. package/skills/path/templates/patch-findings.md +3 -3
  337. package/skills/path/templates/plan.md +17 -2
  338. package/skills/path/templates/research-handoff.md +14 -3
  339. package/skills/path/templates/state.md +1 -1
  340. package/skills/path/templates/wave-review.md +16 -6
  341. package/skills/gsd-path/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  342. package/skills/gsd-path/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
  343. package/skills/gsd-path-build/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  344. package/skills/gsd-path-build/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
  345. package/skills/gsd-path-inspect/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  346. package/skills/gsd-path-plan/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  347. package/skills/gsd-path-ship/scripts/__pycache__/_common.cpython-312.pyc +0 -0
package/DOCS.md CHANGED
@@ -247,8 +247,10 @@ resolved Git common directory and primary path, so separate clones and
247
247
  primary folders do not share a location.
248
248
 
249
249
  The first allocation pins the workspace location in
250
- `<git-common-dir>/gsd-path/workspaces/<workspace-id>.json`. Later environment
251
- changes do not move it. Existing sibling worktrees remain at their original
250
+ `<git-common-dir>/gsd-path/workspaces/<workspace-id>.json`. Environment
251
+ changes do not move it while a linked worktree remains. When a sidecar is
252
+ retired and no linked worktree remains, Path removes the pin, and the next
253
+ allocation reads `GSD_PATH_WORKTREE_ROOT` again. Existing sibling worktrees remain at their original
252
254
  paths and retain the same recovery and cleanup checks. These folders contain
253
255
  active work and evidence; they are not a disposable cache. Relocation needs
254
256
  a separate migration; do not edit placement records or move folders manually.
@@ -397,6 +399,14 @@ the supplied package's runtime and its compatible status launcher. Review those
397
399
  configuration changes before committing them. Existing versions remain available
398
400
  for other projects and branches.
399
401
 
402
+ To record where a patched runtime came from, add `--runtime-provenance-source`,
403
+ `--runtime-provenance-patch`, or `--runtime-provenance-note` to
404
+ `--runtime-upgrade`. The values are written to the `provenance` object
405
+ (`source`, `patch_ref`, `note`) in `.gsd-path/runtime.json`. Without a patch
406
+ value, a source root that is a Git checkout records its `HEAD` commit. A later
407
+ upgrade without these flags keeps the object only when the digest is unchanged.
408
+ Provenance is a record only; it does not change the digest or runtime validation.
409
+
400
410
  A new machine needs the selected runtime installed before status and guards can
401
411
  run. `gsd-path --runtime-restore --project /absolute/project --source-root
402
412
  /path/to/matching/package` restores that exact version without changing project
package/FULL.md CHANGED
@@ -106,7 +106,7 @@ node scripts/install.mjs --codex --claude --cursor
106
106
 
107
107
  | Flag | Skills root |
108
108
  | --- | --- |
109
- | `--codex`, `--zed` | `~/.agents/skills` (shared bundle) |
109
+ | `--codex`, `--zed`, `--muse` | `~/.agents/skills` (shared bundle) |
110
110
  | `--claude` | `~/.claude/skills` |
111
111
  | `--grok` | `~/.grok/skills` |
112
112
  | `--opencode` | OpenCode config `skills/` |
@@ -176,7 +176,7 @@ also print a one-line update notice (24h cache, fail-silent).
176
176
  - Validates synchronized package before writing
177
177
  - Uses the [managed-skill backup and collision rules](UPDATE.md#what-auto-updates)
178
178
  - Rolls back **all** selected targets if any one fails
179
- - Codex, Antigravity, and Zed share one local physical root — installed once
179
+ - Codex, Antigravity, Zed, and Muse share one local physical root — installed once
180
180
  with a shared host-aware bundle
181
181
 
182
182
  Restart the host session after install if skills do not appear.
@@ -432,6 +432,7 @@ your skills:
432
432
  | Antigravity | `invoke_subagent` | |
433
433
  | Cursor | `Task` | installed `gsd-path` subagent |
434
434
  | Zed | `spawn_agent` | |
435
+ | Muse Code | `muse.subagent_spawn` | trusted workspace required |
435
436
  | Kiro | subagent facility | |
436
437
  | Kimi | `Agent` | `coder` child type |
437
438
 
package/HOOKS.md CHANGED
@@ -133,7 +133,8 @@ See [UPDATE.md](UPDATE.md).
133
133
  `git checkout -- .`/`git restore .`
134
134
  - shell writes (redirections, `tee`, `cp`, `mv`, `rm`, `sed -i`, ...) that
135
135
  target a routing control (`.git`, `.project/STATE.md`, `.project/next`,
136
- `.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)
137
138
  - repeated assignments to the same shell variable within one command; split
138
139
  these into separate tool calls so write targets can be resolved
139
140
  - copies whose destinations, including nested recursive-copy entries, resolve
@@ -145,7 +146,8 @@ See [UPDATE.md](UPDATE.md).
145
146
  source trees containing directory symlinks are denied; use literal directory
146
147
  paths and copy directory links separately
147
148
  - shell commands that reference the archive unless the whole command is a
148
- 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
149
151
  `pipeline_state.py` / `archive_milestone.py` helper, resolved to a regular file
150
152
  inside the verified runtime selected by `.gsd-path/runtime.json` (legacy projects use `.gsd-path/runtime/` beside `guard_hook.py`
151
153
  in the repository layout), using exactly `python` or `python3` with optional
@@ -161,11 +163,93 @@ See [UPDATE.md](UPDATE.md).
161
163
  - deletion or move commands outside a single simple segment, including command
162
164
  chains, pipes, newlines, grouping, directory changes, and command substitution
163
165
  - deletion or move commands with any argument outside the literal-path character
164
- set: ASCII letters, digits, `.`, `_`, `-`, and `/` (plus a drive prefix and
165
- backslashes on Windows). One matching pair of surrounding quotes is allowed;
166
- spaces, parameters, wildcards, braces, and tilde paths are denied even when
167
- quoted. This also applies to `find -delete` and supported destructive aliases
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
168
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
169
253
  - archive glob/brace expansions and execution-capable read options such as
170
254
  `rg --pre`
171
255
  - direct write, edit, and patch tool calls targeting `.project/STATE.md`,
@@ -265,9 +349,12 @@ writes nor verifies that wiring. To add it yourself, register
265
349
  | Antigravity | `.agents/hooks.json` `PreToolUse` | [Antigravity hooks](https://antigravity.google/docs/hooks) |
266
350
  | OpenCode | JS plugin `tool.execute.before` | [OpenCode plugins](https://opencode.ai/docs/plugins/) |
267
351
  | Zed | no hook API — git hooks only | — |
352
+ | Muse Code | no GSD Path hook integration — git hooks only | — |
268
353
 
269
- **Caveats:** The hook cannot prove which skill initiated a shell command or a
270
- build-phase edit, so AGENTS.md owns those re-entry cases. Grok and Kimi
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
271
358
  fail-open on hook errors by design. Copilot, Kimi, Kiro, and Antigravity may
272
359
  not intercept subagent tools — treat coverage as orchestrator-level.
273
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
 
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.4.0](https://www.npmjs.com/package/@opengsd/gsd-path/v/1.4.0) — [release notes](CHANGELOG.md#140---2026-09-30)
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
- - key verify ledger rows by repo and fail closed on member drift (S3d)
23
- - guard coders in member sidecars with coordinator host hooks (S3c3b2)
24
- - dispatch and land member tasks in build rounds (S3c3b1)
25
- - activate member tasks with a live copy in the member sidecar (S3c3a)
26
- - prove landed member tasks from record and member landing (S3c2b)
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,37 +40,31 @@ 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
 
@@ -157,65 +151,52 @@ project settings. Dashboard users can open **Settings → Path settings** for th
157
151
  same shipping, model/effort, and future review-panel controls. See
158
152
  [Path settings](skills/gsd-path/references/config.md) for precedence and locks.
159
153
 
160
- ## Dashboard and menu-bar toolbar
161
-
162
- The optional **OpenGSD Path monitor** shows your projects without opening each
163
- project's `.project/` files. It watches the folders you choose and reads project
164
- state without advancing phase gates. Explicit Path settings saves use the
165
- validated configuration helper; background monitoring remains read-only.
166
- The monitor is a separate install from the npm skills package.
167
-
168
- ### Dashboard
169
-
170
- The project board shows blocked, active, and shipped work, with milestone and
171
- phase progress, task counts, last activity, and available usage data. Use the
172
- [dashboard controls](daemon/README.md#dashboard) to filter or search projects,
173
- switch between Board and Milestones, refresh status, and manage settings.
174
-
175
- ![OpenGSD Path project board showing sample projects, status filters, milestone progress, tasks, and usage](docs/images/dashboard-board.png)
176
-
177
- Click a project to see its milestone roadmap, tasks, success criteria, review
178
- results, verification history, and activity. Usage includes tokens and turns
179
- from supported host session logs; cost estimates require model prices in the
180
- daemon configuration.
181
-
182
- ![Project dashboard showing the history viewer link, milestone progress, expandable evidence, and usage with sample data](docs/images/dashboard-project.png)
183
-
184
- *Dashboard screenshots captured on September 19, 2026, using the repository's
185
- sample projects; the current project folder layout may differ.*
186
-
187
- Open **History & files** to browse project files and archived milestones,
188
- preview Markdown, or read a file at a selected Git commit. Relative document
189
- links keep that selected version. **Records & sources → Load full records**
190
- loads recorded usage, verification, activity, and indexed host turns on demand,
191
- with coverage details that make missing or invalid data visible.
192
-
193
- Open **Settings → Path settings** to change user defaults or project overrides
194
- for shipping mode, model and effort choices, and future review panels. Each
195
- setting shows its source and any lock reason; changes are saved explicitly.
196
-
197
- The **Plugin** settings page shows each watched project's runtime version and
198
- provides an explicit **Update** action with progress and failure details.
199
- Updating global skills does not update a project's pinned runtime.
200
-
201
- ### macOS menu bar
202
-
203
- Click the OpenGSD Path menu-bar icon for a compact project list with phase
204
- meters and task progress. Click a project to open its dashboard page. The
205
- bottom toolbar opens the dashboard, plugin settings, and watched folders;
206
- it also provides rescan, appearance, and quit controls. The daemon row shows
207
- its running state and provides restart and stop controls. Option-click the
208
- menu-bar icon to open the dashboard directly.
209
-
210
- <img src="docs/images/macos-menu-bar.png" alt="OpenGSD Path native macOS panel with sample projects and its bottom toolbar" width="400">
211
-
212
- *The native panel screenshot uses sample project data and was captured in its
213
- preview window; the current folder layout may differ.*
214
-
215
- ### Install the monitor
216
-
217
- The monitor requires Python 3.9+. From a source checkout, preview the setup,
218
- 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+:
219
200
 
220
201
  ```bash
221
202
  git clone https://github.com/open-gsd/gsd-path.git
@@ -224,33 +205,20 @@ PYTHONPATH=daemon python3 -m gsd_daemon install --dry-run
224
205
  PYTHONPATH=daemon python3 -m gsd_daemon install
225
206
  ```
226
207
 
227
- 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:
228
210
 
229
211
  ```powershell
230
212
  $env:PYTHONPATH = "daemon"
231
213
  python -m gsd_daemon install --dry-run
232
214
  python -m gsd_daemon install
233
- ```
234
-
235
- On Windows, launch the installed shortcut for this session before opening the
236
- dashboard. It starts automatically at future logins:
237
-
238
- ```powershell
239
215
  Start-Process "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\gsd-path-daemon.lnk"
240
216
  ```
241
217
 
242
- Open **http://127.0.0.1:8765**, then use **Settings → Watched folders** to add
243
- your project folders. The installer creates an isolated Python environment and
244
- configures autostart. On macOS it also builds and installs the native menu-bar
245
- app; this requires macOS 12+ and Xcode Command Line Tools (`swiftc`). On
246
- macOS, use `--no-tray` for the dashboard only. Linux autostart runs the
247
- dashboard; launch the optional tray separately with
248
- `~/.gsd-path/venv/bin/gsd-path-daemon tray`. Windows uses a tray-and-dashboard
249
- Startup shortcut; see the [daemon guide](daemon/README.md) for platform details.
250
-
251
- See the [daemon guide](daemon/README.md) for configuration, usage pricing,
252
- manual startup, and platform setup, or the [macOS guide](daemon/macos/README.md)
253
- 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.
254
222
 
255
223
  ## Skills
256
224
 
@@ -474,7 +442,7 @@ node scripts/install.mjs --all --update --project /path/to/project # refresh .
474
442
 
475
443
  | Flag | User skills root | Invoke |
476
444
  | --- | --- | --- |
477
- | `--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` |
478
446
  | `--claude` | `~/.claude/skills` | `/path` or `/gsd-path` |
479
447
  | `--cursor` | `~/.cursor/skills` (+ subagent) | `/path` or `/gsd-path` |
480
448
  | `--grok` | `~/.grok/skills` | `/path` or `/gsd-path` |
package/RUNTIME.md CHANGED
@@ -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`.
package/UPDATE.md CHANGED
@@ -176,9 +176,10 @@ a global update does not update project runtimes. Use the project's **Update**
176
176
  button to refresh its runtime and existing guards. Install and update actions
177
177
  show progress, success or failure, and installer output.
178
178
 
179
- If the daemon's plugin source checkout has local changes, project Update uses
180
- that local build and says so in its result. It does not pull remote changes over
181
- local edits. Clean source checkouts still refresh before a project update.
179
+ Project Update refreshes the daemon's plugin source first. With the
180
+ [git source](daemon/README.md#plugin-lifecycle), a clone that has local changes
181
+ is used as that local build, and the result says so. It does not pull remote
182
+ changes over local edits.
182
183
 
183
184
  Older unstamped installs show **Unknown — version metadata unavailable**.
184
185
  This does not establish that their runtime is outdated or broken. **Update**
package/WORKFLOW.md CHANGED
@@ -223,6 +223,20 @@ vetoes and corrections verbatim. Unresolved items remain tagged `RESEARCH` or
223
223
  first and presented as settled coverage for correction; the interview covers
224
224
  only its gaps and contradictions.
225
225
 
226
+ Once the success criteria are drafted, define runs the spec-reach probes
227
+ ([spec-probes.md](skills/gsd-path/references/spec-probes.md)). The edge probe
228
+ walks each criterion through a closed edge taxonomy (boundary, adjacency,
229
+ empty, encoding, ordering, precision, idempotency, concurrency) and records
230
+ the user's ruling per applicable edge in INTENT.md `## Edge coverage`:
231
+ `criterion SCn` (stated in a success criterion), `held-out` (a named test
232
+ pins it), or `dismissed` with a reason. The prohibition probe asks what each
233
+ criterion must never silently become and records kept items in
234
+ `## Prohibitions` as `criterion SCn`, `judgment`, or `dismissed`. Define
235
+ never rules on an edge itself. `scripts/check_handoffs.py intent` checks
236
+ both tables before every approval question, and the `define/done` transition
237
+ refuses an intent whose tables are incomplete. An INTENT.md without these
238
+ sections predates the probes and is not rechecked.
239
+
226
240
  At approval define classifies the milestone lane in INTENT.md: `quick`
227
241
  when scope fits at most two deliverable-sized tasks in one wave with no open
228
242
  questions and no cross-wave risk; otherwise `standard`. Milestone mode — a
@@ -343,6 +357,9 @@ by — which that task must own, in the same wave as the capability behind it.
343
357
  `check_handoffs.py final` then requires each of those criteria to name its
344
358
  surface in FINAL.md with the walkthrough as its Check, so a surface criterion
345
359
  cannot be marked `met` on internal test output.
360
+ Every `held-out` edge gets a PLAN.md `## Held-out checks` row naming the task
361
+ and test file; that test is in the task's files, its Verify runs it, and its
362
+ Acceptance criteria state the edge id and ruling.
346
363
  `scripts/check_handoffs.py plan` gates the table; `wave` and `final`
347
364
  require a verdict per owned SC id. Acceptance criteria,
348
365
  owned SCs, and Verify are the contract; the coder owns
@@ -417,7 +434,11 @@ surface walkthroughs, in its existing review. The runtime proves freshness and
417
434
  generates FINAL.md from that record. Dispatch an integration reviewer only when
418
435
  that proof is incomplete or stale; dispatch gap reviewers only for uncovered
419
436
  cross-wave risks through the shared capacity-aware contract. The integration reviewer marks each success
420
- criterion `met`, `not-met`, or `unverifiable` with checked evidence. Each gap
437
+ criterion `met`, `not-met`, or `unverifiable` with checked evidence. A criterion
438
+ tagged by a `held-out` edge or `judgment` prohibition is `met` only when its
439
+ evidence cites every tag id; otherwise the reviewer records `unverifiable`
440
+ (insufficient spec evidence) and `check_handoffs.py final` refuses a `met`
441
+ that skips a tag. Each gap
421
442
  reviewer records `pass` or `blocked` for its assigned end-to-end or cross-wave
422
443
  risk. List only genuine
423
444
  risks that could plausibly fail; never pad the list. The runtime
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengsd/gsd-path",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "Disk-backed AI agent pipeline. Docs: DOCS.md (start here), QUICK.md, FULL.md, UPDATE.md",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -77,7 +77,9 @@
77
77
  "skills/",
78
78
  "platforms/",
79
79
  "AGENTS.md",
80
- "WORKFLOW.md"
80
+ "WORKFLOW.md",
81
+ "!**/__pycache__/**",
82
+ "!**/*.pyc"
81
83
  ],
82
84
  "engines": {
83
85
  "node": ">=18.17"
@@ -85,6 +87,7 @@
85
87
  "scripts": {
86
88
  "install:ci": "npm ci",
87
89
  "check:prereqs": "node scripts/dev/check-prereqs.mjs",
90
+ "check:locks": "node scripts/dev/py.mjs scripts/check_lock_usage.py",
88
91
  "test": "node tests/run-node-tests.mjs",
89
92
  "test:smoke": "npm test",
90
93
  "test:integration": "npm run test:python",
@@ -44,6 +44,19 @@ use exactly one matching branch:
44
44
  create another worktree. Encode task dependencies explicitly; launch
45
45
  independent children concurrently up to the host's advertised
46
46
  concurrent-subagent capacity.
47
+ - A `muse.subagent_spawn` tool (with `muse.subagent_wait`,
48
+ `muse.subagent_read_result`, and `muse.subagent_send_message` siblings) is
49
+ Muse Code. Omit `subagent_type` (general-purpose, full capability), pass the
50
+ logical task name as `task_name` and `role`, and the complete brief as
51
+ `objective`. Never set `worktree_isolation`. Keep the returned
52
+ `subagent_id`; send a correction to a still-live child with
53
+ `muse.subagent_send_message` mode `followup` and the complete new prompt,
54
+ otherwise start a fresh child. Collect with `muse.subagent_wait`
55
+ (`wait_for: task_terminal`) then `muse.subagent_read_result`; on
56
+ `root_capacity_exhausted`, wait for a child to finish and retry. Spawn has no
57
+ model or effort argument, so record no such capability. If only
58
+ `muse.workflow` is exposed (untrusted workspace), do not script or inline
59
+ the work; stop and report that the workspace must be trusted.
47
60
 
48
61
  For every branch:
49
62