@opengsd/gsd-path 1.0.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 (398) hide show
  1. package/AGENTS.md +397 -0
  2. package/DOCS.md +341 -0
  3. package/FULL.md +475 -0
  4. package/GUIDE.md +23 -0
  5. package/HOOKS.md +273 -0
  6. package/LICENSE +21 -0
  7. package/MIGRATE.md +100 -0
  8. package/QUICK.md +146 -0
  9. package/README.md +280 -0
  10. package/RUNTIME.md +229 -0
  11. package/UPDATE.md +196 -0
  12. package/WORKFLOW.md +683 -0
  13. package/package.json +80 -0
  14. package/platforms/claude/dispatch.md +63 -0
  15. package/platforms/copilot/dispatch.md +61 -0
  16. package/platforms/cursor/agent.md +17 -0
  17. package/platforms/cursor/dispatch.md +63 -0
  18. package/platforms/grok/dispatch.md +61 -0
  19. package/platforms/kimi/dispatch.md +64 -0
  20. package/platforms/kiro/dispatch.md +58 -0
  21. package/platforms/opencode/dispatch.md +62 -0
  22. package/platforms/qwen/dispatch.md +60 -0
  23. package/platforms/shared-agents/dispatch.md +131 -0
  24. package/plugin.json +14 -0
  25. package/scripts/_common.py +180 -0
  26. package/scripts/archive_milestone.py +2265 -0
  27. package/scripts/bootstrap_repository.py +710 -0
  28. package/scripts/build_state.py +854 -0
  29. package/scripts/check_docs_audit.py +463 -0
  30. package/scripts/check_handoffs.py +1855 -0
  31. package/scripts/check_task_briefs.py +376 -0
  32. package/scripts/check_update.py +93 -0
  33. package/scripts/core_hook_gate.py +34 -0
  34. package/scripts/core_hook_settings.py +119 -0
  35. package/scripts/detect_project.py +1517 -0
  36. package/scripts/discussion_records.py +619 -0
  37. package/scripts/discussion_validate.py +1321 -0
  38. package/scripts/dispatch_driver.py +1812 -0
  39. package/scripts/git_guard.py +759 -0
  40. package/scripts/guard_hook.py +2124 -0
  41. package/scripts/install.mjs +3239 -0
  42. package/scripts/install.py +3008 -0
  43. package/scripts/integration.py +1433 -0
  44. package/scripts/isolation.py +3538 -0
  45. package/scripts/lean_verification.py +256 -0
  46. package/scripts/loop_run.py +837 -0
  47. package/scripts/migrate_core.py +169 -0
  48. package/scripts/pipeline_diagnose.py +715 -0
  49. package/scripts/pipeline_git.py +940 -0
  50. package/scripts/pipeline_state.py +2291 -0
  51. package/scripts/pipeline_undo.py +1039 -0
  52. package/scripts/promote_lookahead.py +415 -0
  53. package/scripts/review_findings.py +714 -0
  54. package/scripts/review_panel.py +553 -0
  55. package/scripts/skill-resources.json +340 -0
  56. package/scripts/state_checkpoint.py +1039 -0
  57. package/scripts/state_promote.py +743 -0
  58. package/scripts/status_runtime.py +122 -0
  59. package/scripts/sync_skill_resources.py +259 -0
  60. package/scripts/token_budget.py +146 -0
  61. package/scripts/wizard.mjs +179 -0
  62. package/scripts/workflow_run.py +117 -0
  63. package/skills/gsd-path/BUILD.md +700 -0
  64. package/skills/gsd-path/DECIDE.md +115 -0
  65. package/skills/gsd-path/DEFINE.md +297 -0
  66. package/skills/gsd-path/DOCS-AUDIT.md +190 -0
  67. package/skills/gsd-path/INSPECT.md +167 -0
  68. package/skills/gsd-path/PLAN.md +411 -0
  69. package/skills/gsd-path/RESEARCH.md +159 -0
  70. package/skills/gsd-path/ROADMAP.md +215 -0
  71. package/skills/gsd-path/SHIP.md +412 -0
  72. package/skills/gsd-path/SKILL.md +471 -0
  73. package/skills/gsd-path/agents/openai.yaml +6 -0
  74. package/skills/gsd-path/references/codebase-mapper.md +52 -0
  75. package/skills/gsd-path/references/coder.md +90 -0
  76. package/skills/gsd-path/references/decider.md +36 -0
  77. package/skills/gsd-path/references/dispatch.md +131 -0
  78. package/skills/gsd-path/references/docs-auditor.md +60 -0
  79. package/skills/gsd-path/references/planner.md +104 -0
  80. package/skills/gsd-path/references/researcher.md +42 -0
  81. package/skills/gsd-path/references/reviewer.md +188 -0
  82. package/skills/gsd-path/references/roadmapper.md +48 -0
  83. package/skills/gsd-path/scripts/_common.py +180 -0
  84. package/skills/gsd-path/scripts/archive_milestone.py +2265 -0
  85. package/skills/gsd-path/scripts/bootstrap_repository.py +710 -0
  86. package/skills/gsd-path/scripts/build_state.py +854 -0
  87. package/skills/gsd-path/scripts/check_docs_audit.py +463 -0
  88. package/skills/gsd-path/scripts/check_handoffs.py +1855 -0
  89. package/skills/gsd-path/scripts/check_task_briefs.py +376 -0
  90. package/skills/gsd-path/scripts/check_update.py +93 -0
  91. package/skills/gsd-path/scripts/detect_project.py +1517 -0
  92. package/skills/gsd-path/scripts/discussion_records.py +619 -0
  93. package/skills/gsd-path/scripts/discussion_validate.py +1321 -0
  94. package/skills/gsd-path/scripts/dispatch_driver.py +1812 -0
  95. package/skills/gsd-path/scripts/integration.py +1433 -0
  96. package/skills/gsd-path/scripts/isolation.py +3538 -0
  97. package/skills/gsd-path/scripts/lean_verification.py +256 -0
  98. package/skills/gsd-path/scripts/loop_run.py +837 -0
  99. package/skills/gsd-path/scripts/pipeline_git.py +940 -0
  100. package/skills/gsd-path/scripts/pipeline_state.py +2291 -0
  101. package/skills/gsd-path/scripts/promote_lookahead.py +415 -0
  102. package/skills/gsd-path/scripts/review_findings.py +714 -0
  103. package/skills/gsd-path/scripts/review_panel.py +553 -0
  104. package/skills/gsd-path/scripts/state_checkpoint.py +1039 -0
  105. package/skills/gsd-path/scripts/state_promote.py +743 -0
  106. package/skills/gsd-path/scripts/token_budget.py +146 -0
  107. package/skills/gsd-path/scripts/workflow_run.py +117 -0
  108. package/skills/gsd-path/templates/answers.md +29 -0
  109. package/skills/gsd-path/templates/archive-manifest.md +37 -0
  110. package/skills/gsd-path/templates/charter.md +50 -0
  111. package/skills/gsd-path/templates/codebase.md +46 -0
  112. package/skills/gsd-path/templates/dialogue.md +21 -0
  113. package/skills/gsd-path/templates/docs-audit.md +69 -0
  114. package/skills/gsd-path/templates/evidence.md +24 -0
  115. package/skills/gsd-path/templates/final-review.md +27 -0
  116. package/skills/gsd-path/templates/gap-review.md +20 -0
  117. package/skills/gsd-path/templates/intent.md +98 -0
  118. package/skills/gsd-path/templates/loop.md +59 -0
  119. package/skills/gsd-path/templates/patch-findings.md +16 -0
  120. package/skills/gsd-path/templates/plan-panel.md +25 -0
  121. package/skills/gsd-path/templates/plan.md +89 -0
  122. package/skills/gsd-path/templates/repository.md +16 -0
  123. package/skills/gsd-path/templates/research-handoff.md +25 -0
  124. package/skills/gsd-path/templates/roadmap.md +38 -0
  125. package/skills/gsd-path/templates/skeptic.md +36 -0
  126. package/skills/gsd-path/templates/state.md +27 -0
  127. package/skills/gsd-path/templates/synthesis.md +36 -0
  128. package/skills/gsd-path/templates/task.md +74 -0
  129. package/skills/gsd-path/templates/wave-panel.md +25 -0
  130. package/skills/gsd-path/templates/wave-review.md +64 -0
  131. package/skills/gsd-path-build/SKILL.md +700 -0
  132. package/skills/gsd-path-build/agents/openai.yaml +6 -0
  133. package/skills/gsd-path-build/references/coder.md +90 -0
  134. package/skills/gsd-path-build/references/dispatch.md +131 -0
  135. package/skills/gsd-path-build/references/reviewer.md +188 -0
  136. package/skills/gsd-path-build/scripts/_common.py +180 -0
  137. package/skills/gsd-path-build/scripts/archive_milestone.py +2265 -0
  138. package/skills/gsd-path-build/scripts/build_state.py +854 -0
  139. package/skills/gsd-path-build/scripts/check_handoffs.py +1855 -0
  140. package/skills/gsd-path-build/scripts/check_task_briefs.py +376 -0
  141. package/skills/gsd-path-build/scripts/discussion_records.py +619 -0
  142. package/skills/gsd-path-build/scripts/discussion_validate.py +1321 -0
  143. package/skills/gsd-path-build/scripts/dispatch_driver.py +1812 -0
  144. package/skills/gsd-path-build/scripts/integration.py +1433 -0
  145. package/skills/gsd-path-build/scripts/isolation.py +3538 -0
  146. package/skills/gsd-path-build/scripts/loop_run.py +837 -0
  147. package/skills/gsd-path-build/scripts/pipeline_git.py +940 -0
  148. package/skills/gsd-path-build/scripts/pipeline_state.py +2291 -0
  149. package/skills/gsd-path-build/scripts/review_findings.py +714 -0
  150. package/skills/gsd-path-build/scripts/review_panel.py +553 -0
  151. package/skills/gsd-path-build/scripts/state_checkpoint.py +1039 -0
  152. package/skills/gsd-path-build/scripts/state_promote.py +743 -0
  153. package/skills/gsd-path-build/scripts/token_budget.py +146 -0
  154. package/skills/gsd-path-build/scripts/workflow_run.py +117 -0
  155. package/skills/gsd-path-build/templates/skeptic.md +36 -0
  156. package/skills/gsd-path-build/templates/task.md +74 -0
  157. package/skills/gsd-path-build/templates/wave-panel.md +25 -0
  158. package/skills/gsd-path-build/templates/wave-review.md +64 -0
  159. package/skills/gsd-path-decide/SKILL.md +115 -0
  160. package/skills/gsd-path-decide/agents/openai.yaml +6 -0
  161. package/skills/gsd-path-decide/references/decider.md +36 -0
  162. package/skills/gsd-path-decide/references/dispatch.md +131 -0
  163. package/skills/gsd-path-decide/scripts/_common.py +180 -0
  164. package/skills/gsd-path-decide/scripts/check_handoffs.py +1855 -0
  165. package/skills/gsd-path-decide/scripts/check_task_briefs.py +376 -0
  166. package/skills/gsd-path-decide/scripts/discussion_records.py +619 -0
  167. package/skills/gsd-path-decide/scripts/isolation.py +3538 -0
  168. package/skills/gsd-path-decide/scripts/pipeline_git.py +940 -0
  169. package/skills/gsd-path-decide/scripts/pipeline_state.py +2291 -0
  170. package/skills/gsd-path-decide/scripts/state_checkpoint.py +1039 -0
  171. package/skills/gsd-path-decide/scripts/state_promote.py +743 -0
  172. package/skills/gsd-path-decide/templates/synthesis.md +36 -0
  173. package/skills/gsd-path-define/SKILL.md +297 -0
  174. package/skills/gsd-path-define/agents/openai.yaml +6 -0
  175. package/skills/gsd-path-define/scripts/_common.py +180 -0
  176. package/skills/gsd-path-define/scripts/check_handoffs.py +1855 -0
  177. package/skills/gsd-path-define/scripts/check_task_briefs.py +376 -0
  178. package/skills/gsd-path-define/scripts/detect_project.py +1517 -0
  179. package/skills/gsd-path-define/scripts/discussion_records.py +619 -0
  180. package/skills/gsd-path-define/scripts/isolation.py +3538 -0
  181. package/skills/gsd-path-define/scripts/pipeline_git.py +940 -0
  182. package/skills/gsd-path-define/scripts/pipeline_state.py +2291 -0
  183. package/skills/gsd-path-define/scripts/state_checkpoint.py +1039 -0
  184. package/skills/gsd-path-define/scripts/state_promote.py +743 -0
  185. package/skills/gsd-path-define/templates/charter.md +50 -0
  186. package/skills/gsd-path-define/templates/intent.md +98 -0
  187. package/skills/gsd-path-define/templates/state.md +27 -0
  188. package/skills/gsd-path-discuss/SKILL.md +162 -0
  189. package/skills/gsd-path-discuss/agents/openai.yaml +6 -0
  190. package/skills/gsd-path-discuss/scripts/_common.py +180 -0
  191. package/skills/gsd-path-discuss/scripts/discussion_records.py +619 -0
  192. package/skills/gsd-path-discuss/templates/answers.md +29 -0
  193. package/skills/gsd-path-discuss/templates/dialogue.md +21 -0
  194. package/skills/gsd-path-docs-audit/SKILL.md +190 -0
  195. package/skills/gsd-path-docs-audit/agents/openai.yaml +6 -0
  196. package/skills/gsd-path-docs-audit/references/dispatch.md +131 -0
  197. package/skills/gsd-path-docs-audit/references/docs-auditor.md +60 -0
  198. package/skills/gsd-path-docs-audit/scripts/_common.py +180 -0
  199. package/skills/gsd-path-docs-audit/scripts/check_docs_audit.py +463 -0
  200. package/skills/gsd-path-docs-audit/scripts/check_handoffs.py +1855 -0
  201. package/skills/gsd-path-docs-audit/scripts/check_task_briefs.py +376 -0
  202. package/skills/gsd-path-docs-audit/scripts/discussion_records.py +619 -0
  203. package/skills/gsd-path-docs-audit/scripts/isolation.py +3538 -0
  204. package/skills/gsd-path-docs-audit/scripts/pipeline_git.py +940 -0
  205. package/skills/gsd-path-docs-audit/scripts/pipeline_state.py +2291 -0
  206. package/skills/gsd-path-docs-audit/scripts/state_checkpoint.py +1039 -0
  207. package/skills/gsd-path-docs-audit/scripts/state_promote.py +743 -0
  208. package/skills/gsd-path-docs-audit/templates/docs-audit.md +69 -0
  209. package/skills/gsd-path-forensics/SKILL.md +39 -0
  210. package/skills/gsd-path-forensics/agents/openai.yaml +6 -0
  211. package/skills/gsd-path-forensics/scripts/_common.py +180 -0
  212. package/skills/gsd-path-forensics/scripts/discussion_records.py +619 -0
  213. package/skills/gsd-path-forensics/scripts/pipeline_diagnose.py +715 -0
  214. package/skills/gsd-path-forensics/scripts/pipeline_undo.py +1039 -0
  215. package/skills/gsd-path-inspect/SKILL.md +167 -0
  216. package/skills/gsd-path-inspect/agents/openai.yaml +6 -0
  217. package/skills/gsd-path-inspect/references/codebase-mapper.md +52 -0
  218. package/skills/gsd-path-inspect/references/dispatch.md +131 -0
  219. package/skills/gsd-path-inspect/references/docs-auditor.md +60 -0
  220. package/skills/gsd-path-inspect/scripts/_common.py +180 -0
  221. package/skills/gsd-path-inspect/scripts/check_docs_audit.py +463 -0
  222. package/skills/gsd-path-inspect/scripts/check_handoffs.py +1855 -0
  223. package/skills/gsd-path-inspect/scripts/check_task_briefs.py +376 -0
  224. package/skills/gsd-path-inspect/scripts/detect_project.py +1517 -0
  225. package/skills/gsd-path-inspect/scripts/discussion_records.py +619 -0
  226. package/skills/gsd-path-inspect/scripts/isolation.py +3538 -0
  227. package/skills/gsd-path-inspect/scripts/pipeline_git.py +940 -0
  228. package/skills/gsd-path-inspect/scripts/pipeline_state.py +2291 -0
  229. package/skills/gsd-path-inspect/scripts/state_checkpoint.py +1039 -0
  230. package/skills/gsd-path-inspect/scripts/state_promote.py +743 -0
  231. package/skills/gsd-path-inspect/templates/codebase.md +46 -0
  232. package/skills/gsd-path-inspect/templates/docs-audit.md +69 -0
  233. package/skills/gsd-path-inspect/templates/state.md +27 -0
  234. package/skills/gsd-path-loop/SKILL.md +98 -0
  235. package/skills/gsd-path-loop/agents/openai.yaml +6 -0
  236. package/skills/gsd-path-loop/examples/ci-repair.LOOP.md +61 -0
  237. package/skills/gsd-path-loop/scripts/_common.py +180 -0
  238. package/skills/gsd-path-loop/scripts/discussion_records.py +619 -0
  239. package/skills/gsd-path-loop/scripts/loop_run.py +837 -0
  240. package/skills/gsd-path-loop/templates/loop.md +59 -0
  241. package/skills/gsd-path-migrate/SKILL.md +134 -0
  242. package/skills/gsd-path-migrate/agents/openai.yaml +6 -0
  243. package/skills/gsd-path-migrate/scripts/core_hook_gate.py +34 -0
  244. package/skills/gsd-path-migrate/scripts/core_hook_settings.py +119 -0
  245. package/skills/gsd-path-migrate/scripts/discussion_records.py +619 -0
  246. package/skills/gsd-path-migrate/scripts/migrate_core.py +169 -0
  247. package/skills/gsd-path-plan/SKILL.md +411 -0
  248. package/skills/gsd-path-plan/agents/openai.yaml +6 -0
  249. package/skills/gsd-path-plan/references/dispatch.md +131 -0
  250. package/skills/gsd-path-plan/references/planner.md +104 -0
  251. package/skills/gsd-path-plan/scripts/_common.py +180 -0
  252. package/skills/gsd-path-plan/scripts/check_handoffs.py +1855 -0
  253. package/skills/gsd-path-plan/scripts/check_task_briefs.py +376 -0
  254. package/skills/gsd-path-plan/scripts/discussion_records.py +619 -0
  255. package/skills/gsd-path-plan/scripts/isolation.py +3538 -0
  256. package/skills/gsd-path-plan/scripts/pipeline_git.py +940 -0
  257. package/skills/gsd-path-plan/scripts/pipeline_state.py +2291 -0
  258. package/skills/gsd-path-plan/scripts/review_panel.py +553 -0
  259. package/skills/gsd-path-plan/scripts/state_checkpoint.py +1039 -0
  260. package/skills/gsd-path-plan/scripts/state_promote.py +743 -0
  261. package/skills/gsd-path-plan/scripts/workflow_run.py +117 -0
  262. package/skills/gsd-path-plan/templates/patch-findings.md +16 -0
  263. package/skills/gsd-path-plan/templates/plan-panel.md +25 -0
  264. package/skills/gsd-path-plan/templates/plan.md +89 -0
  265. package/skills/gsd-path-plan/templates/task.md +74 -0
  266. package/skills/gsd-path-research/SKILL.md +159 -0
  267. package/skills/gsd-path-research/agents/openai.yaml +6 -0
  268. package/skills/gsd-path-research/references/dispatch.md +131 -0
  269. package/skills/gsd-path-research/references/researcher.md +42 -0
  270. package/skills/gsd-path-research/scripts/_common.py +180 -0
  271. package/skills/gsd-path-research/scripts/check_handoffs.py +1855 -0
  272. package/skills/gsd-path-research/scripts/check_task_briefs.py +376 -0
  273. package/skills/gsd-path-research/scripts/discussion_records.py +619 -0
  274. package/skills/gsd-path-research/scripts/isolation.py +3538 -0
  275. package/skills/gsd-path-research/scripts/pipeline_git.py +940 -0
  276. package/skills/gsd-path-research/scripts/pipeline_state.py +2291 -0
  277. package/skills/gsd-path-research/scripts/state_checkpoint.py +1039 -0
  278. package/skills/gsd-path-research/scripts/state_promote.py +743 -0
  279. package/skills/gsd-path-research/templates/evidence.md +24 -0
  280. package/skills/gsd-path-research/templates/research-handoff.md +25 -0
  281. package/skills/gsd-path-roadmap/SKILL.md +215 -0
  282. package/skills/gsd-path-roadmap/agents/openai.yaml +6 -0
  283. package/skills/gsd-path-roadmap/references/dispatch.md +131 -0
  284. package/skills/gsd-path-roadmap/references/roadmapper.md +48 -0
  285. package/skills/gsd-path-roadmap/scripts/_common.py +180 -0
  286. package/skills/gsd-path-roadmap/scripts/archive_milestone.py +2265 -0
  287. package/skills/gsd-path-roadmap/scripts/check_handoffs.py +1855 -0
  288. package/skills/gsd-path-roadmap/scripts/check_task_briefs.py +376 -0
  289. package/skills/gsd-path-roadmap/scripts/detect_project.py +1517 -0
  290. package/skills/gsd-path-roadmap/scripts/discussion_records.py +619 -0
  291. package/skills/gsd-path-roadmap/scripts/discussion_validate.py +1321 -0
  292. package/skills/gsd-path-roadmap/scripts/integration.py +1433 -0
  293. package/skills/gsd-path-roadmap/scripts/isolation.py +3538 -0
  294. package/skills/gsd-path-roadmap/scripts/pipeline_git.py +940 -0
  295. package/skills/gsd-path-roadmap/scripts/pipeline_state.py +2291 -0
  296. package/skills/gsd-path-roadmap/scripts/promote_lookahead.py +415 -0
  297. package/skills/gsd-path-roadmap/scripts/review_panel.py +553 -0
  298. package/skills/gsd-path-roadmap/scripts/state_checkpoint.py +1039 -0
  299. package/skills/gsd-path-roadmap/scripts/state_promote.py +743 -0
  300. package/skills/gsd-path-roadmap/templates/roadmap.md +38 -0
  301. package/skills/gsd-path-ship/SKILL.md +412 -0
  302. package/skills/gsd-path-ship/agents/openai.yaml +6 -0
  303. package/skills/gsd-path-ship/references/dispatch.md +131 -0
  304. package/skills/gsd-path-ship/references/reviewer.md +188 -0
  305. package/skills/gsd-path-ship/scripts/_common.py +180 -0
  306. package/skills/gsd-path-ship/scripts/archive_milestone.py +2265 -0
  307. package/skills/gsd-path-ship/scripts/build_state.py +854 -0
  308. package/skills/gsd-path-ship/scripts/check_handoffs.py +1855 -0
  309. package/skills/gsd-path-ship/scripts/check_task_briefs.py +376 -0
  310. package/skills/gsd-path-ship/scripts/discussion_records.py +619 -0
  311. package/skills/gsd-path-ship/scripts/discussion_validate.py +1321 -0
  312. package/skills/gsd-path-ship/scripts/integration.py +1433 -0
  313. package/skills/gsd-path-ship/scripts/isolation.py +3538 -0
  314. package/skills/gsd-path-ship/scripts/lean_verification.py +256 -0
  315. package/skills/gsd-path-ship/scripts/pipeline_git.py +940 -0
  316. package/skills/gsd-path-ship/scripts/pipeline_state.py +2291 -0
  317. package/skills/gsd-path-ship/scripts/review_panel.py +553 -0
  318. package/skills/gsd-path-ship/scripts/state_checkpoint.py +1039 -0
  319. package/skills/gsd-path-ship/scripts/state_promote.py +743 -0
  320. package/skills/gsd-path-ship/scripts/workflow_run.py +117 -0
  321. package/skills/gsd-path-ship/templates/archive-manifest.md +37 -0
  322. package/skills/gsd-path-ship/templates/final-review.md +27 -0
  323. package/skills/gsd-path-ship/templates/gap-review.md +20 -0
  324. package/skills/gsd-path-ship/templates/patch-findings.md +16 -0
  325. package/skills/gsd-path-ship/templates/wave-review.md +64 -0
  326. package/skills/gsd-path-undo/SKILL.md +45 -0
  327. package/skills/gsd-path-undo/agents/openai.yaml +6 -0
  328. package/skills/gsd-path-undo/scripts/_common.py +180 -0
  329. package/skills/gsd-path-undo/scripts/discussion_records.py +619 -0
  330. package/skills/gsd-path-undo/scripts/pipeline_undo.py +1039 -0
  331. package/skills/path/BUILD.md +700 -0
  332. package/skills/path/DECIDE.md +115 -0
  333. package/skills/path/DEFINE.md +297 -0
  334. package/skills/path/DOCS-AUDIT.md +190 -0
  335. package/skills/path/INSPECT.md +167 -0
  336. package/skills/path/PLAN.md +411 -0
  337. package/skills/path/RESEARCH.md +159 -0
  338. package/skills/path/ROADMAP.md +215 -0
  339. package/skills/path/SHIP.md +412 -0
  340. package/skills/path/SKILL.md +471 -0
  341. package/skills/path/agents/openai.yaml +6 -0
  342. package/skills/path/references/codebase-mapper.md +52 -0
  343. package/skills/path/references/coder.md +90 -0
  344. package/skills/path/references/decider.md +36 -0
  345. package/skills/path/references/dispatch.md +131 -0
  346. package/skills/path/references/docs-auditor.md +60 -0
  347. package/skills/path/references/planner.md +104 -0
  348. package/skills/path/references/researcher.md +42 -0
  349. package/skills/path/references/reviewer.md +188 -0
  350. package/skills/path/references/roadmapper.md +48 -0
  351. package/skills/path/scripts/_common.py +180 -0
  352. package/skills/path/scripts/archive_milestone.py +2265 -0
  353. package/skills/path/scripts/bootstrap_repository.py +710 -0
  354. package/skills/path/scripts/build_state.py +854 -0
  355. package/skills/path/scripts/check_docs_audit.py +463 -0
  356. package/skills/path/scripts/check_handoffs.py +1855 -0
  357. package/skills/path/scripts/check_task_briefs.py +376 -0
  358. package/skills/path/scripts/check_update.py +93 -0
  359. package/skills/path/scripts/detect_project.py +1517 -0
  360. package/skills/path/scripts/discussion_records.py +619 -0
  361. package/skills/path/scripts/discussion_validate.py +1321 -0
  362. package/skills/path/scripts/dispatch_driver.py +1812 -0
  363. package/skills/path/scripts/integration.py +1433 -0
  364. package/skills/path/scripts/isolation.py +3538 -0
  365. package/skills/path/scripts/lean_verification.py +256 -0
  366. package/skills/path/scripts/loop_run.py +837 -0
  367. package/skills/path/scripts/pipeline_git.py +940 -0
  368. package/skills/path/scripts/pipeline_state.py +2291 -0
  369. package/skills/path/scripts/promote_lookahead.py +415 -0
  370. package/skills/path/scripts/review_findings.py +714 -0
  371. package/skills/path/scripts/review_panel.py +553 -0
  372. package/skills/path/scripts/state_checkpoint.py +1039 -0
  373. package/skills/path/scripts/state_promote.py +743 -0
  374. package/skills/path/scripts/token_budget.py +146 -0
  375. package/skills/path/scripts/workflow_run.py +117 -0
  376. package/skills/path/templates/answers.md +29 -0
  377. package/skills/path/templates/archive-manifest.md +37 -0
  378. package/skills/path/templates/charter.md +50 -0
  379. package/skills/path/templates/codebase.md +46 -0
  380. package/skills/path/templates/dialogue.md +21 -0
  381. package/skills/path/templates/docs-audit.md +69 -0
  382. package/skills/path/templates/evidence.md +24 -0
  383. package/skills/path/templates/final-review.md +27 -0
  384. package/skills/path/templates/gap-review.md +20 -0
  385. package/skills/path/templates/intent.md +98 -0
  386. package/skills/path/templates/loop.md +59 -0
  387. package/skills/path/templates/patch-findings.md +16 -0
  388. package/skills/path/templates/plan-panel.md +25 -0
  389. package/skills/path/templates/plan.md +89 -0
  390. package/skills/path/templates/repository.md +16 -0
  391. package/skills/path/templates/research-handoff.md +25 -0
  392. package/skills/path/templates/roadmap.md +38 -0
  393. package/skills/path/templates/skeptic.md +36 -0
  394. package/skills/path/templates/state.md +27 -0
  395. package/skills/path/templates/synthesis.md +36 -0
  396. package/skills/path/templates/task.md +74 -0
  397. package/skills/path/templates/wave-panel.md +25 -0
  398. package/skills/path/templates/wave-review.md +64 -0
