@opengsd/gsd-path 1.4.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (476) hide show
  1. package/CHANGELOG.md +460 -341
  2. package/DOCS.md +16 -5
  3. package/FULL.md +67 -6
  4. package/HOOKS.md +158 -10
  5. package/MIGRATE.md +12 -0
  6. package/QUICK.md +4 -2
  7. package/README.md +136 -116
  8. package/RUNTIME.md +24 -6
  9. package/UPDATE.md +39 -3
  10. package/WORKFLOW.md +80 -4
  11. package/package.json +5 -2
  12. package/platforms/shared-agents/dispatch.md +13 -0
  13. package/scripts/_common.py +256 -2
  14. package/scripts/archive_milestone.py +14 -13
  15. package/scripts/build_recovery.py +155 -58
  16. package/scripts/build_state.py +274 -8
  17. package/scripts/check_docs_audit.py +77 -4
  18. package/scripts/check_handoffs.py +635 -57
  19. package/scripts/check_task_briefs.py +293 -32
  20. package/scripts/detect_project.py +260 -20
  21. package/scripts/discussion_records.py +9 -1
  22. package/scripts/discussion_validate.py +93 -35
  23. package/scripts/dispatch_driver.py +549 -53
  24. package/scripts/git_guard.py +27 -8
  25. package/scripts/guard_hook.py +2630 -210
  26. package/scripts/install.mjs +99 -11
  27. package/scripts/install.py +231 -46
  28. package/scripts/integration.py +244 -65
  29. package/scripts/isolation.py +539 -70
  30. package/scripts/loop_run.py +16 -4
  31. package/scripts/members.py +77 -32
  32. package/scripts/migrate_core.py +2 -0
  33. package/scripts/model_policy.py +5 -1
  34. package/scripts/path_config.py +3 -3
  35. package/scripts/pipeline_diagnose.py +17 -2
  36. package/scripts/pipeline_git.py +131 -42
  37. package/scripts/pipeline_state.py +139 -39
  38. package/scripts/pipeline_undo.py +118 -16
  39. package/scripts/promote_lookahead.py +3 -3
  40. package/scripts/review_findings.py +180 -44
  41. package/scripts/roadmap.py +9 -1
  42. package/scripts/runtime_store.py +21 -2
  43. package/scripts/skill-resources.json +9 -2
  44. package/scripts/state_checkpoint.py +39 -36
  45. package/scripts/state_promote.py +15 -4
  46. package/scripts/status_runtime.py +22 -4
  47. package/scripts/task_context.py +14 -3
  48. package/scripts/wizard.mjs +1 -0
  49. package/scripts/workflow_run.py +14 -4
  50. package/scripts/worktree_paths.py +54 -2
  51. package/skills/gsd-path/DEFINE.md +34 -5
  52. package/skills/gsd-path/PLAN.md +14 -3
  53. package/skills/gsd-path/RESEARCH.md +11 -0
  54. package/skills/gsd-path/ROADMAP.md +16 -6
  55. package/skills/gsd-path/SHIP.md +32 -5
  56. package/skills/gsd-path/SKILL.md +52 -24
  57. package/skills/gsd-path/references/build-native.md +112 -10
  58. package/skills/gsd-path/references/build-recovery.md +13 -0
  59. package/skills/gsd-path/references/coder.md +7 -3
  60. package/skills/gsd-path/references/dispatch.md +13 -0
  61. package/skills/gsd-path/references/docs-auditor.md +5 -0
  62. package/skills/gsd-path/references/operating-rules.md +11 -3
  63. package/skills/gsd-path/references/planner.md +26 -4
  64. package/skills/gsd-path/references/reviewer-final.md +20 -2
  65. package/skills/gsd-path/references/reviewer-wave.md +56 -12
  66. package/skills/gsd-path/references/reviewer.md +3 -1
  67. package/skills/gsd-path/references/runtime-selection.md +9 -0
  68. package/skills/gsd-path/references/spec-probes.md +150 -0
  69. package/skills/gsd-path/scripts/_common.py +256 -2
  70. package/skills/gsd-path/scripts/archive_milestone.py +14 -13
  71. package/skills/gsd-path/scripts/build_recovery.py +155 -58
  72. package/skills/gsd-path/scripts/build_state.py +274 -8
  73. package/skills/gsd-path/scripts/check_docs_audit.py +77 -4
  74. package/skills/gsd-path/scripts/check_handoffs.py +635 -57
  75. package/skills/gsd-path/scripts/check_task_briefs.py +293 -32
  76. package/skills/gsd-path/scripts/detect_project.py +260 -20
  77. package/skills/gsd-path/scripts/discussion_records.py +9 -1
  78. package/skills/gsd-path/scripts/discussion_validate.py +93 -35
  79. package/skills/gsd-path/scripts/dispatch_driver.py +549 -53
  80. package/skills/gsd-path/scripts/git_guard.py +27 -8
  81. package/skills/gsd-path/scripts/integration.py +244 -65
  82. package/skills/gsd-path/scripts/isolation.py +539 -70
  83. package/skills/gsd-path/scripts/loop_run.py +16 -4
  84. package/skills/gsd-path/scripts/members.py +77 -32
  85. package/skills/gsd-path/scripts/model_policy.py +5 -1
  86. package/skills/gsd-path/scripts/path_config.py +3 -3
  87. package/skills/gsd-path/scripts/pipeline_git.py +131 -42
  88. package/skills/gsd-path/scripts/pipeline_state.py +139 -39
  89. package/skills/gsd-path/scripts/promote_lookahead.py +3 -3
  90. package/skills/gsd-path/scripts/review_findings.py +180 -44
  91. package/skills/gsd-path/scripts/roadmap.py +9 -1
  92. package/skills/gsd-path/scripts/state_checkpoint.py +39 -36
  93. package/skills/gsd-path/scripts/state_promote.py +15 -4
  94. package/skills/gsd-path/scripts/status_runtime.py +22 -4
  95. package/skills/gsd-path/scripts/task_context.py +14 -3
  96. package/skills/gsd-path/scripts/workflow_run.py +14 -4
  97. package/skills/gsd-path/scripts/worktree_paths.py +54 -2
  98. package/skills/gsd-path/templates/docs-audit.md +5 -1
  99. package/skills/gsd-path/templates/final-review.md +11 -2
  100. package/skills/gsd-path/templates/intent.md +30 -0
  101. package/skills/gsd-path/templates/patch-findings.md +3 -3
  102. package/skills/gsd-path/templates/plan.md +17 -2
  103. package/skills/gsd-path/templates/research-handoff.md +14 -3
  104. package/skills/gsd-path/templates/state.md +2 -1
  105. package/skills/gsd-path/templates/task.md +1 -0
  106. package/skills/gsd-path/templates/wave-review.md +28 -9
  107. package/skills/gsd-path-build/references/build-native.md +112 -10
  108. package/skills/gsd-path-build/references/build-recovery.md +13 -0
  109. package/skills/gsd-path-build/references/coder.md +7 -3
  110. package/skills/gsd-path-build/references/dispatch.md +13 -0
  111. package/skills/gsd-path-build/references/operating-rules.md +11 -3
  112. package/skills/gsd-path-build/references/reviewer-final.md +20 -2
  113. package/skills/gsd-path-build/references/reviewer-wave.md +56 -12
  114. package/skills/gsd-path-build/references/reviewer.md +3 -1
  115. package/skills/gsd-path-build/references/runtime-selection.md +9 -0
  116. package/skills/gsd-path-build/references/spec-probes.md +150 -0
  117. package/skills/gsd-path-build/scripts/_common.py +256 -2
  118. package/skills/gsd-path-build/scripts/archive_milestone.py +14 -13
  119. package/skills/gsd-path-build/scripts/build_recovery.py +155 -58
  120. package/skills/gsd-path-build/scripts/build_state.py +274 -8
  121. package/skills/gsd-path-build/scripts/check_handoffs.py +635 -57
  122. package/skills/gsd-path-build/scripts/check_task_briefs.py +293 -32
  123. package/skills/gsd-path-build/scripts/detect_project.py +260 -20
  124. package/skills/gsd-path-build/scripts/discussion_records.py +9 -1
  125. package/skills/gsd-path-build/scripts/discussion_validate.py +93 -35
  126. package/skills/gsd-path-build/scripts/dispatch_driver.py +549 -53
  127. package/skills/gsd-path-build/scripts/integration.py +244 -65
  128. package/skills/gsd-path-build/scripts/isolation.py +539 -70
  129. package/skills/gsd-path-build/scripts/loop_run.py +16 -4
  130. package/skills/gsd-path-build/scripts/members.py +77 -32
  131. package/skills/gsd-path-build/scripts/model_policy.py +5 -1
  132. package/skills/gsd-path-build/scripts/path_config.py +3 -3
  133. package/skills/gsd-path-build/scripts/pipeline_git.py +131 -42
  134. package/skills/gsd-path-build/scripts/pipeline_state.py +139 -39
  135. package/skills/gsd-path-build/scripts/promote_lookahead.py +3 -3
  136. package/skills/gsd-path-build/scripts/review_findings.py +180 -44
  137. package/skills/gsd-path-build/scripts/roadmap.py +9 -1
  138. package/skills/gsd-path-build/scripts/state_checkpoint.py +39 -36
  139. package/skills/gsd-path-build/scripts/state_promote.py +15 -4
  140. package/skills/gsd-path-build/scripts/task_context.py +14 -3
  141. package/skills/gsd-path-build/scripts/workflow_run.py +14 -4
  142. package/skills/gsd-path-build/scripts/worktree_paths.py +54 -2
  143. package/skills/gsd-path-build/templates/task.md +1 -0
  144. package/skills/gsd-path-build/templates/wave-review.md +28 -9
  145. package/skills/gsd-path-decide/references/dispatch.md +13 -0
  146. package/skills/gsd-path-decide/references/operating-rules.md +11 -3
  147. package/skills/gsd-path-decide/references/runtime-selection.md +9 -0
  148. package/skills/gsd-path-decide/scripts/_common.py +256 -2
  149. package/skills/gsd-path-decide/scripts/archive_milestone.py +14 -13
  150. package/skills/gsd-path-decide/scripts/build_recovery.py +155 -58
  151. package/skills/gsd-path-decide/scripts/check_handoffs.py +635 -57
  152. package/skills/gsd-path-decide/scripts/check_task_briefs.py +293 -32
  153. package/skills/gsd-path-decide/scripts/detect_project.py +260 -20
  154. package/skills/gsd-path-decide/scripts/discussion_records.py +9 -1
  155. package/skills/gsd-path-decide/scripts/discussion_validate.py +93 -35
  156. package/skills/gsd-path-decide/scripts/integration.py +244 -65
  157. package/skills/gsd-path-decide/scripts/isolation.py +539 -70
  158. package/skills/gsd-path-decide/scripts/loop_run.py +16 -4
  159. package/skills/gsd-path-decide/scripts/members.py +77 -32
  160. package/skills/gsd-path-decide/scripts/model_policy.py +5 -1
  161. package/skills/gsd-path-decide/scripts/path_config.py +3 -3
  162. package/skills/gsd-path-decide/scripts/pipeline_git.py +131 -42
  163. package/skills/gsd-path-decide/scripts/pipeline_state.py +139 -39
  164. package/skills/gsd-path-decide/scripts/promote_lookahead.py +3 -3
  165. package/skills/gsd-path-decide/scripts/roadmap.py +9 -1
  166. package/skills/gsd-path-decide/scripts/state_checkpoint.py +39 -36
  167. package/skills/gsd-path-decide/scripts/state_promote.py +15 -4
  168. package/skills/gsd-path-decide/scripts/worktree_paths.py +54 -2
  169. package/skills/gsd-path-define/SKILL.md +34 -5
  170. package/skills/gsd-path-define/references/build-recovery.md +13 -0
  171. package/skills/gsd-path-define/references/operating-rules.md +11 -3
  172. package/skills/gsd-path-define/references/runtime-selection.md +9 -0
  173. package/skills/gsd-path-define/references/spec-probes.md +150 -0
  174. package/skills/gsd-path-define/scripts/_common.py +256 -2
  175. package/skills/gsd-path-define/scripts/archive_milestone.py +14 -13
  176. package/skills/gsd-path-define/scripts/build_recovery.py +155 -58
  177. package/skills/gsd-path-define/scripts/check_handoffs.py +635 -57
  178. package/skills/gsd-path-define/scripts/check_task_briefs.py +293 -32
  179. package/skills/gsd-path-define/scripts/detect_project.py +260 -20
  180. package/skills/gsd-path-define/scripts/discussion_records.py +9 -1
  181. package/skills/gsd-path-define/scripts/discussion_validate.py +93 -35
  182. package/skills/gsd-path-define/scripts/integration.py +244 -65
  183. package/skills/gsd-path-define/scripts/isolation.py +539 -70
  184. package/skills/gsd-path-define/scripts/loop_run.py +16 -4
  185. package/skills/gsd-path-define/scripts/members.py +77 -32
  186. package/skills/gsd-path-define/scripts/model_policy.py +5 -1
  187. package/skills/gsd-path-define/scripts/path_config.py +3 -3
  188. package/skills/gsd-path-define/scripts/pipeline_git.py +131 -42
  189. package/skills/gsd-path-define/scripts/pipeline_state.py +139 -39
  190. package/skills/gsd-path-define/scripts/promote_lookahead.py +3 -3
  191. package/skills/gsd-path-define/scripts/roadmap.py +9 -1
  192. package/skills/gsd-path-define/scripts/state_checkpoint.py +39 -36
  193. package/skills/gsd-path-define/scripts/state_promote.py +15 -4
  194. package/skills/gsd-path-define/scripts/worktree_paths.py +54 -2
  195. package/skills/gsd-path-define/templates/intent.md +30 -0
  196. package/skills/gsd-path-define/templates/state.md +2 -1
  197. package/skills/gsd-path-discuss/references/operating-rules.md +11 -3
  198. package/skills/gsd-path-discuss/references/runtime-selection.md +9 -0
  199. package/skills/gsd-path-discuss/scripts/_common.py +256 -2
  200. package/skills/gsd-path-discuss/scripts/discussion_records.py +9 -1
  201. package/skills/gsd-path-discuss/scripts/loop_run.py +16 -4
  202. package/skills/gsd-path-discuss/scripts/model_policy.py +5 -1
  203. package/skills/gsd-path-discuss/scripts/path_config.py +3 -3
  204. package/skills/gsd-path-discuss/scripts/worktree_paths.py +54 -2
  205. package/skills/gsd-path-docs-audit/references/dispatch.md +13 -0
  206. package/skills/gsd-path-docs-audit/references/docs-auditor.md +5 -0
  207. package/skills/gsd-path-docs-audit/references/operating-rules.md +11 -3
  208. package/skills/gsd-path-docs-audit/references/runtime-selection.md +9 -0
  209. package/skills/gsd-path-docs-audit/scripts/_common.py +256 -2
  210. package/skills/gsd-path-docs-audit/scripts/archive_milestone.py +14 -13
  211. package/skills/gsd-path-docs-audit/scripts/build_recovery.py +155 -58
  212. package/skills/gsd-path-docs-audit/scripts/check_docs_audit.py +77 -4
  213. package/skills/gsd-path-docs-audit/scripts/check_handoffs.py +635 -57
  214. package/skills/gsd-path-docs-audit/scripts/check_task_briefs.py +293 -32
  215. package/skills/gsd-path-docs-audit/scripts/detect_project.py +260 -20
  216. package/skills/gsd-path-docs-audit/scripts/discussion_records.py +9 -1
  217. package/skills/gsd-path-docs-audit/scripts/discussion_validate.py +93 -35
  218. package/skills/gsd-path-docs-audit/scripts/integration.py +244 -65
  219. package/skills/gsd-path-docs-audit/scripts/isolation.py +539 -70
  220. package/skills/gsd-path-docs-audit/scripts/loop_run.py +16 -4
  221. package/skills/gsd-path-docs-audit/scripts/members.py +77 -32
  222. package/skills/gsd-path-docs-audit/scripts/model_policy.py +5 -1
  223. package/skills/gsd-path-docs-audit/scripts/path_config.py +3 -3
  224. package/skills/gsd-path-docs-audit/scripts/pipeline_git.py +131 -42
  225. package/skills/gsd-path-docs-audit/scripts/pipeline_state.py +139 -39
  226. package/skills/gsd-path-docs-audit/scripts/promote_lookahead.py +3 -3
  227. package/skills/gsd-path-docs-audit/scripts/roadmap.py +9 -1
  228. package/skills/gsd-path-docs-audit/scripts/state_checkpoint.py +39 -36
  229. package/skills/gsd-path-docs-audit/scripts/state_promote.py +15 -4
  230. package/skills/gsd-path-docs-audit/scripts/worktree_paths.py +54 -2
  231. package/skills/gsd-path-docs-audit/templates/docs-audit.md +5 -1
  232. package/skills/gsd-path-forensics/references/operating-rules.md +11 -3
  233. package/skills/gsd-path-forensics/references/runtime-selection.md +9 -0
  234. package/skills/gsd-path-forensics/scripts/_common.py +256 -2
  235. package/skills/gsd-path-forensics/scripts/discussion_records.py +9 -1
  236. package/skills/gsd-path-forensics/scripts/loop_run.py +16 -4
  237. package/skills/gsd-path-forensics/scripts/model_policy.py +5 -1
  238. package/skills/gsd-path-forensics/scripts/path_config.py +3 -3
  239. package/skills/gsd-path-forensics/scripts/pipeline_diagnose.py +17 -2
  240. package/skills/gsd-path-forensics/scripts/pipeline_undo.py +118 -16
  241. package/skills/gsd-path-forensics/scripts/worktree_paths.py +54 -2
  242. package/skills/gsd-path-inspect/references/dispatch.md +13 -0
  243. package/skills/gsd-path-inspect/references/docs-auditor.md +5 -0
  244. package/skills/gsd-path-inspect/references/operating-rules.md +11 -3
  245. package/skills/gsd-path-inspect/references/runtime-selection.md +9 -0
  246. package/skills/gsd-path-inspect/scripts/_common.py +256 -2
  247. package/skills/gsd-path-inspect/scripts/archive_milestone.py +14 -13
  248. package/skills/gsd-path-inspect/scripts/build_recovery.py +155 -58
  249. package/skills/gsd-path-inspect/scripts/check_docs_audit.py +77 -4
  250. package/skills/gsd-path-inspect/scripts/check_handoffs.py +635 -57
  251. package/skills/gsd-path-inspect/scripts/check_task_briefs.py +293 -32
  252. package/skills/gsd-path-inspect/scripts/detect_project.py +260 -20
  253. package/skills/gsd-path-inspect/scripts/discussion_records.py +9 -1
  254. package/skills/gsd-path-inspect/scripts/discussion_validate.py +93 -35
  255. package/skills/gsd-path-inspect/scripts/integration.py +244 -65
  256. package/skills/gsd-path-inspect/scripts/isolation.py +539 -70
  257. package/skills/gsd-path-inspect/scripts/loop_run.py +16 -4
  258. package/skills/gsd-path-inspect/scripts/members.py +77 -32
  259. package/skills/gsd-path-inspect/scripts/model_policy.py +5 -1
  260. package/skills/gsd-path-inspect/scripts/path_config.py +3 -3
  261. package/skills/gsd-path-inspect/scripts/pipeline_git.py +131 -42
  262. package/skills/gsd-path-inspect/scripts/pipeline_state.py +139 -39
  263. package/skills/gsd-path-inspect/scripts/promote_lookahead.py +3 -3
  264. package/skills/gsd-path-inspect/scripts/roadmap.py +9 -1
  265. package/skills/gsd-path-inspect/scripts/state_checkpoint.py +39 -36
  266. package/skills/gsd-path-inspect/scripts/state_promote.py +15 -4
  267. package/skills/gsd-path-inspect/scripts/workflow_run.py +14 -4
  268. package/skills/gsd-path-inspect/scripts/worktree_paths.py +54 -2
  269. package/skills/gsd-path-inspect/templates/docs-audit.md +5 -1
  270. package/skills/gsd-path-inspect/templates/state.md +2 -1
  271. package/skills/gsd-path-loop/references/operating-rules.md +11 -3
  272. package/skills/gsd-path-loop/references/runtime-selection.md +9 -0
  273. package/skills/gsd-path-loop/scripts/_common.py +256 -2
  274. package/skills/gsd-path-loop/scripts/discussion_records.py +9 -1
  275. package/skills/gsd-path-loop/scripts/loop_run.py +16 -4
  276. package/skills/gsd-path-loop/scripts/model_policy.py +5 -1
  277. package/skills/gsd-path-loop/scripts/path_config.py +3 -3
  278. package/skills/gsd-path-loop/scripts/worktree_paths.py +54 -2
  279. package/skills/gsd-path-migrate/SKILL.md +8 -0
  280. package/skills/gsd-path-migrate/references/operating-rules.md +11 -3
  281. package/skills/gsd-path-migrate/references/runtime-selection.md +9 -0
  282. package/skills/gsd-path-migrate/scripts/_common.py +256 -2
  283. package/skills/gsd-path-migrate/scripts/discussion_records.py +9 -1
  284. package/skills/gsd-path-migrate/scripts/loop_run.py +16 -4
  285. package/skills/gsd-path-migrate/scripts/migrate_core.py +2 -0
  286. package/skills/gsd-path-migrate/scripts/model_policy.py +5 -1
  287. package/skills/gsd-path-migrate/scripts/path_config.py +3 -3
  288. package/skills/gsd-path-plan/SKILL.md +14 -3
  289. package/skills/gsd-path-plan/references/build-recovery.md +13 -0
  290. package/skills/gsd-path-plan/references/dispatch.md +13 -0
  291. package/skills/gsd-path-plan/references/operating-rules.md +11 -3
  292. package/skills/gsd-path-plan/references/planner.md +26 -4
  293. package/skills/gsd-path-plan/references/runtime-selection.md +9 -0
  294. package/skills/gsd-path-plan/references/spec-probes.md +150 -0
  295. package/skills/gsd-path-plan/scripts/_common.py +256 -2
  296. package/skills/gsd-path-plan/scripts/archive_milestone.py +14 -13
  297. package/skills/gsd-path-plan/scripts/build_recovery.py +155 -58
  298. package/skills/gsd-path-plan/scripts/check_handoffs.py +635 -57
  299. package/skills/gsd-path-plan/scripts/check_task_briefs.py +293 -32
  300. package/skills/gsd-path-plan/scripts/detect_project.py +260 -20
  301. package/skills/gsd-path-plan/scripts/discussion_records.py +9 -1
  302. package/skills/gsd-path-plan/scripts/discussion_validate.py +93 -35
  303. package/skills/gsd-path-plan/scripts/integration.py +244 -65
  304. package/skills/gsd-path-plan/scripts/isolation.py +539 -70
  305. package/skills/gsd-path-plan/scripts/loop_run.py +16 -4
  306. package/skills/gsd-path-plan/scripts/members.py +77 -32
  307. package/skills/gsd-path-plan/scripts/model_policy.py +5 -1
  308. package/skills/gsd-path-plan/scripts/path_config.py +3 -3
  309. package/skills/gsd-path-plan/scripts/pipeline_git.py +131 -42
  310. package/skills/gsd-path-plan/scripts/pipeline_state.py +139 -39
  311. package/skills/gsd-path-plan/scripts/promote_lookahead.py +3 -3
  312. package/skills/gsd-path-plan/scripts/roadmap.py +9 -1
  313. package/skills/gsd-path-plan/scripts/state_checkpoint.py +39 -36
  314. package/skills/gsd-path-plan/scripts/state_promote.py +15 -4
  315. package/skills/gsd-path-plan/scripts/workflow_run.py +14 -4
  316. package/skills/gsd-path-plan/scripts/worktree_paths.py +54 -2
  317. package/skills/gsd-path-plan/templates/patch-findings.md +3 -3
  318. package/skills/gsd-path-plan/templates/plan.md +17 -2
  319. package/skills/gsd-path-plan/templates/task.md +1 -0
  320. package/skills/gsd-path-research/SKILL.md +11 -0
  321. package/skills/gsd-path-research/references/dispatch.md +13 -0
  322. package/skills/gsd-path-research/references/operating-rules.md +11 -3
  323. package/skills/gsd-path-research/references/runtime-selection.md +9 -0
  324. package/skills/gsd-path-research/scripts/_common.py +256 -2
  325. package/skills/gsd-path-research/scripts/archive_milestone.py +14 -13
  326. package/skills/gsd-path-research/scripts/build_recovery.py +155 -58
  327. package/skills/gsd-path-research/scripts/check_handoffs.py +635 -57
  328. package/skills/gsd-path-research/scripts/check_task_briefs.py +293 -32
  329. package/skills/gsd-path-research/scripts/detect_project.py +260 -20
  330. package/skills/gsd-path-research/scripts/discussion_records.py +9 -1
  331. package/skills/gsd-path-research/scripts/discussion_validate.py +93 -35
  332. package/skills/gsd-path-research/scripts/integration.py +244 -65
  333. package/skills/gsd-path-research/scripts/isolation.py +539 -70
  334. package/skills/gsd-path-research/scripts/loop_run.py +16 -4
  335. package/skills/gsd-path-research/scripts/members.py +77 -32
  336. package/skills/gsd-path-research/scripts/model_policy.py +5 -1
  337. package/skills/gsd-path-research/scripts/path_config.py +3 -3
  338. package/skills/gsd-path-research/scripts/pipeline_git.py +131 -42
  339. package/skills/gsd-path-research/scripts/pipeline_state.py +139 -39
  340. package/skills/gsd-path-research/scripts/promote_lookahead.py +3 -3
  341. package/skills/gsd-path-research/scripts/roadmap.py +9 -1
  342. package/skills/gsd-path-research/scripts/state_checkpoint.py +39 -36
  343. package/skills/gsd-path-research/scripts/state_promote.py +15 -4
  344. package/skills/gsd-path-research/scripts/worktree_paths.py +54 -2
  345. package/skills/gsd-path-research/templates/research-handoff.md +14 -3
  346. package/skills/gsd-path-roadmap/SKILL.md +16 -6
  347. package/skills/gsd-path-roadmap/references/dispatch.md +13 -0
  348. package/skills/gsd-path-roadmap/references/operating-rules.md +11 -3
  349. package/skills/gsd-path-roadmap/references/runtime-selection.md +9 -0
  350. package/skills/gsd-path-roadmap/scripts/_common.py +256 -2
  351. package/skills/gsd-path-roadmap/scripts/archive_milestone.py +14 -13
  352. package/skills/gsd-path-roadmap/scripts/build_recovery.py +155 -58
  353. package/skills/gsd-path-roadmap/scripts/check_handoffs.py +635 -57
  354. package/skills/gsd-path-roadmap/scripts/check_task_briefs.py +293 -32
  355. package/skills/gsd-path-roadmap/scripts/detect_project.py +260 -20
  356. package/skills/gsd-path-roadmap/scripts/discussion_records.py +9 -1
  357. package/skills/gsd-path-roadmap/scripts/discussion_validate.py +93 -35
  358. package/skills/gsd-path-roadmap/scripts/integration.py +244 -65
  359. package/skills/gsd-path-roadmap/scripts/isolation.py +539 -70
  360. package/skills/gsd-path-roadmap/scripts/loop_run.py +16 -4
  361. package/skills/gsd-path-roadmap/scripts/members.py +77 -32
  362. package/skills/gsd-path-roadmap/scripts/model_policy.py +5 -1
  363. package/skills/gsd-path-roadmap/scripts/path_config.py +3 -3
  364. package/skills/gsd-path-roadmap/scripts/pipeline_git.py +131 -42
  365. package/skills/gsd-path-roadmap/scripts/pipeline_state.py +139 -39
  366. package/skills/gsd-path-roadmap/scripts/promote_lookahead.py +3 -3
  367. package/skills/gsd-path-roadmap/scripts/roadmap.py +9 -1
  368. package/skills/gsd-path-roadmap/scripts/state_checkpoint.py +39 -36
  369. package/skills/gsd-path-roadmap/scripts/state_promote.py +15 -4
  370. package/skills/gsd-path-roadmap/scripts/worktree_paths.py +54 -2
  371. package/skills/gsd-path-ship/SKILL.md +32 -5
  372. package/skills/gsd-path-ship/references/dispatch.md +13 -0
  373. package/skills/gsd-path-ship/references/operating-rules.md +11 -3
  374. package/skills/gsd-path-ship/references/reviewer-final.md +20 -2
  375. package/skills/gsd-path-ship/references/reviewer-wave.md +56 -12
  376. package/skills/gsd-path-ship/references/reviewer.md +3 -1
  377. package/skills/gsd-path-ship/references/runtime-selection.md +9 -0
  378. package/skills/gsd-path-ship/references/spec-probes.md +150 -0
  379. package/skills/gsd-path-ship/scripts/_common.py +256 -2
  380. package/skills/gsd-path-ship/scripts/archive_milestone.py +14 -13
  381. package/skills/gsd-path-ship/scripts/build_recovery.py +155 -58
  382. package/skills/gsd-path-ship/scripts/build_state.py +274 -8
  383. package/skills/gsd-path-ship/scripts/check_handoffs.py +635 -57
  384. package/skills/gsd-path-ship/scripts/check_task_briefs.py +293 -32
  385. package/skills/gsd-path-ship/scripts/detect_project.py +260 -20
  386. package/skills/gsd-path-ship/scripts/discussion_records.py +9 -1
  387. package/skills/gsd-path-ship/scripts/discussion_validate.py +93 -35
  388. package/skills/gsd-path-ship/scripts/integration.py +244 -65
  389. package/skills/gsd-path-ship/scripts/isolation.py +539 -70
  390. package/skills/gsd-path-ship/scripts/loop_run.py +16 -4
  391. package/skills/gsd-path-ship/scripts/members.py +77 -32
  392. package/skills/gsd-path-ship/scripts/model_policy.py +5 -1
  393. package/skills/gsd-path-ship/scripts/path_config.py +3 -3
  394. package/skills/gsd-path-ship/scripts/pipeline_git.py +131 -42
  395. package/skills/gsd-path-ship/scripts/pipeline_state.py +139 -39
  396. package/skills/gsd-path-ship/scripts/promote_lookahead.py +3 -3
  397. package/skills/gsd-path-ship/scripts/roadmap.py +9 -1
  398. package/skills/gsd-path-ship/scripts/state_checkpoint.py +39 -36
  399. package/skills/gsd-path-ship/scripts/state_promote.py +15 -4
  400. package/skills/gsd-path-ship/scripts/workflow_run.py +14 -4
  401. package/skills/gsd-path-ship/scripts/worktree_paths.py +54 -2
  402. package/skills/gsd-path-ship/templates/final-review.md +11 -2
  403. package/skills/gsd-path-ship/templates/patch-findings.md +3 -3
  404. package/skills/gsd-path-ship/templates/wave-review.md +28 -9
  405. package/skills/gsd-path-undo/references/operating-rules.md +11 -3
  406. package/skills/gsd-path-undo/references/runtime-selection.md +9 -0
  407. package/skills/gsd-path-undo/scripts/_common.py +256 -2
  408. package/skills/gsd-path-undo/scripts/discussion_records.py +9 -1
  409. package/skills/gsd-path-undo/scripts/loop_run.py +16 -4
  410. package/skills/gsd-path-undo/scripts/model_policy.py +5 -1
  411. package/skills/gsd-path-undo/scripts/path_config.py +3 -3
  412. package/skills/gsd-path-undo/scripts/pipeline_undo.py +118 -16
  413. package/skills/gsd-path-undo/scripts/worktree_paths.py +54 -2
  414. package/skills/path/DEFINE.md +34 -5
  415. package/skills/path/PLAN.md +14 -3
  416. package/skills/path/RESEARCH.md +11 -0
  417. package/skills/path/ROADMAP.md +16 -6
  418. package/skills/path/SHIP.md +32 -5
  419. package/skills/path/SKILL.md +52 -24
  420. package/skills/path/references/build-native.md +112 -10
  421. package/skills/path/references/build-recovery.md +13 -0
  422. package/skills/path/references/coder.md +7 -3
  423. package/skills/path/references/dispatch.md +13 -0
  424. package/skills/path/references/docs-auditor.md +5 -0
  425. package/skills/path/references/operating-rules.md +11 -3
  426. package/skills/path/references/planner.md +26 -4
  427. package/skills/path/references/reviewer-final.md +20 -2
  428. package/skills/path/references/reviewer-wave.md +56 -12
  429. package/skills/path/references/reviewer.md +3 -1
  430. package/skills/path/references/runtime-selection.md +9 -0
  431. package/skills/path/references/spec-probes.md +150 -0
  432. package/skills/path/scripts/_common.py +256 -2
  433. package/skills/path/scripts/archive_milestone.py +14 -13
  434. package/skills/path/scripts/build_recovery.py +155 -58
  435. package/skills/path/scripts/build_state.py +274 -8
  436. package/skills/path/scripts/check_docs_audit.py +77 -4
  437. package/skills/path/scripts/check_handoffs.py +635 -57
  438. package/skills/path/scripts/check_task_briefs.py +293 -32
  439. package/skills/path/scripts/detect_project.py +260 -20
  440. package/skills/path/scripts/discussion_records.py +9 -1
  441. package/skills/path/scripts/discussion_validate.py +93 -35
  442. package/skills/path/scripts/dispatch_driver.py +549 -53
  443. package/skills/path/scripts/git_guard.py +27 -8
  444. package/skills/path/scripts/integration.py +244 -65
  445. package/skills/path/scripts/isolation.py +539 -70
  446. package/skills/path/scripts/loop_run.py +16 -4
  447. package/skills/path/scripts/members.py +77 -32
  448. package/skills/path/scripts/model_policy.py +5 -1
  449. package/skills/path/scripts/path_config.py +3 -3
  450. package/skills/path/scripts/pipeline_git.py +131 -42
  451. package/skills/path/scripts/pipeline_state.py +139 -39
  452. package/skills/path/scripts/promote_lookahead.py +3 -3
  453. package/skills/path/scripts/review_findings.py +180 -44
  454. package/skills/path/scripts/roadmap.py +9 -1
  455. package/skills/path/scripts/state_checkpoint.py +39 -36
  456. package/skills/path/scripts/state_promote.py +15 -4
  457. package/skills/path/scripts/status_runtime.py +22 -4
  458. package/skills/path/scripts/task_context.py +14 -3
  459. package/skills/path/scripts/workflow_run.py +14 -4
  460. package/skills/path/scripts/worktree_paths.py +54 -2
  461. package/skills/path/templates/docs-audit.md +5 -1
  462. package/skills/path/templates/final-review.md +11 -2
  463. package/skills/path/templates/intent.md +30 -0
  464. package/skills/path/templates/patch-findings.md +3 -3
  465. package/skills/path/templates/plan.md +17 -2
  466. package/skills/path/templates/research-handoff.md +14 -3
  467. package/skills/path/templates/state.md +2 -1
  468. package/skills/path/templates/task.md +1 -0
  469. package/skills/path/templates/wave-review.md +28 -9
  470. package/skills/gsd-path/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  471. package/skills/gsd-path/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
  472. package/skills/gsd-path-build/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  473. package/skills/gsd-path-build/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
  474. package/skills/gsd-path-inspect/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  475. package/skills/gsd-path-plan/scripts/__pycache__/_common.cpython-312.pyc +0 -0
  476. package/skills/gsd-path-ship/scripts/__pycache__/_common.cpython-312.pyc +0 -0
