@ai-is-gonna/get-tasks-done 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1517) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +249 -0
  3. package/agents/gtd-advisor-researcher.md +127 -0
  4. package/agents/gtd-ai-researcher.md +133 -0
  5. package/agents/gtd-assumptions-analyzer.md +105 -0
  6. package/agents/gtd-code-fixer.md +668 -0
  7. package/agents/gtd-code-reviewer.md +387 -0
  8. package/agents/gtd-codebase-mapper.md +853 -0
  9. package/agents/gtd-debug-session-manager.md +314 -0
  10. package/agents/gtd-debugger.md +1452 -0
  11. package/agents/gtd-doc-classifier.md +168 -0
  12. package/agents/gtd-doc-synthesizer.md +204 -0
  13. package/agents/gtd-doc-verifier.md +217 -0
  14. package/agents/gtd-doc-writer.md +615 -0
  15. package/agents/gtd-domain-researcher.md +153 -0
  16. package/agents/gtd-eval-auditor.md +191 -0
  17. package/agents/gtd-eval-planner.md +154 -0
  18. package/agents/gtd-framework-selector.md +160 -0
  19. package/agents/gtd-integration-checker.md +470 -0
  20. package/agents/gtd-intel-updater.md +342 -0
  21. package/agents/gtd-nyquist-auditor.md +203 -0
  22. package/agents/gtd-pattern-mapper.md +335 -0
  23. package/agents/gtd-phase-researcher.md +928 -0
  24. package/agents/gtd-plan-checker.md +1000 -0
  25. package/agents/gtd-planner.md +926 -0
  26. package/agents/gtd-project-researcher.md +677 -0
  27. package/agents/gtd-research-synthesizer.md +247 -0
  28. package/agents/gtd-roadmapper.md +688 -0
  29. package/agents/gtd-security-auditor.md +155 -0
  30. package/agents/gtd-task-executor.md +166 -0
  31. package/agents/gtd-ui-auditor.md +495 -0
  32. package/agents/gtd-ui-checker.md +309 -0
  33. package/agents/gtd-ui-researcher.md +380 -0
  34. package/agents/gtd-user-profiler.md +171 -0
  35. package/agents/gtd-verifier.md +917 -0
  36. package/bin/gtd-sdk.js +37 -0
  37. package/bin/install.js +11358 -0
  38. package/commands/gtd/add-tests.md +42 -0
  39. package/commands/gtd/ai-integration-phase.md +37 -0
  40. package/commands/gtd/audit-fix.md +34 -0
  41. package/commands/gtd/audit-milestone.md +37 -0
  42. package/commands/gtd/audit-uat.md +24 -0
  43. package/commands/gtd/autonomous.md +46 -0
  44. package/commands/gtd/capture.md +62 -0
  45. package/commands/gtd/cleanup.md +24 -0
  46. package/commands/gtd/code-review.md +59 -0
  47. package/commands/gtd/complete-milestone.md +143 -0
  48. package/commands/gtd/config.md +58 -0
  49. package/commands/gtd/debug.md +52 -0
  50. package/commands/gtd/discuss-phase.md +76 -0
  51. package/commands/gtd/docs-update.md +49 -0
  52. package/commands/gtd/eval-review.md +33 -0
  53. package/commands/gtd/explore.md +27 -0
  54. package/commands/gtd/export-phase-issues.md +43 -0
  55. package/commands/gtd/extract-learnings.md +23 -0
  56. package/commands/gtd/fast.md +31 -0
  57. package/commands/gtd/forensics.md +57 -0
  58. package/commands/gtd/graphify.md +199 -0
  59. package/commands/gtd/health.md +31 -0
  60. package/commands/gtd/help.md +28 -0
  61. package/commands/gtd/import.md +35 -0
  62. package/commands/gtd/inbox.md +39 -0
  63. package/commands/gtd/ingest-docs.md +42 -0
  64. package/commands/gtd/manager.md +45 -0
  65. package/commands/gtd/map-codebase.md +83 -0
  66. package/commands/gtd/milestone-summary.md +51 -0
  67. package/commands/gtd/mvp-phase.md +45 -0
  68. package/commands/gtd/new-milestone.md +45 -0
  69. package/commands/gtd/new-project.md +47 -0
  70. package/commands/gtd/ns-context.md +23 -0
  71. package/commands/gtd/ns-ideate.md +24 -0
  72. package/commands/gtd/ns-manage.md +28 -0
  73. package/commands/gtd/ns-project.md +22 -0
  74. package/commands/gtd/ns-review.md +26 -0
  75. package/commands/gtd/ns-workflow.md +30 -0
  76. package/commands/gtd/orchestrate-tasks.md +83 -0
  77. package/commands/gtd/pause-work.md +43 -0
  78. package/commands/gtd/phase.md +56 -0
  79. package/commands/gtd/plan-phase.md +62 -0
  80. package/commands/gtd/plan-review-convergence.md +59 -0
  81. package/commands/gtd/pr-branch.md +26 -0
  82. package/commands/gtd/profile-user.md +46 -0
  83. package/commands/gtd/progress.md +46 -0
  84. package/commands/gtd/quick.md +174 -0
  85. package/commands/gtd/resume-work.md +30 -0
  86. package/commands/gtd/review-backlog.md +63 -0
  87. package/commands/gtd/review.md +41 -0
  88. package/commands/gtd/secure-phase.md +36 -0
  89. package/commands/gtd/settings.md +29 -0
  90. package/commands/gtd/sketch.md +60 -0
  91. package/commands/gtd/spec-phase.md +63 -0
  92. package/commands/gtd/spike.md +57 -0
  93. package/commands/gtd/stats.md +19 -0
  94. package/commands/gtd/surface.md +130 -0
  95. package/commands/gtd/thread.md +24 -0
  96. package/commands/gtd/ui-phase.md +35 -0
  97. package/commands/gtd/ui-review.md +33 -0
  98. package/commands/gtd/ultraplan-phase.md +34 -0
  99. package/commands/gtd/undo.md +35 -0
  100. package/commands/gtd/update.md +48 -0
  101. package/commands/gtd/validate-phase.md +36 -0
  102. package/commands/gtd/verify-work.md +39 -0
  103. package/commands/gtd/work-task-issue.md +45 -0
  104. package/commands/gtd/workspace.md +52 -0
  105. package/commands/gtd/workstreams.md +70 -0
  106. package/get-tasks-done/bin/check-latest-version.cjs +104 -0
  107. package/get-tasks-done/bin/gtd-tools.cjs +1264 -0
  108. package/get-tasks-done/bin/lib/active-workstream-store.cjs +85 -0
  109. package/get-tasks-done/bin/lib/adr-parser.cjs +394 -0
  110. package/get-tasks-done/bin/lib/artifacts.cjs +53 -0
  111. package/get-tasks-done/bin/lib/audit.cjs +755 -0
  112. package/get-tasks-done/bin/lib/cjs-command-router-adapter.cjs +39 -0
  113. package/get-tasks-done/bin/lib/clusters.cjs +147 -0
  114. package/get-tasks-done/bin/lib/command-aliases.generated.cjs +830 -0
  115. package/get-tasks-done/bin/lib/commands.cjs +1031 -0
  116. package/get-tasks-done/bin/lib/config-schema.cjs +31 -0
  117. package/get-tasks-done/bin/lib/config.cjs +621 -0
  118. package/get-tasks-done/bin/lib/configuration.generated.cjs +253 -0
  119. package/get-tasks-done/bin/lib/context-utilization.cjs +47 -0
  120. package/get-tasks-done/bin/lib/core.cjs +1921 -0
  121. package/get-tasks-done/bin/lib/decisions.cjs +48 -0
  122. package/get-tasks-done/bin/lib/docs.cjs +270 -0
  123. package/get-tasks-done/bin/lib/drift.cjs +388 -0
  124. package/get-tasks-done/bin/lib/export-phase-issues.cjs +1862 -0
  125. package/get-tasks-done/bin/lib/fallow-runner.cjs +109 -0
  126. package/get-tasks-done/bin/lib/frontmatter.cjs +389 -0
  127. package/get-tasks-done/bin/lib/gap-checker.cjs +197 -0
  128. package/get-tasks-done/bin/lib/github-api-client.cjs +97 -0
  129. package/get-tasks-done/bin/lib/github-repo.cjs +154 -0
  130. package/get-tasks-done/bin/lib/graphify.cjs +592 -0
  131. package/get-tasks-done/bin/lib/gtd2-import.cjs +514 -0
  132. package/get-tasks-done/bin/lib/init-command-router.cjs +65 -0
  133. package/get-tasks-done/bin/lib/init.cjs +1898 -0
  134. package/get-tasks-done/bin/lib/install-profiles.cjs +589 -0
  135. package/get-tasks-done/bin/lib/installer-migration-authoring.cjs +117 -0
  136. package/get-tasks-done/bin/lib/installer-migration-report.cjs +354 -0
  137. package/get-tasks-done/bin/lib/installer-migrations/000-first-time-baseline.cjs +220 -0
  138. package/get-tasks-done/bin/lib/installer-migrations/001-legacy-orphan-files.cjs +41 -0
  139. package/get-tasks-done/bin/lib/installer-migrations/002-codex-legacy-hooks-json.cjs +80 -0
  140. package/get-tasks-done/bin/lib/installer-migrations/003-legacy-acronym-install-cleanup.cjs +135 -0
  141. package/get-tasks-done/bin/lib/installer-migrations.cjs +703 -0
  142. package/get-tasks-done/bin/lib/intel.cjs +643 -0
  143. package/get-tasks-done/bin/lib/learnings.cjs +379 -0
  144. package/get-tasks-done/bin/lib/milestone.cjs +314 -0
  145. package/get-tasks-done/bin/lib/model-catalog.cjs +143 -0
  146. package/get-tasks-done/bin/lib/model-profiles.cjs +27 -0
  147. package/get-tasks-done/bin/lib/orchestrate-tasks.cjs +2166 -0
  148. package/get-tasks-done/bin/lib/phase-command-router.cjs +96 -0
  149. package/get-tasks-done/bin/lib/phase.cjs +1422 -0
  150. package/get-tasks-done/bin/lib/phases-command-router.cjs +39 -0
  151. package/get-tasks-done/bin/lib/plan-scan.cjs +138 -0
  152. package/get-tasks-done/bin/lib/planning-workspace.cjs +361 -0
  153. package/get-tasks-done/bin/lib/profile-output.cjs +1132 -0
  154. package/get-tasks-done/bin/lib/profile-pipeline.cjs +539 -0
  155. package/get-tasks-done/bin/lib/project-root.generated.cjs +117 -0
  156. package/get-tasks-done/bin/lib/review-reviewer-selection.cjs +125 -0
  157. package/get-tasks-done/bin/lib/roadmap-command-router.cjs +23 -0
  158. package/get-tasks-done/bin/lib/roadmap.cjs +621 -0
  159. package/get-tasks-done/bin/lib/runtime-homes.cjs +178 -0
  160. package/get-tasks-done/bin/lib/runtime-slash.cjs +109 -0
  161. package/get-tasks-done/bin/lib/schema-detect.cjs +238 -0
  162. package/get-tasks-done/bin/lib/secrets.cjs +33 -0
  163. package/get-tasks-done/bin/lib/security.cjs +504 -0
  164. package/get-tasks-done/bin/lib/shell-command-projection.cjs +548 -0
  165. package/get-tasks-done/bin/lib/state-command-router.cjs +318 -0
  166. package/get-tasks-done/bin/lib/state-document.cjs +12 -0
  167. package/get-tasks-done/bin/lib/state-document.generated.cjs +127 -0
  168. package/get-tasks-done/bin/lib/state.cjs +1917 -0
  169. package/get-tasks-done/bin/lib/surface.cjs +398 -0
  170. package/get-tasks-done/bin/lib/task-issue-shared.cjs +64 -0
  171. package/get-tasks-done/bin/lib/template.cjs +228 -0
  172. package/get-tasks-done/bin/lib/uat.cjs +289 -0
  173. package/get-tasks-done/bin/lib/validate-command-router.cjs +57 -0
  174. package/get-tasks-done/bin/lib/verify-command-router.cjs +34 -0
  175. package/get-tasks-done/bin/lib/verify.cjs +1557 -0
  176. package/get-tasks-done/bin/lib/work-task-issue.cjs +3429 -0
  177. package/get-tasks-done/bin/lib/workstream-inventory-builder.generated.cjs +79 -0
  178. package/get-tasks-done/bin/lib/workstream-inventory.cjs +132 -0
  179. package/get-tasks-done/bin/lib/workstream-name-policy.cjs +33 -0
  180. package/get-tasks-done/bin/lib/workstream.cjs +374 -0
  181. package/get-tasks-done/bin/lib/worktree-safety.cjs +563 -0
  182. package/get-tasks-done/bin/verify-reapply-patches.cjs +247 -0
  183. package/get-tasks-done/contexts/dev.md +21 -0
  184. package/get-tasks-done/contexts/research.md +22 -0
  185. package/get-tasks-done/contexts/review.md +23 -0
  186. package/get-tasks-done/references/agent-contracts.md +79 -0
  187. package/get-tasks-done/references/ai-evals.md +156 -0
  188. package/get-tasks-done/references/ai-frameworks.md +186 -0
  189. package/get-tasks-done/references/artifact-types.md +131 -0
  190. package/get-tasks-done/references/autonomous-smart-discuss.md +277 -0
  191. package/get-tasks-done/references/checkpoints.md +814 -0
  192. package/get-tasks-done/references/common-bug-patterns.md +114 -0
  193. package/get-tasks-done/references/context-budget.md +85 -0
  194. package/get-tasks-done/references/continuation-format.md +253 -0
  195. package/get-tasks-done/references/debugger-philosophy.md +76 -0
  196. package/get-tasks-done/references/decimal-phase-calculation.md +64 -0
  197. package/get-tasks-done/references/doc-conflict-engine.md +91 -0
  198. package/get-tasks-done/references/domain-probes.md +125 -0
  199. package/get-tasks-done/references/execute-mvp-tdd.md +81 -0
  200. package/get-tasks-done/references/executor-examples.md +110 -0
  201. package/get-tasks-done/references/few-shot-examples/plan-checker.md +73 -0
  202. package/get-tasks-done/references/few-shot-examples/verifier.md +109 -0
  203. package/get-tasks-done/references/gate-prompts.md +100 -0
  204. package/get-tasks-done/references/gates.md +70 -0
  205. package/get-tasks-done/references/git-integration.md +298 -0
  206. package/get-tasks-done/references/git-planning-commit.md +40 -0
  207. package/get-tasks-done/references/ios-scaffold.md +123 -0
  208. package/get-tasks-done/references/mandatory-initial-read.md +2 -0
  209. package/get-tasks-done/references/model-profile-resolution.md +38 -0
  210. package/get-tasks-done/references/model-profiles.md +245 -0
  211. package/get-tasks-done/references/mvp-concepts.md +49 -0
  212. package/get-tasks-done/references/phase-argument-parsing.md +61 -0
  213. package/get-tasks-done/references/plan-checker-task-atomicity.md +73 -0
  214. package/get-tasks-done/references/planner-antipatterns.md +89 -0
  215. package/get-tasks-done/references/planner-chunked.md +49 -0
  216. package/get-tasks-done/references/planner-execution-flow.md +85 -0
  217. package/get-tasks-done/references/planner-gap-closure.md +71 -0
  218. package/get-tasks-done/references/planner-graphify-auto-update.md +67 -0
  219. package/get-tasks-done/references/planner-human-verify-mode.md +57 -0
  220. package/get-tasks-done/references/planner-mvp-mode.md +53 -0
  221. package/get-tasks-done/references/planner-reviews.md +39 -0
  222. package/get-tasks-done/references/planner-revision.md +87 -0
  223. package/get-tasks-done/references/planner-source-audit.md +73 -0
  224. package/get-tasks-done/references/planning-config.md +463 -0
  225. package/get-tasks-done/references/project-skills-discovery.md +19 -0
  226. package/get-tasks-done/references/questioning.md +162 -0
  227. package/get-tasks-done/references/revision-loop.md +97 -0
  228. package/get-tasks-done/references/scout-codebase.md +51 -0
  229. package/get-tasks-done/references/skeleton-template.md +48 -0
  230. package/get-tasks-done/references/sketch-interactivity.md +41 -0
  231. package/get-tasks-done/references/sketch-theme-system.md +94 -0
  232. package/get-tasks-done/references/sketch-tooling.md +45 -0
  233. package/get-tasks-done/references/sketch-variant-patterns.md +81 -0
  234. package/get-tasks-done/references/spidr-splitting.md +69 -0
  235. package/get-tasks-done/references/tdd.md +330 -0
  236. package/get-tasks-done/references/thinking-models-debug.md +44 -0
  237. package/get-tasks-done/references/thinking-models-execution.md +50 -0
  238. package/get-tasks-done/references/thinking-models-planning.md +62 -0
  239. package/get-tasks-done/references/thinking-models-research.md +50 -0
  240. package/get-tasks-done/references/thinking-models-verification.md +55 -0
  241. package/get-tasks-done/references/thinking-partner.md +96 -0
  242. package/get-tasks-done/references/ui-brand.md +160 -0
  243. package/get-tasks-done/references/universal-anti-patterns.md +63 -0
  244. package/get-tasks-done/references/user-profiling.md +681 -0
  245. package/get-tasks-done/references/user-story-template.md +58 -0
  246. package/get-tasks-done/references/verification-overrides.md +227 -0
  247. package/get-tasks-done/references/verification-patterns.md +612 -0
  248. package/get-tasks-done/references/verify-mvp-mode.md +85 -0
  249. package/get-tasks-done/references/workstream-flag.md +111 -0
  250. package/get-tasks-done/references/worktree-path-safety.md +89 -0
  251. package/get-tasks-done/templates/AI-SPEC.md +246 -0
  252. package/get-tasks-done/templates/DEBUG.md +169 -0
  253. package/get-tasks-done/templates/README.md +77 -0
  254. package/get-tasks-done/templates/SECURITY.md +61 -0
  255. package/get-tasks-done/templates/UAT.md +265 -0
  256. package/get-tasks-done/templates/UI-SPEC.md +100 -0
  257. package/get-tasks-done/templates/VALIDATION.md +76 -0
  258. package/get-tasks-done/templates/claude-md.md +147 -0
  259. package/get-tasks-done/templates/codebase/architecture.md +255 -0
  260. package/get-tasks-done/templates/codebase/concerns.md +310 -0
  261. package/get-tasks-done/templates/codebase/conventions.md +307 -0
  262. package/get-tasks-done/templates/codebase/integrations.md +280 -0
  263. package/get-tasks-done/templates/codebase/stack.md +186 -0
  264. package/get-tasks-done/templates/codebase/structure.md +285 -0
  265. package/get-tasks-done/templates/codebase/testing.md +480 -0
  266. package/get-tasks-done/templates/config.json +55 -0
  267. package/get-tasks-done/templates/context.md +352 -0
  268. package/get-tasks-done/templates/continue-here.md +78 -0
  269. package/get-tasks-done/templates/copilot-instructions.md +8 -0
  270. package/get-tasks-done/templates/debug-subagent-prompt.md +91 -0
  271. package/get-tasks-done/templates/dev-preferences.md +21 -0
  272. package/get-tasks-done/templates/discovery.md +146 -0
  273. package/get-tasks-done/templates/discussion-log.md +63 -0
  274. package/get-tasks-done/templates/milestone-archive.md +123 -0
  275. package/get-tasks-done/templates/milestone.md +115 -0
  276. package/get-tasks-done/templates/phase-prompt.md +616 -0
  277. package/get-tasks-done/templates/planner-subagent-prompt.md +118 -0
  278. package/get-tasks-done/templates/project.md +186 -0
  279. package/get-tasks-done/templates/requirements.md +231 -0
  280. package/get-tasks-done/templates/research-project/ARCHITECTURE.md +204 -0
  281. package/get-tasks-done/templates/research-project/FEATURES.md +147 -0
  282. package/get-tasks-done/templates/research-project/PITFALLS.md +200 -0
  283. package/get-tasks-done/templates/research-project/STACK.md +120 -0
  284. package/get-tasks-done/templates/research-project/SUMMARY.md +170 -0
  285. package/get-tasks-done/templates/research.md +592 -0
  286. package/get-tasks-done/templates/retrospective.md +54 -0
  287. package/get-tasks-done/templates/roadmap.md +202 -0
  288. package/get-tasks-done/templates/spec.md +307 -0
  289. package/get-tasks-done/templates/state.md +184 -0
  290. package/get-tasks-done/templates/summary-complex.md +59 -0
  291. package/get-tasks-done/templates/summary-minimal.md +41 -0
  292. package/get-tasks-done/templates/summary-standard.md +48 -0
  293. package/get-tasks-done/templates/summary.md +248 -0
  294. package/get-tasks-done/templates/user-profile.md +146 -0
  295. package/get-tasks-done/templates/user-setup.md +311 -0
  296. package/get-tasks-done/templates/verification-report.md +322 -0
  297. package/get-tasks-done/workflows/add-backlog.md +90 -0
  298. package/get-tasks-done/workflows/add-phase.md +112 -0
  299. package/get-tasks-done/workflows/add-tests.md +354 -0
  300. package/get-tasks-done/workflows/add-todo.md +160 -0
  301. package/get-tasks-done/workflows/ai-integration-phase.md +294 -0
  302. package/get-tasks-done/workflows/analyze-dependencies.md +96 -0
  303. package/get-tasks-done/workflows/audit-fix.md +177 -0
  304. package/get-tasks-done/workflows/audit-milestone.md +357 -0
  305. package/get-tasks-done/workflows/audit-uat.md +109 -0
  306. package/get-tasks-done/workflows/autonomous.md +790 -0
  307. package/get-tasks-done/workflows/check-todos.md +179 -0
  308. package/get-tasks-done/workflows/cleanup.md +154 -0
  309. package/get-tasks-done/workflows/code-review-fix.md +501 -0
  310. package/get-tasks-done/workflows/code-review.md +613 -0
  311. package/get-tasks-done/workflows/complete-milestone.md +854 -0
  312. package/get-tasks-done/workflows/debug.md +231 -0
  313. package/get-tasks-done/workflows/diagnose-issues.md +240 -0
  314. package/get-tasks-done/workflows/discovery-phase.md +291 -0
  315. package/get-tasks-done/workflows/discuss-phase/modes/advisor.md +175 -0
  316. package/get-tasks-done/workflows/discuss-phase/modes/all.md +28 -0
  317. package/get-tasks-done/workflows/discuss-phase/modes/analyze.md +44 -0
  318. package/get-tasks-done/workflows/discuss-phase/modes/auto.md +56 -0
  319. package/get-tasks-done/workflows/discuss-phase/modes/batch.md +52 -0
  320. package/get-tasks-done/workflows/discuss-phase/modes/chain.md +97 -0
  321. package/get-tasks-done/workflows/discuss-phase/modes/default.md +141 -0
  322. package/get-tasks-done/workflows/discuss-phase/modes/power.md +44 -0
  323. package/get-tasks-done/workflows/discuss-phase/modes/text.md +55 -0
  324. package/get-tasks-done/workflows/discuss-phase/templates/checkpoint.json +18 -0
  325. package/get-tasks-done/workflows/discuss-phase/templates/context.md +136 -0
  326. package/get-tasks-done/workflows/discuss-phase/templates/discussion-log.md +50 -0
  327. package/get-tasks-done/workflows/discuss-phase-assumptions.md +674 -0
  328. package/get-tasks-done/workflows/discuss-phase-power.md +291 -0
  329. package/get-tasks-done/workflows/discuss-phase.md +499 -0
  330. package/get-tasks-done/workflows/do.md +110 -0
  331. package/get-tasks-done/workflows/docs-update.md +1161 -0
  332. package/get-tasks-done/workflows/edit-phase.md +294 -0
  333. package/get-tasks-done/workflows/eval-review.md +155 -0
  334. package/get-tasks-done/workflows/explore.md +143 -0
  335. package/get-tasks-done/workflows/export-phase-issues.md +74 -0
  336. package/get-tasks-done/workflows/extract-learnings.md +242 -0
  337. package/get-tasks-done/workflows/fast.md +105 -0
  338. package/get-tasks-done/workflows/forensics.md +278 -0
  339. package/get-tasks-done/workflows/graduation.md +195 -0
  340. package/get-tasks-done/workflows/health.md +223 -0
  341. package/get-tasks-done/workflows/help/modes/brief.md +24 -0
  342. package/get-tasks-done/workflows/help/modes/default.md +52 -0
  343. package/get-tasks-done/workflows/help/modes/full.md +813 -0
  344. package/get-tasks-done/workflows/help/modes/topic.md +74 -0
  345. package/get-tasks-done/workflows/help.md +24 -0
  346. package/get-tasks-done/workflows/import.md +253 -0
  347. package/get-tasks-done/workflows/inbox.md +87 -0
  348. package/get-tasks-done/workflows/ingest-docs.md +339 -0
  349. package/get-tasks-done/workflows/insert-phase.md +151 -0
  350. package/get-tasks-done/workflows/list-phase-assumptions.md +178 -0
  351. package/get-tasks-done/workflows/list-workspaces.md +56 -0
  352. package/get-tasks-done/workflows/manager.md +393 -0
  353. package/get-tasks-done/workflows/map-codebase.md +443 -0
  354. package/get-tasks-done/workflows/milestone-summary.md +223 -0
  355. package/get-tasks-done/workflows/mvp-phase.md +221 -0
  356. package/get-tasks-done/workflows/new-milestone.md +634 -0
  357. package/get-tasks-done/workflows/new-project.md +1443 -0
  358. package/get-tasks-done/workflows/new-workspace.md +239 -0
  359. package/get-tasks-done/workflows/next.md +220 -0
  360. package/get-tasks-done/workflows/node-repair.md +92 -0
  361. package/get-tasks-done/workflows/note.md +158 -0
  362. package/get-tasks-done/workflows/orchestrate-tasks.md +209 -0
  363. package/get-tasks-done/workflows/pause-work.md +243 -0
  364. package/get-tasks-done/workflows/plan-milestone-gaps.md +280 -0
  365. package/get-tasks-done/workflows/plan-phase.md +1756 -0
  366. package/get-tasks-done/workflows/plan-review-convergence.md +329 -0
  367. package/get-tasks-done/workflows/plant-seed.md +229 -0
  368. package/get-tasks-done/workflows/pr-branch.md +156 -0
  369. package/get-tasks-done/workflows/profile-user.md +452 -0
  370. package/get-tasks-done/workflows/progress.md +668 -0
  371. package/get-tasks-done/workflows/quick.md +1169 -0
  372. package/get-tasks-done/workflows/reapply-patches.md +390 -0
  373. package/get-tasks-done/workflows/remove-phase.md +155 -0
  374. package/get-tasks-done/workflows/remove-workspace.md +107 -0
  375. package/get-tasks-done/workflows/resume-project.md +329 -0
  376. package/get-tasks-done/workflows/review.md +459 -0
  377. package/get-tasks-done/workflows/scan.md +104 -0
  378. package/get-tasks-done/workflows/secure-phase.md +179 -0
  379. package/get-tasks-done/workflows/session-report.md +146 -0
  380. package/get-tasks-done/workflows/settings-advanced.md +532 -0
  381. package/get-tasks-done/workflows/settings-integrations.md +281 -0
  382. package/get-tasks-done/workflows/settings.md +502 -0
  383. package/get-tasks-done/workflows/sketch-wrap-up.md +285 -0
  384. package/get-tasks-done/workflows/sketch.md +360 -0
  385. package/get-tasks-done/workflows/spec-phase.md +262 -0
  386. package/get-tasks-done/workflows/spike-wrap-up.md +306 -0
  387. package/get-tasks-done/workflows/spike.md +452 -0
  388. package/get-tasks-done/workflows/stats.md +79 -0
  389. package/get-tasks-done/workflows/sync-skills.md +182 -0
  390. package/get-tasks-done/workflows/thread.md +221 -0
  391. package/get-tasks-done/workflows/transition.md +693 -0
  392. package/get-tasks-done/workflows/ui-phase.md +327 -0
  393. package/get-tasks-done/workflows/ui-review.md +192 -0
  394. package/get-tasks-done/workflows/ultraplan-phase.md +198 -0
  395. package/get-tasks-done/workflows/undo.md +314 -0
  396. package/get-tasks-done/workflows/update.md +644 -0
  397. package/get-tasks-done/workflows/validate-phase.md +178 -0
  398. package/get-tasks-done/workflows/verify-phase.md +543 -0
  399. package/get-tasks-done/workflows/verify-work.md +797 -0
  400. package/get-tasks-done/workflows/work-task-issue.md +249 -0
  401. package/hooks/dist/gtd-check-update-worker.js +117 -0
  402. package/hooks/dist/gtd-check-update.js +64 -0
  403. package/hooks/dist/gtd-context-monitor.js +192 -0
  404. package/hooks/dist/gtd-phase-boundary.sh +47 -0
  405. package/hooks/dist/gtd-prompt-guard.js +97 -0
  406. package/hooks/dist/gtd-read-guard.js +101 -0
  407. package/hooks/dist/gtd-read-injection-scanner.js +152 -0
  408. package/hooks/dist/gtd-session-state.sh +59 -0
  409. package/hooks/dist/gtd-statusline.js +537 -0
  410. package/hooks/dist/gtd-update-banner.js +134 -0
  411. package/hooks/dist/gtd-validate-commit.sh +57 -0
  412. package/hooks/dist/gtd-workflow-guard.js +94 -0
  413. package/hooks/gtd-check-update-worker.js +117 -0
  414. package/hooks/gtd-check-update.js +64 -0
  415. package/hooks/gtd-context-monitor.js +192 -0
  416. package/hooks/gtd-graphify-update.sh +152 -0
  417. package/hooks/gtd-phase-boundary.sh +47 -0
  418. package/hooks/gtd-prompt-guard.js +97 -0
  419. package/hooks/gtd-read-guard.js +101 -0
  420. package/hooks/gtd-read-injection-scanner.js +152 -0
  421. package/hooks/gtd-session-state.sh +59 -0
  422. package/hooks/gtd-statusline.js +537 -0
  423. package/hooks/gtd-update-banner.js +134 -0
  424. package/hooks/gtd-validate-commit.sh +57 -0
  425. package/hooks/gtd-workflow-guard.js +94 -0
  426. package/hooks/lib/git-cmd.js +150 -0
  427. package/hooks/lib/gtd-graphify-rebuild.sh +65 -0
  428. package/package.json +85 -0
  429. package/scripts/audit-workflow-script-paths.cjs +73 -0
  430. package/scripts/base64-scan.sh +262 -0
  431. package/scripts/build-hooks.js +187 -0
  432. package/scripts/command-contract-helpers.cjs +61 -0
  433. package/scripts/fix-slash-commands.cjs +106 -0
  434. package/scripts/lint-command-contract.cjs +108 -0
  435. package/scripts/lint-descriptions.cjs +83 -0
  436. package/scripts/lint-no-source-grep-extras.cjs +81 -0
  437. package/scripts/lint-no-source-grep.cjs +174 -0
  438. package/scripts/lint-pr-check-project-dir.cjs +94 -0
  439. package/scripts/lint-shell-command-projection-drift.cjs +57 -0
  440. package/scripts/lint-skill-deps.cjs +180 -0
  441. package/scripts/prompt-injection-scan.sh +201 -0
  442. package/scripts/run-tests.cjs +33 -0
  443. package/scripts/secret-scan.sh +227 -0
  444. package/scripts/strip-prose-atrefs.cjs +106 -0
  445. package/scripts/verify-tarball-sdk-dist.sh +69 -0
  446. package/sdk/dist/cli-transport.d.ts +19 -0
  447. package/sdk/dist/cli-transport.d.ts.map +1 -0
  448. package/sdk/dist/cli-transport.js +104 -0
  449. package/sdk/dist/cli-transport.js.map +1 -0
  450. package/sdk/dist/cli.d.ts +46 -0
  451. package/sdk/dist/cli.d.ts.map +1 -0
  452. package/sdk/dist/cli.js +511 -0
  453. package/sdk/dist/cli.js.map +1 -0
  454. package/sdk/dist/config.d.ts +107 -0
  455. package/sdk/dist/config.d.ts.map +1 -0
  456. package/sdk/dist/config.js +115 -0
  457. package/sdk/dist/config.js.map +1 -0
  458. package/sdk/dist/configuration/index.d.ts +85 -0
  459. package/sdk/dist/configuration/index.d.ts.map +1 -0
  460. package/sdk/dist/configuration/index.js +257 -0
  461. package/sdk/dist/configuration/index.js.map +1 -0
  462. package/sdk/dist/context-engine.d.ts +49 -0
  463. package/sdk/dist/context-engine.d.ts.map +1 -0
  464. package/sdk/dist/context-engine.js +142 -0
  465. package/sdk/dist/context-engine.js.map +1 -0
  466. package/sdk/dist/context-truncation.d.ts +33 -0
  467. package/sdk/dist/context-truncation.d.ts.map +1 -0
  468. package/sdk/dist/context-truncation.js +197 -0
  469. package/sdk/dist/context-truncation.js.map +1 -0
  470. package/sdk/dist/errors.d.ts +46 -0
  471. package/sdk/dist/errors.d.ts.map +1 -0
  472. package/sdk/dist/errors.js +64 -0
  473. package/sdk/dist/errors.js.map +1 -0
  474. package/sdk/dist/event-stream.d.ts +53 -0
  475. package/sdk/dist/event-stream.d.ts.map +1 -0
  476. package/sdk/dist/event-stream.js +321 -0
  477. package/sdk/dist/event-stream.js.map +1 -0
  478. package/sdk/dist/golden/capture.d.ts +15 -0
  479. package/sdk/dist/golden/capture.d.ts.map +1 -0
  480. package/sdk/dist/golden/capture.js +67 -0
  481. package/sdk/dist/golden/capture.js.map +1 -0
  482. package/sdk/dist/golden/golden-integration-covered.d.ts +6 -0
  483. package/sdk/dist/golden/golden-integration-covered.d.ts.map +1 -0
  484. package/sdk/dist/golden/golden-integration-covered.js +30 -0
  485. package/sdk/dist/golden/golden-integration-covered.js.map +1 -0
  486. package/sdk/dist/golden/golden-mutation-covered.d.ts +7 -0
  487. package/sdk/dist/golden/golden-mutation-covered.d.ts.map +1 -0
  488. package/sdk/dist/golden/golden-mutation-covered.js +17 -0
  489. package/sdk/dist/golden/golden-mutation-covered.js.map +1 -0
  490. package/sdk/dist/golden/golden-policy.d.ts +10 -0
  491. package/sdk/dist/golden/golden-policy.d.ts.map +1 -0
  492. package/sdk/dist/golden/golden-policy.js +97 -0
  493. package/sdk/dist/golden/golden-policy.js.map +1 -0
  494. package/sdk/dist/golden/init-golden-normalize.d.ts +8 -0
  495. package/sdk/dist/golden/init-golden-normalize.d.ts.map +1 -0
  496. package/sdk/dist/golden/init-golden-normalize.js +14 -0
  497. package/sdk/dist/golden/init-golden-normalize.js.map +1 -0
  498. package/sdk/dist/golden/read-only-golden-rows.d.ts +20 -0
  499. package/sdk/dist/golden/read-only-golden-rows.d.ts.map +1 -0
  500. package/sdk/dist/golden/read-only-golden-rows.js +67 -0
  501. package/sdk/dist/golden/read-only-golden-rows.js.map +1 -0
  502. package/sdk/dist/golden/registry-canonical-commands.d.ts +6 -0
  503. package/sdk/dist/golden/registry-canonical-commands.d.ts.map +1 -0
  504. package/sdk/dist/golden/registry-canonical-commands.js +30 -0
  505. package/sdk/dist/golden/registry-canonical-commands.js.map +1 -0
  506. package/sdk/dist/gtd-tools-error.d.ts +23 -0
  507. package/sdk/dist/gtd-tools-error.d.ts.map +1 -0
  508. package/sdk/dist/gtd-tools-error.js +29 -0
  509. package/sdk/dist/gtd-tools-error.js.map +1 -0
  510. package/sdk/dist/gtd-tools.d.ts +102 -0
  511. package/sdk/dist/gtd-tools.d.ts.map +1 -0
  512. package/sdk/dist/gtd-tools.js +222 -0
  513. package/sdk/dist/gtd-tools.js.map +1 -0
  514. package/sdk/dist/gtd-transport-policy.d.ts +10 -0
  515. package/sdk/dist/gtd-transport-policy.d.ts.map +1 -0
  516. package/sdk/dist/gtd-transport-policy.js +32 -0
  517. package/sdk/dist/gtd-transport-policy.js.map +1 -0
  518. package/sdk/dist/gtd-transport.d.ts +39 -0
  519. package/sdk/dist/gtd-transport.d.ts.map +1 -0
  520. package/sdk/dist/gtd-transport.js +78 -0
  521. package/sdk/dist/gtd-transport.js.map +1 -0
  522. package/sdk/dist/index.d.ts +127 -0
  523. package/sdk/dist/index.d.ts.map +1 -0
  524. package/sdk/dist/index.js +298 -0
  525. package/sdk/dist/index.js.map +1 -0
  526. package/sdk/dist/init-runner.d.ts +90 -0
  527. package/sdk/dist/init-runner.d.ts.map +1 -0
  528. package/sdk/dist/init-runner.js +613 -0
  529. package/sdk/dist/init-runner.js.map +1 -0
  530. package/sdk/dist/logger.d.ts +50 -0
  531. package/sdk/dist/logger.d.ts.map +1 -0
  532. package/sdk/dist/logger.js +70 -0
  533. package/sdk/dist/logger.js.map +1 -0
  534. package/sdk/dist/model-catalog.d.ts +33 -0
  535. package/sdk/dist/model-catalog.d.ts.map +1 -0
  536. package/sdk/dist/model-catalog.js +34 -0
  537. package/sdk/dist/model-catalog.js.map +1 -0
  538. package/sdk/dist/phase-prompt.d.ts +71 -0
  539. package/sdk/dist/phase-prompt.d.ts.map +1 -0
  540. package/sdk/dist/phase-prompt.js +208 -0
  541. package/sdk/dist/phase-prompt.js.map +1 -0
  542. package/sdk/dist/phase-runner.d.ts +145 -0
  543. package/sdk/dist/phase-runner.d.ts.map +1 -0
  544. package/sdk/dist/phase-runner.js +1206 -0
  545. package/sdk/dist/phase-runner.js.map +1 -0
  546. package/sdk/dist/plan-atomicity.d.ts +26 -0
  547. package/sdk/dist/plan-atomicity.d.ts.map +1 -0
  548. package/sdk/dist/plan-atomicity.js +116 -0
  549. package/sdk/dist/plan-atomicity.js.map +1 -0
  550. package/sdk/dist/plan-parser.d.ts +55 -0
  551. package/sdk/dist/plan-parser.d.ts.map +1 -0
  552. package/sdk/dist/plan-parser.js +391 -0
  553. package/sdk/dist/plan-parser.js.map +1 -0
  554. package/sdk/dist/planning-journal.d.ts +64 -0
  555. package/sdk/dist/planning-journal.d.ts.map +1 -0
  556. package/sdk/dist/planning-journal.js +88 -0
  557. package/sdk/dist/planning-journal.js.map +1 -0
  558. package/sdk/dist/planning-runtime.d.ts +67 -0
  559. package/sdk/dist/planning-runtime.d.ts.map +1 -0
  560. package/sdk/dist/planning-runtime.js +58 -0
  561. package/sdk/dist/planning-runtime.js.map +1 -0
  562. package/sdk/dist/project-root/index.d.ts +46 -0
  563. package/sdk/dist/project-root/index.d.ts.map +1 -0
  564. package/sdk/dist/project-root/index.js +138 -0
  565. package/sdk/dist/project-root/index.js.map +1 -0
  566. package/sdk/dist/prompt-builder.d.ts +44 -0
  567. package/sdk/dist/prompt-builder.d.ts.map +1 -0
  568. package/sdk/dist/prompt-builder.js +180 -0
  569. package/sdk/dist/prompt-builder.js.map +1 -0
  570. package/sdk/dist/prompt-sanitizer.d.ts +35 -0
  571. package/sdk/dist/prompt-sanitizer.d.ts.map +1 -0
  572. package/sdk/dist/prompt-sanitizer.js +101 -0
  573. package/sdk/dist/prompt-sanitizer.js.map +1 -0
  574. package/sdk/dist/query/active-workstream-store.d.ts +7 -0
  575. package/sdk/dist/query/active-workstream-store.d.ts.map +1 -0
  576. package/sdk/dist/query/active-workstream-store.js +56 -0
  577. package/sdk/dist/query/active-workstream-store.js.map +1 -0
  578. package/sdk/dist/query/agent-failure-classifier.d.ts +37 -0
  579. package/sdk/dist/query/agent-failure-classifier.d.ts.map +1 -0
  580. package/sdk/dist/query/agent-failure-classifier.js +82 -0
  581. package/sdk/dist/query/agent-failure-classifier.js.map +1 -0
  582. package/sdk/dist/query/audit-open.d.ts +46 -0
  583. package/sdk/dist/query/audit-open.d.ts.map +1 -0
  584. package/sdk/dist/query/audit-open.js +662 -0
  585. package/sdk/dist/query/audit-open.js.map +1 -0
  586. package/sdk/dist/query/check-auto-mode.d.ts +13 -0
  587. package/sdk/dist/query/check-auto-mode.d.ts.map +1 -0
  588. package/sdk/dist/query/check-auto-mode.js +40 -0
  589. package/sdk/dist/query/check-auto-mode.js.map +1 -0
  590. package/sdk/dist/query/check-completion.d.ts +10 -0
  591. package/sdk/dist/query/check-completion.d.ts.map +1 -0
  592. package/sdk/dist/query/check-completion.js +157 -0
  593. package/sdk/dist/query/check-completion.js.map +1 -0
  594. package/sdk/dist/query/check-decision-coverage.d.ts +33 -0
  595. package/sdk/dist/query/check-decision-coverage.d.ts.map +1 -0
  596. package/sdk/dist/query/check-decision-coverage.js +472 -0
  597. package/sdk/dist/query/check-decision-coverage.js.map +1 -0
  598. package/sdk/dist/query/check-gates.d.ts +10 -0
  599. package/sdk/dist/query/check-gates.d.ts.map +1 -0
  600. package/sdk/dist/query/check-gates.js +89 -0
  601. package/sdk/dist/query/check-gates.js.map +1 -0
  602. package/sdk/dist/query/check-verification-status.d.ts +10 -0
  603. package/sdk/dist/query/check-verification-status.d.ts.map +1 -0
  604. package/sdk/dist/query/check-verification-status.js +142 -0
  605. package/sdk/dist/query/check-verification-status.js.map +1 -0
  606. package/sdk/dist/query/command-aliases.generated.d.ts +31 -0
  607. package/sdk/dist/query/command-aliases.generated.d.ts.map +1 -0
  608. package/sdk/dist/query/command-aliases.generated.js +134 -0
  609. package/sdk/dist/query/command-aliases.generated.js.map +1 -0
  610. package/sdk/dist/query/command-catalog.d.ts +9 -0
  611. package/sdk/dist/query/command-catalog.d.ts.map +1 -0
  612. package/sdk/dist/query/command-catalog.js +17 -0
  613. package/sdk/dist/query/command-catalog.js.map +1 -0
  614. package/sdk/dist/query/command-definition.d.ts +19 -0
  615. package/sdk/dist/query/command-definition.d.ts.map +1 -0
  616. package/sdk/dist/query/command-definition.js +44 -0
  617. package/sdk/dist/query/command-definition.js.map +1 -0
  618. package/sdk/dist/query/command-family-handlers.d.ts +3 -0
  619. package/sdk/dist/query/command-family-handlers.d.ts.map +1 -0
  620. package/sdk/dist/query/command-family-handlers.js +93 -0
  621. package/sdk/dist/query/command-family-handlers.js.map +1 -0
  622. package/sdk/dist/query/command-manifest.d.ts +2 -0
  623. package/sdk/dist/query/command-manifest.d.ts.map +1 -0
  624. package/sdk/dist/query/command-manifest.init.d.ts +6 -0
  625. package/sdk/dist/query/command-manifest.init.d.ts.map +1 -0
  626. package/sdk/dist/query/command-manifest.init.js +22 -0
  627. package/sdk/dist/query/command-manifest.init.js.map +1 -0
  628. package/sdk/dist/query/command-manifest.js +17 -0
  629. package/sdk/dist/query/command-manifest.js.map +1 -0
  630. package/sdk/dist/query/command-manifest.non-family.d.ts +9 -0
  631. package/sdk/dist/query/command-manifest.non-family.d.ts.map +1 -0
  632. package/sdk/dist/query/command-manifest.non-family.js +62 -0
  633. package/sdk/dist/query/command-manifest.non-family.js.map +1 -0
  634. package/sdk/dist/query/command-manifest.phase.d.ts +6 -0
  635. package/sdk/dist/query/command-manifest.phase.d.ts.map +1 -0
  636. package/sdk/dist/query/command-manifest.phase.js +15 -0
  637. package/sdk/dist/query/command-manifest.phase.js.map +1 -0
  638. package/sdk/dist/query/command-manifest.phases.d.ts +7 -0
  639. package/sdk/dist/query/command-manifest.phases.d.ts.map +1 -0
  640. package/sdk/dist/query/command-manifest.phases.js +10 -0
  641. package/sdk/dist/query/command-manifest.phases.js.map +1 -0
  642. package/sdk/dist/query/command-manifest.roadmap.d.ts +6 -0
  643. package/sdk/dist/query/command-manifest.roadmap.d.ts.map +1 -0
  644. package/sdk/dist/query/command-manifest.roadmap.js +10 -0
  645. package/sdk/dist/query/command-manifest.roadmap.js.map +1 -0
  646. package/sdk/dist/query/command-manifest.state.d.ts +9 -0
  647. package/sdk/dist/query/command-manifest.state.d.ts.map +1 -0
  648. package/sdk/dist/query/command-manifest.state.js +30 -0
  649. package/sdk/dist/query/command-manifest.state.js.map +1 -0
  650. package/sdk/dist/query/command-manifest.types.d.ts +12 -0
  651. package/sdk/dist/query/command-manifest.types.d.ts.map +1 -0
  652. package/sdk/dist/query/command-manifest.types.js +2 -0
  653. package/sdk/dist/query/command-manifest.types.js.map +1 -0
  654. package/sdk/dist/query/command-manifest.validate.d.ts +6 -0
  655. package/sdk/dist/query/command-manifest.validate.d.ts.map +1 -0
  656. package/sdk/dist/query/command-manifest.validate.js +10 -0
  657. package/sdk/dist/query/command-manifest.validate.js.map +1 -0
  658. package/sdk/dist/query/command-manifest.verify.d.ts +6 -0
  659. package/sdk/dist/query/command-manifest.verify.d.ts.map +1 -0
  660. package/sdk/dist/query/command-manifest.verify.js +14 -0
  661. package/sdk/dist/query/command-manifest.verify.js.map +1 -0
  662. package/sdk/dist/query/command-static-catalog-domain.d.ts +3 -0
  663. package/sdk/dist/query/command-static-catalog-domain.d.ts.map +1 -0
  664. package/sdk/dist/query/command-static-catalog-domain.js +120 -0
  665. package/sdk/dist/query/command-static-catalog-domain.js.map +1 -0
  666. package/sdk/dist/query/command-static-catalog-foundation.d.ts +7 -0
  667. package/sdk/dist/query/command-static-catalog-foundation.d.ts.map +1 -0
  668. package/sdk/dist/query/command-static-catalog-foundation.js +95 -0
  669. package/sdk/dist/query/command-static-catalog-foundation.js.map +1 -0
  670. package/sdk/dist/query/command-topology.d.ts +32 -0
  671. package/sdk/dist/query/command-topology.d.ts.map +1 -0
  672. package/sdk/dist/query/command-topology.js +66 -0
  673. package/sdk/dist/query/command-topology.js.map +1 -0
  674. package/sdk/dist/query/commands-list.d.ts +14 -0
  675. package/sdk/dist/query/commands-list.d.ts.map +1 -0
  676. package/sdk/dist/query/commands-list.js +18 -0
  677. package/sdk/dist/query/commands-list.js.map +1 -0
  678. package/sdk/dist/query/commit.d.ts +79 -0
  679. package/sdk/dist/query/commit.d.ts.map +1 -0
  680. package/sdk/dist/query/commit.js +340 -0
  681. package/sdk/dist/query/commit.js.map +1 -0
  682. package/sdk/dist/query/config-gates.d.ts +12 -0
  683. package/sdk/dist/query/config-gates.d.ts.map +1 -0
  684. package/sdk/dist/query/config-gates.js +66 -0
  685. package/sdk/dist/query/config-gates.js.map +1 -0
  686. package/sdk/dist/query/config-mutation.d.ts +86 -0
  687. package/sdk/dist/query/config-mutation.d.ts.map +1 -0
  688. package/sdk/dist/query/config-mutation.js +445 -0
  689. package/sdk/dist/query/config-mutation.js.map +1 -0
  690. package/sdk/dist/query/config-query.d.ts +57 -0
  691. package/sdk/dist/query/config-query.d.ts.map +1 -0
  692. package/sdk/dist/query/config-query.js +208 -0
  693. package/sdk/dist/query/config-query.js.map +1 -0
  694. package/sdk/dist/query/config-schema.d.ts +19 -0
  695. package/sdk/dist/query/config-schema.d.ts.map +1 -0
  696. package/sdk/dist/query/config-schema.js +26 -0
  697. package/sdk/dist/query/config-schema.js.map +1 -0
  698. package/sdk/dist/query/decisions.d.ts +58 -0
  699. package/sdk/dist/query/decisions.d.ts.map +1 -0
  700. package/sdk/dist/query/decisions.js +161 -0
  701. package/sdk/dist/query/decisions.js.map +1 -0
  702. package/sdk/dist/query/detect-custom-files.d.ts +11 -0
  703. package/sdk/dist/query/detect-custom-files.d.ts.map +1 -0
  704. package/sdk/dist/query/detect-custom-files.js +89 -0
  705. package/sdk/dist/query/detect-custom-files.js.map +1 -0
  706. package/sdk/dist/query/detect-phase-type.d.ts +9 -0
  707. package/sdk/dist/query/detect-phase-type.d.ts.map +1 -0
  708. package/sdk/dist/query/detect-phase-type.js +124 -0
  709. package/sdk/dist/query/detect-phase-type.js.map +1 -0
  710. package/sdk/dist/query/docs-init.d.ts +26 -0
  711. package/sdk/dist/query/docs-init.d.ts.map +1 -0
  712. package/sdk/dist/query/docs-init.js +231 -0
  713. package/sdk/dist/query/docs-init.js.map +1 -0
  714. package/sdk/dist/query/fallow-audit.d.ts +44 -0
  715. package/sdk/dist/query/fallow-audit.d.ts.map +1 -0
  716. package/sdk/dist/query/fallow-audit.js +44 -0
  717. package/sdk/dist/query/fallow-audit.js.map +1 -0
  718. package/sdk/dist/query/frontmatter-mutation.d.ts +77 -0
  719. package/sdk/dist/query/frontmatter-mutation.d.ts.map +1 -0
  720. package/sdk/dist/query/frontmatter-mutation.js +317 -0
  721. package/sdk/dist/query/frontmatter-mutation.js.map +1 -0
  722. package/sdk/dist/query/frontmatter.d.ts +93 -0
  723. package/sdk/dist/query/frontmatter.d.ts.map +1 -0
  724. package/sdk/dist/query/frontmatter.js +365 -0
  725. package/sdk/dist/query/frontmatter.js.map +1 -0
  726. package/sdk/dist/query/helpers.d.ts +167 -0
  727. package/sdk/dist/query/helpers.d.ts.map +1 -0
  728. package/sdk/dist/query/helpers.js +495 -0
  729. package/sdk/dist/query/helpers.js.map +1 -0
  730. package/sdk/dist/query/index.d.ts +8 -0
  731. package/sdk/dist/query/index.d.ts.map +1 -0
  732. package/sdk/dist/query/index.js +6 -0
  733. package/sdk/dist/query/index.js.map +1 -0
  734. package/sdk/dist/query/init-complex.d.ts +47 -0
  735. package/sdk/dist/query/init-complex.d.ts.map +1 -0
  736. package/sdk/dist/query/init-complex.js +723 -0
  737. package/sdk/dist/query/init-complex.js.map +1 -0
  738. package/sdk/dist/query/init.d.ts +98 -0
  739. package/sdk/dist/query/init.d.ts.map +1 -0
  740. package/sdk/dist/query/init.js +1074 -0
  741. package/sdk/dist/query/init.js.map +1 -0
  742. package/sdk/dist/query/intel.d.ts +43 -0
  743. package/sdk/dist/query/intel.d.ts.map +1 -0
  744. package/sdk/dist/query/intel.js +416 -0
  745. package/sdk/dist/query/intel.js.map +1 -0
  746. package/sdk/dist/query/mutation-event-decorator.d.ts +5 -0
  747. package/sdk/dist/query/mutation-event-decorator.d.ts.map +1 -0
  748. package/sdk/dist/query/mutation-event-decorator.js +28 -0
  749. package/sdk/dist/query/mutation-event-decorator.js.map +1 -0
  750. package/sdk/dist/query/mutation-event-mapper.d.ts +4 -0
  751. package/sdk/dist/query/mutation-event-mapper.d.ts.map +1 -0
  752. package/sdk/dist/query/mutation-event-mapper.js +70 -0
  753. package/sdk/dist/query/mutation-event-mapper.js.map +1 -0
  754. package/sdk/dist/query/mvp.d.ts +113 -0
  755. package/sdk/dist/query/mvp.d.ts.map +1 -0
  756. package/sdk/dist/query/mvp.js +225 -0
  757. package/sdk/dist/query/mvp.js.map +1 -0
  758. package/sdk/dist/query/phase-filesystem-adapter.d.ts +4 -0
  759. package/sdk/dist/query/phase-filesystem-adapter.d.ts.map +1 -0
  760. package/sdk/dist/query/phase-filesystem-adapter.js +33 -0
  761. package/sdk/dist/query/phase-filesystem-adapter.js.map +1 -0
  762. package/sdk/dist/query/phase-lifecycle-policy.d.ts +34 -0
  763. package/sdk/dist/query/phase-lifecycle-policy.d.ts.map +1 -0
  764. package/sdk/dist/query/phase-lifecycle-policy.js +138 -0
  765. package/sdk/dist/query/phase-lifecycle-policy.js.map +1 -0
  766. package/sdk/dist/query/phase-lifecycle.d.ts +116 -0
  767. package/sdk/dist/query/phase-lifecycle.d.ts.map +1 -0
  768. package/sdk/dist/query/phase-lifecycle.js +1486 -0
  769. package/sdk/dist/query/phase-lifecycle.js.map +1 -0
  770. package/sdk/dist/query/phase-list-queries.d.ts +18 -0
  771. package/sdk/dist/query/phase-list-queries.d.ts.map +1 -0
  772. package/sdk/dist/query/phase-list-queries.js +129 -0
  773. package/sdk/dist/query/phase-list-queries.js.map +1 -0
  774. package/sdk/dist/query/phase-ready.d.ts +9 -0
  775. package/sdk/dist/query/phase-ready.d.ts.map +1 -0
  776. package/sdk/dist/query/phase-ready.js +132 -0
  777. package/sdk/dist/query/phase-ready.js.map +1 -0
  778. package/sdk/dist/query/phase-roadmap-mutation.d.ts +13 -0
  779. package/sdk/dist/query/phase-roadmap-mutation.d.ts.map +1 -0
  780. package/sdk/dist/query/phase-roadmap-mutation.js +65 -0
  781. package/sdk/dist/query/phase-roadmap-mutation.js.map +1 -0
  782. package/sdk/dist/query/phase.d.ts +48 -0
  783. package/sdk/dist/query/phase.d.ts.map +1 -0
  784. package/sdk/dist/query/phase.js +451 -0
  785. package/sdk/dist/query/phase.js.map +1 -0
  786. package/sdk/dist/query/pipeline.d.ts +53 -0
  787. package/sdk/dist/query/pipeline.d.ts.map +1 -0
  788. package/sdk/dist/query/pipeline.js +198 -0
  789. package/sdk/dist/query/pipeline.js.map +1 -0
  790. package/sdk/dist/query/plan-scan.d.ts +14 -0
  791. package/sdk/dist/query/plan-scan.d.ts.map +1 -0
  792. package/sdk/dist/query/plan-scan.js +70 -0
  793. package/sdk/dist/query/plan-scan.js.map +1 -0
  794. package/sdk/dist/query/plan-task-structure.d.ts +9 -0
  795. package/sdk/dist/query/plan-task-structure.d.ts.map +1 -0
  796. package/sdk/dist/query/plan-task-structure.js +59 -0
  797. package/sdk/dist/query/plan-task-structure.js.map +1 -0
  798. package/sdk/dist/query/profile-extract-messages.d.ts +40 -0
  799. package/sdk/dist/query/profile-extract-messages.d.ts.map +1 -0
  800. package/sdk/dist/query/profile-extract-messages.js +195 -0
  801. package/sdk/dist/query/profile-extract-messages.js.map +1 -0
  802. package/sdk/dist/query/profile-output.d.ts +11 -0
  803. package/sdk/dist/query/profile-output.d.ts.map +1 -0
  804. package/sdk/dist/query/profile-output.js +873 -0
  805. package/sdk/dist/query/profile-output.js.map +1 -0
  806. package/sdk/dist/query/profile-questionnaire-data.d.ts +21 -0
  807. package/sdk/dist/query/profile-questionnaire-data.d.ts.map +1 -0
  808. package/sdk/dist/query/profile-questionnaire-data.js +171 -0
  809. package/sdk/dist/query/profile-questionnaire-data.js.map +1 -0
  810. package/sdk/dist/query/profile-sample.d.ts +22 -0
  811. package/sdk/dist/query/profile-sample.d.ts.map +1 -0
  812. package/sdk/dist/query/profile-sample.js +136 -0
  813. package/sdk/dist/query/profile-sample.js.map +1 -0
  814. package/sdk/dist/query/profile-scan-sessions.d.ts +49 -0
  815. package/sdk/dist/query/profile-scan-sessions.d.ts.map +1 -0
  816. package/sdk/dist/query/profile-scan-sessions.js +137 -0
  817. package/sdk/dist/query/profile-scan-sessions.js.map +1 -0
  818. package/sdk/dist/query/profile.d.ts +61 -0
  819. package/sdk/dist/query/profile.d.ts.map +1 -0
  820. package/sdk/dist/query/profile.js +307 -0
  821. package/sdk/dist/query/profile.js.map +1 -0
  822. package/sdk/dist/query/progress.d.ts +77 -0
  823. package/sdk/dist/query/progress.d.ts.map +1 -0
  824. package/sdk/dist/query/progress.js +481 -0
  825. package/sdk/dist/query/progress.js.map +1 -0
  826. package/sdk/dist/query/query-cli-adapter.d.ts +8 -0
  827. package/sdk/dist/query/query-cli-adapter.d.ts.map +1 -0
  828. package/sdk/dist/query/query-cli-adapter.js +32 -0
  829. package/sdk/dist/query/query-cli-adapter.js.map +1 -0
  830. package/sdk/dist/query/query-cli-output.d.ts +9 -0
  831. package/sdk/dist/query/query-cli-output.d.ts.map +1 -0
  832. package/sdk/dist/query/query-cli-output.js +54 -0
  833. package/sdk/dist/query/query-cli-output.js.map +1 -0
  834. package/sdk/dist/query/query-command-diagnosis.d.ts +6 -0
  835. package/sdk/dist/query/query-command-diagnosis.d.ts.map +1 -0
  836. package/sdk/dist/query/query-command-diagnosis.js +6 -0
  837. package/sdk/dist/query/query-command-diagnosis.js.map +1 -0
  838. package/sdk/dist/query/query-command-resolution-strategy.d.ts +29 -0
  839. package/sdk/dist/query/query-command-resolution-strategy.d.ts.map +1 -0
  840. package/sdk/dist/query/query-command-resolution-strategy.js +103 -0
  841. package/sdk/dist/query/query-command-resolution-strategy.js.map +1 -0
  842. package/sdk/dist/query/query-command-semantics.d.ts +7 -0
  843. package/sdk/dist/query/query-command-semantics.d.ts.map +1 -0
  844. package/sdk/dist/query/query-command-semantics.js +7 -0
  845. package/sdk/dist/query/query-command-semantics.js.map +1 -0
  846. package/sdk/dist/query/query-dispatch-contract.d.ts +21 -0
  847. package/sdk/dist/query/query-dispatch-contract.d.ts.map +1 -0
  848. package/sdk/dist/query/query-dispatch-contract.js +2 -0
  849. package/sdk/dist/query/query-dispatch-contract.js.map +1 -0
  850. package/sdk/dist/query/query-dispatch-error-mapper.d.ts +6 -0
  851. package/sdk/dist/query/query-dispatch-error-mapper.d.ts.map +1 -0
  852. package/sdk/dist/query/query-dispatch-error-mapper.js +6 -0
  853. package/sdk/dist/query/query-dispatch-error-mapper.js.map +1 -0
  854. package/sdk/dist/query/query-dispatch-formatting.d.ts +6 -0
  855. package/sdk/dist/query/query-dispatch-formatting.d.ts.map +1 -0
  856. package/sdk/dist/query/query-dispatch-formatting.js +6 -0
  857. package/sdk/dist/query/query-dispatch-formatting.js.map +1 -0
  858. package/sdk/dist/query/query-dispatch-input-validation.d.ts +6 -0
  859. package/sdk/dist/query/query-dispatch-input-validation.d.ts.map +1 -0
  860. package/sdk/dist/query/query-dispatch-input-validation.js +6 -0
  861. package/sdk/dist/query/query-dispatch-input-validation.js.map +1 -0
  862. package/sdk/dist/query/query-dispatch-observability.d.ts +2 -0
  863. package/sdk/dist/query/query-dispatch-observability.d.ts.map +1 -0
  864. package/sdk/dist/query/query-dispatch-observability.js +7 -0
  865. package/sdk/dist/query/query-dispatch-observability.js.map +1 -0
  866. package/sdk/dist/query/query-dispatch-plan.d.ts +6 -0
  867. package/sdk/dist/query/query-dispatch-plan.d.ts.map +1 -0
  868. package/sdk/dist/query/query-dispatch-plan.js +6 -0
  869. package/sdk/dist/query/query-dispatch-plan.js.map +1 -0
  870. package/sdk/dist/query/query-dispatch-result-builder.d.ts +6 -0
  871. package/sdk/dist/query/query-dispatch-result-builder.d.ts.map +1 -0
  872. package/sdk/dist/query/query-dispatch-result-builder.js +6 -0
  873. package/sdk/dist/query/query-dispatch-result-builder.js.map +1 -0
  874. package/sdk/dist/query/query-dispatch.d.ts +48 -0
  875. package/sdk/dist/query/query-dispatch.d.ts.map +1 -0
  876. package/sdk/dist/query/query-dispatch.js +205 -0
  877. package/sdk/dist/query/query-dispatch.js.map +1 -0
  878. package/sdk/dist/query/query-error-details-schema.d.ts +19 -0
  879. package/sdk/dist/query/query-error-details-schema.d.ts.map +1 -0
  880. package/sdk/dist/query/query-error-details-schema.js +10 -0
  881. package/sdk/dist/query/query-error-details-schema.js.map +1 -0
  882. package/sdk/dist/query/query-error-taxonomy.d.ts +38 -0
  883. package/sdk/dist/query/query-error-taxonomy.d.ts.map +1 -0
  884. package/sdk/dist/query/query-error-taxonomy.js +74 -0
  885. package/sdk/dist/query/query-error-taxonomy.js.map +1 -0
  886. package/sdk/dist/query/query-fallback-bridge-adapter.d.ts +14 -0
  887. package/sdk/dist/query/query-fallback-bridge-adapter.d.ts.map +1 -0
  888. package/sdk/dist/query/query-fallback-bridge-adapter.js +33 -0
  889. package/sdk/dist/query/query-fallback-bridge-adapter.js.map +1 -0
  890. package/sdk/dist/query/query-fallback-executor.d.ts +11 -0
  891. package/sdk/dist/query/query-fallback-executor.d.ts.map +1 -0
  892. package/sdk/dist/query/query-fallback-executor.js +31 -0
  893. package/sdk/dist/query/query-fallback-executor.js.map +1 -0
  894. package/sdk/dist/query/query-fallback-output-classifier.d.ts +6 -0
  895. package/sdk/dist/query/query-fallback-output-classifier.d.ts.map +1 -0
  896. package/sdk/dist/query/query-fallback-output-classifier.js +27 -0
  897. package/sdk/dist/query/query-fallback-output-classifier.js.map +1 -0
  898. package/sdk/dist/query/query-fallback-policy.d.ts +6 -0
  899. package/sdk/dist/query/query-fallback-policy.d.ts.map +1 -0
  900. package/sdk/dist/query/query-fallback-policy.js +7 -0
  901. package/sdk/dist/query/query-fallback-policy.js.map +1 -0
  902. package/sdk/dist/query/query-native-dispatch-adapter.d.ts +7 -0
  903. package/sdk/dist/query/query-native-dispatch-adapter.d.ts.map +1 -0
  904. package/sdk/dist/query/query-native-dispatch-adapter.js +6 -0
  905. package/sdk/dist/query/query-native-dispatch-adapter.js.map +1 -0
  906. package/sdk/dist/query/query-policy-capability.d.ts +10 -0
  907. package/sdk/dist/query/query-policy-capability.d.ts.map +1 -0
  908. package/sdk/dist/query/query-policy-capability.js +17 -0
  909. package/sdk/dist/query/query-policy-capability.js.map +1 -0
  910. package/sdk/dist/query/query-runtime-context.d.ts +19 -0
  911. package/sdk/dist/query/query-runtime-context.d.ts.map +1 -0
  912. package/sdk/dist/query/query-runtime-context.js +31 -0
  913. package/sdk/dist/query/query-runtime-context.js.map +1 -0
  914. package/sdk/dist/query/query-unknown-command-hints.d.ts +2 -0
  915. package/sdk/dist/query/query-unknown-command-hints.d.ts.map +1 -0
  916. package/sdk/dist/query/query-unknown-command-hints.js +6 -0
  917. package/sdk/dist/query/query-unknown-command-hints.js.map +1 -0
  918. package/sdk/dist/query/registry-assembly-descriptor.d.ts +12 -0
  919. package/sdk/dist/query/registry-assembly-descriptor.d.ts.map +1 -0
  920. package/sdk/dist/query/registry-assembly-descriptor.js +61 -0
  921. package/sdk/dist/query/registry-assembly-descriptor.js.map +1 -0
  922. package/sdk/dist/query/registry-assembly-invariants.d.ts +30 -0
  923. package/sdk/dist/query/registry-assembly-invariants.d.ts.map +1 -0
  924. package/sdk/dist/query/registry-assembly-invariants.js +77 -0
  925. package/sdk/dist/query/registry-assembly-invariants.js.map +1 -0
  926. package/sdk/dist/query/registry-assembly.d.ts +10 -0
  927. package/sdk/dist/query/registry-assembly.d.ts.map +1 -0
  928. package/sdk/dist/query/registry-assembly.js +53 -0
  929. package/sdk/dist/query/registry-assembly.js.map +1 -0
  930. package/sdk/dist/query/registry.d.ts +90 -0
  931. package/sdk/dist/query/registry.d.ts.map +1 -0
  932. package/sdk/dist/query/registry.js +129 -0
  933. package/sdk/dist/query/registry.js.map +1 -0
  934. package/sdk/dist/query/requirements-extract-from-plans.d.ts +9 -0
  935. package/sdk/dist/query/requirements-extract-from-plans.d.ts.map +1 -0
  936. package/sdk/dist/query/requirements-extract-from-plans.js +76 -0
  937. package/sdk/dist/query/requirements-extract-from-plans.js.map +1 -0
  938. package/sdk/dist/query/roadmap-update-plan-progress.d.ts +11 -0
  939. package/sdk/dist/query/roadmap-update-plan-progress.d.ts.map +1 -0
  940. package/sdk/dist/query/roadmap-update-plan-progress.js +124 -0
  941. package/sdk/dist/query/roadmap-update-plan-progress.js.map +1 -0
  942. package/sdk/dist/query/roadmap.d.ts +137 -0
  943. package/sdk/dist/query/roadmap.d.ts.map +1 -0
  944. package/sdk/dist/query/roadmap.js +753 -0
  945. package/sdk/dist/query/roadmap.js.map +1 -0
  946. package/sdk/dist/query/route-next-action.d.ts +9 -0
  947. package/sdk/dist/query/route-next-action.d.ts.map +1 -0
  948. package/sdk/dist/query/route-next-action.js +342 -0
  949. package/sdk/dist/query/route-next-action.js.map +1 -0
  950. package/sdk/dist/query/schema-detect.d.ts +21 -0
  951. package/sdk/dist/query/schema-detect.d.ts.map +1 -0
  952. package/sdk/dist/query/schema-detect.js +146 -0
  953. package/sdk/dist/query/schema-detect.js.map +1 -0
  954. package/sdk/dist/query/secrets.d.ts +27 -0
  955. package/sdk/dist/query/secrets.d.ts.map +1 -0
  956. package/sdk/dist/query/secrets.js +42 -0
  957. package/sdk/dist/query/secrets.js.map +1 -0
  958. package/sdk/dist/query/skill-manifest.d.ts +50 -0
  959. package/sdk/dist/query/skill-manifest.d.ts.map +1 -0
  960. package/sdk/dist/query/skill-manifest.js +171 -0
  961. package/sdk/dist/query/skill-manifest.js.map +1 -0
  962. package/sdk/dist/query/skills.d.ts +27 -0
  963. package/sdk/dist/query/skills.d.ts.map +1 -0
  964. package/sdk/dist/query/skills.js +137 -0
  965. package/sdk/dist/query/skills.js.map +1 -0
  966. package/sdk/dist/query/state-document.d.ts +14 -0
  967. package/sdk/dist/query/state-document.d.ts.map +1 -0
  968. package/sdk/dist/query/state-document.js +110 -0
  969. package/sdk/dist/query/state-document.js.map +1 -0
  970. package/sdk/dist/query/state-mutation.d.ts +224 -0
  971. package/sdk/dist/query/state-mutation.d.ts.map +1 -0
  972. package/sdk/dist/query/state-mutation.js +1539 -0
  973. package/sdk/dist/query/state-mutation.js.map +1 -0
  974. package/sdk/dist/query/state-project-load.d.ts +23 -0
  975. package/sdk/dist/query/state-project-load.d.ts.map +1 -0
  976. package/sdk/dist/query/state-project-load.js +75 -0
  977. package/sdk/dist/query/state-project-load.js.map +1 -0
  978. package/sdk/dist/query/state.d.ts +78 -0
  979. package/sdk/dist/query/state.d.ts.map +1 -0
  980. package/sdk/dist/query/state.js +430 -0
  981. package/sdk/dist/query/state.js.map +1 -0
  982. package/sdk/dist/query/summary.d.ts +18 -0
  983. package/sdk/dist/query/summary.d.ts.map +1 -0
  984. package/sdk/dist/query/summary.js +249 -0
  985. package/sdk/dist/query/summary.js.map +1 -0
  986. package/sdk/dist/query/task-issues.d.ts +5 -0
  987. package/sdk/dist/query/task-issues.d.ts.map +1 -0
  988. package/sdk/dist/query/task-issues.js +72 -0
  989. package/sdk/dist/query/task-issues.js.map +1 -0
  990. package/sdk/dist/query/template.d.ts +46 -0
  991. package/sdk/dist/query/template.d.ts.map +1 -0
  992. package/sdk/dist/query/template.js +210 -0
  993. package/sdk/dist/query/template.js.map +1 -0
  994. package/sdk/dist/query/uat.d.ts +34 -0
  995. package/sdk/dist/query/uat.d.ts.map +1 -0
  996. package/sdk/dist/query/uat.js +339 -0
  997. package/sdk/dist/query/uat.js.map +1 -0
  998. package/sdk/dist/query/utils.d.ts +59 -0
  999. package/sdk/dist/query/utils.d.ts.map +1 -0
  1000. package/sdk/dist/query/utils.js +74 -0
  1001. package/sdk/dist/query/utils.js.map +1 -0
  1002. package/sdk/dist/query/validate.d.ts +67 -0
  1003. package/sdk/dist/query/validate.d.ts.map +1 -0
  1004. package/sdk/dist/query/validate.js +908 -0
  1005. package/sdk/dist/query/validate.js.map +1 -0
  1006. package/sdk/dist/query/verify.d.ts +110 -0
  1007. package/sdk/dist/query/verify.d.ts.map +1 -0
  1008. package/sdk/dist/query/verify.js +647 -0
  1009. package/sdk/dist/query/verify.js.map +1 -0
  1010. package/sdk/dist/query/websearch.d.ts +24 -0
  1011. package/sdk/dist/query/websearch.d.ts.map +1 -0
  1012. package/sdk/dist/query/websearch.js +68 -0
  1013. package/sdk/dist/query/websearch.js.map +1 -0
  1014. package/sdk/dist/query/workspace.d.ts +62 -0
  1015. package/sdk/dist/query/workspace.d.ts.map +1 -0
  1016. package/sdk/dist/query/workspace.js +104 -0
  1017. package/sdk/dist/query/workspace.js.map +1 -0
  1018. package/sdk/dist/query/workstream-inventory.d.ts +24 -0
  1019. package/sdk/dist/query/workstream-inventory.d.ts.map +1 -0
  1020. package/sdk/dist/query/workstream-inventory.js +120 -0
  1021. package/sdk/dist/query/workstream-inventory.js.map +1 -0
  1022. package/sdk/dist/query/workstream.d.ts +35 -0
  1023. package/sdk/dist/query/workstream.d.ts.map +1 -0
  1024. package/sdk/dist/query/workstream.js +298 -0
  1025. package/sdk/dist/query/workstream.js.map +1 -0
  1026. package/sdk/dist/query/worktree.d.ts +3 -0
  1027. package/sdk/dist/query/worktree.d.ts.map +1 -0
  1028. package/sdk/dist/query/worktree.js +36 -0
  1029. package/sdk/dist/query/worktree.js.map +1 -0
  1030. package/sdk/dist/query-command-executor.d.ts +22 -0
  1031. package/sdk/dist/query-command-executor.d.ts.map +1 -0
  1032. package/sdk/dist/query-command-executor.js +22 -0
  1033. package/sdk/dist/query-command-executor.js.map +1 -0
  1034. package/sdk/dist/query-execution-policy.d.ts +24 -0
  1035. package/sdk/dist/query-execution-policy.d.ts.map +1 -0
  1036. package/sdk/dist/query-execution-policy.js +27 -0
  1037. package/sdk/dist/query-execution-policy.js.map +1 -0
  1038. package/sdk/dist/query-failure-classification.d.ts +9 -0
  1039. package/sdk/dist/query-failure-classification.d.ts.map +1 -0
  1040. package/sdk/dist/query-failure-classification.js +32 -0
  1041. package/sdk/dist/query-failure-classification.js.map +1 -0
  1042. package/sdk/dist/query-gtd-tools-path.d.ts +2 -0
  1043. package/sdk/dist/query-gtd-tools-path.d.ts.map +1 -0
  1044. package/sdk/dist/query-gtd-tools-path.js +2 -0
  1045. package/sdk/dist/query-gtd-tools-path.js.map +1 -0
  1046. package/sdk/dist/query-gtd-tools-runtime.d.ts +20 -0
  1047. package/sdk/dist/query-gtd-tools-runtime.d.ts.map +1 -0
  1048. package/sdk/dist/query-gtd-tools-runtime.js +47 -0
  1049. package/sdk/dist/query-gtd-tools-runtime.js.map +1 -0
  1050. package/sdk/dist/query-hotpath-methods.d.ts +19 -0
  1051. package/sdk/dist/query-hotpath-methods.d.ts.map +1 -0
  1052. package/sdk/dist/query-hotpath-methods.js +34 -0
  1053. package/sdk/dist/query-hotpath-methods.js.map +1 -0
  1054. package/sdk/dist/query-native-direct-adapter.d.ts +20 -0
  1055. package/sdk/dist/query-native-direct-adapter.d.ts.map +1 -0
  1056. package/sdk/dist/query-native-direct-adapter.js +52 -0
  1057. package/sdk/dist/query-native-direct-adapter.js.map +1 -0
  1058. package/sdk/dist/query-native-hotpath-adapter.d.ts +15 -0
  1059. package/sdk/dist/query-native-hotpath-adapter.d.ts.map +1 -0
  1060. package/sdk/dist/query-native-hotpath-adapter.js +32 -0
  1061. package/sdk/dist/query-native-hotpath-adapter.js.map +1 -0
  1062. package/sdk/dist/query-raw-output-projection.d.ts +6 -0
  1063. package/sdk/dist/query-raw-output-projection.d.ts.map +1 -0
  1064. package/sdk/dist/query-raw-output-projection.js +67 -0
  1065. package/sdk/dist/query-raw-output-projection.js.map +1 -0
  1066. package/sdk/dist/query-runtime-bridge.d.ts +61 -0
  1067. package/sdk/dist/query-runtime-bridge.d.ts.map +1 -0
  1068. package/sdk/dist/query-runtime-bridge.js +144 -0
  1069. package/sdk/dist/query-runtime-bridge.js.map +1 -0
  1070. package/sdk/dist/query-subprocess-adapter.d.ts +18 -0
  1071. package/sdk/dist/query-subprocess-adapter.d.ts.map +1 -0
  1072. package/sdk/dist/query-subprocess-adapter.js +92 -0
  1073. package/sdk/dist/query-subprocess-adapter.js.map +1 -0
  1074. package/sdk/dist/query-tools-error-factory.d.ts +16 -0
  1075. package/sdk/dist/query-tools-error-factory.d.ts.map +1 -0
  1076. package/sdk/dist/query-tools-error-factory.js +33 -0
  1077. package/sdk/dist/query-tools-error-factory.js.map +1 -0
  1078. package/sdk/dist/research-gate.d.ts +24 -0
  1079. package/sdk/dist/research-gate.d.ts.map +1 -0
  1080. package/sdk/dist/research-gate.js +70 -0
  1081. package/sdk/dist/research-gate.js.map +1 -0
  1082. package/sdk/dist/runtime-bridge-sync/index.d.ts +96 -0
  1083. package/sdk/dist/runtime-bridge-sync/index.d.ts.map +1 -0
  1084. package/sdk/dist/runtime-bridge-sync/index.js +109 -0
  1085. package/sdk/dist/runtime-bridge-sync/index.js.map +1 -0
  1086. package/sdk/dist/runtime-bridge-sync/worker.d.ts +2 -0
  1087. package/sdk/dist/runtime-bridge-sync/worker.d.ts.map +1 -0
  1088. package/sdk/dist/runtime-bridge-sync/worker.js +138 -0
  1089. package/sdk/dist/runtime-bridge-sync/worker.js.map +1 -0
  1090. package/sdk/dist/runtime-gate.d.ts +14 -0
  1091. package/sdk/dist/runtime-gate.d.ts.map +1 -0
  1092. package/sdk/dist/runtime-gate.js +48 -0
  1093. package/sdk/dist/runtime-gate.js.map +1 -0
  1094. package/sdk/dist/sdk-package-compatibility.d.ts +40 -0
  1095. package/sdk/dist/sdk-package-compatibility.d.ts.map +1 -0
  1096. package/sdk/dist/sdk-package-compatibility.js +94 -0
  1097. package/sdk/dist/sdk-package-compatibility.js.map +1 -0
  1098. package/sdk/dist/session-runner.d.ts +40 -0
  1099. package/sdk/dist/session-runner.d.ts.map +1 -0
  1100. package/sdk/dist/session-runner.js +274 -0
  1101. package/sdk/dist/session-runner.js.map +1 -0
  1102. package/sdk/dist/task-issues/adapters.d.ts +94 -0
  1103. package/sdk/dist/task-issues/adapters.d.ts.map +1 -0
  1104. package/sdk/dist/task-issues/adapters.js +2 -0
  1105. package/sdk/dist/task-issues/adapters.js.map +1 -0
  1106. package/sdk/dist/task-issues/core.d.ts +16 -0
  1107. package/sdk/dist/task-issues/core.d.ts.map +1 -0
  1108. package/sdk/dist/task-issues/core.js +283 -0
  1109. package/sdk/dist/task-issues/core.js.map +1 -0
  1110. package/sdk/dist/task-issues/export-phase-issues.d.ts +326 -0
  1111. package/sdk/dist/task-issues/export-phase-issues.d.ts.map +1 -0
  1112. package/sdk/dist/task-issues/export-phase-issues.js +1675 -0
  1113. package/sdk/dist/task-issues/export-phase-issues.js.map +1 -0
  1114. package/sdk/dist/task-issues/github-api-client.d.ts +23 -0
  1115. package/sdk/dist/task-issues/github-api-client.d.ts.map +1 -0
  1116. package/sdk/dist/task-issues/github-api-client.js +66 -0
  1117. package/sdk/dist/task-issues/github-api-client.js.map +1 -0
  1118. package/sdk/dist/task-issues/github-repo.d.ts +4 -0
  1119. package/sdk/dist/task-issues/github-repo.d.ts.map +1 -0
  1120. package/sdk/dist/task-issues/github-repo.js +108 -0
  1121. package/sdk/dist/task-issues/github-repo.js.map +1 -0
  1122. package/sdk/dist/task-issues/orchestrate-tasks.d.ts +319 -0
  1123. package/sdk/dist/task-issues/orchestrate-tasks.d.ts.map +1 -0
  1124. package/sdk/dist/task-issues/orchestrate-tasks.js +2040 -0
  1125. package/sdk/dist/task-issues/orchestrate-tasks.js.map +1 -0
  1126. package/sdk/dist/task-issues/plan-scan.d.ts +13 -0
  1127. package/sdk/dist/task-issues/plan-scan.d.ts.map +1 -0
  1128. package/sdk/dist/task-issues/plan-scan.js +70 -0
  1129. package/sdk/dist/task-issues/plan-scan.js.map +1 -0
  1130. package/sdk/dist/task-issues/runtime-slash.d.ts +4 -0
  1131. package/sdk/dist/task-issues/runtime-slash.d.ts.map +1 -0
  1132. package/sdk/dist/task-issues/runtime-slash.js +40 -0
  1133. package/sdk/dist/task-issues/runtime-slash.js.map +1 -0
  1134. package/sdk/dist/task-issues/task-issue-shared.d.ts +18 -0
  1135. package/sdk/dist/task-issues/task-issue-shared.d.ts.map +1 -0
  1136. package/sdk/dist/task-issues/task-issue-shared.js +44 -0
  1137. package/sdk/dist/task-issues/task-issue-shared.js.map +1 -0
  1138. package/sdk/dist/task-issues/types.d.ts +30 -0
  1139. package/sdk/dist/task-issues/types.d.ts.map +1 -0
  1140. package/sdk/dist/task-issues/types.js +2 -0
  1141. package/sdk/dist/task-issues/types.js.map +1 -0
  1142. package/sdk/dist/task-issues/work-task-issue.d.ts +1199 -0
  1143. package/sdk/dist/task-issues/work-task-issue.d.ts.map +1 -0
  1144. package/sdk/dist/task-issues/work-task-issue.js +3255 -0
  1145. package/sdk/dist/task-issues/work-task-issue.js.map +1 -0
  1146. package/sdk/dist/task-issues/worktree-safety.d.ts +5 -0
  1147. package/sdk/dist/task-issues/worktree-safety.d.ts.map +1 -0
  1148. package/sdk/dist/task-issues/worktree-safety.js +18 -0
  1149. package/sdk/dist/task-issues/worktree-safety.js.map +1 -0
  1150. package/sdk/dist/tool-scoping.d.ts +31 -0
  1151. package/sdk/dist/tool-scoping.d.ts.map +1 -0
  1152. package/sdk/dist/tool-scoping.js +54 -0
  1153. package/sdk/dist/tool-scoping.js.map +1 -0
  1154. package/sdk/dist/types.d.ts +795 -0
  1155. package/sdk/dist/types.d.ts.map +1 -0
  1156. package/sdk/dist/types.js +77 -0
  1157. package/sdk/dist/types.js.map +1 -0
  1158. package/sdk/dist/workstream-inventory/builder.d.ts +88 -0
  1159. package/sdk/dist/workstream-inventory/builder.d.ts.map +1 -0
  1160. package/sdk/dist/workstream-inventory/builder.js +84 -0
  1161. package/sdk/dist/workstream-inventory/builder.js.map +1 -0
  1162. package/sdk/dist/workstream-name-policy.d.ts +13 -0
  1163. package/sdk/dist/workstream-name-policy.d.ts.map +1 -0
  1164. package/sdk/dist/workstream-name-policy.js +24 -0
  1165. package/sdk/dist/workstream-name-policy.js.map +1 -0
  1166. package/sdk/dist/workstream-utils.d.ts +23 -0
  1167. package/sdk/dist/workstream-utils.d.ts.map +1 -0
  1168. package/sdk/dist/workstream-utils.js +34 -0
  1169. package/sdk/dist/workstream-utils.js.map +1 -0
  1170. package/sdk/dist/ws-transport.d.ts +32 -0
  1171. package/sdk/dist/ws-transport.d.ts.map +1 -0
  1172. package/sdk/dist/ws-transport.js +84 -0
  1173. package/sdk/dist/ws-transport.js.map +1 -0
  1174. package/sdk/package-lock.json +2530 -0
  1175. package/sdk/package.json +67 -0
  1176. package/sdk/prompts/templates/project.md +186 -0
  1177. package/sdk/prompts/templates/requirements.md +231 -0
  1178. package/sdk/prompts/templates/research-project/ARCHITECTURE.md +204 -0
  1179. package/sdk/prompts/templates/research-project/FEATURES.md +147 -0
  1180. package/sdk/prompts/templates/research-project/PITFALLS.md +200 -0
  1181. package/sdk/prompts/templates/research-project/STACK.md +120 -0
  1182. package/sdk/prompts/templates/research-project/SUMMARY.md +170 -0
  1183. package/sdk/prompts/templates/roadmap.md +202 -0
  1184. package/sdk/prompts/templates/state.md +175 -0
  1185. package/sdk/shared/config-defaults.manifest.json +71 -0
  1186. package/sdk/shared/config-schema.manifest.json +139 -0
  1187. package/sdk/shared/model-catalog.json +122 -0
  1188. package/sdk/src/assembled-prompts.test.ts +349 -0
  1189. package/sdk/src/bug-3589-planning-paths-validation.test.ts +89 -0
  1190. package/sdk/src/bug-3591-gtdtools-runtime-workstream.test.ts +179 -0
  1191. package/sdk/src/cli-transport.test.ts +388 -0
  1192. package/sdk/src/cli-transport.ts +130 -0
  1193. package/sdk/src/cli.test.ts +426 -0
  1194. package/sdk/src/cli.ts +589 -0
  1195. package/sdk/src/config.test.ts +277 -0
  1196. package/sdk/src/config.ts +201 -0
  1197. package/sdk/src/configuration/index.test.ts +318 -0
  1198. package/sdk/src/configuration/index.ts +325 -0
  1199. package/sdk/src/context-engine.test.ts +295 -0
  1200. package/sdk/src/context-engine.ts +170 -0
  1201. package/sdk/src/context-truncation.test.ts +163 -0
  1202. package/sdk/src/context-truncation.ts +233 -0
  1203. package/sdk/src/e2e.integration.test.ts +181 -0
  1204. package/sdk/src/errors.ts +72 -0
  1205. package/sdk/src/event-stream.test.ts +661 -0
  1206. package/sdk/src/event-stream.ts +441 -0
  1207. package/sdk/src/golden/capture.ts +95 -0
  1208. package/sdk/src/golden/fixtures/generate-slug.golden.json +1 -0
  1209. package/sdk/src/golden/fixtures/profile-sample-sessions/demo-project/sample.jsonl +3 -0
  1210. package/sdk/src/golden/fixtures/summary-extract-sample.md +26 -0
  1211. package/sdk/src/golden/fixtures/uat-render-checkpoint-sample.md +15 -0
  1212. package/sdk/src/golden/golden-integration-covered.ts +30 -0
  1213. package/sdk/src/golden/golden-mutation-covered.ts +17 -0
  1214. package/sdk/src/golden/golden-policy.test.ts +8 -0
  1215. package/sdk/src/golden/golden-policy.ts +118 -0
  1216. package/sdk/src/golden/golden.integration.test.ts +897 -0
  1217. package/sdk/src/golden/init-golden-normalize.ts +15 -0
  1218. package/sdk/src/golden/read-only-golden-rows.ts +77 -0
  1219. package/sdk/src/golden/read-only-parity.integration.test.ts +133 -0
  1220. package/sdk/src/golden/registry-canonical-commands.ts +31 -0
  1221. package/sdk/src/gtd-tools-error.test.ts +21 -0
  1222. package/sdk/src/gtd-tools-error.ts +65 -0
  1223. package/sdk/src/gtd-tools.test.ts +472 -0
  1224. package/sdk/src/gtd-tools.ts +285 -0
  1225. package/sdk/src/gtd-transport-policy.test.ts +34 -0
  1226. package/sdk/src/gtd-transport-policy.ts +48 -0
  1227. package/sdk/src/gtd-transport.test.ts +292 -0
  1228. package/sdk/src/gtd-transport.ts +117 -0
  1229. package/sdk/src/index.ts +371 -0
  1230. package/sdk/src/init-e2e.integration.test.ts +138 -0
  1231. package/sdk/src/init-runner.test.ts +740 -0
  1232. package/sdk/src/init-runner.ts +734 -0
  1233. package/sdk/src/lifecycle-e2e.integration.test.ts +258 -0
  1234. package/sdk/src/logger.test.ts +149 -0
  1235. package/sdk/src/logger.ts +113 -0
  1236. package/sdk/src/milestone-runner.test.ts +421 -0
  1237. package/sdk/src/model-catalog.ts +77 -0
  1238. package/sdk/src/phase-prompt.test.ts +536 -0
  1239. package/sdk/src/phase-prompt.ts +257 -0
  1240. package/sdk/src/phase-runner-types.test.ts +421 -0
  1241. package/sdk/src/phase-runner.integration.test.ts +377 -0
  1242. package/sdk/src/phase-runner.test.ts +2720 -0
  1243. package/sdk/src/phase-runner.ts +1442 -0
  1244. package/sdk/src/plan-atomicity.test.ts +220 -0
  1245. package/sdk/src/plan-atomicity.ts +162 -0
  1246. package/sdk/src/plan-parser.test.ts +579 -0
  1247. package/sdk/src/plan-parser.ts +433 -0
  1248. package/sdk/src/planning-journal.test.ts +70 -0
  1249. package/sdk/src/planning-journal.ts +153 -0
  1250. package/sdk/src/planning-runtime.test.ts +29 -0
  1251. package/sdk/src/planning-runtime.ts +100 -0
  1252. package/sdk/src/project-root/index.test.ts +186 -0
  1253. package/sdk/src/project-root/index.ts +144 -0
  1254. package/sdk/src/prompt-builder.test.ts +318 -0
  1255. package/sdk/src/prompt-builder.ts +218 -0
  1256. package/sdk/src/prompt-sanitizer.test.ts +260 -0
  1257. package/sdk/src/prompt-sanitizer.ts +116 -0
  1258. package/sdk/src/query/QUERY-HANDLERS.md +346 -0
  1259. package/sdk/src/query/active-workstream-store.ts +50 -0
  1260. package/sdk/src/query/agent-failure-classifier.test.ts +157 -0
  1261. package/sdk/src/query/agent-failure-classifier.ts +104 -0
  1262. package/sdk/src/query/audit-open.ts +722 -0
  1263. package/sdk/src/query/check-auto-mode.test.ts +77 -0
  1264. package/sdk/src/query/check-auto-mode.ts +49 -0
  1265. package/sdk/src/query/check-completion.test.ts +113 -0
  1266. package/sdk/src/query/check-completion.ts +182 -0
  1267. package/sdk/src/query/check-decision-coverage.test.ts +519 -0
  1268. package/sdk/src/query/check-decision-coverage.ts +554 -0
  1269. package/sdk/src/query/check-gates.test.ts +103 -0
  1270. package/sdk/src/query/check-gates.ts +112 -0
  1271. package/sdk/src/query/check-verification-status.test.ts +143 -0
  1272. package/sdk/src/query/check-verification-status.ts +160 -0
  1273. package/sdk/src/query/command-aliases.generated.ts +155 -0
  1274. package/sdk/src/query/command-catalog.ts +31 -0
  1275. package/sdk/src/query/command-definition.test.ts +47 -0
  1276. package/sdk/src/query/command-definition.ts +70 -0
  1277. package/sdk/src/query/command-family-handlers.ts +116 -0
  1278. package/sdk/src/query/command-manifest.init.ts +23 -0
  1279. package/sdk/src/query/command-manifest.non-family.ts +89 -0
  1280. package/sdk/src/query/command-manifest.phase.ts +16 -0
  1281. package/sdk/src/query/command-manifest.phases.ts +11 -0
  1282. package/sdk/src/query/command-manifest.roadmap.ts +11 -0
  1283. package/sdk/src/query/command-manifest.state.ts +31 -0
  1284. package/sdk/src/query/command-manifest.ts +17 -0
  1285. package/sdk/src/query/command-manifest.types.ts +13 -0
  1286. package/sdk/src/query/command-manifest.validate.ts +11 -0
  1287. package/sdk/src/query/command-manifest.verify.ts +15 -0
  1288. package/sdk/src/query/command-resolution.test.ts +70 -0
  1289. package/sdk/src/query/command-seam-coverage.test.ts +118 -0
  1290. package/sdk/src/query/command-static-catalog-domain.ts +121 -0
  1291. package/sdk/src/query/command-static-catalog-foundation.ts +100 -0
  1292. package/sdk/src/query/command-topology.test.ts +28 -0
  1293. package/sdk/src/query/command-topology.ts +114 -0
  1294. package/sdk/src/query/commands-list.test.ts +36 -0
  1295. package/sdk/src/query/commands-list.ts +19 -0
  1296. package/sdk/src/query/commit.test.ts +485 -0
  1297. package/sdk/src/query/commit.ts +383 -0
  1298. package/sdk/src/query/config-gates.test.ts +89 -0
  1299. package/sdk/src/query/config-gates.ts +69 -0
  1300. package/sdk/src/query/config-mutation.test.ts +572 -0
  1301. package/sdk/src/query/config-mutation.ts +484 -0
  1302. package/sdk/src/query/config-query.test.ts +367 -0
  1303. package/sdk/src/query/config-query.ts +244 -0
  1304. package/sdk/src/query/config-schema.ts +35 -0
  1305. package/sdk/src/query/decisions.test.ts +215 -0
  1306. package/sdk/src/query/decisions.ts +192 -0
  1307. package/sdk/src/query/decomposed-handlers.test.ts +431 -0
  1308. package/sdk/src/query/detect-custom-files.test.ts +115 -0
  1309. package/sdk/src/query/detect-custom-files.ts +96 -0
  1310. package/sdk/src/query/detect-phase-type.test.ts +105 -0
  1311. package/sdk/src/query/detect-phase-type.ts +141 -0
  1312. package/sdk/src/query/docs-init.ts +258 -0
  1313. package/sdk/src/query/fallow-audit.ts +88 -0
  1314. package/sdk/src/query/frontmatter-array.test.ts +14 -0
  1315. package/sdk/src/query/frontmatter-mutation.test.ts +259 -0
  1316. package/sdk/src/query/frontmatter-mutation.ts +343 -0
  1317. package/sdk/src/query/frontmatter.test.ts +326 -0
  1318. package/sdk/src/query/frontmatter.ts +395 -0
  1319. package/sdk/src/query/helpers.test.ts +615 -0
  1320. package/sdk/src/query/helpers.ts +523 -0
  1321. package/sdk/src/query/index-thin-seam.test.ts +16 -0
  1322. package/sdk/src/query/index.ts +9 -0
  1323. package/sdk/src/query/init-complex.test.ts +616 -0
  1324. package/sdk/src/query/init-complex.ts +805 -0
  1325. package/sdk/src/query/init-progress-precedence.test.ts +177 -0
  1326. package/sdk/src/query/init-workstream-milestone-op.test.ts +321 -0
  1327. package/sdk/src/query/init.test.ts +645 -0
  1328. package/sdk/src/query/init.ts +1167 -0
  1329. package/sdk/src/query/intel.test.ts +90 -0
  1330. package/sdk/src/query/intel.ts +404 -0
  1331. package/sdk/src/query/mutation-event-decorator.test.ts +45 -0
  1332. package/sdk/src/query/mutation-event-decorator.ts +37 -0
  1333. package/sdk/src/query/mutation-event-mapper.test.ts +33 -0
  1334. package/sdk/src/query/mutation-event-mapper.ts +102 -0
  1335. package/sdk/src/query/mvp.test.ts +335 -0
  1336. package/sdk/src/query/mvp.ts +292 -0
  1337. package/sdk/src/query/normalize-query-command.test.ts +102 -0
  1338. package/sdk/src/query/phase-filesystem-adapter.ts +35 -0
  1339. package/sdk/src/query/phase-lifecycle-policy.ts +171 -0
  1340. package/sdk/src/query/phase-lifecycle.test.ts +1750 -0
  1341. package/sdk/src/query/phase-lifecycle.ts +1833 -0
  1342. package/sdk/src/query/phase-list-queries.test.ts +88 -0
  1343. package/sdk/src/query/phase-list-queries.ts +152 -0
  1344. package/sdk/src/query/phase-ready.test.ts +65 -0
  1345. package/sdk/src/query/phase-ready.ts +159 -0
  1346. package/sdk/src/query/phase-roadmap-mutation.ts +77 -0
  1347. package/sdk/src/query/phase.test.ts +651 -0
  1348. package/sdk/src/query/phase.ts +550 -0
  1349. package/sdk/src/query/pipeline.test.ts +169 -0
  1350. package/sdk/src/query/pipeline.ts +243 -0
  1351. package/sdk/src/query/plan-scan.test.ts +35 -0
  1352. package/sdk/src/query/plan-scan.ts +82 -0
  1353. package/sdk/src/query/plan-task-structure.test.ts +65 -0
  1354. package/sdk/src/query/plan-task-structure.ts +63 -0
  1355. package/sdk/src/query/policy-convergence.test.ts +28 -0
  1356. package/sdk/src/query/profile-extract-messages.ts +247 -0
  1357. package/sdk/src/query/profile-output.ts +929 -0
  1358. package/sdk/src/query/profile-questionnaire-data.ts +181 -0
  1359. package/sdk/src/query/profile-sample.ts +184 -0
  1360. package/sdk/src/query/profile-scan-sessions.ts +174 -0
  1361. package/sdk/src/query/profile.test.ts +136 -0
  1362. package/sdk/src/query/profile.ts +337 -0
  1363. package/sdk/src/query/progress.test.ts +156 -0
  1364. package/sdk/src/query/progress.ts +566 -0
  1365. package/sdk/src/query/query-cli-adapter.test.ts +79 -0
  1366. package/sdk/src/query/query-cli-adapter.ts +39 -0
  1367. package/sdk/src/query/query-cli-output.test.ts +33 -0
  1368. package/sdk/src/query/query-cli-output.ts +63 -0
  1369. package/sdk/src/query/query-command-diagnosis.test.ts +22 -0
  1370. package/sdk/src/query/query-command-diagnosis.ts +5 -0
  1371. package/sdk/src/query/query-command-resolution-strategy.test.ts +34 -0
  1372. package/sdk/src/query/query-command-resolution-strategy.ts +121 -0
  1373. package/sdk/src/query/query-command-semantics.test.ts +22 -0
  1374. package/sdk/src/query/query-command-semantics.ts +22 -0
  1375. package/sdk/src/query/query-dispatch-contract.ts +30 -0
  1376. package/sdk/src/query/query-dispatch-error-mapper.test.ts +62 -0
  1377. package/sdk/src/query/query-dispatch-error-mapper.ts +5 -0
  1378. package/sdk/src/query/query-dispatch-formatting.test.ts +28 -0
  1379. package/sdk/src/query/query-dispatch-formatting.ts +5 -0
  1380. package/sdk/src/query/query-dispatch-input-validation.test.ts +23 -0
  1381. package/sdk/src/query/query-dispatch-input-validation.ts +5 -0
  1382. package/sdk/src/query/query-dispatch-observability.test.ts +10 -0
  1383. package/sdk/src/query/query-dispatch-observability.ts +6 -0
  1384. package/sdk/src/query/query-dispatch-plan.test.ts +25 -0
  1385. package/sdk/src/query/query-dispatch-plan.ts +5 -0
  1386. package/sdk/src/query/query-dispatch-result-builder.test.ts +16 -0
  1387. package/sdk/src/query/query-dispatch-result-builder.ts +5 -0
  1388. package/sdk/src/query/query-dispatch.test.ts +399 -0
  1389. package/sdk/src/query/query-dispatch.ts +275 -0
  1390. package/sdk/src/query/query-error-details-schema.ts +29 -0
  1391. package/sdk/src/query/query-error-taxonomy.test.ts +39 -0
  1392. package/sdk/src/query/query-error-taxonomy.ts +117 -0
  1393. package/sdk/src/query/query-fallback-bridge-adapter.test.ts +32 -0
  1394. package/sdk/src/query/query-fallback-bridge-adapter.ts +54 -0
  1395. package/sdk/src/query/query-fallback-executor.test.ts +82 -0
  1396. package/sdk/src/query/query-fallback-executor.ts +44 -0
  1397. package/sdk/src/query/query-fallback-output-classifier.test.ts +36 -0
  1398. package/sdk/src/query/query-fallback-output-classifier.ts +31 -0
  1399. package/sdk/src/query/query-fallback-policy.test.ts +13 -0
  1400. package/sdk/src/query/query-fallback-policy.ts +11 -0
  1401. package/sdk/src/query/query-native-dispatch-adapter.ts +16 -0
  1402. package/sdk/src/query/query-policy-capability.test.ts +10 -0
  1403. package/sdk/src/query/query-policy-capability.ts +26 -0
  1404. package/sdk/src/query/query-policy-snapshot.test.ts +9 -0
  1405. package/sdk/src/query/query-registry-capability.test.ts +14 -0
  1406. package/sdk/src/query/query-runtime-context.ts +44 -0
  1407. package/sdk/src/query/query-unknown-command-hints.test.ts +9 -0
  1408. package/sdk/src/query/query-unknown-command-hints.ts +5 -0
  1409. package/sdk/src/query/registry-assembly-descriptor.ts +87 -0
  1410. package/sdk/src/query/registry-assembly-invariants.ts +127 -0
  1411. package/sdk/src/query/registry-assembly.test.ts +138 -0
  1412. package/sdk/src/query/registry-assembly.ts +78 -0
  1413. package/sdk/src/query/registry.test.ts +208 -0
  1414. package/sdk/src/query/registry.ts +142 -0
  1415. package/sdk/src/query/requirements-extract-from-plans.test.ts +58 -0
  1416. package/sdk/src/query/requirements-extract-from-plans.ts +86 -0
  1417. package/sdk/src/query/roadmap-update-plan-progress.test.ts +233 -0
  1418. package/sdk/src/query/roadmap-update-plan-progress.ts +159 -0
  1419. package/sdk/src/query/roadmap.test.ts +1181 -0
  1420. package/sdk/src/query/roadmap.ts +894 -0
  1421. package/sdk/src/query/route-next-action.test.ts +142 -0
  1422. package/sdk/src/query/route-next-action.ts +370 -0
  1423. package/sdk/src/query/schema-detect.ts +189 -0
  1424. package/sdk/src/query/secrets.test.ts +66 -0
  1425. package/sdk/src/query/secrets.ts +43 -0
  1426. package/sdk/src/query/skill-manifest.test.ts +62 -0
  1427. package/sdk/src/query/skill-manifest.ts +216 -0
  1428. package/sdk/src/query/skills.test.ts +234 -0
  1429. package/sdk/src/query/skills.ts +143 -0
  1430. package/sdk/src/query/state-document.test.ts +197 -0
  1431. package/sdk/src/query/state-document.ts +129 -0
  1432. package/sdk/src/query/state-mutation.test.ts +1198 -0
  1433. package/sdk/src/query/state-mutation.ts +1718 -0
  1434. package/sdk/src/query/state-project-load.ts +80 -0
  1435. package/sdk/src/query/state.test.ts +616 -0
  1436. package/sdk/src/query/state.ts +463 -0
  1437. package/sdk/src/query/sub-repos-root.integration.test.ts +79 -0
  1438. package/sdk/src/query/summary.test.ts +95 -0
  1439. package/sdk/src/query/summary.ts +296 -0
  1440. package/sdk/src/query/task-issues.ts +86 -0
  1441. package/sdk/src/query/template.test.ts +180 -0
  1442. package/sdk/src/query/template.ts +242 -0
  1443. package/sdk/src/query/uat.test.ts +77 -0
  1444. package/sdk/src/query/uat.ts +365 -0
  1445. package/sdk/src/query/utils.test.ts +82 -0
  1446. package/sdk/src/query/utils.ts +106 -0
  1447. package/sdk/src/query/validate.test.ts +831 -0
  1448. package/sdk/src/query/validate.ts +952 -0
  1449. package/sdk/src/query/verify.test.ts +416 -0
  1450. package/sdk/src/query/verify.ts +711 -0
  1451. package/sdk/src/query/websearch.test.ts +31 -0
  1452. package/sdk/src/query/websearch.ts +82 -0
  1453. package/sdk/src/query/workspace.test.ts +120 -0
  1454. package/sdk/src/query/workspace.ts +145 -0
  1455. package/sdk/src/query/workstream-inventory.ts +143 -0
  1456. package/sdk/src/query/workstream.test.ts +153 -0
  1457. package/sdk/src/query/workstream.ts +324 -0
  1458. package/sdk/src/query/worktree.ts +39 -0
  1459. package/sdk/src/query-command-executor.ts +31 -0
  1460. package/sdk/src/query-execution-policy.test.ts +52 -0
  1461. package/sdk/src/query-execution-policy.ts +46 -0
  1462. package/sdk/src/query-failure-classification.test.ts +23 -0
  1463. package/sdk/src/query-failure-classification.ts +42 -0
  1464. package/sdk/src/query-gtd-tools-path.ts +1 -0
  1465. package/sdk/src/query-gtd-tools-runtime.ts +89 -0
  1466. package/sdk/src/query-hotpath-methods.ts +48 -0
  1467. package/sdk/src/query-native-direct-adapter.test.ts +35 -0
  1468. package/sdk/src/query-native-direct-adapter.ts +70 -0
  1469. package/sdk/src/query-native-hotpath-adapter.test.ts +43 -0
  1470. package/sdk/src/query-native-hotpath-adapter.ts +45 -0
  1471. package/sdk/src/query-raw-output-projection.test.ts +39 -0
  1472. package/sdk/src/query-raw-output-projection.ts +74 -0
  1473. package/sdk/src/query-runtime-bridge.test.ts +150 -0
  1474. package/sdk/src/query-runtime-bridge.ts +215 -0
  1475. package/sdk/src/query-runtime-seam-coverage.test.ts +20 -0
  1476. package/sdk/src/query-subprocess-adapter.test.ts +84 -0
  1477. package/sdk/src/query-subprocess-adapter.ts +146 -0
  1478. package/sdk/src/query-tools-error-factory.test.ts +35 -0
  1479. package/sdk/src/query-tools-error-factory.ts +76 -0
  1480. package/sdk/src/research-gate.test.ts +190 -0
  1481. package/sdk/src/research-gate.ts +94 -0
  1482. package/sdk/src/runtime-bridge-options.test.ts +33 -0
  1483. package/sdk/src/runtime-bridge-sync/index.test.ts +164 -0
  1484. package/sdk/src/runtime-bridge-sync/index.ts +154 -0
  1485. package/sdk/src/runtime-bridge-sync/projectdir-regression.test.ts +151 -0
  1486. package/sdk/src/runtime-bridge-sync/worker.ts +181 -0
  1487. package/sdk/src/runtime-gate.test.ts +84 -0
  1488. package/sdk/src/runtime-gate.ts +52 -0
  1489. package/sdk/src/sdk-package-compatibility.test.ts +100 -0
  1490. package/sdk/src/sdk-package-compatibility.ts +149 -0
  1491. package/sdk/src/session-runner.test.ts +164 -0
  1492. package/sdk/src/session-runner.ts +327 -0
  1493. package/sdk/src/task-issues/adapters.ts +86 -0
  1494. package/sdk/src/task-issues/core.ts +287 -0
  1495. package/sdk/src/task-issues/export-phase-issues.ts +1862 -0
  1496. package/sdk/src/task-issues/github-api-client.ts +107 -0
  1497. package/sdk/src/task-issues/github-repo.ts +111 -0
  1498. package/sdk/src/task-issues/orchestrate-tasks.ts +2167 -0
  1499. package/sdk/src/task-issues/plan-scan.ts +78 -0
  1500. package/sdk/src/task-issues/runtime-slash.ts +37 -0
  1501. package/sdk/src/task-issues/task-issue-shared.ts +48 -0
  1502. package/sdk/src/task-issues/types.ts +34 -0
  1503. package/sdk/src/task-issues/work-task-issue.ts +3429 -0
  1504. package/sdk/src/task-issues/worktree-safety.ts +15 -0
  1505. package/sdk/src/task-issues-sdk.test.ts +182 -0
  1506. package/sdk/src/tool-scoping.test.ts +160 -0
  1507. package/sdk/src/tool-scoping.ts +61 -0
  1508. package/sdk/src/types.ts +928 -0
  1509. package/sdk/src/workflow-agent-skills-consistency.test.ts +98 -0
  1510. package/sdk/src/workstream-inventory/builder.test.ts +241 -0
  1511. package/sdk/src/workstream-inventory/builder.ts +170 -0
  1512. package/sdk/src/workstream-name-policy.ts +24 -0
  1513. package/sdk/src/workstream-utils.ts +36 -0
  1514. package/sdk/src/ws-flag.test.ts +285 -0
  1515. package/sdk/src/ws-transport.test.ts +161 -0
  1516. package/sdk/src/ws-transport.ts +93 -0
  1517. package/sdk/tsconfig.json +20 -0