package/README.md ADDED
@@ -0,0 +1,280 @@
1
+ # GSD Path
2
+
3
+ A disk-backed project pipeline for AI coding agents. It turns a raw idea into
4
+ shipped code through gated phases — inspect, define, research, decide,
5
+ roadmap, plan, build, and ship — with every handoff written to `.project/`
6
+ so any session can resume from disk alone. A single milestone or a full
7
+ multi-milestone program: program flow adds a charter and roadmap above the
8
+ milestone loop. While a milestone builds, the next one can be planned in
9
+ parallel under `.project/next/` (lookahead); a building milestone can also be
10
+ abandoned on an explicit ruling, archiving its partial work for a re-slice.
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.
17
+
18
+ ## Documentation
19
+
20
+ **Start at [DOCS.md](DOCS.md)** — install, use, understand, and update in one hub.
21
+
22
+ | Guide | Use when |
23
+ | --- | --- |
24
+ | **[DOCS.md](DOCS.md)** | Full map + FAQ (recommended) |
25
+ | **[QUICK.md](QUICK.md)** | First run checklist (~5 min) |
26
+ | **[FULL.md](FULL.md)** | Complete install-to-ship walkthrough |
27
+ | **[UPDATE.md](UPDATE.md)** | Refresh skills, hooks, or contracts |
28
+ | [WORKFLOW.md](WORKFLOW.md) | Phase-by-phase agent SOP |
29
+ | [HOOKS.md](HOOKS.md) | Optional archive/git guard hooks |
30
+ | [GUIDE.md](GUIDE.md) | Pointer to the guides above |
31
+
32
+ ```bash
33
+ # New user
34
+ node scripts/install.mjs --all --dry-run && node scripts/install.mjs --all
35
+ cd your-repo && node scripts/install.mjs --all --project "$(pwd)"
36
+ # In agent: invoke the router (see Install summary below)
37
+
38
+ # Already installed
39
+ node scripts/install.mjs --update
40
+ cd your-repo && node scripts/install.mjs --update --project "$(pwd)" # also refresh .gsd-path/
41
+ ```
42
+
43
+ Interactive: `npx @opengsd/gsd-path` with no flags opens the OpenGSD wizard (pick hosts, scope, contracts, hooks; dry-run first)
44
+
45
+ npm (once published to npm): `npx @opengsd/gsd-path --all` · Help: `node scripts/install.mjs --help`
46
+
47
+ ## Skills
48
+
49
+ Canonical explicit-only skills are installed.
50
+ Invoke the **router** by default; use phase skills for one step only, or use a
51
+ sidecar to discuss, diagnose, or undo without advancing.
52
+
53
+ | Skill | Role |
54
+ | --- | --- |
55
+ | `path` | Router short name — same as `gsd-path` (`/path`, `$path`) |
56
+ | `gsd-path` | Router — detects state, runs next phase (`status` reports without advancing) |
57
+ | `gsd-path-inspect` | Phase 0 — brownfield codebase map + doc audit |
58
+ | `gsd-path-define` | Phase 1 — intent definition |
59
+ | `gsd-path-research` | Phase 2 — parallel evidence researchers |
60
+ | `gsd-path-decide` | Phase 3 — evidence → decisions |
61
+ | `gsd-path-roadmap` | Phase 3.5 — program: slice charter into milestone roadmap |
62
+ | `gsd-path-plan` | Phase 4 — waves and task contracts |
63
+ | `gsd-path-build` | Phase 5 — parallel coders + serial task landing |
64
+ | `gsd-path-ship` | Phase 6 — verify, approve, archive, and ship |
65
+ | `gsd-path-discuss` | Any-phase discussion with durable dialogue and answers |
66
+ | `gsd-path-docs-audit` | Standalone doc-vs-code drift check |
67
+ | `gsd-path-loop` | Standalone bounded loop runner driven by a LOOP.md spec |
68
+ | `gsd-path-forensics` | Read-only stuck-pipeline diagnosis |
69
+ | `gsd-path-migrate` | [Import GSD Core work and review hook coexistence](MIGRATE.md) |
70
+ | `gsd-path-undo` | Helper-owned undo of unpublished pipeline work |
71
+
72
+ See [invocation by host](#install-summary). Phase names keep the `gsd-path-` prefix.
73
+
74
+ ## The flow
75
+
76
+ ```mermaid
77
+ flowchart TD
78
+ R{"gsd-path router"} --> I["0 · inspect (brownfield)"]
79
+ R --> D["1 · define → INTENT.md / CHARTER.md"]
80
+ I --> D
81
+ D -->|"standard / program lane"| RE["2 · research → evidence files"]
82
+ D -->|"quick lane"| P
83
+ RE --> DE["3 · decide → SYNTHESIS.md"]
84
+ DE -->|"program scope"| RM["3.5 · roadmap → ROADMAP.md"]
85
+ RM -->|"approved → checkpoint commit"| DM["define (milestone mode)"]
86
+ DM --> MQ{"roadmap entry has open questions?"}
87
+ MQ -->|"yes"| RE
88
+ MQ -->|"no"| P["4 · plan → PLAN.md + task contracts"]
89
+ DE -->|"milestone / single-project scope"| P
90
+ P -->|"approved → checkpoint commit"| B["5 · build"]
91
+ B --> W{"wave loop"}
92
+ W -->|"briefs linted at base SHA"| C["parallel coders, isolated worktrees"]
93
+ C -->|"streaming: dependents dispatch as deps land"| V{"wave review"}
94
+ V -->|"full — or deep: contract + adversarial lenses"| F{"verdict"}
95
+ F -->|"blocked → criterion triage"| W
96
+ F -->|"pass → next wave"| W
97
+ F -->|"all waves pass"| S["6 · ship — final review"]
98
+ C -.->|"NEEDS-ORCHESTRATOR question"| O["orchestrator answers from artifacts, or asks you"]
99
+ O -.-> C
100
+ B -.->|"lookahead: next milestone in .project/next/"| MI["inspect current code + docs"]
101
+ MI --> MB["define (milestone + brownfield mode)"]
102
+ MB --> MQ
103
+ B -->|"explicit ruling: abandon milestone"| AB["archive partial work → re-slice roadmap"]
104
+ AB --> RM
105
+ S -->|"approved → archive + ship commit"| MG["direct merge or user-merged PR + tag"]
106
+ MG -->|"validate-integrated passes"| A["shipped"]
107
+ A -->|"another program milestone → bind next gsd-path/M00N"| MI
108
+ A -->|"single-milestone restart → bind next gsd-path/M00N"| I
109
+ A -->|"program complete"| PC["stop"]
110
+ ```
111
+
112
+ For an existing Git repository, initialization writes STATE.md first. Before
113
+ entering inspect or define, the router fetches `origin/main`, creates or adopts
114
+ `gsd-path/M001` there, and records the binding in state. Build only uses that
115
+ recorded milestone branch; it never creates or selects one. See the
116
+ [phase workflow](WORKFLOW.md#phase-0--inspect-gsd-path-inspect).
117
+
118
+ At any non-shipped phase, `/gsd-path-discuss` (or `$gsd-path-discuss` in
119
+ Codex) records the conversation in `.project/discuss/` without advancing or
120
+ editing the phase handoff. Required decisions carry a named owner and remain
121
+ pending until that phase records how it applied them; the router will not
122
+ advance past an unresolved required follow-up.
123
+
124
+ **Build, under the hood:**
125
+
126
+ - Task briefs are linted against the real base tree (`check_task_briefs.py`)
127
+ before any agent is dispatched, and every coder runs a preflight — paths
128
+ exist or are declared, interface contracts match siblings verbatim — so a
129
+ wrong map dies in the first minute.
130
+ - Task isolation and landing go through `isolation.py`: named branches only,
131
+ never a detached HEAD. A serial dispatch round works on the bound branch;
132
+ a parallel round gets `gsd-path-task/<id>`.
133
+ - Dispatch streams: a dependent task starts the moment its dependencies
134
+ land, never idling behind unrelated in-flight tasks. Task landing
135
+ stays serial and every Verify reruns in the isolated worktree.
136
+ - Wave review depth is `full`, `verify-only`, or `deep`; findings carry
137
+ forward by criterion across fix cycles. Each depth's writer and evidence
138
+ rules live in the canonical [build contract](skills/gsd-path-build/SKILL.md).
139
+ Optional skeptic triage for blocked `deep` reviews is defined in
140
+ [WORKFLOW.md](WORKFLOW.md#phase-4--plan-gsd-path-plan).
141
+ - A coder with an ambiguous contract asks `NEEDS-ORCHESTRATOR` instead of
142
+ guessing; on hosts with a blocking ask/reply channel the worker stays
143
+ alive for the answer.
144
+ - Roadmap and plan approvals are checkpoint commits, so planning work never
145
+ sits uncommitted until build.
146
+
147
+ Invoke the router explicitly to start or advance a phase. Once a project has an
148
+ owned `.project/STATE.md`, a plain prompt such as “continue the project” answers
149
+ read-only with the current handoff and names the next skill; it never advances
150
+ a phase or edits state. Phase skills stop at their handoff; invoke the router
151
+ again to continue.
152
+ The discussion sidecar is the exception: it can be invoked at any non-shipped
153
+ phase and returns only a durable conversation record.
154
+
155
+ The router classifies **brownfield**, **greenfield**, owned, and orphaned
156
+ project state before routing; see [DOCS.md](DOCS.md#faq). Brownfield →
157
+ inspect then define. Greenfield → define. It does not infer the verdict from
158
+ a directory listing.
159
+ **Quick lane** (tiny scope) may skip research/decide — see [FULL.md](FULL.md).
160
+
161
+ For an explicit new-GitHub request, the router previews the owner, visibility,
162
+ default checkout, `gsd-path/M001` branch, and sibling linked worktree. A
163
+ journaled helper performs the approved creation and safely resumes a matching
164
+ partial remote/clone/worktree transaction; the default checkout stays clean.
165
+
166
+ ## Handoff contract
167
+
168
+ ```text
169
+ .project/
170
+ STATE.md phase, branch, archive transaction
171
+ REPOSITORY.md persistent new-GitHub checkout/worktree binding
172
+ CHARTER.md program scope and vetoes; never archives
173
+ ROADMAP.md milestone slicing; never archives
174
+ SYNTHESIS.md program decisions (top level); never archives
175
+ next/ lookahead track: next milestone's artifacts during build
176
+ intent/INTENT.md goal, vetoes, constraints, surfaces
177
+ research/
178
+ evidence-codebase.md brownfield ground truth (inspect)
179
+ DOCS-AUDIT.md doc verdicts + remediation queue
180
+ RESEARCH.md dispatch manifest (dimensions researched/skipped)
181
+ evidence-domain.md domain evidence
182
+ evidence-stack.md stack evidence
183
+ evidence-pitfalls.md pitfalls evidence
184
+ evidence-similar.md similar projects evidence
185
+ SYNTHESIS.md gated decisions
186
+ plan/PLAN.md waves, dependencies, surface contract, verify
187
+ tasks/T###-slug.md task contract: files, interface, criteria, base SHA, status
188
+ review/ review evidence; see WORKFLOW.md#handoff-contract
189
+ discuss/DIALOGUE.md any-phase dialogue transcript
190
+ discuss/ANSWERS.md durable discussion answers and decisions
191
+ LESSONS.md optional carried-forward planning lessons
192
+ archive/<NNN>-<slug>/ shipped milestones (read-only after ship)
193
+ ```
194
+
195
+ Shipping moves milestone artifacts into `archive/` with a MANIFEST. It then
196
+ either merges the milestone's `gsd-path/M00N` branch into `main` directly or
197
+ opens/reuses a GitHub PR and waits for its user-controlled merge. Path reports
198
+ shipped only after a two-parent merge and the milestone tag validate. Before
199
+ any next-milestone files change, the router binds
200
+ a new `gsd-path/M00N` at the updated `origin/main`. `STATE.md`, `REPOSITORY.md`,
201
+ `LESSONS.md`, `next/`, and the program artifacts (`CHARTER.md`, `ROADMAP.md`,
202
+ top-level `SYNTHESIS.md`) remain active project metadata.
203
+
204
+ ## Install (summary)
205
+
206
+ Node 18.17+. Project installs also require Python 3.9+. Validates package,
207
+ backs up existing skills, and rolls back on failure.
208
+ **Always** `--dry-run` first when unsure.
209
+
210
+ ```bash
211
+ node scripts/install.mjs --all --dry-run
212
+ node scripts/install.mjs --all
213
+ node scripts/install.mjs --claude --cursor
214
+ node scripts/install.mjs --all --local
215
+ node scripts/install.mjs --all --project /path/to/project
216
+ node scripts/install.mjs --update
217
+ node scripts/install.mjs --all --update --project /path/to/project # refresh .gsd-path/; keeps contracts
218
+ ```
219
+
220
+ | Flag | User skills root | Invoke |
221
+ | --- | --- | --- |
222
+ | `--codex`, `--zed` | `~/.agents/skills` | Codex: `$path` or `$gsd-path`; Zed: `/path` or `/gsd-path` |
223
+ | `--claude` | `~/.claude/skills` | `/path` or `/gsd-path` |
224
+ | `--cursor` | `~/.cursor/skills` (+ subagent) | `/path` or `/gsd-path` |
225
+ | `--grok` | `~/.grok/skills` | `/path` or `/gsd-path` |
226
+ | `--opencode` | OpenCode config `skills/` | `/path` or `/gsd-path` (OpenCode v2 host) |
227
+ | `--copilot` | `~/.copilot/skills` | `/path` or `/gsd-path` |
228
+ | `--qwen` | `~/.qwen/skills` | `/path` or `/gsd-path` |
229
+ | `--antigravity` | Antigravity skills dir | `/path` or `/gsd-path` |
230
+ | `--kiro` | `~/.kiro/skills` | `/path` or `/gsd-path` |
231
+ | `--kimi` | `~/.kimi-code/skills` | `/path` or `/gsd-path` |
232
+
233
+ OpenCode stable: ask to load and use the `gsd-path` skill.
234
+ `gsd-path` remains the canonical router name; `path` is its short menu alias.
235
+ For a single phase, use `$gsd-path-plan` in Codex or `/gsd-path-plan` on slash hosts.
236
+
237
+ `scripts/install.py` — Python install, including `--local` and `--update`.
238
+ The Node CLI remains the interactive and npm entry point. See [FULL.md](FULL.md) and
239
+ [UPDATE.md](UPDATE.md) for `--hooks`, `--hooks-refresh`, `--local`, and host notes.
240
+
241
+ Optional **`--hooks`** with `--project` — [HOOKS.md](HOOKS.md).
242
+
243
+ Something off? `node scripts/install.mjs --doctor [--project PATH]` — read-only
244
+ health check of installs, guard hooks, and pipeline state.
245
+
246
+ ## Agent execution
247
+
248
+ Define and build orchestrators run in the main task. Researchers, deciders,
249
+ planners, coders, and reviewers delegate via host-specific adapters. See
250
+ [FULL.md — Agent execution](FULL.md#agent-execution-how-work-is-delegated) for
251
+ the authoritative host API table and delegation rules.
252
+
253
+ `platforms/` is installer-only — not user-invoked skills.
254
+
255
+ ## Testing
256
+
257
+ Contributors and CI use one offline gate. See **[TEST_ENVIRONMENT.md](TEST_ENVIRONMENT.md)** for prerequisites, tiers, fixtures, and troubleshooting.
258
+
259
+ ```bash
260
+ make install && make verify # same path as GitHub Actions CI
261
+ ```
262
+
263
+ ## Repository layout
264
+
265
+ | Path | Purpose |
266
+ | --- | --- |
267
+ | `DOCS.md` | Documentation hub |
268
+ | `QUICK.md` | Quick start |
269
+ | `FULL.md` | Full guide |
270
+ | `UPDATE.md` | Updating |
271
+ | `HOOKS.md` | Guard hooks |
272
+ | `skills/` | Canonical skills and generated aliases declared in [the resource manifest](scripts/skill-resources.json) |
273
+ | `platforms/` | Host dispatch adapters |
274
+ | `scripts/install.mjs` | Installer (npm `gsd-path` bin) |
275
+ | `scripts/install.py` | Python installer |
276
+ | `AGENTS.md` | Operating rules (installed to projects) |
277
+ | `WORKFLOW.md` | Phase SOP (installed to projects) |
278
+ | `TEST_ENVIRONMENT.md` | Local/CI test setup and tiers |
279
+ | `fixtures/` | Sample `.project/` pipeline for manual runs |
280
+ | `LICENSE` | MIT |
package/RUNTIME.md ADDED
@@ -0,0 +1,229 @@
1
+ # Workflow runner and observed token budgets
2
+
3
+ The runner assembles arguments for existing canonical helpers. It returns a JSON
4
+ receipt containing each command, exit code, stdout, stderr, and parsed result.
5
+ `build-evidence` also appends a step with `script` and `evidence` fields naming
6
+ the written proof file.
7
+ A failed helper stops the sequence before any later gate or checkpoint. Preserve
8
+ that receipt with the phase evidence; a blocked receipt routes to forensics.
9
+ It does not dispatch models or supply owner approvals.
10
+
11
+ ## Workflow commands
12
+
13
+ Use the absolute `workflow_run.py` path in the active skill's scripts directory.
14
+ All commands require `--repo <absolute repository root>`.
15
+
16
+ | Command | Required input | Result |
17
+ | --- | --- | --- |
18
+ | `route` | Optional `--project-dir .project/next` | Canonical route; follow its action even when it blocks or requests recovery. |
19
+ | `gate-plan` | Git HEAD; optional lookahead project directory | Pending discussion, intent coverage, brief paths, and panel configuration checked in order. |
20
+ | `approve-plan` | Owner approval and `--expected-head <reviewed full SHA>` | Plan gates followed by the existing journaled approval checkpoint. |
21
+ | `lint-round` | Git HEAD; optional `--project-dir .project/next` | Task brief checks against HEAD, then plan handoff checks. |
22
+ | `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. |
23
+ | `build-evidence` | `--expected-head <full SHA>` | Canonical landing proof written to `<project-dir>/build/evidence.json` (default: `.project/build/evidence.json`). |
24
+
25
+ Plan approval recovery remains `pipeline_state.py resume-checkpoint`. Pre-Git
26
+ approvals and patch approvals retain their existing canonical flows. The runner
27
+ never changes a recorded base, retries a failed mutation, or repairs state itself.
28
+
29
+ Checkpoint inputs must use the top-level `.project` entries defined by
30
+ [`isolation.PROJECT_ENTRIES`](scripts/isolation.py); ship verification uses the
31
+ same allowlist. `isolation.py checkpoint` refuses pending paths under any other
32
+ top-level entry and asks for their removal before checkpointing. This check does
33
+ not inspect nested entries inside an allowed directory.
34
+
35
+ For serial work, keep the returned verification sidecar until the coder finishes.
36
+ Validate the full task diff, reproduce only that patch in the sidecar, compare the
37
+ product diffs, and run Task Verify there. Record that exact evidence before landing.
38
+ The runner avoids having to remove a live product patch merely to create a sidecar.
39
+ Task verification, wave review, and ship-only project verification retain their
40
+ existing responsibilities.
41
+
42
+ ## Dispatch driver
43
+
44
+ `dispatch_driver.py` in the router and build bundles runs one build wave's
45
+ deterministic loop so the orchestrating model only supplies judgment. `round`
46
+ and `finish` run recovery against Git and the task files before processing
47
+ dispatch records under the Git common directory
48
+ (`gsd-path/dispatch/<milestone slug>/<task>/attempt-N/`). The milestone slug
49
+ replaces `/` in the bound branch with `-` (for example, `gsd-path/M001`
50
+ becomes `gsd-path-M001`). `answer` and `status`
51
+ read the newest attempt records. Records are keyed by the bound branch, so a
52
+ new milestone starts with no attempts and the previous milestone's records
53
+ remain as evidence.
54
+ Review attempts use `gsd-path/dispatch/<milestone slug>/reviews/<logical name>/attempt-N/`;
55
+ panel attempts use the same layout under `panels/` instead of `reviews/`, and
56
+ skeptic attempts under `skeptics/`.
57
+ `status` and `answer` cover task attempts only.
58
+
59
+ | Command | Result |
60
+ | --- | --- |
61
+ | `round --repo <root> --wave <N> --child-command '<cmd>' [--wait <s>] [--child-timeout <s>] [--capacity <N>] [--max-attempts <N>] [--task-limit <N> --session-limit <N> --budget-authority '<policy>']` | Enter `build/active` from `plan/done` or `build/blocked` (event `build started`, checkpoint `build: start milestone`); recover, settle exited children, `ready`, checkpoint bookkeeping, lint, isolate, dispatch; Verify, land, record, retire each result in task-id order. Receipt status `done`, `in-flight`, `question`, or `blocked`; a dependency deadlock or blocked recovery also sets `build/blocked` and checkpoints it. |
62
+ | `review --repo <root> --wave <N> --cycle <C> --child-command '<cmd>' [--wait <s>] [--child-timeout <s>] [--repair-evidence <receipt>]` | Step 6 at `full` or `deep` depth: clean review base, one verify sidecar and reviewer child per lens, validate in the sidecar, collect, retire; after every lens settles, checkpoint a `pass` when no panel is configured, or return the `review_findings.py collect` grouping on `blocked`. `verify-only` returns `not-applicable`; `panel_required` reports the PLAN panel setting. |
63
+ | `panel --repo <root> --wave <N> --cycle <C> --advertised <slugs> [--parent-slug <slug>] --child-command '<cmd with {model}>' [--wait <s>]` | Step 6 panel: `review_panel.py resolve`; `off`, a persisted skipped receipt, or one panelist per family in its own sidecar; collect, `review_panel.py merge`, then the single on-pass checkpoint with the review. |
64
+ | `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. |
65
+ | `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. |
66
+ | `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`. |
67
+ | `finish --repo <root> --task-id <id>` | Recover first; return a proven landing without repeating Verify, or verify, land, record, and retire one returned task. Without a dispatch record, derive the isolate from task frontmatter. |
68
+ | `answer --repo <root> --task-id <id> --answer '<text>'` | Append `Orchestrator answer:` to the isolate's task Log; the next `round` redispatches that isolate. |
69
+ | `status --repo <root>` | Every task's newest dispatch record. |
70
+
71
+ The child command is owner-supplied shell words. The driver runs it with the
72
+ isolated worktree as its working directory and the self-contained brief on
73
+ stdin; the owner's flags decide the child's permissions and model. Verified
74
+ templates: `claude -p --output-format json <owner permission flags>` and
75
+ `codex exec --json <owner sandbox flags>`. A coder child ends its final message with
76
+ `RESULT: <task id> ready|blocked`; no line means blocked. A Log delta whose
77
+ first entry after the last recorded `Orchestrator answer:` leads with
78
+ `NEEDS-ORCHESTRATOR:` is a question only when the child exits successfully;
79
+ a timeout or nonzero exit is a failure even if the child wrote a question.
80
+ Canonical reviewer children instead return the `Wave verdict:` line in their
81
+ validated review artifact; they do not need a `RESULT:` line.
82
+ Panel children write family findings without a Wave verdict. The panel command
83
+ replaces literal `{model}` in its child command with the resolved family slug.
84
+ `--wave` is required and pins the parent-selected wave, including on resumed
85
+ calls. In `round`, an unfinished earlier wave blocks dispatch before the bookkeeping
86
+ checkpoint. Child completion is recorded in `exit.json`; the parent alone
87
+ writes `state.json`.
88
+ For `review`, `panel`, and `skeptics`, when the child process is gone and `finished_at` is
89
+ unset, the driver rereads that attempt's state and exit receipt before
90
+ collecting the result or blocking with
91
+ `child wrapper exited without recording a result`.
92
+ `--wait`, `--child-timeout`, and `--capacity` (concurrent children) have
93
+ no defaults. `--max-attempts` defaults to 2 dispatches per task per milestone,
94
+ the build contract's one logged redispatch after the first attempt; question
95
+ redispatches do not count. At the limit `round` returns `blocked` naming the
96
+ task, and a person rules.
97
+
98
+ Token budgets are opt-in. Passing `--task-limit`, `--session-limit`, and
99
+ `--budget-authority` together configures this milestone's ledger at
100
+ `gsd-path/budget/<milestone slug>.json` under the Git common directory, records
101
+ each child's usage from its captured stdout when it exits, and runs `admit`
102
+ before preparing or activating a fresh task and before each question
103
+ redispatch; a blocked admission stops the round. The ledger's
104
+ policy is fixed once configured. Later rounds and `finish` enforce that policy
105
+ even when budget flags are omitted; only explicit flags configure it. Each
106
+ attempt records its own usage, including question redispatches. A new milestone
107
+ gets a new ledger. Usage
108
+ is read from Codex `--json` events or Claude `--output-format json`; output
109
+ that proves no usage stops the round rather than estimating. At most one `Heavy: yes`
110
+ Verify task is in flight at a time, and a round stops at a wave boundary.
111
+ Without `--wait`, the call returns after processing currently available work;
112
+ children continue running. `--capacity`, when supplied, must be positive.
113
+
114
+ Every action except `status` holds a
115
+ repository-scoped advisory lock for the whole call, including `--wait`.
116
+ A concurrent invocation returns `blocked`
117
+ with `another dispatch_driver invocation holds the lock`; wait for the
118
+ active call to return before retrying. Bookkeeping also blocks if an
119
+ in-progress primary task has no open dispatch record.
120
+
121
+ Verify output is saved in `verify.json`. A `verify-record` ledger entry is
122
+ written only when the landing commit's parent equals the recorded task base;
123
+ a later parallel landing can therefore have no ledger entry.
124
+
125
+ For task attempts, the driver reports and never repairs: a failed child, a failed Verify, a
126
+ recovery or reconciliation verdict, or a `ready` error returns `blocked` with
127
+ the evidence, and the isolate stays in place for the build contract's
128
+ documented procedure.
129
+
130
+ Resume an `in-flight` review with the same wave and cycle. Missing lens records
131
+ are dispatched only while the primary is clean and HEAD still matches the
132
+ recorded base. For cycle 2 or later, every previous-cycle lens artifact must
133
+ exist before dispatch. Invalid review files remain in their sidecars for
134
+ inspection. Collection progress is saved before cleanup; a cleanup failure
135
+ returns `blocked` with helper findings, and a later call retries cleanup.
136
+ Reusing a collected verdict requires the canonical artifact to match its saved
137
+ validation hash. Review inputs must still match the recorded base: only this
138
+ cycle's review artifacts may differ, and HEAD may advance only by the cycle's
139
+ own review checkpoint. Other changes block reuse and require a new cycle.
140
+
141
+ Resume an `in-flight` panel with `panel` for the same wave and cycle. Before
142
+ the first spawn, it saves the families, slugs, mode, and base in
143
+ `panels/wave-N-cycle-C/roster.json` under the milestone's dispatch directory.
144
+ Missing families resume only at that base. Merge waits for the whole roster
145
+ and successful cleanup; later calls retry pending cleanup. Before merging or
146
+ checkpointing, HEAD must still equal the recorded base. Only this cycle's
147
+ review files, panel family files, merged panel, and skipped receipt may differ.
148
+ Other changes return `blocked` with
149
+ `inputs changed after the review base; run a new cycle` and no checkpoint.
150
+ A skipped-panel retry uses the base saved in this cycle's review records;
151
+ missing records block with `review base is not recorded; run review first`.
152
+ An interrupted checkpoint's skipped receipt is reused only if it is a JSON
153
+ object with `status: skipped`; other contents block as an invalid receipt.
154
+ The same input guard runs before writing or reusing that receipt and again
155
+ before checkpointing. Panel `status`
156
+ describes panel processing; `review_verdict` holds the canonical verdict.
157
+ A blocked canonical review leaves `checkpoint: null`, including for a skipped
158
+ panel, so `fix-tasks` can checkpoint the blocked review with its repairs.
159
+
160
+ Resume an `in-flight` skeptic run with `skeptics` for the same wave and cycle.
161
+ Dispatching missing locators requires HEAD to equal the recorded review base.
162
+ Panel and skeptic collection save validated fields and a content hash before
163
+ moving the staged file. If interrupted after that move, collection resumes
164
+ through its receipt only when the canonical file matches the saved hash.
165
+
166
+ `fix-tasks` reconciles existing repair tasks and PLAN rows before linting and
167
+ checkpointing. It creates missing batches in an appended repair wave and
168
+ reports new tasks in `created`, reused tasks in `existing`, and batches already
169
+ covered by other repair tasks in `carried`. Status `created` includes restored
170
+ PLAN rows or pending project bookkeeping; `exists` means nothing was written
171
+ and no project changes needed a checkpoint. Status `none` means no batches
172
+ need work; `escalate` leaves the named decisions with build step 7 and the user.
173
+ Each generated fix-task Verify runs the distinct source Verify commands in
174
+ separate subshells under `set -e`. An `exit 0` or trailing comment in one source
175
+ cannot skip the next source command, and a failing subshell stops the Verify.
176
+
177
+ ## Token accounting
178
+
179
+ `token_budget.py` is in the router and build bundles. Limits have no defaults.
180
+ The dispatch driver owns its ledger as described [above](#dispatch-driver).
181
+ For manual accounting, configure one ledger for the logical session, outside
182
+ the worktree, using the owner's exact
183
+ limits and their authority. For example, use a path under the Git common directory
184
+ returned by Git; do not assume `.git` is a directory in a linked worktree.
185
+
186
+ ```text
187
+ python3 <token_budget.py> configure --ledger <absolute ledger> --task-limit <owner value> --session-limit <owner value> --authority <quoted owner policy>
188
+ python3 <token_budget.py> record --ledger <absolute ledger> --task <logical task> --events <completed host event file>
189
+ python3 <token_budget.py> admit --ledger <absolute ledger> --task <next logical task>
190
+ ```
191
+
192
+ The metric is the host's `output_tokens`, including its reported reasoning output;
193
+ reasoning is not added again. Input and cached input are not included. Resumptions
194
+ reuse the ledger and task identity. Each CLI invocation uses its immutable event
195
+ file. Re-observing that file is idempotent; new invocations accumulate. Native
196
+ single-invocation child sessions and Claude `--output-format json` usage
197
+ receipts are supported. Resumed native child logs with
198
+ ambiguous cumulative counters fail closed; use separate CLI run receipts instead.
199
+ Record every completed parent invocation and child, not only coder work.
200
+
201
+ `admit` blocks once observed task or session output reaches the configured limit.
202
+ A negative exit is not permission to start a new ledger, rename the task, or omit
203
+ usage. Incomplete usage cannot establish remaining budget. Configuration preserves
204
+ existing observations and refuses a changed policy for the same session ledger.
205
+
206
+ This is **observed admission enforcement**. Concurrent, unreported, and in-flight
207
+ usage remains unproven. Codex CLI 0.153.4 exposes usage after execution but its help
208
+ and published configuration list no hard output-token cap. Use
209
+ `admit --require-hard-cap` when hard enforcement is required: this host returns
210
+ blocked with `hard_cap_supported: false`. These helpers do not make a strict
211
+ budget-compliance claim. Other hosts need a verified counter/cap adapter.
212
+
213
+ Sources checked for this host: local `codex exec --help`,
214
+ [official CLI reference](https://developers.openai.com/codex/cli/reference), and
215
+ [official configuration reference](https://developers.openai.com/codex/config-reference).
216
+ The Responses API's generation limits are a different interface; they do not
217
+ establish a Codex CLI capability.
218
+
219
+ ## Lean final verification
220
+
221
+ The ship bundle's `workflow_run.py prepare-final --repo <root> --expected-head
222
+ <full SHA>` sequences landing proof, isolated project Verify, evidence collection,
223
+ and final reuse. A command/commit receipt stores exact stdout/stderr once; retry
224
+ rebuilds its gap view and cleans up an interrupted sidecar without another run.
225
+ Legacy receipts without output require reconciliation if no valid proof can be
226
+ recovered. A full quick-lane wave explicitly covering final scope supplies FINAL.md
227
+ when every criterion and surface walkthrough is proven and Git shows unchanged
228
+ product and contracts. Other scopes retain final review. The output names whether
229
+ review is needed; models do not route reuse by comparing prose or file sizes.