package/README.md CHANGED
@@ -9,21 +9,29 @@ milestone loop. While a milestone builds, the next one can be planned in
9
9
  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
- **Supported hosts:** Codex, Claude Code, Grok, OpenCode, GitHub Copilot CLI,
13
- Qwen Code, Antigravity CLI, Cursor, Zed, Kiro, and Kimi Code.
14
- Support means the installer and dispatch contract exist. See the
15
- [host trust matrix](https://github.com/open-gsd/gsd-path/blob/main/docs/trust-validation/HOST-MATRIX.md) for live milestone
16
- proof and each host's guard tier.
12
+ **Hosts with a passing full live milestone for release 1.6.0:** Codex, Claude
13
+ Code, Grok, OpenCode, Antigravity CLI, Cursor, and Kimi Code.
14
+
15
+ **Hosts with an installer and a dispatch contract, but no live milestone for
16
+ release 1.6.0:** GitHub Copilot CLI (account quota exhausted), Qwen Code, Zed,
17
+ and Kiro (API credits), and Muse Code (no live release evidence recorded yet).
18
+ These hosts are excluded from the release evaluation. Exclusion is not a pass.
19
+
20
+ With guard hooks installed, only Claude Code and Cursor get a fail-closed
21
+ native guard; every other host relies on Git hooks. The installer also writes a
22
+ native Codex hook, and it runs only after you trust it (see [HOOKS.md](HOOKS.md)).
23
+ The [host trust matrix](https://github.com/open-gsd/gsd-path/blob/main/docs/trust-validation/HOST-MATRIX.md)
24
+ is the source of truth for live milestone proof and each host's guard tier.
17
25
 
18
26
  <!-- 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)
27
+ **Latest npm release:** [@opengsd/gsd-path@1.6.0](https://www.npmjs.com/package/@opengsd/gsd-path/v/1.6.0) — [release notes](CHANGELOG.md#160---2026-10-12)
20
28
 
21
29
  **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)
30
+ - let a later task supersede an earlier task and retire its Verify
31
+ - document the default branch record of a member
32
+ - member paths read the default branch that MEMBERS.md records
33
+ - record the default branch of a member in MEMBERS.md
34
+ - add --uninstall to the skill installers
27
35
 
28
36
  <!-- /release-docs -->
29
37
 
@@ -40,37 +48,31 @@ proof and each host's guard tier.
40
48
  | [WORKFLOW.md](WORKFLOW.md) | Phase-by-phase agent SOP |
41
49
  | [HOOKS.md](HOOKS.md) | Optional archive/git guard hooks |
42
50
  | [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 |
51
+ | [daemon/app/README.md](daemon/app/README.md) | Desktop app: develop, release, and updates |
52
+ | [daemon/README.md](daemon/README.md) | Monitor daemon: routes, configuration, and manual setup |
53
+ | [CHANGELOG.md](CHANGELOG.md) | npm package release notes |
54
+ | [daemon/app/CHANGELOG.md](daemon/app/CHANGELOG.md) | Desktop app release notes |
45
55
  | [RELEASE.md](RELEASE.md) | Maintainer CI and npm release cycle |
46
56
  | [GUIDE.md](GUIDE.md) | Pointer to the guides above |
47
57
 
48
- ## What's new — September 19, 2026
58
+ ## What's new — October 2, 2026
49
59
 
50
60
  These changes are merged into the source checkout; npm installs use the latest
51
61
  published release.
52
62
 
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).
63
+ - **Desktop app (pre-release):** one app for macOS, Windows, and Linux shows
64
+ your projects, manages skills in each coding agent, and updates itself. See
65
+ [Desktop app](#desktop-app).
66
+ - **Skills from the published release:** the monitor installs skills from the
67
+ npm release, checks the download against the registry's sha512, and refuses
68
+ one that does not match. A release picker lets you stay on an older version.
69
+ - **Safer monitor writes:** a monitor started by the app accepts changes only
70
+ with the app's local token, so another web page cannot change your setup.
71
+ - **Environment editor:** edit a project's `.env` files with values masked and
72
+ a diff before each save.
73
+ - **Usage charts:** tokens and cost per day, time per phase, tasks per wave,
74
+ and verify history. Missing data shows as missing, never as zero.
75
+ - **Muse Code** is a supported host.
74
76
 
75
77
  ## Install from npm
76
78
 
@@ -126,7 +128,13 @@ contain newer changes.
126
128
 
127
129
  1. Open your project folder in your coding-agent host. Existing repositories
128
130
  need Git; GitHub repository creation and pull-request operations also need
129
- an authenticated GitHub CLI (`gh`).
131
+ an authenticated GitHub CLI (`gh`). The default branch of `origin` can have
132
+ any name: Path records it at initialization and ships onto it. This guide
133
+ calls it `main`; see [default branch](WORKFLOW.md#default-branch).
134
+ Pull-request
135
+ shipping supports GitHub.com only. On GitLab, Gitea, or GitHub Enterprise
136
+ Server, use the [`external-landing` mode](WORKFLOW.md#integration) when
137
+ the default branch accepts merge requests only.
130
138
  2. Start or reload the host session so it discovers the installed skills.
131
139
  3. Invoke `$path` in Codex, or `/path` on slash-command hosts. The router
132
140
  identifies the project and guides you through the required inputs and approvals.
@@ -157,65 +165,71 @@ project settings. Dashboard users can open **Settings → Path settings** for th
157
165
  same shipping, model/effort, and future review-panel controls. See
158
166
  [Path settings](skills/gsd-path/references/config.md) for precedence and locks.
159
167
 
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.
168
+ ### Uninstall
209
169
 
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
170
+ ```bash
171
+ npx @opengsd/gsd-path@latest --uninstall --all --dry-run
172
+ npx @opengsd/gsd-path@latest --uninstall --all
173
+ ```
216
174
 
217
- The monitor requires Python 3.9+. From a source checkout, preview the setup,
218
- then install (macOS/Linux shell):
175
+ `--uninstall` removes the installed GSD Path skills from the selected hosts.
176
+ For Cursor it also removes the GSD Path subagent file. Use host flags instead
177
+ of `--all` to select hosts. For project-local skills, run the command from
178
+ your project directory and add `--local`. `--dry-run` shows each path and
179
+ removes nothing.
180
+
181
+ The command removes only GSD Path skills. It keeps other skills, host
182
+ settings, and `disabled-gsd-skills` backups. It makes no backup: changes that
183
+ you made in a GSD Path skill directory are lost. It does not remove project
184
+ contracts or hooks (`.project/`, `.gsd-path/`, the `AGENTS.md` block, guard
185
+ hooks). See [Uninstall skills](UPDATE.md#uninstall-skills).
186
+
187
+ ## Desktop app
188
+
189
+ The **OpenGSD Path app** shows your projects without opening each project's
190
+ `.project/` files, and manages the Path setup on your computer. It is a
191
+ pre-release for testers.
192
+
193
+ **Get it:** download the installer for your system from the newest `app-v`
194
+ entry on the [releases page](https://github.com/open-gsd/gsd-path/releases):
195
+ `.dmg` (macOS, Apple Silicon or Intel), `.msi` (Windows), `.deb` or AppImage
196
+ (Linux). The app needs Python 3.9+ and Git; its first screen checks for both
197
+ and shows the fix when one is missing.
198
+
199
+ macOS builds are signed with a Developer ID and notarized by Apple from 0.1.1
200
+ on, so they open without an approval in Privacy & Security. Windows builds have
201
+ no code signature yet: SmartScreen shows a warning; choose **More info → Run
202
+ anyway**.
203
+
204
+ What the app does:
205
+
206
+ - **Projects:** blocked, active, and shipped work with milestone and phase
207
+ progress, tasks, last activity, and usage. A project page shows its
208
+ roadmap, tasks, success criteria, reviews, verification history, files at
209
+ any Git version, and full recorded evidence.
210
+ - **Skills:** which coding agents have Path skills, at which version, with
211
+ preview, install, update, and uninstall. Every write shows a preview or a
212
+ plan first.
213
+ - **Project setup:** runtime version, guard hooks, health check, and, for a
214
+ multi-repo coordinator, member hooks and marker repair.
215
+ - **Settings:** updates, Path settings (shipping mode, models, review panel),
216
+ watched folders, model prices, launch at login, and appearance.
217
+ - **Stats** and the per-project **Environment** editor.
218
+ - **Tray:** a compact project list, items that need attention, and controls
219
+ to start, restart, and quit.
220
+
221
+ The app only watches and sets up. It never advances a phase; approvals and
222
+ rulings stay in your agent. It updates itself: it checks a signed update file,
223
+ asks before it installs, and refuses an update whose signature does not match.
224
+
225
+ Background monitoring is read-only. The app starts a local monitor (the
226
+ daemon) and stops it on quit. See the [app guide](daemon/app/README.md) and the
227
+ [daemon guide](daemon/README.md).
228
+
229
+ ### Manual monitor (without the app)
230
+
231
+ From a source checkout you can still run the monitor and its browser
232
+ dashboard without the app. It requires Python 3.9+:
219
233
 
220
234
  ```bash
221
235
  git clone https://github.com/open-gsd/gsd-path.git
@@ -224,33 +238,20 @@ PYTHONPATH=daemon python3 -m gsd_daemon install --dry-run
224
238
  PYTHONPATH=daemon python3 -m gsd_daemon install
225
239
  ```
226
240
 
227
- On Windows, after cloning and entering `gsd-path`, use PowerShell:
241
+ On Windows, use PowerShell in the `gsd-path` folder. The last command starts
242
+ the monitor for this session; it starts by itself at later logins:
228
243
 
229
244
  ```powershell
230
245
  $env:PYTHONPATH = "daemon"
231
246
  python -m gsd_daemon install --dry-run
232
247
  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
248
  Start-Process "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\gsd-path-daemon.lnk"
240
249
  ```
241
250
 
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.
251
+ Then open **http://127.0.0.1:8765**. The first launch of the desktop app
252
+ removes this older autostart entry so only one monitor runs. See the
253
+ [daemon guide](daemon/README.md) for platform details, configuration, and
254
+ usage pricing.
254
255
 
255
256
  ## Skills
256
257
 
@@ -390,12 +391,30 @@ partial remote/clone/worktree transaction; the default checkout stays clean.
390
391
  One project can change several repositories in the same milestone. The
391
392
  **coordinator** repo holds `.project/` and runs the pipeline; each other repo
392
393
  is a **member** listed in `.project/MEMBERS.md`. A member needs a GitHub.com
393
- `origin` whose default is `main`. See
394
+ `origin`. Its default branch can have any name, and it can differ from the
395
+ default branch of the coordinator and of the other members. See
394
396
  [ADR 0002](docs/adr/0002-multi-repo-coordinator.md) for the design.
395
397
 
398
+ `MEMBERS.md` has one section per member, in ship order. `members.py` writes
399
+ it; do not edit it by hand:
400
+
401
+ ```markdown
402
+ ## web
403
+ Checkout: /absolute/path/to/web
404
+ Remote: https://github.com/acme/web.git
405
+ Integration: default
406
+ Default branch: master
407
+ ```
408
+
409
+ `Default branch` is the member's default branch on `origin`. `members.py add`
410
+ records it one time, from the member's local `origin/HEAD`; run
411
+ `git remote set-head origin --auto` in the member first. A section without
412
+ the field means `main`. See [default branch](WORKFLOW.md#default-branch).
413
+
396
414
  - Add members at a milestone boundary: ask the router to add an existing repo
397
415
  (`members.py add`) or to create a new one (`members.py add --create`, after
398
- you approve the exact owner, name, visibility, and checkout). For optional
416
+ you approve the exact owner, name, visibility, and checkout; a new
417
+ repository uses `main`). For optional
399
418
  guard hooks, install them in the member with
400
419
  `npx @opengsd/gsd-path@latest --member-of <coordinator> --project <member>`.
401
420
  - The planner gives each member task `repo: <member>`; one task changes one
@@ -470,11 +489,12 @@ node scripts/install.mjs --all --local
470
489
  node scripts/install.mjs --all --project /path/to/project
471
490
  node scripts/install.mjs --update
472
491
  node scripts/install.mjs --all --update --project /path/to/project # refresh .gsd-path/; keeps contracts
492
+ node scripts/install.mjs --uninstall --all --dry-run # preview; removes skills only
473
493
  ```
474
494
 
475
495
  | Flag | User skills root | Invoke |
476
496
  | --- | --- | --- |
477
- | `--codex`, `--zed` | `~/.agents/skills` | Codex: `$path` or `$gsd-path`; Zed: `/path` or `/gsd-path` |
497
+ | `--codex`, `--zed`, `--muse` | `~/.agents/skills` | Codex: `$path` or `$gsd-path`; Zed, Muse: `/path` or `/gsd-path` |
478
498
  | `--claude` | `~/.claude/skills` | `/path` or `/gsd-path` |
479
499
  | `--cursor` | `~/.cursor/skills` (+ subagent) | `/path` or `/gsd-path` |
480
500
  | `--grok` | `~/.grok/skills` | `/path` or `/gsd-path` |
@@ -489,7 +509,7 @@ OpenCode stable: ask to load and use the `gsd-path` skill.
489
509
  `gsd-path` remains the canonical router name; `path` is its short menu alias.
490
510
  For a single phase, use `$gsd-path-plan` in Codex or `/gsd-path-plan` on slash hosts.
491
511
 
492
- `scripts/install.py` — Python install, including `--local` and `--update`.
512
+ `scripts/install.py` — Python install, including `--local`, `--update`, and `--uninstall`.
493
513
  The Node CLI remains the interactive and npm entry point. See [FULL.md](FULL.md) and
494
514
  [UPDATE.md](UPDATE.md) for `--hooks`, `--hooks-refresh`, `--local`, and host notes.
495
515
 
package/RUNTIME.md CHANGED
@@ -23,7 +23,7 @@ inputs, receipt handling, and entry conditions are owned by the
23
23
  | `gate-plan` | Git HEAD; optional lookahead project directory | Pending discussion, intent coverage, brief paths, and panel configuration checked in order. |
24
24
  | `approve-plan` | Owner approval and `--expected-head <reviewed full SHA>` | Plan gates followed by the existing journaled approval checkpoint. |
25
25
  | `lint-round` | Git HEAD; optional `--project-dir .project/next` | Task brief checks against HEAD, then plan handoff checks. |
26
- | `prepare-task` | `--expected-head <clean base> --task-id <id> --round-size <ready task count>` | Canonical task isolation; serial work also gets a verification sidecar before the primary becomes dirty. |
26
+ | `prepare-task` | `--expected-head <clean base> --task-id <id> --round-size <ready task count>` | Canonical task isolation; serial work also gets a verification sidecar before the primary becomes dirty. A verification sidecar that an earlier `prepare-task` left for the task is retired first only when it is proven untouched: its branch did not move from its creation base on the bound branch, and it has no tracked change and no untracked or gitignored file. Any other sidecar stays, and the command stops with its path and what was found. |
27
27
  | `build-evidence` | `--expected-head <full SHA>` | Canonical landing proof written to `<project-dir>/build/evidence.json` (default: `.project/build/evidence.json`). |
28
28
 
29
29
  Plan approval recovery remains `pipeline_state.py resume-checkpoint`. Pre-Git
@@ -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, 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. |
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, except a host-dispatched record (no child command) while the task is still in progress at that base: `finish` may run again after a failed Verify. 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,10 +91,17 @@ 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`.
98
+ A landing is final when the removal of its isolate fails: the receipt reports
99
+ the task as landed with a `cleanup_warning`, and the next `round` or `finish`
100
+ checks the isolate again. When only a leftover of a landed task's isolate
101
+ remains and it holds nothing that Git does not have, the driver stops with
102
+ `task <id> is landed; remove its leftover isolate: <path>`, changes neither
103
+ STATE nor HEAD, and never deletes the path itself. Every other isolate error
104
+ keeps its recovery block.
98
105
  Review starts from a clean base. A same-cycle retry may dispatch a missing lens
99
106
  at that unchanged base while verified, already-collected review artifacts remain
100
107
  uncommitted. Altered artifacts or unrelated changes block recovery.
@@ -127,7 +134,15 @@ with `another dispatch_driver invocation holds the lock`; wait for the
127
134
  active call to return before retrying. Bookkeeping also blocks if an
128
135
  in-progress primary task has no open dispatch record.
129
136
 
130
- Verify output is saved in `verify.json`. A `verify-record` ledger entry is
137
+ Verify output is saved in `verify.json`. `finish` also runs the Verify of each
138
+ earlier-wave task that shares a file with the task, under the
139
+ [wave loop](skills/gsd-path/references/build-native.md#wave-loop) rule; those
140
+ runs are saved under `regressions` and a failure blocks the landing. A Verify
141
+ that a `supersedes` field retires does not run; it is listed under `retired`. A fix
142
+ task Verify that loses only the copy of a retired Verify has a `retired` entry with
143
+ the key `part` (the superseded task) and the Log entry `orchestrator regression
144
+ Verify of <fix task id>: part of <task id> retired: superseded by <task id>`. A task
145
+ with a `Heavy: yes` regression Verify counts as heavy. A `verify-record` ledger entry is
131
146
  written only when the landing commit's parent equals the recorded task base;
132
147
  a later parallel landing can therefore have no ledger entry.
133
148
 
@@ -174,8 +189,11 @@ through its receipt only when the canonical file matches the saved hash.
174
189
 
175
190
  `fix-tasks` reconciles existing repair tasks and PLAN rows before linting and
176
191
  checkpointing. It creates missing batches in an appended repair wave and
177
- reports new tasks in `created`, reused tasks in `existing`, and batches already
178
- covered by other repair tasks in `carried`. Status `created` includes restored
192
+ reports new tasks in `created`, reused tasks in `existing`, and batches that
193
+ other repair tasks not yet `done` cover in the same repo in `carried`. A member
194
+ batch and its task carry `repo`. A fix task for a finding that repeats after
195
+ its fix landed also depends on that landed fix task, so
196
+ `review_findings.py repair-evidence` can link the two. Status `created` includes restored
179
197
  PLAN rows or pending project bookkeeping; `exists` means nothing was written
180
198
  and no project changes needed a checkpoint. Status `none` means no batches
181
199
  need work; `escalate` leaves the named decisions with build step 7 and the user.
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**
@@ -272,6 +273,41 @@ Unrecognized or foreign `.project/` state is never auto-migrated — the router
272
273
 
273
274
  ---
274
275
 
276
+ ## Uninstall skills
277
+
278
+ ```bash
279
+ npx @opengsd/gsd-path@latest --uninstall --all --dry-run
280
+ npx @opengsd/gsd-path@latest --uninstall --all
281
+ ```
282
+
283
+ From a git clone, use `node scripts/install.mjs` with the same flags.
284
+
285
+ - Select the hosts with host flags or `--all`. A selection is necessary.
286
+ - Add `--local`, from the project directory, for project-local skills.
287
+ - `--dry-run` lists each path and removes nothing. A real run lists each
288
+ removed path.
289
+ - A host that has no GSD Path skills shows `nothing to remove`. This is not an
290
+ error. A second run removes nothing.
291
+
292
+ **Removed:** skill directories that GSD Path owns, and Cursor's
293
+ `agents/gsd-path.md`. A directory is owned when it has a GSD Path name
294
+ (`gsd-path`, `gsd-path-*`, the legacy `ogsd` names, or the `path` alias) and
295
+ contains a `VERSION` file or a `SKILL.md` that names `gsd-path`. The `path`
296
+ alias must also pass the ownership rule in
297
+ [What auto-updates](#what-auto-updates). A directory with a GSD Path name
298
+ that is not owned shows as `kept` and stays in place.
299
+
300
+ **Not removed:** other skills, host settings, `disabled-gsd-skills` backups,
301
+ and all project files: `.project/`, `.gsd-path/`, the `AGENTS.md` block, and
302
+ guard hooks. `--uninstall` with `--project`, `--update`, `--doctor`, or a hook
303
+ or runtime flag stops with an error.
304
+
305
+ Removal makes no backup. Changes that you made in a GSD Path skill directory
306
+ are lost. Codex, Zed, and Muse use one skills root (with `--local`, also
307
+ Antigravity): an uninstall for one of them removes the skills for all of them.
308
+
309
+ ---
310
+
275
311
  ## Troubleshooting
276
312
 
277
313
  | Symptom | Fix |
package/WORKFLOW.md CHANGED
@@ -161,7 +161,8 @@ Owned state routes by STATE.md without rerunning the helper. Reserve `classify`
161
161
  for read-only inspection; do not re-derive a verdict from a directory listing.
162
162
 
163
163
  For a newly initialized existing Git repository, the state router returns
164
- `bind-initial` while `STATE.branch` is null. The router fetches `origin/main`,
164
+ `bind-initial` while `STATE.branch` is null. The router fetches the recorded
165
+ [default branch](#default-branch) (`origin/main` in this document),
165
166
  runs `pipeline_git.py bind-initial` with that exact SHA, and records the
166
167
  returned `gsd-path/M00N` binding through `pipeline_state.py transition` before
167
168
  entering inspect or define. Build consumes this binding and never creates or
@@ -223,6 +224,20 @@ vetoes and corrections verbatim. Unresolved items remain tagged `RESEARCH` or
223
224
  first and presented as settled coverage for correction; the interview covers
224
225
  only its gaps and contradictions.
225
226
 
227
+ Once the success criteria are drafted, define runs the spec-reach probes
228
+ ([spec-probes.md](skills/gsd-path/references/spec-probes.md)). The edge probe
229
+ walks each criterion through a closed edge taxonomy (boundary, adjacency,
230
+ empty, encoding, ordering, precision, idempotency, concurrency) and records
231
+ the user's ruling per applicable edge in INTENT.md `## Edge coverage`:
232
+ `criterion SCn` (stated in a success criterion), `held-out` (a named test
233
+ pins it), or `dismissed` with a reason. The prohibition probe asks what each
234
+ criterion must never silently become and records kept items in
235
+ `## Prohibitions` as `criterion SCn`, `judgment`, or `dismissed`. Define
236
+ never rules on an edge itself. `scripts/check_handoffs.py intent` checks
237
+ both tables before every approval question, and the `define/done` transition
238
+ refuses an intent whose tables are incomplete. An INTENT.md without these
239
+ sections predates the probes and is not rechecked.
240
+
226
241
  At approval define classifies the milestone lane in INTENT.md: `quick`
227
242
  when scope fits at most two deliverable-sized tasks in one wave with no open
228
243
  questions and no cross-wave risk; otherwise `standard`. Milestone mode — a
@@ -343,6 +358,9 @@ by — which that task must own, in the same wave as the capability behind it.
343
358
  `check_handoffs.py final` then requires each of those criteria to name its
344
359
  surface in FINAL.md with the walkthrough as its Check, so a surface criterion
345
360
  cannot be marked `met` on internal test output.
361
+ Every `held-out` edge gets a PLAN.md `## Held-out checks` row naming the task
362
+ and test file; that test is in the task's files, its Verify runs it, and its
363
+ Acceptance criteria state the edge id and ruling.
346
364
  `scripts/check_handoffs.py plan` gates the table; `wave` and `final`
347
365
  require a verdict per owned SC id. Acceptance criteria,
348
366
  owned SCs, and Verify are the contract; the coder owns
@@ -417,7 +435,11 @@ surface walkthroughs, in its existing review. The runtime proves freshness and
417
435
  generates FINAL.md from that record. Dispatch an integration reviewer only when
418
436
  that proof is incomplete or stale; dispatch gap reviewers only for uncovered
419
437
  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
438
+ criterion `met`, `not-met`, or `unverifiable` with checked evidence. A criterion
439
+ tagged by a `held-out` edge or `judgment` prohibition is `met` only when its
440
+ evidence cites every tag id; otherwise the reviewer records `unverifiable`
441
+ (insufficient spec evidence) and `check_handoffs.py final` refuses a `met`
442
+ that skips a tag. Each gap
421
443
  reviewer records `pass` or `blocked` for its assigned end-to-end or cross-wave
422
444
  risk. List only genuine
423
445
  risks that could plausibly fail; never pad the list. The runtime
@@ -519,6 +541,49 @@ the subject and field body defined by its canonical phase contract; task-land
519
541
  fields live only in the
520
542
  [build contract](skills/gsd-path-build/SKILL.md).
521
543
 
544
+ ### Default branch
545
+
546
+ Path ships onto the default branch of `origin`. The name is not fixed.
547
+ `detect_project.py initialize` reads the local `refs/remotes/origin/HEAD` one
548
+ time and records the name in `STATE.md` as `default_branch`; an unset
549
+ `origin/HEAD` records `main`. Run `git remote set-head origin --auto` before
550
+ the first Path run so that the record is the default branch of the forge. A
551
+ `STATE.md` without the field means `main`, so older projects do not change.
552
+
553
+ This document writes `main` and `origin/main` for the recorded default branch.
554
+ In a project that records `master`, read them as `master` and `origin/master`:
555
+ the integration merge subject ends with `into master`, and the user's merge
556
+ request in `external-landing` mode targets `master`.
557
+
558
+ The record does not change after initialization. Bind, integrate, validate,
559
+ promotion, and the git guard read it. When the forge default no longer agrees
560
+ with the record, integration stops with `remote default must be <recorded>`.
561
+ A lookahead `next/STATE.md` must carry the same `default_branch` as the active
562
+ state, or promotion stops. Names in the reserved `gsd-path/`,
563
+ `gsd-path-integrate/`, and `gsd-path-task/` namespaces, and names with `#` or
564
+ a quote character, cannot be recorded.
565
+
566
+ In a multi-repo project, each repository has its own record. The coordinator
567
+ records its default branch in `STATE.md`, as above. `members.py add` reads the
568
+ local `refs/remotes/origin/HEAD` of the member one time and records the name
569
+ in the member's section of `.project/MEMBERS.md`, as `Default branch: <name>`;
570
+ an unset `origin/HEAD` records `main`. Run `git remote set-head origin --auto`
571
+ in the member before you add it. A section without the field means `main`, so
572
+ an older `MEMBERS.md` does not change. The members of one project can have
573
+ different default branches, and the coordinator default can differ from them.
574
+ The same name rules apply.
575
+
576
+ Build start, the task brief check, undo, the member pre-push guard, and member
577
+ close read the member record. The member bound branch starts at
578
+ `origin/<recorded>`, the member merge subject ends with `into <recorded>`, and
579
+ a member pull request targets `<recorded>`. When the remote default of the
580
+ member no longer agrees with the record, `members.py validate` and member
581
+ close stop with `remote default must be <recorded>`.
582
+
583
+ Not supported: a new repository that Path creates uses `main`. This includes
584
+ `members.py add --create`, which stops when the new repository has another
585
+ default branch.
586
+
522
587
  ### Integration
523
588
 
524
589
  After the postcommit validator passes, ship performs integration — the only
@@ -527,14 +592,15 @@ receives merges or back-merges, and the default checkout is never entered;
527
592
  the local default branch ref may lag origin, which is harmless because
528
593
  binding resolves remote SHAs. `STATE.integration_default` stores the project
529
594
  choice and `STATE.integration` stores the current milestone choice. Both are
530
- `direct` or `pull-request`; they may change only before build, and the current
595
+ `direct`, `pull-request`, or `external-landing`; they may change only before build, and the current
531
596
  milestone resets to the project default at the next handoff. Older v2 state
532
597
  without these fields means `direct`. `STATE.integration_source` is `default` or
533
598
  `milestone` so an explicit override remains distinct when its value happens to
534
599
  match the project default.
535
600
 
536
601
  Ship fetches origin, refreshes `origin/HEAD`, mirrors published milestone tags,
537
- and requires the remote default to be `main`. It then follows the locked mode:
602
+ and requires the remote default to be the recorded
603
+ [default branch](#default-branch). It then follows the locked mode:
538
604
 
539
605
  - `direct` creates a temporary named worktree (`gsd-path-integrate/M00N`) at
540
606
  the fetched remote-default SHA and merges the ship commit with `--no-ff`
@@ -550,6 +616,16 @@ and requires the remote default to be `main`. It then follows the locked mode:
550
616
  never enables auto-merge or merges the PR. After validation, Path creates the
551
617
  annotated milestone tag. The [ship contract](skills/gsd-path-ship/SKILL.md)
552
618
  owns the candidate, provenance, topology, publication, and recovery rules.
619
+ - `external-landing` is for an origin that is not GitHub.com, such as GitLab,
620
+ Gitea, or GitHub Enterprise Server, where a merge request is the only route
621
+ to `main`. It needs no forge CLI. Path publishes the bound branch at the
622
+ exact ship commit, does not push `main`, and returns `awaiting-merge` with
623
+ the required merge subject and body. You open the merge request in your
624
+ forge (for example with `glab`), let your pipeline run, and merge it with a
625
+ merge commit that has exactly that message. Do not squash, rebase, or
626
+ fast-forward. Your forge may delete the source branch after the merge. On
627
+ the next ship invocation, Path validates the two-parent merge on `main` and
628
+ creates the annotated milestone tag.
553
629
 
554
630
  Ship leaves the primary worktree and `STATE.branch` on the shipped local
555
631
  `gsd-path/M00N`; the router owns the later branch handoff. NNN always comes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengsd/gsd-path",
3
- "version": "1.4.0",
3
+ "version": "1.6.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",