@@ -0,0 +1,1756 @@
1
+ <purpose>
2
+ Create executable phase prompts (PLAN.md files) for a roadmap phase with integrated research and verification. Default flow: Research (if needed) -> Plan -> Verify -> Done. Orchestrates gtd-phase-researcher, gtd-planner, and gtd-plan-checker agents with a revision loop (max 3 iterations).
3
+ </purpose>
4
+
5
+ <required_reading>
6
+ Read all files referenced by the invoking prompt's execution_context before starting.
7
+
8
+ @~/.claude/get-tasks-done/references/ui-brand.md
9
+ @~/.claude/get-tasks-done/references/revision-loop.md
10
+ @~/.claude/get-tasks-done/references/gate-prompts.md
11
+ @~/.claude/get-tasks-done/references/agent-contracts.md
12
+ @~/.claude/get-tasks-done/references/gates.md
13
+ </required_reading>
14
+
15
+ <available_agent_types>
16
+ Valid GTD subagent types (use exact names — do not fall back to 'general-purpose'):
17
+ - gtd-phase-researcher — Researches technical approaches for a phase
18
+ - gtd-pattern-mapper — Analyzes codebase for existing patterns, produces PATTERNS.md
19
+ - gtd-planner — Creates detailed plans from phase scope
20
+ - gtd-plan-checker — Reviews plan quality before execution
21
+ </available_agent_types>
22
+
23
+ <subagent_authorization>
24
+ Invoking the plan-phase workflow (`/gtd:plan-phase` or generated
25
+ `$gtd-plan-phase` skill) is explicit authorization and request to spawn the
26
+ required GTD subagents named by this workflow:
27
+ - `gtd-phase-researcher` when the research path is selected or forced
28
+ - `gtd-pattern-mapper` when enabled and applicable
29
+ - `gtd-planner` for planning, chunked outlines, single-plan writes, and revisions
30
+ - `gtd-plan-checker` unless `--skip-verify` is passed or plan checking is disabled
31
+
32
+ Runtime rule: use the matching `spawn_agent(agent_type="...")` translation for
33
+ each `Agent(...)` call when the tool is available. Do not replace the planner or
34
+ plan-checker with inline work on the grounds that Codex needs explicit subagent
35
+ intent; this workflow invocation supplies that intent. If `spawn_agent` is
36
+ unavailable or blocked despite this authorization, halt and tell the user which
37
+ required agent could not run. Inline execution is only acceptable when the user
38
+ explicitly requests inline/no-agent execution and accepts the loss of subagent
39
+ isolation.
40
+ </subagent_authorization>
41
+
42
+ <process>
43
+
44
+ ## 0. Git Branch Invariant
45
+
46
+ **Do not create, rename, or switch git branches during plan-phase.** Branch identity is established at discuss-phase and is owned by the user's git workflow. A phase rename in ROADMAP.md is a plan-level change only — it does not mutate git branch names. If `phase_slug` in the init JSON differs from the current branch name, that is expected and correct; leave the branch unchanged.
47
+
48
+ ## 1. Initialize
49
+
50
+ Load all context in one call (paths only to minimize orchestrator context):
51
+
52
+ ```bash
53
+ INIT=$(gtd-sdk query init.plan-phase "$PHASE")
54
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
55
+ AGENT_SKILLS_RESEARCHER=$(gtd-sdk query agent-skills gtd-phase-researcher)
56
+ AGENT_SKILLS_PLANNER=$(gtd-sdk query agent-skills gtd-planner)
57
+ AGENT_SKILLS_CHECKER=$(gtd-sdk query agent-skills gtd-plan-checker)
58
+ CONTEXT_WINDOW=$(gtd-sdk query config-get context_window 2>/dev/null || echo "200000")
59
+ TDD_MODE=$(gtd-sdk query config-get workflow.tdd_mode 2>/dev/null || echo "false")
60
+ MVP_MODE_CFG=$(gtd-sdk query config-get workflow.mvp_mode 2>/dev/null || echo "false")
61
+ ```
62
+
63
+ When `TDD_MODE` is `true`, the planner agent is instructed to apply `type: tdd` to eligible tasks using heuristics from `references/tdd.md`. The planner's `<required_reading>` is extended to include `@~/.claude/get-tasks-done/references/tdd.md` so gate enforcement rules are available during planning.
64
+
65
+ When `CONTEXT_WINDOW >= 500000`, the planner prompt includes the 3 most recent prior phase CONTEXT.md and SUMMARY.md files PLUS any phases explicitly listed in the current phase's `Depends on:` field in ROADMAP.md. Explicit dependencies always load regardless of recency (e.g., Phase 7 declaring `Depends on: Phase 2` always sees Phase 2's context). Bounded recency keeps the planner's context budget focused on recent work.
66
+
67
+ Parse JSON for: `researcher_model`, `planner_model`, `checker_model`, `research_enabled`, `plan_checker_enabled`, `nyquist_validation_enabled`, `commit_docs`, `text_mode`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_reviews`, `has_plans`, `plan_count`, `planning_exists`, `roadmap_exists`, `phase_req_ids`, `response_language`.
68
+
69
+ **If `response_language` is set:** Include `response_language: {value}` in all spawned subagent prompts so any user-facing output stays in the configured language.
70
+
71
+ **File paths (for <files_to_read> blocks):** `state_path`, `roadmap_path`, `requirements_path`, `context_path`, `research_path`, `verification_path`, `uat_path`, `reviews_path`. These are null if files don't exist.
72
+
73
+ **If `planning_exists` is false:** Error — run `/gtd:new-project` first.
74
+
75
+ ## 2. Parse and Normalize Arguments
76
+
77
+ Extract from $ARGUMENTS: phase number (integer or decimal like `2.1`), flags (`--research`, `--skip-research`, `--research-phase <N>`, `--gaps`, `--skip-verify`, `--skip-ui`, `--prd <filepath>`, `--ingest <path-or-glob>`, `--ingest-format <auto|nygard|madr|narrative>`, `--reviews`, `--text`, `--bounce`, `--skip-bounce`, `--chunked`, `--mvp`).
78
+
79
+ **`--research-phase <N>` — research-only mode (#3042 + #3044).** When this flag is present, parse `<N>` as the phase number (overrides any positional phase argument), set `RESEARCH_ONLY=true`, and treat the rest of this workflow as a research-dispatch only — the planner spawn (step 8), plan-checker, verification, gaps, bounce, and post-planning-gaps blocks all skip on `RESEARCH_ONLY`. Use this for cross-phase research, doc review before committing to a planning approach, and correction-without-replanning loops. Replaces the deleted `/gtd-research-phase` command.
80
+
81
+ In research-only mode, two modifiers control behavior when `RESEARCH.md` already exists:
82
+
83
+ - **`--research`** — force-refresh re-research without prompting. Re-spawns the researcher unconditionally and overwrites the existing RESEARCH.md. (This is the existing `--research` flag's standard "force re-research" semantics, reused here.)
84
+ - **`--view`** — view-only: print existing `RESEARCH.md` to stdout, do **not** spawn the researcher. Sets `VIEW_ONLY=true`. Cheapest mode for the correction-without-replanning loop. If `RESEARCH.md` does not exist, error with a hint to drop `--view`.
85
+
86
+ ```bash
87
+ RESEARCH_ONLY=false
88
+ VIEW_ONLY=false
89
+ if [[ "$ARGUMENTS" =~ --research-phase[[:space:]]+([0-9]+(\.[0-9]+)?) ]]; then
90
+ RESEARCH_ONLY=true
91
+ PHASE="${BASH_REMATCH[1]}"
92
+ fi
93
+ if $RESEARCH_ONLY && [[ "$ARGUMENTS" =~ (^|[[:space:]])--view([[:space:]]|$) ]]; then
94
+ VIEW_ONLY=true
95
+ fi
96
+ ```
97
+
98
+ Set `TEXT_MODE=true` if `--text` is present in $ARGUMENTS OR `text_mode` from init JSON is `true`. When `TEXT_MODE` is active, replace every `AskUserQuestion` call with a plain-text numbered list and ask the user to type their choice number. This is required for Claude Code remote sessions (`/rc` mode) where TUI menus don't work through the Claude App.
99
+
100
+ **MVP_MODE resolution.** Resolve `MVP_MODE` once via the centralized `phase.mvp-mode` query verb. Precedence (first hit wins): CLI flag → ROADMAP.md `**Mode:** mvp` → `workflow.mvp_mode` config → false. The verb is the single source of truth — do not re-implement the chain.
101
+
102
+ ```bash
103
+ MVP_FLAG_ARG=""
104
+ if [[ "$ARGUMENTS" =~ (^|[[:space:]])--mvp([[:space:]]|$) ]]; then MVP_FLAG_ARG="--cli-flag"; fi
105
+ ```
106
+
107
+ Defer the `phase.mvp-mode` query until `PHASE` is finalized (after explicit argument parsing/fallback phase detection + validation).
108
+ The verb returns `true|false`. Full result also exposes `source` (`cli_flag` | `roadmap` | `config` | `none`) for diagnostics. The mode is **all-or-nothing per phase** (PRD decision Q1) — never selective per task.
109
+
110
+ **Walking Skeleton gate.** When `MVP_MODE=true` AND `phase_number == "01"` AND there are zero prior phase summaries (new project), the planner runs in **Walking Skeleton mode** (per PRD decision Q2 — new projects only). Detect with:
111
+
112
+ ```bash
113
+ WALKING_SKELETON=false
114
+ if [ "$MVP_MODE" = "true" ] && [ "$padded_phase" = "01" ]; then
115
+ PRIOR_SUMMARIES=$(gtd-sdk query phases.list --pick summaries_total 2>/dev/null || echo "0")
116
+ if [ "$PRIOR_SUMMARIES" = "0" ]; then WALKING_SKELETON=true; fi
117
+ fi
118
+ ```
119
+
120
+ When `WALKING_SKELETON=true`:
121
+ - Planner is instructed to produce `SKELETON.md` in the phase directory alongside `PLAN.md`. The template lives at `@~/.claude/get-tasks-done/references/skeleton-template.md`.
122
+ - The plan must scaffold project + routing + one real DB read/write + one real UI interaction + dev deployment — the thinnest possible end-to-end working slice.
123
+
124
+ **Interaction with `--prd <filepath>`.** `--mvp` and `--prd` compose. The PRD express path (Step 3.5) creates `CONTEXT.md` from the PRD file and continues to research; the Walking Skeleton gate fires independently from the conditions above. When both are active on Phase 1 of a new project, the planner receives `WALKING_SKELETON=true` and PRD-derived context simultaneously — the PRD informs *what the skeleton should prove*. No precedence is needed; the two signals are orthogonal. See [`references/mvp-concepts.md`](../references/mvp-concepts.md) for the broader interaction map.
125
+
126
+ Extract express-path args from $ARGUMENTS: `PRD_FILE` (`--prd <filepath>`), `INGEST_PATH` (`--ingest <path-or-glob>`), and optional `INGEST_FORMAT` (`--ingest-format <auto|nygard|madr|narrative>`, default `auto`).
127
+
128
+ `--prd` and `--ingest` are mutually exclusive. If both are present, error and exit:
129
+ `Invalid arguments: cannot combine \`--prd\` with \`--ingest\`.`
130
+
131
+ **If no phase number:** Detect next unplanned phase from roadmap.
132
+
133
+ **If `phase_found` is false:** Validate phase exists in ROADMAP.md. If valid, create the directory using `expected_phase_dir` from init (includes `project_code` prefix when set):
134
+ ```bash
135
+ mkdir -p "${expected_phase_dir}"
136
+ ```
137
+
138
+ Set `phase_dir="${expected_phase_dir}"` after creation.
139
+
140
+ **Existing artifacts from init:** `has_research`, `has_plans`, `plan_count`.
141
+
142
+ Set `CHUNKED_MODE` from flag or config:
143
+ ```bash
144
+ CHUNKED_CFG=$(gtd-sdk query config-get workflow.plan_chunked 2>/dev/null || echo "false")
145
+ CHUNKED_MODE=false
146
+ if [[ "$ARGUMENTS" =~ --chunked ]] || [[ "$CHUNKED_CFG" == "true" ]]; then
147
+ CHUNKED_MODE=true
148
+ fi
149
+ ```
150
+
151
+ ## 2.5. Validate `--reviews` Prerequisite
152
+
153
+ **Skip if:** No `--reviews` flag.
154
+
155
+ **If `--reviews` AND `--gaps`:** Error — cannot combine `--reviews` with `--gaps`. These are conflicting modes.
156
+
157
+ **If `--reviews` AND `has_reviews` is false (no REVIEWS.md in phase dir):**
158
+
159
+ Error:
160
+ ```
161
+ No REVIEWS.md found for Phase {N}. Run reviews first:
162
+
163
+ /gtd:review --phase {N}
164
+
165
+ Then re-run /gtd:plan-phase {N} --reviews
166
+ ```
167
+ Exit workflow.
168
+
169
+ ## 3. Validate Phase
170
+
171
+ ```bash
172
+ PHASE_INFO=$(gtd-sdk query roadmap.get-phase "${PHASE}")
173
+ ```
174
+
175
+ **If `found` is false:** Error with available phases. **If `found` is true:** Extract `phase_number`, `phase_name`, `goal` from JSON.
176
+
177
+ Now that `PHASE` is finalized, resolve MVP mode:
178
+ ```bash
179
+ MVP_MODE=$(gtd-sdk query phase.mvp-mode "${PHASE}" $MVP_FLAG_ARG --pick active)
180
+ ```
181
+
182
+ ## 3.5. Handle PRD Express Path
183
+
184
+ **Skip if:** No `--prd` flag in arguments.
185
+
186
+ **If `--prd <filepath>` provided:**
187
+
188
+ 1. Read the PRD file:
189
+ ```bash
190
+ PRD_CONTENT=$(cat "$PRD_FILE" 2>/dev/null)
191
+ if [ -z "$PRD_CONTENT" ]; then
192
+ echo "Error: PRD file not found: $PRD_FILE"
193
+ exit 1
194
+ fi
195
+ ```
196
+
197
+ 2. Display banner:
198
+ ```
199
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
200
+ GTD ► PRD EXPRESS PATH
201
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
202
+
203
+ Using PRD: {PRD_FILE}
204
+ Generating CONTEXT.md from requirements...
205
+ ```
206
+
207
+ 3. Parse the PRD content and generate CONTEXT.md. The orchestrator should:
208
+ - Extract all requirements, user stories, acceptance criteria, and constraints from the PRD
209
+ - Map each to a locked decision (everything in the PRD is treated as a locked decision)
210
+ - Identify any areas the PRD doesn't cover and mark as "Claude's Discretion"
211
+ - **Extract canonical refs** from ROADMAP.md for this phase, plus any specs/ADRs referenced in the PRD — expand to full file paths (MANDATORY)
212
+ - Create CONTEXT.md in the phase directory
213
+
214
+ 4. Write CONTEXT.md:
215
+ ```markdown
216
+ # Phase [X]: [Name] - Context
217
+
218
+ **Gathered:** [date]
219
+ **Status:** Ready for planning
220
+ **Source:** PRD Express Path ({PRD_FILE})
221
+
222
+ <domain>
223
+ ## Phase Boundary
224
+
225
+ [Extracted from PRD — what this phase delivers]
226
+
227
+ </domain>
228
+
229
+ <decisions>
230
+ ## Implementation Decisions
231
+
232
+ {For each requirement/story/criterion in the PRD:}
233
+ ### [Category derived from content]
234
+ - [Requirement as locked decision]
235
+
236
+ ### Claude's Discretion
237
+ [Areas not covered by PRD — implementation details, technical choices]
238
+
239
+ </decisions>
240
+
241
+ <canonical_refs>
242
+ ## Canonical References
243
+
244
+ **Downstream agents MUST read these before planning or implementing.**
245
+
246
+ [MANDATORY. Extract from ROADMAP.md and any docs referenced in the PRD.
247
+ Use full relative paths. Group by topic area.]
248
+
249
+ ### [Topic area]
250
+ - `path/to/spec-or-adr.md` — [What it decides/defines]
251
+
252
+ [If no external specs: "No external specs — requirements fully captured in decisions above"]
253
+
254
+ </canonical_refs>
255
+
256
+ <specifics>
257
+ ## Specific Ideas
258
+
259
+ [Any specific references, examples, or concrete requirements from PRD]
260
+
261
+ </specifics>
262
+
263
+ <deferred>
264
+ ## Deferred Ideas
265
+
266
+ [Items in PRD explicitly marked as future/v2/out-of-scope]
267
+ [If none: "None — PRD covers phase scope"]
268
+
269
+ </deferred>
270
+
271
+ ---
272
+
273
+ *Phase: XX-name*
274
+ *Context gathered: [date] via PRD Express Path*
275
+ ```
276
+
277
+ 5. Commit:
278
+ ```bash
279
+ gtd-sdk query commit "docs(${padded_phase}): generate context from PRD" --files "${phase_dir}/${padded_phase}-CONTEXT.md"
280
+ ```
281
+
282
+ 6. Set `context_content` to the generated CONTEXT.md content and continue to step 5 (Handle Research).
283
+
284
+ **Effect:** This completely bypasses step 4 (Load CONTEXT.md) since we just created it. The rest of the workflow (research, planning, verification) proceeds normally with the PRD-derived context.
285
+
286
+ ## 3.6. Handle ADR Ingest Express Path
287
+
288
+ **Skip if:** No `--ingest` flag in arguments.
289
+
290
+ **If `--ingest <path-or-glob>` provided:**
291
+
292
+ 1. Display banner: `GTD ► ADR Ingest Express Path` with `{INGEST_PATH}` and `{INGEST_FORMAT}`.
293
+ 2. Parse each resolved ADR through `get-tasks-done/bin/lib/adr-parser.cjs` (`--input`, `--format`) and collect normalized records.
294
+ 3. Status gate: reject `superseded`/`rejected`/`deprecated`; warn on `proposed`; missing status defaults to `accepted`.
295
+ 4. Empty-decisions fallback: if all parsed ADRs have zero `decisions[]`, emit `ADR ingest produced no locked decisions; fall back to discuss-phase for this phase.` and exit with `/gtd:discuss-phase {N}` guidance.
296
+ 5. Generate CONTEXT.md using `<domain>`, `<decisions>`, `<canonical_refs>`, `<specifics>`, `<deferred>`, `<scope_fence>`, map `consequences_positive[]` to Success Criteria and `consequences_negative[]` to Risk Summary, and include `**Source:** ADR Ingest Express Path ({INGEST_PATH})`.
297
+ 6. Commit with `gtd-sdk query commit "docs(${padded_phase}): generate context from ADR ingest" --files "${phase_dir}/${padded_phase}-CONTEXT.md"` and set `context_content`; continue to step 5.
298
+
299
+ **Effect:** This bypasses step 4 (Load CONTEXT.md) since CONTEXT.md was synthesized from ADR input.
300
+
301
+ ## 4. Load CONTEXT.md
302
+
303
+ **Skip if:** PRD express path or ADR ingest express path was used (CONTEXT.md already created in step 3.5/3.6).
304
+
305
+ Check `context_path` from init JSON.
306
+
307
+ If `context_path` is not null, display: `Using phase context from: ${context_path}`
308
+
309
+ **If `context_path` is null (no CONTEXT.md exists):**
310
+
311
+ Read discuss mode for context gate label:
312
+ ```bash
313
+ DISCUSS_MODE=$(gtd-sdk query config-get workflow.discuss_mode 2>/dev/null || echo "discuss")
314
+ ```
315
+
316
+ If `TEXT_MODE` is true, present as a plain-text numbered list:
317
+ ```
318
+ No CONTEXT.md found for Phase {X}. Plans will use research and requirements only — your design preferences won't be included.
319
+
320
+ 1. Continue without context — Plan using research + requirements only
321
+ [If DISCUSS_MODE is "assumptions":]
322
+ 2. Gather context (assumptions mode) — Analyze codebase and surface assumptions before planning
323
+ [If DISCUSS_MODE is "discuss" or unset:]
324
+ 2. Run discuss-phase first — Capture design decisions before planning
325
+
326
+ Enter number:
327
+ ```
328
+
329
+ Otherwise use AskUserQuestion:
330
+ - header: "No context"
331
+ - question: "No CONTEXT.md found for Phase {X}. Plans will use research and requirements only — your design preferences won't be included. Continue or capture context first?"
332
+ - options:
333
+ - "Continue without context" — Plan using research + requirements only
334
+ If `DISCUSS_MODE` is `"assumptions"`:
335
+ - "Gather context (assumptions mode)" — Analyze codebase and surface assumptions before planning
336
+ If `DISCUSS_MODE` is `"discuss"` (or unset):
337
+ - "Run discuss-phase first" — Capture design decisions before planning
338
+
339
+ If "Continue without context": Proceed to step 5.
340
+ If "Run discuss-phase first":
341
+ **IMPORTANT:** Do NOT invoke discuss-phase as a nested Skill/Task call — AskUserQuestion
342
+ does not work correctly in nested subcontexts (#1009). Instead, display the command
343
+ and exit so the user runs it as a top-level command:
344
+ ```
345
+ Run this command first, then re-run /gtd:plan-phase {X} ${GTD_WS}:
346
+
347
+ /gtd:discuss-phase {X} ${GTD_WS}
348
+ ```
349
+ **Exit the plan-phase workflow. Do not continue.**
350
+
351
+ ## 4.5. Check AI-SPEC
352
+
353
+ **Skip if:** `ai_integration_phase_enabled` from config is false, or `--skip-ai-spec` flag provided.
354
+
355
+ ```bash
356
+ AI_SPEC_FILE=$(ls "${PHASE_DIR}"/*-AI-SPEC.md 2>/dev/null | head -1)
357
+ AI_PHASE_CFG=$(gtd-sdk query config-get workflow.ai_integration_phase 2>/dev/null || echo "true")
358
+ ```
359
+
360
+ **Skip if `AI_PHASE_CFG` is `false`.**
361
+
362
+ **If `AI_SPEC_FILE` is empty:** Check phase goal for AI keywords:
363
+ ```bash
364
+ echo "${phase_goal}" | grep -qi "agent\|llm\|rag\|chatbot\|embedding\|langchain\|llamaindex\|crewai\|langgraph\|openai\|anthropic\|vector\|eval\|ai system"
365
+ ```
366
+
367
+ **If AI keywords detected AND no AI-SPEC.md:**
368
+ ```
369
+ ◆ Note: This phase appears to involve AI system development.
370
+ Consider running /gtd:ai-integration-phase {N} before planning to:
371
+ - Select the right framework for your use case
372
+ - Research its docs and best practices
373
+ - Design an evaluation strategy
374
+
375
+ Continue planning without AI-SPEC? (non-blocking — /gtd:ai-integration-phase can be run after)
376
+ ```
377
+
378
+ Use AskUserQuestion with options:
379
+ - "Continue — plan without AI-SPEC"
380
+ - "Stop — I'll run /gtd:ai-integration-phase {N} first"
381
+
382
+ If "Stop": Exit with `/gtd:ai-integration-phase {N}` reminder.
383
+ If "Continue": Proceed. (Non-blocking — planner will note AI-SPEC is absent.)
384
+
385
+ **If `AI_SPEC_FILE` is non-empty:** Extract framework for planner context:
386
+ ```bash
387
+ FRAMEWORK_LINE=$(grep "Selected Framework:" "${AI_SPEC_FILE}" | head -1)
388
+ ```
389
+ Pass `ai_spec_path` and `framework_line` to planner in step 7 so it can reference the AI design contract.
390
+
391
+ ## 5. Handle Research
392
+
393
+ **Skip if:** `--gaps` flag or `--skip-research` flag or `--reviews` flag.
394
+
395
+ ### 5.0. Research-Only Modifiers (`--view`, `--research`, prompt)
396
+
397
+ **Skip if:** `RESEARCH_ONLY` is `false`.
398
+
399
+ Three branches in research-only mode (`--research-phase <N>`):
400
+
401
+ 1. **`--view`** (or user picks "View" in the prompt below): print `RESEARCH.md` to stdout, no spawn, exit. If `RESEARCH.md` is missing, error with: `--view requires an existing RESEARCH.md; drop --view to spawn the researcher.`
402
+ 2. **`--research`** (force-refresh): re-spawn researcher unconditionally — fall through to "Spawn gtd-phase-researcher" below.
403
+ 3. **Neither flag AND `has_research=true`:** emit `RESEARCH.md already exists for Phase ${PHASE}.` and prompt the user with three choices: `1. Update — re-spawn researcher and refresh RESEARCH.md`, `2. View — print existing RESEARCH.md and exit (no spawn)`, `3. Skip — exit without spawning or printing`. Map "Update" → fall through to spawn, "View" → set `VIEW_ONLY=true` and emit RESEARCH.md as in (1), "Skip" → exit cleanly. Mirrors the deleted `/gtd-research-phase` standalone's existing-artifact menu (#3042 parity).
404
+
405
+ ```bash
406
+ if [[ "$VIEW_ONLY" == "true" ]]; then
407
+ [[ -f "$research_path" ]] || { echo "Error: --view requires an existing RESEARCH.md (Phase ${PHASE}). Drop --view to spawn the researcher."; exit 1; }
408
+ cat "$research_path"; exit 0
409
+ fi
410
+ ```
411
+
412
+ ### 5.1. Standard Research Decision
413
+
414
+ **Skip if** `RESEARCH_ONLY=true` (the research-only mode in 5.0 already determined the path: spawn or exit). Without this guard, an LLM following the workflow could fall through into "use existing, skip to step 6" → planner spawn, violating the research-only contract. **CR #3045 finding: this gate makes the early-exit unreachable from any non-research-only branch.**
415
+
416
+ **If `has_research` is true (from init) AND no `--research` flag:** Use existing, skip to step 6.
417
+
418
+ **If RESEARCH.md missing OR `--research` flag:**
419
+
420
+ **If no explicit flag (`--research` or `--skip-research`) and not `--auto`:**
421
+ Ask the user whether to research, with a contextual recommendation based on the phase:
422
+
423
+ If `TEXT_MODE` is true, present as a plain-text numbered list:
424
+ ```
425
+ Research before planning Phase {X}: {phase_name}?
426
+
427
+ 1. Research first (Recommended) — Investigate domain, patterns, and dependencies before planning. Best for new features, unfamiliar integrations, or architectural changes.
428
+ 2. Skip research — Plan directly from context and requirements. Best for bug fixes, simple refactors, or well-understood tasks.
429
+
430
+ Enter number:
431
+ ```
432
+
433
+ Otherwise use AskUserQuestion:
434
+ ```
435
+ AskUserQuestion([
436
+ {
437
+ question: "Research before planning Phase {X}: {phase_name}?",
438
+ header: "Research",
439
+ multiSelect: false,
440
+ options: [
441
+ { label: "Research first (Recommended)", description: "Investigate domain, patterns, and dependencies before planning. Best for new features, unfamiliar integrations, or architectural changes." },
442
+ { label: "Skip research", description: "Plan directly from context and requirements. Best for bug fixes, simple refactors, or well-understood tasks." }
443
+ ]
444
+ }
445
+ ])
446
+ ```
447
+
448
+ If user selects "Skip research": skip to step 6.
449
+
450
+ **If `--auto` and `research_enabled` is false:** Skip research silently (preserves automated behavior).
451
+
452
+ Display banner:
453
+ ```
454
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
455
+ GTD ► RESEARCHING PHASE {X}
456
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
457
+
458
+ ◆ Spawning researcher...
459
+ ```
460
+
461
+ ### Spawn gtd-phase-researcher
462
+
463
+ ```bash
464
+ PHASE_DESC=$(gtd-sdk query roadmap.get-phase "${PHASE}" --pick section)
465
+ ```
466
+
467
+ Research prompt:
468
+
469
+ ```markdown
470
+ <objective>
471
+ Research how to implement Phase {phase_number}: {phase_name}
472
+ Answer: "What do I need to know to PLAN this phase well?"
473
+ </objective>
474
+
475
+ <files_to_read>
476
+ - {context_path} (USER DECISIONS from /gtd:discuss-phase)
477
+ - {requirements_path} (Project requirements)
478
+ - {state_path} (Project decisions and history)
479
+ </files_to_read>
480
+
481
+ ${AGENT_SKILLS_RESEARCHER}
482
+
483
+ <additional_context>
484
+ **Phase description:** {phase_description}
485
+ **Phase requirement IDs (MUST address):** {phase_req_ids}
486
+
487
+ **Project instructions:** Read ./CLAUDE.md if exists — follow project-specific guidelines
488
+ **Project skills:** Check .claude/skills/ or .agents/skills/ directory (if either exists) — read SKILL.md files, research should account for project skill patterns
489
+ </additional_context>
490
+
491
+ <output>
492
+ Write to: {phase_dir}/{phase_num}-RESEARCH.md
493
+ </output>
494
+ ```
495
+
496
+ ```
497
+ Agent(
498
+ prompt=research_prompt,
499
+ subagent_type="gtd-phase-researcher",
500
+ model="{researcher_model}",
501
+ description="Research Phase {phase}"
502
+ )
503
+ ```
504
+
505
+ > **ORCHESTRATOR RULE — CODEX RUNTIME**: After calling Agent() above, stop working on this task immediately. Do not read more files, edit code, or run tests related to this task while the subagent is active. Wait for the subagent to return its result. This prevents duplicate work, conflicting edits, and wasted context. Only resume when the subagent result is available.
506
+
507
+ ### Handle Researcher Return
508
+
509
+ - **`## RESEARCH COMPLETE`:** Display confirmation, continue to step 6
510
+ - **`## RESEARCH BLOCKED`:** Display blocker, offer: 1) Provide context, 2) Skip research, 3) Abort
511
+
512
+ ### Research-Only Early Exit (`--research-phase`)
513
+
514
+ **Skip if:** `RESEARCH_ONLY` is `false` (the default).
515
+
516
+ **If `RESEARCH_ONLY=true`:** the user invoked `/gtd:plan-phase --research-phase <N>` for research-only mode. Do **not** continue to Section 5.5+ (validation strategy, planner, plan-checker, verification, gaps, bounce, post-planning-gaps). Print the research-complete summary and exit cleanly:
517
+
518
+ ```text
519
+ ✓ Research-only mode complete (#3042)
520
+
521
+ Phase: ${PHASE}
522
+ RESEARCH.md: ${research_path}
523
+
524
+ Re-run /gtd:plan-phase ${PHASE} to plan the phase using this research,
525
+ or /gtd:plan-phase ${PHASE} --research to refresh research and plan.
526
+ ```
527
+
528
+ This exits the workflow. The planner / plan-checker / verifier blocks below are skipped.
529
+
530
+ ## 5.5. Create Validation Strategy
531
+
532
+ Skip if `nyquist_validation_enabled` is false OR `research_enabled` is false.
533
+
534
+ If `research_enabled` is false and `nyquist_validation_enabled` is true: warn "Nyquist validation enabled but research disabled — VALIDATION.md cannot be created without RESEARCH.md. Plans will lack validation requirements (Dimension 8)." Continue to step 6.
535
+
536
+ **But Nyquist is not applicable for this run** when all of the following are true:
537
+ - `research_enabled` is false
538
+ - `has_research` is false
539
+ - no `--research` flag was provided
540
+
541
+ In that case: **skip validation-strategy creation entirely**. Do **not** expect `RESEARCH.md` or `VALIDATION.md` for this run, and continue to Step 6.
542
+
543
+ ```bash
544
+ grep -l "## Validation Architecture" "${PHASE_DIR}"/*-RESEARCH.md 2>/dev/null || true
545
+ ```
546
+
547
+ **If found:**
548
+ 1. Read template: `~/.claude/get-tasks-done/templates/VALIDATION.md`
549
+ 2. Write to `${PHASE_DIR}/${PADDED_PHASE}-VALIDATION.md` (use Write tool)
550
+ 3. Fill frontmatter: `{N}` → phase number, `{phase-slug}` → slug, `{date}` → current date
551
+ 4. Verify:
552
+ ```bash
553
+ test -f "${PHASE_DIR}/${PADDED_PHASE}-VALIDATION.md" && echo "VALIDATION_CREATED=true" || echo "VALIDATION_CREATED=false"
554
+ ```
555
+ 5. If `VALIDATION_CREATED=false`: STOP — do not proceed to Step 6
556
+ 6. If `commit_docs`: `commit "docs(phase-${PHASE}): add validation strategy"`
557
+
558
+ **If not found:** Warn and continue — plans may fail Dimension 8.
559
+
560
+ ## 5.55. Security Threat Model Gate
561
+
562
+ > Skip if `workflow.security_enforcement` is explicitly `false`. Absent = enabled.
563
+
564
+ ```bash
565
+ SECURITY_CFG=$(gtd-sdk query config-get workflow.security_enforcement --raw 2>/dev/null || echo "true")
566
+ SECURITY_ASVS=$(gtd-sdk query config-get workflow.security_asvs_level --raw 2>/dev/null || echo "1")
567
+ SECURITY_BLOCK=$(gtd-sdk query config-get workflow.security_block_on --raw 2>/dev/null || echo "high")
568
+ ```
569
+
570
+ **If `SECURITY_CFG` is `false`:** Skip to step 5.6.
571
+
572
+ **If `SECURITY_CFG` is `true`:** Display banner:
573
+
574
+ ```
575
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
576
+ GTD ► SECURITY THREAT MODEL REQUIRED (ASVS L{SECURITY_ASVS})
577
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
578
+
579
+ Each PLAN.md must include a <threat_model> block.
580
+ Block on: {SECURITY_BLOCK} severity threats.
581
+ Opt out: set security_enforcement: false in .planning/config.json
582
+ ```
583
+
584
+ Continue to step 5.6. Security config is passed to the planner in step 8.
585
+
586
+ ## 5.6. UI Design Contract Gate
587
+
588
+ > Skip if `workflow.ui_phase` is explicitly `false` AND `workflow.ui_safety_gate` is explicitly `false` in `.planning/config.json`. If keys are absent, treat as enabled.
589
+
590
+ ```bash
591
+ UI_PHASE_CFG=$(gtd-sdk query config-get workflow.ui_phase 2>/dev/null || echo "true")
592
+ UI_GATE_CFG=$(gtd-sdk query config-get workflow.ui_safety_gate 2>/dev/null || echo "true")
593
+ ```
594
+
595
+ **If both are `false`:** Skip to step 6.
596
+
597
+ Check if phase has frontend indicators:
598
+
599
+ ```bash
600
+ PHASE_SECTION=$(gtd-sdk query roadmap.get-phase "${PHASE}" 2>/dev/null)
601
+ echo "$PHASE_SECTION" | grep -iE "UI|interface|frontend|component|layout|page|screen|view|form|dashboard|widget" > /dev/null 2>&1
602
+ HAS_UI=$?
603
+ ```
604
+
605
+ **If `HAS_UI` is 0 (frontend indicators found):**
606
+
607
+ Check for existing UI-SPEC:
608
+ ```bash
609
+ UI_SPEC_FILE=$(ls "${PHASE_DIR}"/*-UI-SPEC.md 2>/dev/null | head -1)
610
+ ```
611
+
612
+ **If UI-SPEC.md found:** Set `UI_SPEC_PATH=$UI_SPEC_FILE`. Display: `Using UI design contract: ${UI_SPEC_PATH}`
613
+
614
+ **If UI-SPEC.md missing AND `--skip-ui` flag is present in $ARGUMENTS:** Skip silently to step 6.
615
+
616
+ **If UI-SPEC.md missing AND `UI_GATE_CFG` is `true`:**
617
+
618
+ Read ephemeral chain flag (same field as `check.auto-mode` → `auto_chain_active`):
619
+ ```bash
620
+ AUTO_CHAIN=$(gtd-sdk query check auto-mode --pick auto_chain_active 2>/dev/null || echo "false")
621
+ ```
622
+
623
+ **If `AUTO_CHAIN` is `true` (running inside a `--chain` or `--auto` pipeline):**
624
+
625
+ Auto-generate UI-SPEC without prompting:
626
+ ```
627
+ Skill(skill="gtd-ui-phase", args="${PHASE} --auto ${GTD_WS}")
628
+ ```
629
+ After `gtd-ui-phase` returns, re-read:
630
+ ```bash
631
+ UI_SPEC_FILE=$(ls "${PHASE_DIR}"/*-UI-SPEC.md 2>/dev/null | head -1)
632
+ UI_SPEC_PATH="${UI_SPEC_FILE}"
633
+ ```
634
+ Continue to step 6.
635
+
636
+ **If `AUTO_CHAIN` is `false` (manual invocation):**
637
+
638
+ Output this markdown directly (not as a code block):
639
+
640
+ ```
641
+ ## ⚠ UI-SPEC.md missing for Phase {N}
642
+ ▶ Recommended next step:
643
+ `/gtd:ui-phase {N} ${GTD_WS}` — generate UI design contract before planning
644
+ ───────────────────────────────────────────────
645
+ Also available:
646
+ - `/gtd:plan-phase {N} --skip-ui ${GTD_WS}` — plan without UI-SPEC (not recommended for frontend phases)
647
+ ```
648
+
649
+ **Exit the plan-phase workflow. Do not continue.**
650
+
651
+ **If `HAS_UI` is 1 (no frontend indicators):** Skip silently to step 5.7.
652
+
653
+ ## 5.7. Schema Push Detection Gate
654
+
655
+ > Detects schema-relevant files in the phase scope and injects a mandatory `[BLOCKING]` schema push task into the plan. Prevents false-positive verification where build/types pass because TypeScript types come from config, not the live database.
656
+
657
+ Check if any files in the phase scope match schema patterns:
658
+
659
+ ```bash
660
+ PHASE_SECTION=$(gtd-sdk query roadmap.get-phase "${PHASE}" --pick section 2>/dev/null)
661
+ ```
662
+
663
+ Scan `PHASE_SECTION`, `CONTEXT.md` (if loaded), and `RESEARCH.md` (if exists) for file paths matching these ORM patterns:
664
+
665
+ | ORM | File Patterns |
666
+ |-----|--------------|
667
+ | Payload CMS | `src/collections/**/*.ts`, `src/globals/**/*.ts` |
668
+ | Prisma | `prisma/schema.prisma`, `prisma/schema/*.prisma` |
669
+ | Drizzle | `drizzle/schema.ts`, `src/db/schema.ts`, `drizzle/*.ts` |
670
+ | Supabase | `supabase/migrations/*.sql` |
671
+ | TypeORM | `src/entities/**/*.ts`, `src/migrations/**/*.ts` |
672
+
673
+ Also check if any existing PLAN.md files for this phase already reference these file patterns in `files_modified`.
674
+
675
+ **If schema-relevant files detected:**
676
+
677
+ Set `SCHEMA_PUSH_REQUIRED=true` and `SCHEMA_ORM={detected_orm}`.
678
+
679
+ Determine the push command for the detected ORM:
680
+
681
+ | ORM | Push Command | Non-TTY Workaround |
682
+ |-----|-------------|-------------------|
683
+ | Payload CMS | `npx payload migrate` | `CI=true PAYLOAD_MIGRATING=true npx payload migrate` |
684
+ | Prisma | `npx prisma db push` | `npx prisma db push --accept-data-loss` (if destructive) |
685
+ | Drizzle | `npx drizzle-kit push` | `npx drizzle-kit push` |
686
+ | Supabase | `supabase db push` | Set `SUPABASE_ACCESS_TOKEN` env var |
687
+ | TypeORM | `npx typeorm migration:run` | `npx typeorm migration:run -d src/data-source.ts` |
688
+
689
+ Inject the following into the planner prompt (step 8) as an additional constraint:
690
+
691
+ ```markdown
692
+ <schema_push_requirement>
693
+ **[BLOCKING] Schema Push Required**
694
+
695
+ This phase modifies schema-relevant files ({detected_files}). The planner MUST include
696
+ a `[BLOCKING]` task that runs the database schema push command AFTER all schema file
697
+ modifications are complete but BEFORE verification.
698
+
699
+ - ORM detected: {SCHEMA_ORM}
700
+ - Push command: {push_command}
701
+ - Non-TTY workaround: {env_hint}
702
+ - If push requires interactive prompts that cannot be suppressed, flag the task for
703
+ manual intervention with `autonomous: false`
704
+
705
+ This task is mandatory — the phase CANNOT pass verification without it. Build and
706
+ type checks will pass without the push (types come from config, not the live database),
707
+ creating a false-positive verification state.
708
+ </schema_push_requirement>
709
+ ```
710
+
711
+ Display: `Schema files detected ({SCHEMA_ORM}) — [BLOCKING] push task will be injected into plans`
712
+
713
+ **If no schema-relevant files detected:** Skip silently to step 6.
714
+
715
+ ## 6. Check Existing Plans
716
+
717
+ ```bash
718
+ ls "${PHASE_DIR}"/*-PLAN.md 2>/dev/null || true
719
+ ```
720
+
721
+ **If exists AND `--reviews` flag:** Skip prompt — go straight to replanning (the purpose of `--reviews` is to replan with review feedback).
722
+
723
+ **If exists AND no `--reviews` flag:** Offer: 1) Add more plans, 2) View existing, 3) Replan from scratch.
724
+
725
+ ## 7. Use Context Paths from INIT
726
+
727
+ Extract from INIT JSON:
728
+
729
+ ```bash
730
+ _gtd_field() { node -e "const o=JSON.parse(process.argv[1]); const v=o[process.argv[2]]; process.stdout.write(v==null?'':String(v))" "$1" "$2"; }
731
+ STATE_PATH=$(_gtd_field "$INIT" state_path)
732
+ ROADMAP_PATH=$(_gtd_field "$INIT" roadmap_path)
733
+ REQUIREMENTS_PATH=$(_gtd_field "$INIT" requirements_path)
734
+ RESEARCH_PATH=$(_gtd_field "$INIT" research_path)
735
+ VERIFICATION_PATH=$(_gtd_field "$INIT" verification_path)
736
+ UAT_PATH=$(_gtd_field "$INIT" uat_path)
737
+ CONTEXT_PATH=$(_gtd_field "$INIT" context_path)
738
+ REVIEWS_PATH=$(_gtd_field "$INIT" reviews_path)
739
+ PATTERNS_PATH=$(_gtd_field "$INIT" patterns_path)
740
+
741
+ # Detect spike/sketch findings skills (project-local)
742
+ SPIKE_FINDINGS_PATH=$(ls ./.claude/skills/spike-findings-*/SKILL.md 2>/dev/null | head -1 || true)
743
+ SKETCH_FINDINGS_PATH=$(ls ./.claude/skills/sketch-findings-*/SKILL.md 2>/dev/null | head -1 || true)
744
+ ```
745
+
746
+ ## 7.5. Verify Nyquist Artifacts
747
+
748
+ Skip if `nyquist_validation_enabled` is false OR `research_enabled` is false.
749
+
750
+ Also skip if all of the following are true:
751
+ - `research_enabled` is false
752
+ - `has_research` is false
753
+ - no `--research` flag was provided
754
+
755
+ In that no-research path, Nyquist artifacts are **not required** for this run.
756
+
757
+ ```bash
758
+ VALIDATION_EXISTS=$(ls "${PHASE_DIR}"/*-VALIDATION.md 2>/dev/null | head -1)
759
+ ```
760
+
761
+ If missing and Nyquist is still enabled/applicable — ask user:
762
+ 1. Re-run: `/gtd:plan-phase {PHASE} --research ${GTD_WS}`
763
+ 2. Disable Nyquist with the exact command:
764
+ `gtd-sdk query config-set workflow.nyquist_validation false`
765
+ 3. Continue anyway (plans fail Dimension 8)
766
+
767
+ Proceed to Step 7.8 (or Step 8 if pattern mapper is disabled) only if user selects 2 or 3.
768
+
769
+ ## 7.8. Spawn gtd-pattern-mapper Agent (Optional)
770
+
771
+ **Skip if** `workflow.pattern_mapper` is explicitly set to `false` in config.json (absent key = enabled). Also skip if no CONTEXT.md and no RESEARCH.md exist for this phase (nothing to extract file lists from).
772
+
773
+ Check config:
774
+ ```bash
775
+ PATTERN_MAPPER_CFG=$(gtd-sdk query config-get workflow.pattern_mapper 2>/dev/null || echo "true")
776
+ ```
777
+
778
+ **If `PATTERN_MAPPER_CFG` is `false`:** Skip to step 8.
779
+
780
+ **If PATTERNS.md already exists** (`PATTERNS_PATH` is non-empty from step 7): Skip to step 8 (use existing).
781
+
782
+ Display banner:
783
+ ```
784
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
785
+ GTD ► PATTERN MAPPING PHASE {X}
786
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
787
+
788
+ ◆ Spawning pattern mapper...
789
+ ```
790
+
791
+ Pattern mapper prompt:
792
+
793
+ ```markdown
794
+ <pattern_mapping_context>
795
+ **Phase:** {phase_number} - {phase_name}
796
+ **Phase directory:** {phase_dir}
797
+ **Padded phase:** {padded_phase}
798
+
799
+ <files_to_read>
800
+ - {context_path} (USER DECISIONS from /gtd:discuss-phase)
801
+ - {research_path} (Technical Research)
802
+ </files_to_read>
803
+
804
+ **Output file:** {phase_dir}/{padded_phase}-PATTERNS.md
805
+
806
+ Extract the list of files to be created/modified from CONTEXT.md and RESEARCH.md. For each file, classify by role and data flow, find the closest existing analog in the codebase, extract concrete code excerpts, and produce PATTERNS.md.
807
+ </pattern_mapping_context>
808
+ ```
809
+
810
+ Spawn with:
811
+ ```
812
+ Agent(
813
+ prompt="{above}",
814
+ subagent_type="gtd-pattern-mapper",
815
+ model="{researcher_model}",
816
+ )
817
+ ```
818
+
819
+ > **ORCHESTRATOR RULE — CODEX RUNTIME**: After calling Agent() above, stop working on this task immediately. Do not read more files, edit code, or run tests related to this task while the subagent is active. Wait for the subagent to return its result. This prevents duplicate work, conflicting edits, and wasted context. Only resume when the subagent result is available.
820
+
821
+ **Handle return:**
822
+ - **`## PATTERN MAPPING COMPLETE`:** Update `PATTERNS_PATH` to the created file path, continue to step 8.
823
+ - **Any error or empty return:** Log warning, continue to step 8 without patterns (non-blocking).
824
+
825
+ After pattern mapper completes, update the path variable:
826
+ ```bash
827
+ PATTERNS_PATH="${PHASE_DIR}/${PADDED_PHASE}-PATTERNS.md"
828
+ ```
829
+
830
+ ## 8. Spawn gtd-planner Agent
831
+
832
+ Display banner:
833
+ ```
834
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
835
+ GTD ► PLANNING PHASE {X}
836
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
837
+
838
+ ◆ Spawning planner...
839
+ ```
840
+
841
+ Planner prompt:
842
+
843
+ ```markdown
844
+ <planning_context>
845
+ **Phase:** {phase_number}
846
+ **Mode:** {standard | gap_closure | reviews}
847
+
848
+ <files_to_read>
849
+ - {state_path} (Project State)
850
+ - {roadmap_path} (Roadmap)
851
+ - {requirements_path} (Requirements)
852
+ - {context_path} (USER DECISIONS from /gtd:discuss-phase)
853
+ - {research_path} (Technical Research)
854
+ - {PATTERNS_PATH} (Pattern Map — analog files and code excerpts, if exists)
855
+ - {verification_path} (Verification Gaps - if --gaps)
856
+ - {uat_path} (UAT Gaps - if --gaps)
857
+ - {reviews_path} (Cross-AI Review Feedback - if --reviews)
858
+ - {UI_SPEC_PATH} (UI Design Contract — visual/interaction specs, if exists)
859
+ - {SPIKE_FINDINGS_PATH} (Spike Findings — validated patterns, constraints, landmines from experiments, if exists)
860
+ - {SKETCH_FINDINGS_PATH} (Sketch Findings — validated design decisions, CSS patterns, visual direction, if exists)
861
+ ${CONTEXT_WINDOW >= 500000 ? `
862
+ **Cross-phase context (1M model enrichment):**
863
+ - CONTEXT.md files from the 3 most recent completed phases (locked decisions — maintain consistency)
864
+ - SUMMARY.md files from the 3 most recent completed phases (what was built — reuse patterns, avoid duplication)
865
+ - LEARNINGS.md files from the 3 most recent completed phases (structured decisions, patterns, lessons, surprises — skip silently if a phase has no LEARNINGS.md; prefix each block with \`[from Phase N LEARNINGS]\` for source attribution; if total size exceeds 15% of context budget, drop oldest first)
866
+ - CONTEXT.md, SUMMARY.md, and LEARNINGS.md from any phases listed in the current phase's "Depends on:" field in ROADMAP.md (regardless of recency — explicit dependencies always load, deduplicated against the 3 most recent)
867
+ - Skip all other prior phases to stay within context budget
868
+ ` : ''}
869
+ </files_to_read>
870
+
871
+ ${AGENT_SKILLS_PLANNER}
872
+
873
+ **Phase requirement IDs (every ID MUST appear in a plan's `requirements` field):** {phase_req_ids}
874
+
875
+ **Project instructions:** Read ./CLAUDE.md if exists — follow project-specific guidelines
876
+ **Project skills:** Check .claude/skills/ or .agents/skills/ directory (if either exists) — read SKILL.md files, plans should account for project skill rules
877
+
878
+ ${TDD_MODE === 'true' ? `
879
+ <tdd_mode_active>
880
+ **TDD Mode is ENABLED.** Apply TDD heuristics from @~/.claude/get-tasks-done/references/tdd.md to all eligible tasks:
881
+ - Business logic with defined I/O → type: tdd
882
+ - API endpoints with request/response contracts → type: tdd
883
+ - Data transformations, validation, algorithms → type: tdd
884
+ - UI, config, glue code, CRUD → standard plan (type: execute)
885
+ Each TDD plan gets one feature with RED/GREEN/REFACTOR gate sequence.
886
+ </tdd_mode_active>
887
+ ` : ''}
888
+
889
+ **MVP_MODE:** ${MVP_MODE} (when true, follow vertical-slice rules from `@~/.claude/get-tasks-done/references/planner-mvp-mode.md`; when false, ignore MVP guidance entirely.)
890
+ **WALKING_SKELETON:** ${WALKING_SKELETON} (when true, the first deliverable must be a Walking Skeleton — produce SKELETON.md alongside PLAN.md.)
891
+
892
+ ${MVP_MODE === 'true' ? `
893
+ <mvp_mode_active>
894
+ **MVP Mode is ENABLED.** Follow vertical-slice planning rules from @~/.claude/get-tasks-done/references/planner-mvp-mode.md. Each plan must deliver a complete vertical slice — thin end-to-end functionality rather than horizontal layers.
895
+ </mvp_mode_active>
896
+ ` : ''}
897
+ </planning_context>
898
+
899
+ <downstream_consumer>
900
+ Output consumed by `/gtd:export-phase-issues`, `/gtd:work-task-issue`, and `/gtd:orchestrate-tasks`. Plans need:
901
+ - Frontmatter (wave, depends_on, files_modified, autonomous)
902
+ - Tasks in XML format with read_first, boundaries, and acceptance_criteria fields (MANDATORY on every task)
903
+ - Verification criteria
904
+ - must_haves for goal-backward verification
905
+ </downstream_consumer>
906
+
907
+ <deep_work_rules>
908
+ ## Anti-Shallow Execution Rules (MANDATORY)
909
+
910
+ Every task MUST include these fields — they are NOT optional:
911
+
912
+ 1. **`<read_first>`** — Files the executor MUST read before touching anything. Always include:
913
+ - The file being modified (so executor sees current state, not assumptions)
914
+ - Any "source of truth" file referenced in CONTEXT.md (reference implementations, existing patterns, config files, schemas)
915
+ - Any file whose patterns, signatures, types, or conventions must be replicated or respected
916
+
917
+ 2. **`<boundaries>`** — The executor's allowed and forbidden scope. Rules:
918
+ - Include concrete files/directories the task may touch
919
+ - Include concrete files/directories the task must not touch
920
+ - Include behavior explicitly out of scope for this task
921
+ - Make boundaries narrow enough that parallel tasks cannot accidentally edit the same ownership surface
922
+ - Examples:
923
+ - `Allowed: auth repository and auth tests. Forbidden: route guards, database schema, and notification code.`
924
+ - `Allowed: OpenTofu AWS root and variables. Forbidden: Cloudflare root, CI workflows, and application code.`
925
+
926
+ 3. **`<acceptance_criteria>`** — Verifiable conditions that prove the task was done correctly. Rules:
927
+ - Every criterion must be checkable as a source assertion, behavior assertion, test command, or CLI output
928
+ - NEVER use subjective language ("looks correct", "properly configured", "consistent with")
929
+ - Include exact strings, patterns, values, command outputs, or observable behavior where that is the right proof
930
+ - Examples:
931
+ - Code: `auth.py contains def verify_token(` / `test_auth.py exits 0`
932
+ - Behavior: `POST /api/auth/login returns 200 + httpOnly JWT cookie for valid credentials`
933
+ - Config: `.env.example contains DATABASE_URL=` / `Dockerfile contains HEALTHCHECK`
934
+ - Docs: `README.md contains '## Installation'` / `API.md lists all endpoints`
935
+ - Infra: `deploy.yml has rollback step` / `docker-compose.yml has healthcheck for db`
936
+
937
+ 4. **`<action>`** — Must include CONCRETE values, not references. Rules:
938
+ - NEVER say "align X with Y", "match X to Y", "update to be consistent" without specifying the exact target state
939
+ - Include concrete identifiers and reference values: config keys, function signatures, SQL table names, class names, import paths, env vars, endpoint paths, etc.
940
+ - If CONTEXT.md has a comparison table or expected values, copy only the target identifiers/values needed to remove ambiguity
941
+ - Do not include full file contents, fenced code blocks, or complete implementations in `<action>`
942
+ - The executor should understand the intended target state from `<action>` and use `<read_first>` files for current implementation details, patterns, and source-of-truth context
943
+
944
+ **Why this matters:** Executor agents work from the plan text. Vague instructions like "update the config to match production" produce shallow one-line changes. Concrete instructions like "add DATABASE_URL, set POOL_SIZE=20, add REDIS_URL, and read config/runtime.ts before editing" produce complete work without turning the planner into the executor.
945
+ </deep_work_rules>
946
+
947
+ <quality_gate>
948
+ - [ ] PLAN.md files created in phase directory
949
+ - [ ] Each plan has valid frontmatter
950
+ - [ ] Tasks are specific and actionable
951
+ - [ ] Every task has `<read_first>` with at least the file being modified
952
+ - [ ] Every task has `<boundaries>` with explicit allowed and forbidden scope
953
+ - [ ] Every task has `<acceptance_criteria>` with behavior, test-command, CLI, or source assertions
954
+ - [ ] Every `<action>` contains concrete identifiers without fenced code blocks or full implementations
955
+ - [ ] Dependencies correctly identified
956
+ - [ ] Waves assigned for parallel execution
957
+ - [ ] must_haves derived from phase goal
958
+ </quality_gate>
959
+ ```
960
+
961
+ **If `CHUNKED_MODE` is `false` (default):** Spawn the planner as a single long-lived Agent:
962
+
963
+ ```text
964
+ Agent(
965
+ prompt=filled_prompt,
966
+ subagent_type="gtd-planner",
967
+ model="{planner_model}",
968
+ description="Plan Phase {phase}"
969
+ )
970
+ ```
971
+
972
+ > **ORCHESTRATOR RULE — CODEX RUNTIME**: After calling Agent() above, stop working on this task immediately. Do not read more files, edit code, or run tests related to this task while the subagent is active. Wait for the subagent to return its result. This prevents duplicate work, conflicting edits, and wasted context. Only resume when the subagent result is available.
973
+
974
+ **If `CHUNKED_MODE` is `true`:** Skip the Agent() call above — proceed to step 8.5 instead.
975
+
976
+ ## 8.5. Chunked Planning Mode
977
+
978
+ **Skip if `CHUNKED_MODE` is `false`.**
979
+
980
+ Chunked mode splits the single long-lived planner Agent run into a short outline Agent run followed by
981
+ N short per-plan Agent runs. Each run is bounded to ~3–5 min; each plan is committed individually
982
+ for crash resilience. If any run hangs and the terminal is force-killed, rerunning
983
+ `/gtd:plan-phase {N} --chunked` resumes from the last successfully committed plan.
984
+
985
+ **Intended for new or in-progress chunked runs.** To recover plans already written by a prior
986
+ *non-chunked* run, use step 6's "Add more plans" or continue through
987
+ `/gtd:export-phase-issues` and task issue execution — don't start a fresh
988
+ chunked run over existing non-chunked plans.
989
+
990
+ ### 8.5.1 Outline Phase (outline-only mode, ~2 min)
991
+
992
+ **Resume detection:** If `${PHASE_DIR}/${PADDED_PHASE}-PLAN-OUTLINE.md` already exists **and
993
+ is valid** (contains the `## OUTLINE COMPLETE` marker), skip this sub-step — the outline
994
+ already exists from a previous run. Proceed directly to 8.5.2.
995
+
996
+ ```bash
997
+ OUTLINE_FILE="${PHASE_DIR}/${PADDED_PHASE}-PLAN-OUTLINE.md"
998
+ if [[ -f "$OUTLINE_FILE" ]] && grep -q "^## OUTLINE COMPLETE" "$OUTLINE_FILE"; then
999
+ # reuse existing outline — skip to 8.5.2
1000
+ fi
1001
+ ```
1002
+
1003
+ Display:
1004
+ ```text
1005
+ ◆ Chunked mode: spawning outline planner...
1006
+ ```
1007
+
1008
+ Spawn the planner in **outline-only** mode — it must write only the outline manifest, not any
1009
+ PLAN.md files:
1010
+
1011
+ ```javascript
1012
+ Agent(
1013
+ prompt="{same planning_context as step 8, plus:}
1014
+
1015
+ **Chunked mode: outline-only.**
1016
+ Do NOT write any PLAN.md files in this Task.
1017
+ Write only: {PHASE_DIR}/{PADDED_PHASE}-PLAN-OUTLINE.md
1018
+
1019
+ The outline must be a markdown table with columns:
1020
+ Plan ID | Objective | Wave | Depends On | Requirements
1021
+
1022
+ Return: ## OUTLINE COMPLETE with plan count.",
1023
+ subagent_type="gtd-planner",
1024
+ model="{planner_model}",
1025
+ description="Outline Phase {phase} (chunked)"
1026
+ )
1027
+ ```
1028
+
1029
+ > **ORCHESTRATOR RULE — CODEX RUNTIME**: After calling Agent() above, stop working on this task immediately. Do not read more files, edit code, or run tests related to this task while the subagent is active. Wait for the subagent to return its result. This prevents duplicate work, conflicting edits, and wasted context. Only resume when the subagent result is available.
1030
+
1031
+ Handle return:
1032
+ - **`## OUTLINE COMPLETE`:** Read `PLAN-OUTLINE.md`, extract plan list. Continue to 8.5.2.
1033
+ - **Any other return or empty:** Display error. Offer: 1) Retry outline, 2) Stop.
1034
+
1035
+ ### 8.5.2 Per-Plan Tasks (single-plan mode, ~3-5 min each)
1036
+
1037
+ For each plan entry extracted from `PLAN-OUTLINE.md`:
1038
+
1039
+ 1. **Resume check:** If `${PHASE_DIR}/{plan_id}-PLAN.md` already exists on disk **and has
1040
+ valid YAML frontmatter** (opening `---` delimiter present), skip this plan (do not
1041
+ overwrite completed work — resume safety).
1042
+
1043
+ ```bash
1044
+ PLAN_FILE="${PHASE_DIR}/${plan_id}-PLAN.md"
1045
+ if [[ -f "$PLAN_FILE" ]] && head -1 "$PLAN_FILE" | grep -q '^---'; then
1046
+ continue # plan already written, skip
1047
+ fi
1048
+ ```
1049
+
1050
+ 2. Display:
1051
+ ```text
1052
+ ◆ Chunked mode: planning {plan_id} ({k}/{N})...
1053
+ ```
1054
+
1055
+ 3. Spawn the planner in **single-plan** mode — it must write exactly one PLAN.md file:
1056
+ ```javascript
1057
+ Agent(
1058
+ prompt="{same planning_context as step 8, plus:}
1059
+
1060
+ **Chunked mode: single-plan.**
1061
+ Write exactly ONE plan file: {PHASE_DIR}/{plan_id}-PLAN.md
1062
+ Plan to write: {plan_id} — {objective}
1063
+ Wave: {wave} | Depends on: {depends_on}
1064
+ Phase requirement IDs to cover in this plan: {plan_requirements}
1065
+
1066
+ Return: ## PLAN COMPLETE with the plan ID.",
1067
+ subagent_type="gtd-planner",
1068
+ model="{planner_model}",
1069
+ description="Plan {plan_id} (chunked {k}/{N})"
1070
+ )
1071
+ ```
1072
+
1073
+ > **ORCHESTRATOR RULE — CODEX RUNTIME**: After calling Agent() above, stop working on this task immediately. Do not read more files, edit code, or run tests related to this task while the subagent is active. Wait for the subagent to return its result. This prevents duplicate work, conflicting edits, and wasted context. Only resume when the subagent result is available.
1074
+
1075
+ 4. **Verify disk:** Check `${PHASE_DIR}/{plan_id}-PLAN.md` exists. If missing: offer 1) Retry, 2) Stop.
1076
+
1077
+ 5. **Commit per-plan:**
1078
+ ```bash
1079
+ gtd-sdk query commit "docs(${PADDED_PHASE}): plan ${plan_id} (chunked)" --files "${PHASE_DIR}/${plan_id}-PLAN.md"
1080
+ ```
1081
+
1082
+ After all N plans are written and committed, treat this as `## PLANNING COMPLETE` and continue
1083
+ to step 9.
1084
+
1085
+ ## 9. Handle Planner Return
1086
+
1087
+ - **`## PLANNING COMPLETE`:** Display plan count. If `--skip-verify` or `plan_checker_enabled` is false (from init): skip to step 13. Otherwise: step 10.
1088
+ - **`## PHASE SPLIT RECOMMENDED`:** The planner determined the phase exceeds the context budget for full-fidelity implementation of all source items. Handle in step 9b.
1089
+ - **`## ⚠ Source Audit: Unplanned Items Found`:** The planner's multi-source coverage audit found items from REQUIREMENTS.md, RESEARCH.md, ROADMAP goal, or CONTEXT.md decisions that are not covered by any plan. Handle in step 9c.
1090
+ - **`## CHECKPOINT REACHED`:** Present to user, get response, spawn continuation (step 12)
1091
+ - **`## PLANNING INCONCLUSIVE`:** Show attempts, offer: Add context / Retry / Manual
1092
+ - **Empty / truncated / no recognized marker:** → Filesystem fallback (step 9a).
1093
+
1094
+ ## 9a. Filesystem Fallback (Planner)
1095
+
1096
+ **Triggered when:** Agent() returns but the return contains no recognized marker (`## PLANNING COMPLETE`, `## PHASE SPLIT RECOMMENDED`, `## ⚠ Source Audit`, `## CHECKPOINT REACHED`, `## PLANNING INCONCLUSIVE`).
1097
+
1098
+ ```bash
1099
+ DISK_PLANS=$(ls "${PHASE_DIR}"/*-PLAN.md 2>/dev/null | wc -l | tr -d ' ')
1100
+ ```
1101
+
1102
+ **If `DISK_PLANS` > 0:** The planner wrote plans to disk but the Agent() return was empty or
1103
+ truncated (the Windows stdio hang pattern — the subagent finished but the return never
1104
+ arrived). Display:
1105
+
1106
+ ```text
1107
+ ◆ Planner wrote {DISK_PLANS} plan(s) to disk but did not emit a PLANNING COMPLETE marker.
1108
+ This is a known Windows stdio hang pattern — work is likely recoverable.
1109
+
1110
+ Plans found on disk:
1111
+ {ls output of *-PLAN.md}
1112
+ ```
1113
+
1114
+ Offer 3 options:
1115
+ 1. **Accept plans** — treat as `## PLANNING COMPLETE` and continue through step 9 `## PLANNING COMPLETE` handling (so `--skip-verify` / `plan_checker_enabled=false` are honored — may skip to step 13 rather than step 10)
1116
+ 2. **Retry planner** — re-spawn the planner with the same prompt (return to step 8)
1117
+ 3. **Stop** — exit; user can re-run `/gtd:plan-phase {N}` to resume
1118
+
1119
+ **If `DISK_PLANS` is 0 and no marker:** The planner produced no output. Treat as
1120
+ `## PLANNING INCONCLUSIVE` and handle accordingly.
1121
+
1122
+ ## 9b. Handle Phase Split Recommendation
1123
+
1124
+ When the planner returns `## PHASE SPLIT RECOMMENDED`, it means the phase's source items exceed the context budget for full-fidelity implementation. The planner proposes groupings.
1125
+
1126
+ **Extract from planner return:**
1127
+ - Proposed sub-phases (e.g., "17a: processing core (D-01 to D-19)", "17b: billing + config UX (D-20 to D-27)")
1128
+ - Which source items (REQ-IDs, D-XX decisions, RESEARCH items) go in each sub-phase
1129
+ - Why the split is necessary (context cost estimate, file count)
1130
+
1131
+ **Present to user:**
1132
+ ```
1133
+ ## Phase {X} exceeds context budget for full-fidelity implementation
1134
+
1135
+ The planner found {N} source items that exceed the context budget when
1136
+ planned at full fidelity. Instead of reducing scope, we recommend splitting:
1137
+
1138
+ **Option 1: Split into sub-phases**
1139
+ - Phase {X}a: {name} — {items} ({N} source items, ~{P}% context)
1140
+ - Phase {X}b: {name} — {items} ({M} source items, ~{Q}% context)
1141
+
1142
+ **Option 2: Proceed anyway** (planner will attempt all, quality may degrade past 50% context)
1143
+
1144
+ **Option 3: Prioritize** — you choose which items to implement now,
1145
+ rest become a follow-up phase
1146
+ ```
1147
+
1148
+ Use AskUserQuestion with these 3 options.
1149
+
1150
+ **If "Split":** Use `/gtd:phase --insert` to create the sub-phases, then replan each.
1151
+ **If "Proceed":** Return to planner with instruction to attempt all items at full fidelity, accepting more plans/tasks.
1152
+ **If "Prioritize":** Use AskUserQuestion (multiSelect) to let user pick which items are "now" vs "later". Create CONTEXT.md for each sub-phase with the selected items.
1153
+
1154
+ ## 9c. Handle Source Audit Gaps
1155
+
1156
+ When the planner returns `## ⚠ Source Audit: Unplanned Items Found`, it means items from REQUIREMENTS.md, RESEARCH.md, ROADMAP goal, or CONTEXT.md decisions have no corresponding plan.
1157
+
1158
+ **Extract from planner return:**
1159
+ - Each unplanned item with its source artifact and section
1160
+ - The planner's suggested options (A: add plan, B: split phase, C: defer with confirmation)
1161
+
1162
+ **Present each gap to user.** For each unplanned item:
1163
+
1164
+ ```
1165
+ ## ⚠ Unplanned: {item description}
1166
+
1167
+ Source: {RESEARCH.md / REQUIREMENTS.md / ROADMAP goal / CONTEXT.md}
1168
+ Details: {why the planner flagged this}
1169
+
1170
+ Options:
1171
+ 1. Add a plan to cover this item (recommended)
1172
+ 2. Split phase — move to a sub-phase with related items
1173
+ 3. Defer — add to backlog (developer confirms this is intentional)
1174
+ ```
1175
+
1176
+ Use AskUserQuestion for each gap (or batch if multiple gaps).
1177
+
1178
+ **If "Add plan":** Return to planner (step 8) with instruction to add plans covering the missing items, preserving existing plans.
1179
+ **If "Split":** Use `/gtd:phase --insert` for overflow items, then replan.
1180
+ **If "Defer":** Record in CONTEXT.md `## Deferred Ideas` with developer's confirmation. Proceed to step 10.
1181
+
1182
+ ## 10. Spawn gtd-plan-checker Agent
1183
+
1184
+ Display banner:
1185
+ ```
1186
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1187
+ GTD ► VERIFYING PLANS
1188
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1189
+
1190
+ ◆ Spawning plan checker...
1191
+ ```
1192
+
1193
+ Checker prompt:
1194
+
1195
+ ```markdown
1196
+ <verification_context>
1197
+ **Phase:** {phase_number}
1198
+ **Phase Goal:** {goal from ROADMAP}
1199
+
1200
+ <files_to_read>
1201
+ - {PHASE_DIR}/*-PLAN.md (Plans to verify)
1202
+ - {roadmap_path} (Roadmap)
1203
+ - {requirements_path} (Requirements)
1204
+ - {context_path} (USER DECISIONS from /gtd:discuss-phase)
1205
+ - {research_path} (Technical Research — includes Validation Architecture)
1206
+ </files_to_read>
1207
+
1208
+ ${AGENT_SKILLS_CHECKER}
1209
+
1210
+ **Phase requirement IDs (MUST ALL be covered):** {phase_req_ids}
1211
+
1212
+ **Project instructions:** Read ./CLAUDE.md if exists — verify plans honor project guidelines
1213
+ **Project skills:** Check .claude/skills/ or .agents/skills/ directory (if either exists) — verify plans account for project skill rules
1214
+ </verification_context>
1215
+
1216
+ <expected_output>
1217
+ - ## VERIFICATION PASSED — all checks pass
1218
+ - ## ISSUES FOUND — structured issue list
1219
+ </expected_output>
1220
+ ```
1221
+
1222
+ ```
1223
+ Agent(
1224
+ prompt=checker_prompt,
1225
+ subagent_type="gtd-plan-checker",
1226
+ model="{checker_model}",
1227
+ description="Verify Phase {phase} plans"
1228
+ )
1229
+ ```
1230
+
1231
+ > **ORCHESTRATOR RULE — CODEX RUNTIME**: After calling Agent() above, stop working on this task immediately. Do not read more files, edit code, or run tests related to this task while the subagent is active. Wait for the subagent to return its result. This prevents duplicate work, conflicting edits, and wasted context. Only resume when the subagent result is available.
1232
+
1233
+ ## 11. Handle Checker Return
1234
+
1235
+ - **`## VERIFICATION PASSED`:** Display confirmation, proceed to step 13.
1236
+ - **`## ISSUES FOUND`:** Display issues, check iteration count, proceed to step 12.
1237
+ - **Empty / truncated / no recognized marker:** → Filesystem fallback (step 11a).
1238
+
1239
+ **Thinking partner for architectural tradeoffs (conditional):**
1240
+ If `features.thinking_partner` is enabled, scan the checker's issues for architectural tradeoff keywords
1241
+ ("architecture", "approach", "strategy", "pattern", "vs", "alternative"). If found:
1242
+
1243
+ ```
1244
+ The plan-checker flagged an architectural decision point:
1245
+ {issue description}
1246
+
1247
+ Brief analysis:
1248
+ - Option A: {approach_from_plan} — {pros/cons}
1249
+ - Option B: {alternative_approach} — {pros/cons}
1250
+ - Recommendation: {choice} aligned with {phase_goal}
1251
+
1252
+ Apply this to the revision? [Yes] / [No, I'll decide]
1253
+ ```
1254
+
1255
+ If yes: include the recommendation in the revision prompt. If no: proceed to revision loop as normal.
1256
+ If thinking_partner disabled: skip this block entirely.
1257
+
1258
+ ## 11a. Filesystem Fallback (Checker)
1259
+
1260
+ **Triggered when:** Checker Agent() returns but the return contains neither `## VERIFICATION PASSED` nor `## ISSUES FOUND`.
1261
+
1262
+ ```bash
1263
+ DISK_PLANS=$(ls "${PHASE_DIR}"/*-PLAN.md 2>/dev/null | wc -l | tr -d ' ')
1264
+ ```
1265
+
1266
+ **If `DISK_PLANS` > 0:** Plans exist on disk; the checker return was empty or truncated (the
1267
+ Windows stdio hang pattern — the subagent finished but the return never arrived). Display:
1268
+
1269
+ ```text
1270
+ ◆ Checker return was empty or truncated. {DISK_PLANS} plan(s) exist on disk.
1271
+ This is a known Windows stdio hang pattern — checker may have completed without returning.
1272
+ ```
1273
+
1274
+ Offer 3 options:
1275
+ 1. **Accept verification** — treat as `## VERIFICATION PASSED` and continue to step 13
1276
+ 2. **Retry checker** — re-spawn the checker with the same prompt (return to step 10)
1277
+ 3. **Stop** — exit; user can re-run `/gtd:plan-phase {N}` to resume
1278
+
1279
+ **If `DISK_PLANS` is 0:** No plans on disk — something is seriously wrong. Display error and stop.
1280
+
1281
+ ## 12. Revision Loop (Max 3 Iterations)
1282
+
1283
+ Track `iteration_count` (starts at 1 after initial plan + check).
1284
+ Track `prev_issue_count` (initialized to `Infinity` before the loop begins).
1285
+ Track `stall_reentry_count` (starts at 0; incremented each time "Adjust approach" re-enters step 8).
1286
+
1287
+ **If iteration_count < 3:**
1288
+
1289
+ Parse issue count from checker return: count BLOCKER + WARNING entries in the YAML issues block (structured output from gtd-plan-checker). If the checker's return contains no YAML issues block (i.e., the plan was approved with no issues), treat `issue_count` as 0 and skip the stall check — the plan passed. Proceed to step 13.
1290
+
1291
+ Display: `Revision iteration {N}/3 -- {blocker_count} blockers, {warning_count} warnings`
1292
+
1293
+ **Stall detection:** If `issue_count >= prev_issue_count`:
1294
+ Display: `Revision loop stalled — issue count not decreasing ({issue_count} issues remain after {N} iterations)`
1295
+
1296
+ **If `stall_reentry_count < 2`:**
1297
+ Ask user:
1298
+ Question: "Issues remain after {N} revision attempts with no progress. Proceed with current output?"
1299
+ Options: "Proceed anyway" | "Adjust approach"
1300
+ If "Proceed anyway": accept current plans and continue to step 13.
1301
+ If "Adjust approach": increment `stall_reentry_count`, open freeform discussion, then re-enter step 8 (full replanning). Note: re-entry resets `iteration_count` and `prev_issue_count` but `stall_reentry_count` persists across re-entries and is capped at 2.
1302
+
1303
+ **If `stall_reentry_count >= 2`:**
1304
+ Display: `Stall persists after 2 re-planning attempts. The following issues could not be resolved automatically:`
1305
+ List the remaining issues from the checker.
1306
+ Suggest: "Consider resolving these issues manually or running `/gtd:debug` to investigate root causes."
1307
+ Options: "Proceed anyway" | "Abandon"
1308
+ If "Proceed anyway": accept current plans and continue to step 13.
1309
+ If "Abandon": stop workflow.
1310
+
1311
+ Set `prev_issue_count = issue_count`.
1312
+
1313
+ Revision prompt:
1314
+
1315
+ ```markdown
1316
+ <revision_context>
1317
+ **Phase:** {phase_number}
1318
+ **Mode:** revision
1319
+
1320
+ <files_to_read>
1321
+ - {PHASE_DIR}/*-PLAN.md (Existing plans)
1322
+ - {context_path} (USER DECISIONS from /gtd:discuss-phase)
1323
+ </files_to_read>
1324
+
1325
+ ${AGENT_SKILLS_PLANNER}
1326
+
1327
+ **Checker issues:** {structured_issues_from_checker}
1328
+ </revision_context>
1329
+
1330
+ <instructions>
1331
+ Make targeted updates to address checker issues.
1332
+ Do NOT replan from scratch unless issues are fundamental.
1333
+ Return what changed.
1334
+ </instructions>
1335
+ ```
1336
+
1337
+ ```
1338
+ Agent(
1339
+ prompt=revision_prompt,
1340
+ subagent_type="gtd-planner",
1341
+ model="{planner_model}",
1342
+ description="Revise Phase {phase} plans"
1343
+ )
1344
+ ```
1345
+
1346
+ > **ORCHESTRATOR RULE — CODEX RUNTIME**: After calling Agent() above, stop working on this task immediately. Do not read more files, edit code, or run tests related to this task while the subagent is active. Wait for the subagent to return its result. This prevents duplicate work, conflicting edits, and wasted context. Only resume when the subagent result is available.
1347
+
1348
+ After planner returns -> spawn checker again (step 10), increment iteration_count.
1349
+
1350
+ **If iteration_count >= 3:**
1351
+
1352
+ Display: `Max iterations reached. {N} issues remain:` + issue list
1353
+
1354
+ Offer: 1) Force proceed, 2) Provide guidance and retry, 3) Abandon
1355
+
1356
+ ## 12.5. Plan Bounce (Optional External Refinement)
1357
+
1358
+ **Skip if:** `--skip-bounce` flag, `--gaps` flag, or bounce is not activated.
1359
+
1360
+ **Activation:** Bounce runs when `--bounce` flag is present OR `workflow.plan_bounce` config is `true`. The `--skip-bounce` flag always wins (disables bounce even if config enables it). The `--gaps` flag also disables bounce (gap-closure mode should not modify plans externally).
1361
+
1362
+ **Prerequisites:** `workflow.plan_bounce_script` must be set to a valid script path. If bounce is activated but no script is configured, display warning and skip:
1363
+ ```
1364
+ ⚠ Plan bounce activated but no script configured.
1365
+ Set workflow.plan_bounce_script to the path of your refinement script.
1366
+ Skipping bounce step.
1367
+ ```
1368
+
1369
+ **Read pass count:**
1370
+ ```bash
1371
+ BOUNCE_PASSES=$(gtd-sdk query config-get workflow.plan_bounce_passes 2>/dev/null || echo "2")
1372
+ BOUNCE_SCRIPT=$(gtd-sdk query config-get workflow.plan_bounce_script 2>/dev/null | jq -r '.' 2>/dev/null || true)
1373
+ ```
1374
+
1375
+ Display banner:
1376
+ ```
1377
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1378
+ GTD ► BOUNCING PLANS (External Refinement)
1379
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1380
+
1381
+ Script: ${BOUNCE_SCRIPT}
1382
+ Max passes: ${BOUNCE_PASSES}
1383
+ ```
1384
+
1385
+ **For each PLAN.md file in the phase directory:**
1386
+
1387
+ 1. **Backup:** Copy `*-PLAN.md` to `*-PLAN.pre-bounce.md`
1388
+ ```bash
1389
+ cp "${PLAN_FILE}" "${PLAN_FILE%.md}.pre-bounce.md"
1390
+ ```
1391
+
1392
+ 2. **Invoke bounce script:**
1393
+ ```bash
1394
+ "${BOUNCE_SCRIPT}" "${PLAN_FILE}" "${BOUNCE_PASSES}"
1395
+ ```
1396
+
1397
+ 3. **Validate bounced plan — YAML frontmatter integrity:**
1398
+ After the script returns, check that the bounced file still has valid YAML frontmatter (opening and closing `---` delimiters with parseable content between them). If the bounced plan breaks YAML frontmatter validation, restore the original from the pre-bounce.md backup and continue to the next plan:
1399
+ ```
1400
+ ⚠ Bounced plan ${PLAN_FILE} has broken YAML frontmatter — restoring original from pre-bounce backup.
1401
+ ```
1402
+
1403
+ 4. **Handle script failure:** If the bounce script exits non-zero, restore the original plan from the pre-bounce.md backup and continue to the next plan:
1404
+ ```
1405
+ ⚠ Bounce script failed for ${PLAN_FILE} (exit code ${EXIT_CODE}) — restoring original from pre-bounce backup.
1406
+ ```
1407
+
1408
+ **After all plans are bounced:**
1409
+
1410
+ 5. **Re-run plan checker on bounced plans:** Spawn gtd-plan-checker (same as step 10) on all modified plans. If a bounced plan fails the checker, restore original from its pre-bounce.md backup:
1411
+ ```
1412
+ ⚠ Bounced plan ${PLAN_FILE} failed checker validation — restoring original from pre-bounce backup.
1413
+ ```
1414
+
1415
+ 6. **Commit surviving bounced plans:** If at least one plan survived both the frontmatter validation and the checker re-run, commit the changes:
1416
+ ```bash
1417
+ gtd-sdk query commit "refactor(${padded_phase}): bounce plans through external refinement" --files "${PHASE_DIR}/*-PLAN.md"
1418
+ ```
1419
+
1420
+ Display summary:
1421
+ ```
1422
+ Plan bounce complete: {survived}/{total} plans refined
1423
+ ```
1424
+
1425
+ **Clean up:** Remove all `*-PLAN.pre-bounce.md` backup files after the bounce step completes (whether plans survived or were restored).
1426
+
1427
+ ## 13. Requirements Coverage Gate
1428
+
1429
+ After plans pass the checker (or checker is skipped), verify that all phase requirements are covered by at least one plan.
1430
+
1431
+ **Skip if:** `phase_req_ids` is null or TBD (no requirements mapped to this phase).
1432
+
1433
+ **Step 1: Extract requirement IDs claimed by plans**
1434
+ ```bash
1435
+ # Collect all requirement IDs from plan frontmatter
1436
+ PLAN_REQS=$(grep -h "requirements_addressed\|requirements:" ${PHASE_DIR}/*-PLAN.md 2>/dev/null | tr -d '[]' | tr ',' '\n' | sed 's/^[[:space:]]*//' | sort -u)
1437
+ ```
1438
+
1439
+ **Step 2: Compare against phase requirements from ROADMAP**
1440
+
1441
+ For each REQ-ID in `phase_req_ids`:
1442
+ - If REQ-ID appears in `PLAN_REQS` → covered ✓
1443
+ - If REQ-ID does NOT appear in any plan → uncovered ✗
1444
+
1445
+ **Step 3: Check CONTEXT.md features against plan objectives**
1446
+
1447
+ Read CONTEXT.md `<decisions>` section. Extract feature/capability names. Check each against plan `<objective>` blocks. Features not mentioned in any plan objective → potentially dropped.
1448
+
1449
+ **Step 4: Report**
1450
+
1451
+ If all requirements covered and no dropped features:
1452
+ ```
1453
+ ✓ Requirements coverage: {N}/{N} REQ-IDs covered by plans
1454
+ ```
1455
+ → Proceed to step 14.
1456
+
1457
+ If gaps found:
1458
+ ```
1459
+ ## ⚠ Requirements Coverage Gap
1460
+
1461
+ {M} of {N} phase requirements are not assigned to any plan:
1462
+
1463
+ | REQ-ID | Description | Plans |
1464
+ |--------|-------------|-------|
1465
+ | {id} | {from REQUIREMENTS.md} | None |
1466
+
1467
+ {K} CONTEXT.md features not found in plan objectives:
1468
+ - {feature_name} — described in CONTEXT.md but no plan covers it
1469
+
1470
+ Options:
1471
+ 1. Re-plan to include missing requirements (recommended)
1472
+ 2. Move uncovered requirements to next phase
1473
+ 3. Proceed anyway — accept coverage gaps
1474
+ ```
1475
+
1476
+ If `TEXT_MODE` is true, present as a plain-text numbered list (options already shown in the block above). Otherwise use AskUserQuestion to present the options.
1477
+
1478
+ ## 13a. Decision Coverage Gate
1479
+
1480
+ After the requirements coverage gate passes, verify that every trackable
1481
+ decision captured by discuss-phase in CONTEXT.md `<decisions>` is referenced
1482
+ by at least one plan. This is the **translation gate** from issue #2492 —
1483
+ its job is to refuse to mark a phase planned when a discuss-phase decision
1484
+ silently dropped on the way into the plans.
1485
+
1486
+ **Skip if** `workflow.context_coverage_gate` is explicitly set to `false`
1487
+ (absent key = enabled). Also skip if no CONTEXT.md exists for this phase
1488
+ (nothing to translate) or if its `<decisions>` block is empty.
1489
+
1490
+ ```bash
1491
+ GATE_CFG=$(gtd-sdk query config-get workflow.context_coverage_gate 2>/dev/null || echo "true")
1492
+ if [ "$GATE_CFG" != "false" ]; then
1493
+ GATE_RESULT=$(gtd-sdk query check.decision-coverage-plan "${PHASE_DIR}" "${CONTEXT_PATH}")
1494
+ # BLOCKING: refuse to mark phase planned when a trackable decision is uncovered.
1495
+ # `passed: true` covers both real-pass and skipped cases (gate disabled / no CONTEXT.md /
1496
+ # no trackable decisions). Verify-phase counterpart deliberately omits this exit-1 — that
1497
+ # gate is non-blocking by design (review finding F15).
1498
+ echo "$GATE_RESULT" | jq -e '.data.passed == true' >/dev/null || {
1499
+ echo "$GATE_RESULT" | jq -r '.data.message'
1500
+ exit 1
1501
+ }
1502
+ fi
1503
+ ```
1504
+
1505
+ The handler returns JSON:
1506
+ ```json
1507
+ {
1508
+ "passed": true,
1509
+ "skipped": false,
1510
+ "total": 2,
1511
+ "covered": 2,
1512
+ "uncovered": [ { "id": "D-01", "text": "...", "category": "..." } ],
1513
+ "message": "..."
1514
+ }
1515
+ ```
1516
+
1517
+ **If `passed` is true (or `skipped` is true):** Display
1518
+ `✓ Decision coverage: {M}/{N} CONTEXT.md decisions covered by plans` (or
1519
+ `(skipped — gate disabled)` / `(skipped — no decisions)`) and proceed to
1520
+ step 13b.
1521
+
1522
+ **If `passed` is false:** Display the handler's `message` block. It already
1523
+ names each uncovered decision (`D-NN | category | text`) and tells the user
1524
+ what to do — cite the id in a relevant plan's `must_haves` / `truths`, or
1525
+ move the decision under `### Claude's Discretion` / tag it `[informational]`
1526
+ if it should not be tracked. Then offer:
1527
+
1528
+ ```text
1529
+ Options:
1530
+ 1. Re-plan to cover missing decisions (recommended)
1531
+ 2. Edit CONTEXT.md to mark dropped decisions as [informational] / Discretion
1532
+ 3. Proceed anyway — accept the coverage gap
1533
+ ```
1534
+
1535
+ If `TEXT_MODE` is true, present as a plain-text numbered list. Otherwise use
1536
+ AskUserQuestion. Selecting "Proceed anyway" continues to step 13b but
1537
+ records the override in STATE.md so verify-phase can re-surface it.
1538
+
1539
+ **Why this gate blocks:** failing here is cheap. The plans are the contract
1540
+ between discuss-phase and task issue execution; if a decision isn't visible in
1541
+ any plan, no executor will implement it. Catching that now beats discovering it
1542
+ after expensive execution.
1543
+
1544
+ ## 13b. Record Planning Completion in STATE.md
1545
+
1546
+ After plans pass all gates, record that planning is complete so STATE.md reflects the new phase status:
1547
+
1548
+ ```bash
1549
+ gtd-sdk query state.planned-phase --phase "${PHASE_NUMBER}" --name "${PHASE_NAME}" --plans "${PLAN_COUNT}"
1550
+ ```
1551
+
1552
+ This updates STATUS to "Ready to execute", sets the correct plan count, and timestamps Last Activity.
1553
+
1554
+ ## 13c. Annotate ROADMAP with Wave Dependencies and Cross-cutting Constraints
1555
+
1556
+ After plans are finalized, annotate the ROADMAP.md plan list for this phase with:
1557
+ - **Wave dependency notes** — a bold header before each wave group ("Wave 2 *(blocked on Wave 1 completion)*")
1558
+ - **Cross-cutting constraints** — a "Cross-cutting constraints:" subsection listing `must_haves.truths` entries that appear in 2 or more plans
1559
+
1560
+ This step is derived entirely from existing PLAN frontmatter — no extra LLM pass is required.
1561
+
1562
+ ```bash
1563
+ gtd-sdk query roadmap.annotate-dependencies "${PHASE_NUMBER}"
1564
+ ```
1565
+
1566
+ This operation is idempotent: if wave headers or cross-cutting constraints already exist in the ROADMAP phase section, the command returns without modifying the file. Skip this step if `plan_count` is 0.
1567
+
1568
+ ## 13d. Commit Plans if commit_docs is true
1569
+
1570
+ If `commit_docs` is true (from the init JSON parsed in step 1), commit the generated plan artifacts (including any ROADMAP.md annotations from step 13c):
1571
+
1572
+ ```bash
1573
+ gtd-sdk query commit "docs(${PADDED_PHASE}): create phase plan" --files "${PHASE_DIR}"/*-PLAN.md .planning/STATE.md .planning/ROADMAP.md
1574
+ ```
1575
+
1576
+ This commits all PLAN.md files for the phase plus the updated STATE.md and ROADMAP.md to version-control the planning artifacts. Skip this step if `commit_docs` is false.
1577
+
1578
+ ## 13e. Post-Planning Gap Analysis
1579
+
1580
+ After all plans are generated, committed, and the Requirements Coverage Gate (§13)
1581
+ has run, emit a single unified gap report covering both REQUIREMENTS.md and the
1582
+ CONTEXT.md `<decisions>` section. This is a **proactive, post-hoc report** — it
1583
+ does not block phase advancement and does not re-plan. It exists so that any
1584
+ requirement or decision that slipped through the per-plan checks is surfaced in
1585
+ one place before execution begins.
1586
+
1587
+ **Skip if:** `workflow.post_planning_gaps` is `false`. Default is `true`.
1588
+
1589
+ ```bash
1590
+ POST_PLANNING_GAPS=$(gtd-sdk query config-get workflow.post_planning_gaps --default true 2>/dev/null || echo true)
1591
+ if [ "$POST_PLANNING_GAPS" = "true" ]; then
1592
+ node "$HOME/.claude/get-tasks-done/bin/gtd-tools.cjs" gap-analysis --phase-dir "${PHASE_DIR}"
1593
+ fi
1594
+ ```
1595
+
1596
+ (`gtd-tools.cjs gap-analysis` reads `.planning/REQUIREMENTS.md`, `${PHASE_DIR}/CONTEXT.md`,
1597
+ and `${PHASE_DIR}/*-PLAN.md`, then prints a markdown table with one row per
1598
+ REQ-ID and D-ID. Word-boundary matching prevents `REQ-1` from being mistaken for
1599
+ `REQ-10`.)
1600
+
1601
+ **Output format (deterministic; sorted REQUIREMENTS.md → CONTEXT.md, then natural
1602
+ sort within source):**
1603
+
1604
+ ```
1605
+ ## Post-Planning Gap Analysis
1606
+
1607
+ | Source | Item | Status |
1608
+ |--------|------|--------|
1609
+ | REQUIREMENTS.md | REQ-01 | ✓ Covered |
1610
+ | REQUIREMENTS.md | REQ-02 | ✗ Not covered |
1611
+ | CONTEXT.md | D-01 | ✓ Covered |
1612
+ | CONTEXT.md | D-02 | ✗ Not covered |
1613
+
1614
+ ⚠ N items not covered by any plan
1615
+ ```
1616
+
1617
+ **Skip-gracefully behavior:**
1618
+ - REQUIREMENTS.md missing → CONTEXT-only report.
1619
+ - CONTEXT.md missing → REQUIREMENTS-only report.
1620
+ - Both missing or `<decisions>` block missing → "No requirements or decisions to check" line, no error.
1621
+
1622
+ This step is non-blocking. If items are reported as not covered, the user may
1623
+ re-run `/gtd:plan-phase --gaps` to add plans, or continue through the issue export
1624
+ and task issue workflow as-is.
1625
+
1626
+ ## 14. Present Final Status
1627
+
1628
+ Route to `<offer_next>` OR `auto_advance` depending on flags/config.
1629
+
1630
+ ## 15. Auto-Advance Check
1631
+
1632
+ Check for auto-advance trigger using values already loaded in step 1:
1633
+
1634
+ 1. Parse `--auto` and `--chain` flags from $ARGUMENTS
1635
+ 2. Use `auto_chain_active` and `auto_advance` from the INIT JSON parsed in step 1 — **do not issue additional `config-get` calls for these values** (they are already present in the init output). Issuing redundant `config-get` calls for values already in INIT can cause infinite read loops on some runtimes.
1636
+ 3. **Sync chain flag with intent** — if user invoked manually (no `--auto` and no `--chain`), clear the ephemeral chain flag from any previous interrupted `--auto` chain. This does NOT touch `workflow.auto_advance` (the user's persistent settings preference):
1637
+ ```bash
1638
+ if [[ ! "$ARGUMENTS" =~ --auto ]] && [[ ! "$ARGUMENTS" =~ --chain ]]; then
1639
+ gtd-sdk query config-set workflow._auto_chain_active false || true
1640
+ fi
1641
+ ```
1642
+
1643
+ Set local variables from INIT (parsed once in step 1):
1644
+ - `AUTO_CHAIN` = `auto_chain_active` from INIT JSON (boolean, default false)
1645
+ - `AUTO_CFG` = `auto_advance` from INIT JSON (boolean, default false)
1646
+
1647
+ **If `--auto` or `--chain` flag present AND `AUTO_CHAIN` is not true:** Persist chain flag to config (handles direct invocation without prior discuss-phase):
1648
+ ```bash
1649
+ if ([[ "$ARGUMENTS" =~ --auto ]] || [[ "$ARGUMENTS" =~ --chain ]]) && [[ "$AUTO_CHAIN" != "true" ]]; then
1650
+ gtd-sdk query config-set workflow._auto_chain_active true
1651
+ fi
1652
+ ```
1653
+
1654
+ **If `--auto` or `--chain` flag present OR `AUTO_CHAIN` is true OR `AUTO_CFG` is true:**
1655
+
1656
+ Display banner:
1657
+ ```
1658
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1659
+ GTD ► AUTO-ADVANCE READY FOR TASK ISSUES
1660
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1661
+
1662
+ Plans ready. Continue through the task issue workflow:
1663
+
1664
+ 1. /gtd:export-phase-issues ${PHASE} ${GTD_WS}
1665
+ 2. /gtd:work-task-issue --phase ${PHASE} ${GTD_WS}
1666
+ or /gtd:orchestrate-tasks <child-issue>... ${GTD_WS}
1667
+ 3. /gtd:work-task-issue --complete-phase ${PHASE} --execute ${GTD_WS}
1668
+
1669
+ ```
1670
+
1671
+ Write-mode issue export needs a target repository from `--repo`, an existing
1672
+ manifest, or the current git GitHub remote, plus GitHub mutation permission.
1673
+
1674
+ **If neither `--auto` nor config enabled:**
1675
+ Route to `<offer_next>` (existing behavior).
1676
+
1677
+ </process>
1678
+
1679
+ <offer_next>
1680
+ Output this markdown directly (not as a code block):
1681
+
1682
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1683
+ GTD ► PHASE {X} PLANNED ✓
1684
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1685
+
1686
+ **Phase {X}: {Name}** — {N} plan(s) in {M} wave(s)
1687
+
1688
+ | Wave | Plans | What it builds |
1689
+ |------|-------|----------------|
1690
+ | 1 | 01, 02 | [objectives] |
1691
+ | 2 | 03 | [objective] |
1692
+
1693
+ Research: {Completed | Used existing | Skipped}
1694
+ Verification: {Passed | Passed with override | Skipped}
1695
+
1696
+ ───────────────────────────────────────────────────────────────
1697
+
1698
+ ## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
1699
+
1700
+ **Export Phase {X} Task Issues** — prepare all {N} plans for task issue execution
1701
+
1702
+ /clear then:
1703
+
1704
+ 1. /gtd:export-phase-issues {X} ${GTD_WS}
1705
+ 2. /gtd:work-task-issue --phase {X} ${GTD_WS}
1706
+ or /gtd:orchestrate-tasks <child-issue>... ${GTD_WS}
1707
+ 3. /gtd:work-task-issue --complete-phase {X} --execute ${GTD_WS}
1708
+
1709
+ **Also available:**
1710
+ - cat .planning/phases/{phase-dir}/*-PLAN.md — review plans
1711
+ - /gtd:plan-phase {X} --research — re-research first
1712
+ - /gtd:review --phase {X} --all — peer review plans with external AIs
1713
+ - /gtd:plan-phase {X} --reviews — replan incorporating review feedback
1714
+
1715
+ ───────────────────────────────────────────────────────────────
1716
+ </offer_next>
1717
+
1718
+ <windows_troubleshooting>
1719
+ **Windows users:** If plan-phase freezes during agent spawning (common on Windows due to
1720
+ stdio deadlocks with MCP servers — see Claude Code issue anthropics/claude-code#28126):
1721
+
1722
+ 1. **Force-kill:** Close the terminal (Ctrl+C may not work)
1723
+ 2. **Clean up orphaned processes:**
1724
+ ```powershell
1725
+ # Kill orphaned node processes from stale MCP servers
1726
+ Get-Process node -ErrorAction SilentlyContinue | Where-Object {$_.StartTime -lt (Get-Date).AddHours(-1)} | Stop-Process -Force
1727
+ ```
1728
+ 3. **Clean up stale task directories:**
1729
+ ```powershell
1730
+ # Remove stale subagent task dirs (Claude Code never cleans these on crash)
1731
+ Remove-Item -Recurse -Force "$env:USERPROFILE\.claude\tasks\*" -ErrorAction SilentlyContinue
1732
+ ```
1733
+ 4. **Reduce MCP server count:** Temporarily disable non-essential MCP servers in settings.json
1734
+ 5. **Retry:** Restart Claude Code and run `/gtd:plan-phase` again
1735
+
1736
+ If freezes persist, try `--skip-research` to reduce the agent chain from 3 to 2 agents:
1737
+ ```
1738
+ /gtd:plan-phase N --skip-research
1739
+ ```
1740
+ </windows_troubleshooting>
1741
+
1742
+ <success_criteria>
1743
+ - [ ] .planning/ directory validated
1744
+ - [ ] Phase validated against roadmap
1745
+ - [ ] Phase directory created if needed
1746
+ - [ ] CONTEXT.md loaded early (step 4) and passed to ALL agents
1747
+ - [ ] Research completed (unless --skip-research or --gaps or exists)
1748
+ - [ ] gtd-phase-researcher spawned with CONTEXT.md
1749
+ - [ ] Existing plans checked
1750
+ - [ ] gtd-planner spawned with CONTEXT.md + RESEARCH.md
1751
+ - [ ] Plans created (PLANNING COMPLETE or CHECKPOINT handled)
1752
+ - [ ] gtd-plan-checker spawned with CONTEXT.md
1753
+ - [ ] Verification passed OR user override OR max iterations with user decision
1754
+ - [ ] User sees status between agent spawns
1755
+ - [ ] User knows next steps
1756
+ </success_criteria>