@jokerized/getresearchdone 0.4.1

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 (711) hide show
  1. package/.claude-plugin/plugin.json +103 -0
  2. package/README.md +211 -0
  3. package/agents/grd-baseline-assessor.md +684 -0
  4. package/agents/grd-code-reviewer.md +300 -0
  5. package/agents/grd-codebase-mapper.md +355 -0
  6. package/agents/grd-critique-agent.md +119 -0
  7. package/agents/grd-debugger.md +519 -0
  8. package/agents/grd-deep-diver.md +737 -0
  9. package/agents/grd-eval-planner.md +913 -0
  10. package/agents/grd-eval-reporter.md +717 -0
  11. package/agents/grd-executor.md +683 -0
  12. package/agents/grd-feasibility-analyst.md +624 -0
  13. package/agents/grd-integration-checker.md +367 -0
  14. package/agents/grd-knowledge-miner.md +81 -0
  15. package/agents/grd-migrator.md +88 -0
  16. package/agents/grd-phase-researcher.md +697 -0
  17. package/agents/grd-plan-checker.md +443 -0
  18. package/agents/grd-planner.md +1532 -0
  19. package/agents/grd-product-owner.md +562 -0
  20. package/agents/grd-project-researcher.md +513 -0
  21. package/agents/grd-research-synthesizer.md +273 -0
  22. package/agents/grd-roadmapper.md +798 -0
  23. package/agents/grd-surveyor.md +566 -0
  24. package/agents/grd-verifier.md +893 -0
  25. package/bin/gd.js +4 -0
  26. package/bin/gd.ts +227 -0
  27. package/bin/grd-manifest.js +4 -0
  28. package/bin/grd-manifest.ts +286 -0
  29. package/bin/grd-mcp-server.js +4 -0
  30. package/bin/grd-mcp-server.ts +124 -0
  31. package/bin/grd-tools.js +4 -0
  32. package/bin/grd-tools.ts +2471 -0
  33. package/bin/postinstall.js +4 -0
  34. package/bin/postinstall.ts +80 -0
  35. package/commands/add-phase.md +123 -0
  36. package/commands/add-todo.md +87 -0
  37. package/commands/assess-baseline.md +289 -0
  38. package/commands/autopilot.md +100 -0
  39. package/commands/autoplan.md +55 -0
  40. package/commands/check-todos.md +87 -0
  41. package/commands/compare-methods.md +262 -0
  42. package/commands/complete-milestone.md +225 -0
  43. package/commands/debug.md +372 -0
  44. package/commands/deep-dive.md +288 -0
  45. package/commands/discover.md +281 -0
  46. package/commands/discuss-phase.md +188 -0
  47. package/commands/discuss.md +55 -0
  48. package/commands/eval-report.md +310 -0
  49. package/commands/evolve.md +79 -0
  50. package/commands/execute-phase.md +1017 -0
  51. package/commands/feasibility.md +292 -0
  52. package/commands/help.md +407 -0
  53. package/commands/init.md +1508 -0
  54. package/commands/insert-phase.md +113 -0
  55. package/commands/iterate.md +327 -0
  56. package/commands/list-phase-assumptions.md +217 -0
  57. package/commands/long-term-roadmap.md +202 -0
  58. package/commands/map-codebase.md +111 -0
  59. package/commands/migrate.md +159 -0
  60. package/commands/new-milestone.md +169 -0
  61. package/commands/pause-work.md +83 -0
  62. package/commands/plan-milestone-gaps.md +373 -0
  63. package/commands/plan-phase.md +655 -0
  64. package/commands/principles.md +328 -0
  65. package/commands/product-plan.md +319 -0
  66. package/commands/progress.md +481 -0
  67. package/commands/quick.md +167 -0
  68. package/commands/reapply-patches.md +154 -0
  69. package/commands/remove-phase.md +97 -0
  70. package/commands/requirement.md +96 -0
  71. package/commands/resume-project.md +113 -0
  72. package/commands/settings.md +1144 -0
  73. package/commands/survey.md +242 -0
  74. package/commands/sync.md +246 -0
  75. package/commands/tracker-setup.md +322 -0
  76. package/commands/update.md +202 -0
  77. package/commands/verify-phase.md +335 -0
  78. package/commands/verify-work.md +701 -0
  79. package/commands/wireup.md +29 -0
  80. package/dist/bin/gd.d.ts +3 -0
  81. package/dist/bin/gd.d.ts.map +1 -0
  82. package/dist/bin/gd.js +178 -0
  83. package/dist/bin/gd.js.map +1 -0
  84. package/dist/bin/grd-manifest.d.ts +3 -0
  85. package/dist/bin/grd-manifest.d.ts.map +1 -0
  86. package/dist/bin/grd-manifest.js +202 -0
  87. package/dist/bin/grd-manifest.js.map +1 -0
  88. package/dist/bin/grd-mcp-server.d.ts +3 -0
  89. package/dist/bin/grd-mcp-server.d.ts.map +1 -0
  90. package/dist/bin/grd-mcp-server.js +71 -0
  91. package/dist/bin/grd-mcp-server.js.map +1 -0
  92. package/dist/bin/grd-tools.d.ts +3 -0
  93. package/dist/bin/grd-tools.d.ts.map +1 -0
  94. package/dist/bin/grd-tools.js +1680 -0
  95. package/dist/bin/grd-tools.js.map +1 -0
  96. package/dist/bin/postinstall.d.ts +3 -0
  97. package/dist/bin/postinstall.d.ts.map +1 -0
  98. package/dist/bin/postinstall.js +61 -0
  99. package/dist/bin/postinstall.js.map +1 -0
  100. package/dist/lib/autopilot-milestone.d.ts +2 -0
  101. package/dist/lib/autopilot-milestone.d.ts.map +1 -0
  102. package/dist/lib/autopilot-milestone.js +94 -0
  103. package/dist/lib/autopilot-milestone.js.map +1 -0
  104. package/dist/lib/autopilot-pipeline.d.ts +2 -0
  105. package/dist/lib/autopilot-pipeline.d.ts.map +1 -0
  106. package/dist/lib/autopilot-pipeline.js +830 -0
  107. package/dist/lib/autopilot-pipeline.js.map +1 -0
  108. package/dist/lib/autopilot-waves.d.ts +2 -0
  109. package/dist/lib/autopilot-waves.d.ts.map +1 -0
  110. package/dist/lib/autopilot-waves.js +266 -0
  111. package/dist/lib/autopilot-waves.js.map +1 -0
  112. package/dist/lib/autopilot.d.ts +2 -0
  113. package/dist/lib/autopilot.d.ts.map +1 -0
  114. package/dist/lib/autopilot.js +1314 -0
  115. package/dist/lib/autopilot.js.map +1 -0
  116. package/dist/lib/autoplan.d.ts +2 -0
  117. package/dist/lib/autoplan.d.ts.map +1 -0
  118. package/dist/lib/autoplan.js +198 -0
  119. package/dist/lib/autoplan.js.map +1 -0
  120. package/dist/lib/autoresearch.d.ts +2 -0
  121. package/dist/lib/autoresearch.d.ts.map +1 -0
  122. package/dist/lib/autoresearch.js +626 -0
  123. package/dist/lib/autoresearch.js.map +1 -0
  124. package/dist/lib/backend.d.ts +2 -0
  125. package/dist/lib/backend.d.ts.map +1 -0
  126. package/dist/lib/backend.js +1036 -0
  127. package/dist/lib/backend.js.map +1 -0
  128. package/dist/lib/benchmark.d.ts +99 -0
  129. package/dist/lib/benchmark.d.ts.map +1 -0
  130. package/dist/lib/benchmark.js +278 -0
  131. package/dist/lib/benchmark.js.map +1 -0
  132. package/dist/lib/citations.d.ts +2 -0
  133. package/dist/lib/citations.d.ts.map +1 -0
  134. package/dist/lib/citations.js +642 -0
  135. package/dist/lib/citations.js.map +1 -0
  136. package/dist/lib/cleanup.d.ts +2 -0
  137. package/dist/lib/cleanup.d.ts.map +1 -0
  138. package/dist/lib/cleanup.js +1222 -0
  139. package/dist/lib/cleanup.js.map +1 -0
  140. package/dist/lib/cli/adapters.d.ts +10 -0
  141. package/dist/lib/cli/adapters.d.ts.map +1 -0
  142. package/dist/lib/cli/adapters.js +27 -0
  143. package/dist/lib/cli/adapters.js.map +1 -0
  144. package/dist/lib/cli/agent.d.ts +17 -0
  145. package/dist/lib/cli/agent.d.ts.map +1 -0
  146. package/dist/lib/cli/agent.js +53 -0
  147. package/dist/lib/cli/agent.js.map +1 -0
  148. package/dist/lib/cli/index.d.ts +21 -0
  149. package/dist/lib/cli/index.d.ts.map +1 -0
  150. package/dist/lib/cli/index.js +264 -0
  151. package/dist/lib/cli/index.js.map +1 -0
  152. package/dist/lib/cli/output.d.ts +20 -0
  153. package/dist/lib/cli/output.d.ts.map +1 -0
  154. package/dist/lib/cli/output.js +22 -0
  155. package/dist/lib/cli/output.js.map +1 -0
  156. package/dist/lib/cli/scan-dispatch.d.ts +9 -0
  157. package/dist/lib/cli/scan-dispatch.d.ts.map +1 -0
  158. package/dist/lib/cli/scan-dispatch.js +107 -0
  159. package/dist/lib/cli/scan-dispatch.js.map +1 -0
  160. package/dist/lib/cli/tools.d.ts +16 -0
  161. package/dist/lib/cli/tools.d.ts.map +1 -0
  162. package/dist/lib/cli/tools.js +168 -0
  163. package/dist/lib/cli/tools.js.map +1 -0
  164. package/dist/lib/commands/_dashboard-parsers.d.ts +2 -0
  165. package/dist/lib/commands/_dashboard-parsers.d.ts.map +1 -0
  166. package/dist/lib/commands/_dashboard-parsers.js +192 -0
  167. package/dist/lib/commands/_dashboard-parsers.js.map +1 -0
  168. package/dist/lib/commands/analysis.d.ts +2 -0
  169. package/dist/lib/commands/analysis.d.ts.map +1 -0
  170. package/dist/lib/commands/analysis.js +1418 -0
  171. package/dist/lib/commands/analysis.js.map +1 -0
  172. package/dist/lib/commands/assumptions.d.ts +2 -0
  173. package/dist/lib/commands/assumptions.d.ts.map +1 -0
  174. package/dist/lib/commands/assumptions.js +166 -0
  175. package/dist/lib/commands/assumptions.js.map +1 -0
  176. package/dist/lib/commands/blame.d.ts +2 -0
  177. package/dist/lib/commands/blame.d.ts.map +1 -0
  178. package/dist/lib/commands/blame.js +133 -0
  179. package/dist/lib/commands/blame.js.map +1 -0
  180. package/dist/lib/commands/budget.d.ts +2 -0
  181. package/dist/lib/commands/budget.d.ts.map +1 -0
  182. package/dist/lib/commands/budget.js +100 -0
  183. package/dist/lib/commands/budget.js.map +1 -0
  184. package/dist/lib/commands/check-plans.d.ts +2 -0
  185. package/dist/lib/commands/check-plans.d.ts.map +1 -0
  186. package/dist/lib/commands/check-plans.js +190 -0
  187. package/dist/lib/commands/check-plans.js.map +1 -0
  188. package/dist/lib/commands/config.d.ts +2 -0
  189. package/dist/lib/commands/config.d.ts.map +1 -0
  190. package/dist/lib/commands/config.js +188 -0
  191. package/dist/lib/commands/config.js.map +1 -0
  192. package/dist/lib/commands/dashboard.d.ts +2 -0
  193. package/dist/lib/commands/dashboard.d.ts.map +1 -0
  194. package/dist/lib/commands/dashboard.js +466 -0
  195. package/dist/lib/commands/dashboard.js.map +1 -0
  196. package/dist/lib/commands/estimate.d.ts +2 -0
  197. package/dist/lib/commands/estimate.d.ts.map +1 -0
  198. package/dist/lib/commands/estimate.js +148 -0
  199. package/dist/lib/commands/estimate.js.map +1 -0
  200. package/dist/lib/commands/eval-diff.d.ts +2 -0
  201. package/dist/lib/commands/eval-diff.d.ts.map +1 -0
  202. package/dist/lib/commands/eval-diff.js +213 -0
  203. package/dist/lib/commands/eval-diff.js.map +1 -0
  204. package/dist/lib/commands/freshness.d.ts +2 -0
  205. package/dist/lib/commands/freshness.d.ts.map +1 -0
  206. package/dist/lib/commands/freshness.js +163 -0
  207. package/dist/lib/commands/freshness.js.map +1 -0
  208. package/dist/lib/commands/health.d.ts +2 -0
  209. package/dist/lib/commands/health.d.ts.map +1 -0
  210. package/dist/lib/commands/health.js +435 -0
  211. package/dist/lib/commands/health.js.map +1 -0
  212. package/dist/lib/commands/index.d.ts +2 -0
  213. package/dist/lib/commands/index.d.ts.map +1 -0
  214. package/dist/lib/commands/index.js +128 -0
  215. package/dist/lib/commands/index.js.map +1 -0
  216. package/dist/lib/commands/install.d.ts +56 -0
  217. package/dist/lib/commands/install.d.ts.map +1 -0
  218. package/dist/lib/commands/install.js +214 -0
  219. package/dist/lib/commands/install.js.map +1 -0
  220. package/dist/lib/commands/knowhow-aggregator.d.ts +2 -0
  221. package/dist/lib/commands/knowhow-aggregator.d.ts.map +1 -0
  222. package/dist/lib/commands/knowhow-aggregator.js +279 -0
  223. package/dist/lib/commands/knowhow-aggregator.js.map +1 -0
  224. package/dist/lib/commands/knowledge-search.d.ts +2 -0
  225. package/dist/lib/commands/knowledge-search.d.ts.map +1 -0
  226. package/dist/lib/commands/knowledge-search.js +113 -0
  227. package/dist/lib/commands/knowledge-search.js.map +1 -0
  228. package/dist/lib/commands/long-term-roadmap.d.ts +2 -0
  229. package/dist/lib/commands/long-term-roadmap.d.ts.map +1 -0
  230. package/dist/lib/commands/long-term-roadmap.js +272 -0
  231. package/dist/lib/commands/long-term-roadmap.js.map +1 -0
  232. package/dist/lib/commands/patterns.d.ts +91 -0
  233. package/dist/lib/commands/patterns.d.ts.map +1 -0
  234. package/dist/lib/commands/patterns.js +391 -0
  235. package/dist/lib/commands/patterns.js.map +1 -0
  236. package/dist/lib/commands/phase-info.d.ts +2 -0
  237. package/dist/lib/commands/phase-info.d.ts.map +1 -0
  238. package/dist/lib/commands/phase-info.js +509 -0
  239. package/dist/lib/commands/phase-info.js.map +1 -0
  240. package/dist/lib/commands/plan-lint.d.ts +56 -0
  241. package/dist/lib/commands/plan-lint.d.ts.map +1 -0
  242. package/dist/lib/commands/plan-lint.js +481 -0
  243. package/dist/lib/commands/plan-lint.js.map +1 -0
  244. package/dist/lib/commands/plan-phase.d.ts +53 -0
  245. package/dist/lib/commands/plan-phase.d.ts.map +1 -0
  246. package/dist/lib/commands/plan-phase.js +288 -0
  247. package/dist/lib/commands/plan-phase.js.map +1 -0
  248. package/dist/lib/commands/progress.d.ts +2 -0
  249. package/dist/lib/commands/progress.d.ts.map +1 -0
  250. package/dist/lib/commands/progress.js +266 -0
  251. package/dist/lib/commands/progress.js.map +1 -0
  252. package/dist/lib/commands/quality.d.ts +2 -0
  253. package/dist/lib/commands/quality.d.ts.map +1 -0
  254. package/dist/lib/commands/quality.js +80 -0
  255. package/dist/lib/commands/quality.js.map +1 -0
  256. package/dist/lib/commands/rollback.d.ts +2 -0
  257. package/dist/lib/commands/rollback.d.ts.map +1 -0
  258. package/dist/lib/commands/rollback.js +145 -0
  259. package/dist/lib/commands/rollback.js.map +1 -0
  260. package/dist/lib/commands/scan.d.ts +25 -0
  261. package/dist/lib/commands/scan.d.ts.map +1 -0
  262. package/dist/lib/commands/scan.js +28 -0
  263. package/dist/lib/commands/scan.js.map +1 -0
  264. package/dist/lib/commands/search.d.ts +2 -0
  265. package/dist/lib/commands/search.d.ts.map +1 -0
  266. package/dist/lib/commands/search.js +212 -0
  267. package/dist/lib/commands/search.js.map +1 -0
  268. package/dist/lib/commands/select-candidate.d.ts +128 -0
  269. package/dist/lib/commands/select-candidate.d.ts.map +1 -0
  270. package/dist/lib/commands/select-candidate.js +518 -0
  271. package/dist/lib/commands/select-candidate.js.map +1 -0
  272. package/dist/lib/commands/singularity.d.ts +2 -0
  273. package/dist/lib/commands/singularity.d.ts.map +1 -0
  274. package/dist/lib/commands/singularity.js +185 -0
  275. package/dist/lib/commands/singularity.js.map +1 -0
  276. package/dist/lib/commands/slug-timestamp.d.ts +2 -0
  277. package/dist/lib/commands/slug-timestamp.d.ts.map +1 -0
  278. package/dist/lib/commands/slug-timestamp.js +54 -0
  279. package/dist/lib/commands/slug-timestamp.js.map +1 -0
  280. package/dist/lib/commands/tail.d.ts +2 -0
  281. package/dist/lib/commands/tail.d.ts.map +1 -0
  282. package/dist/lib/commands/tail.js +100 -0
  283. package/dist/lib/commands/tail.js.map +1 -0
  284. package/dist/lib/commands/todo.d.ts +2 -0
  285. package/dist/lib/commands/todo.d.ts.map +1 -0
  286. package/dist/lib/commands/todo.js +200 -0
  287. package/dist/lib/commands/todo.js.map +1 -0
  288. package/dist/lib/commands/watch.d.ts +2 -0
  289. package/dist/lib/commands/watch.d.ts.map +1 -0
  290. package/dist/lib/commands/watch.js +72 -0
  291. package/dist/lib/commands/watch.js.map +1 -0
  292. package/dist/lib/complexity.d.ts +55 -0
  293. package/dist/lib/complexity.d.ts.map +1 -0
  294. package/dist/lib/complexity.js +80 -0
  295. package/dist/lib/complexity.js.map +1 -0
  296. package/dist/lib/context/agents.d.ts +2 -0
  297. package/dist/lib/context/agents.d.ts.map +1 -0
  298. package/dist/lib/context/agents.js +344 -0
  299. package/dist/lib/context/agents.js.map +1 -0
  300. package/dist/lib/context/base.d.ts +2 -0
  301. package/dist/lib/context/base.d.ts.map +1 -0
  302. package/dist/lib/context/base.js +81 -0
  303. package/dist/lib/context/base.js.map +1 -0
  304. package/dist/lib/context/execute.d.ts +2 -0
  305. package/dist/lib/context/execute.d.ts.map +1 -0
  306. package/dist/lib/context/execute.js +753 -0
  307. package/dist/lib/context/execute.js.map +1 -0
  308. package/dist/lib/context/index.d.ts +2 -0
  309. package/dist/lib/context/index.d.ts.map +1 -0
  310. package/dist/lib/context/index.js +88 -0
  311. package/dist/lib/context/index.js.map +1 -0
  312. package/dist/lib/context/progress.d.ts +2 -0
  313. package/dist/lib/context/progress.d.ts.map +1 -0
  314. package/dist/lib/context/progress.js +178 -0
  315. package/dist/lib/context/progress.js.map +1 -0
  316. package/dist/lib/context/project.d.ts +2 -0
  317. package/dist/lib/context/project.d.ts.map +1 -0
  318. package/dist/lib/context/project.js +413 -0
  319. package/dist/lib/context/project.js.map +1 -0
  320. package/dist/lib/context/research.d.ts +2 -0
  321. package/dist/lib/context/research.d.ts.map +1 -0
  322. package/dist/lib/context/research.js +466 -0
  323. package/dist/lib/context/research.js.map +1 -0
  324. package/dist/lib/dead-ends.d.ts +28 -0
  325. package/dist/lib/dead-ends.d.ts.map +1 -0
  326. package/dist/lib/dead-ends.js +451 -0
  327. package/dist/lib/dead-ends.js.map +1 -0
  328. package/dist/lib/deps.d.ts +2 -0
  329. package/dist/lib/deps.d.ts.map +1 -0
  330. package/dist/lib/deps.js +630 -0
  331. package/dist/lib/deps.js.map +1 -0
  332. package/dist/lib/discussion.d.ts +2 -0
  333. package/dist/lib/discussion.d.ts.map +1 -0
  334. package/dist/lib/discussion.js +1041 -0
  335. package/dist/lib/discussion.js.map +1 -0
  336. package/dist/lib/drift.d.ts +36 -0
  337. package/dist/lib/drift.d.ts.map +1 -0
  338. package/dist/lib/drift.js +481 -0
  339. package/dist/lib/drift.js.map +1 -0
  340. package/dist/lib/evolve/_dimensions-features.d.ts +2 -0
  341. package/dist/lib/evolve/_dimensions-features.d.ts.map +1 -0
  342. package/dist/lib/evolve/_dimensions-features.js +369 -0
  343. package/dist/lib/evolve/_dimensions-features.js.map +1 -0
  344. package/dist/lib/evolve/_dimensions.d.ts +2 -0
  345. package/dist/lib/evolve/_dimensions.d.ts.map +1 -0
  346. package/dist/lib/evolve/_dimensions.js +358 -0
  347. package/dist/lib/evolve/_dimensions.js.map +1 -0
  348. package/dist/lib/evolve/_product-ideation.d.ts +2 -0
  349. package/dist/lib/evolve/_product-ideation.d.ts.map +1 -0
  350. package/dist/lib/evolve/_product-ideation.js +281 -0
  351. package/dist/lib/evolve/_product-ideation.js.map +1 -0
  352. package/dist/lib/evolve/_prompts.d.ts +2 -0
  353. package/dist/lib/evolve/_prompts.d.ts.map +1 -0
  354. package/dist/lib/evolve/_prompts.js +153 -0
  355. package/dist/lib/evolve/_prompts.js.map +1 -0
  356. package/dist/lib/evolve/cli.d.ts +2 -0
  357. package/dist/lib/evolve/cli.d.ts.map +1 -0
  358. package/dist/lib/evolve/cli.js +224 -0
  359. package/dist/lib/evolve/cli.js.map +1 -0
  360. package/dist/lib/evolve/discovery.d.ts +2 -0
  361. package/dist/lib/evolve/discovery.d.ts.map +1 -0
  362. package/dist/lib/evolve/discovery.js +391 -0
  363. package/dist/lib/evolve/discovery.js.map +1 -0
  364. package/dist/lib/evolve/index.d.ts +2 -0
  365. package/dist/lib/evolve/index.d.ts.map +1 -0
  366. package/dist/lib/evolve/index.js +88 -0
  367. package/dist/lib/evolve/index.js.map +1 -0
  368. package/dist/lib/evolve/orchestrator.d.ts +2 -0
  369. package/dist/lib/evolve/orchestrator.d.ts.map +1 -0
  370. package/dist/lib/evolve/orchestrator.js +851 -0
  371. package/dist/lib/evolve/orchestrator.js.map +1 -0
  372. package/dist/lib/evolve/scoring.d.ts +2 -0
  373. package/dist/lib/evolve/scoring.d.ts.map +1 -0
  374. package/dist/lib/evolve/scoring.js +118 -0
  375. package/dist/lib/evolve/scoring.js.map +1 -0
  376. package/dist/lib/evolve/state.d.ts +2 -0
  377. package/dist/lib/evolve/state.d.ts.map +1 -0
  378. package/dist/lib/evolve/state.js +264 -0
  379. package/dist/lib/evolve/state.js.map +1 -0
  380. package/dist/lib/evolve/types.d.ts +249 -0
  381. package/dist/lib/evolve/types.d.ts.map +1 -0
  382. package/dist/lib/evolve/types.js +3 -0
  383. package/dist/lib/evolve/types.js.map +1 -0
  384. package/dist/lib/frontmatter.d.ts +2 -0
  385. package/dist/lib/frontmatter.d.ts.map +1 -0
  386. package/dist/lib/frontmatter.js +513 -0
  387. package/dist/lib/frontmatter.js.map +1 -0
  388. package/dist/lib/gates.d.ts +2 -0
  389. package/dist/lib/gates.d.ts.map +1 -0
  390. package/dist/lib/gates.js +578 -0
  391. package/dist/lib/gates.js.map +1 -0
  392. package/dist/lib/genome.d.ts +10 -0
  393. package/dist/lib/genome.d.ts.map +1 -0
  394. package/dist/lib/genome.js +368 -0
  395. package/dist/lib/genome.js.map +1 -0
  396. package/dist/lib/got.d.ts +2 -0
  397. package/dist/lib/got.d.ts.map +1 -0
  398. package/dist/lib/got.js +280 -0
  399. package/dist/lib/got.js.map +1 -0
  400. package/dist/lib/invariants.d.ts +2 -0
  401. package/dist/lib/invariants.d.ts.map +1 -0
  402. package/dist/lib/invariants.js +298 -0
  403. package/dist/lib/invariants.js.map +1 -0
  404. package/dist/lib/knowledge.d.ts +2 -0
  405. package/dist/lib/knowledge.d.ts.map +1 -0
  406. package/dist/lib/knowledge.js +658 -0
  407. package/dist/lib/knowledge.js.map +1 -0
  408. package/dist/lib/long-term-roadmap.d.ts +2 -0
  409. package/dist/lib/long-term-roadmap.d.ts.map +1 -0
  410. package/dist/lib/long-term-roadmap.js +602 -0
  411. package/dist/lib/long-term-roadmap.js.map +1 -0
  412. package/dist/lib/markdown-split.d.ts +2 -0
  413. package/dist/lib/markdown-split.d.ts.map +1 -0
  414. package/dist/lib/markdown-split.js +199 -0
  415. package/dist/lib/markdown-split.js.map +1 -0
  416. package/dist/lib/mcp-server.d.ts +2 -0
  417. package/dist/lib/mcp-server.d.ts.map +1 -0
  418. package/dist/lib/mcp-server.js +2424 -0
  419. package/dist/lib/mcp-server.js.map +1 -0
  420. package/dist/lib/metrics.d.ts +16 -0
  421. package/dist/lib/metrics.d.ts.map +1 -0
  422. package/dist/lib/metrics.js +48 -0
  423. package/dist/lib/metrics.js.map +1 -0
  424. package/dist/lib/overstory.d.ts +2 -0
  425. package/dist/lib/overstory.d.ts.map +1 -0
  426. package/dist/lib/overstory.js +211 -0
  427. package/dist/lib/overstory.js.map +1 -0
  428. package/dist/lib/parallel.d.ts +2 -0
  429. package/dist/lib/parallel.d.ts.map +1 -0
  430. package/dist/lib/parallel.js +349 -0
  431. package/dist/lib/parallel.js.map +1 -0
  432. package/dist/lib/paths.d.ts +2 -0
  433. package/dist/lib/paths.d.ts.map +1 -0
  434. package/dist/lib/paths.js +254 -0
  435. package/dist/lib/paths.js.map +1 -0
  436. package/dist/lib/phase-complete-llm.d.ts +22 -0
  437. package/dist/lib/phase-complete-llm.d.ts.map +1 -0
  438. package/dist/lib/phase-complete-llm.js +331 -0
  439. package/dist/lib/phase-complete-llm.js.map +1 -0
  440. package/dist/lib/phase-complete.d.ts +46 -0
  441. package/dist/lib/phase-complete.d.ts.map +1 -0
  442. package/dist/lib/phase-complete.js +278 -0
  443. package/dist/lib/phase-complete.js.map +1 -0
  444. package/dist/lib/phase-io.d.ts +2 -0
  445. package/dist/lib/phase-io.d.ts.map +1 -0
  446. package/dist/lib/phase-io.js +126 -0
  447. package/dist/lib/phase-io.js.map +1 -0
  448. package/dist/lib/phase.d.ts +2 -0
  449. package/dist/lib/phase.d.ts.map +1 -0
  450. package/dist/lib/phase.js +1344 -0
  451. package/dist/lib/phase.js.map +1 -0
  452. package/dist/lib/plan-tournament.d.ts +63 -0
  453. package/dist/lib/plan-tournament.d.ts.map +1 -0
  454. package/dist/lib/plan-tournament.js +353 -0
  455. package/dist/lib/plan-tournament.js.map +1 -0
  456. package/dist/lib/refinement.d.ts +74 -0
  457. package/dist/lib/refinement.d.ts.map +1 -0
  458. package/dist/lib/refinement.js +283 -0
  459. package/dist/lib/refinement.js.map +1 -0
  460. package/dist/lib/requirements.d.ts +2 -0
  461. package/dist/lib/requirements.d.ts.map +1 -0
  462. package/dist/lib/requirements.js +355 -0
  463. package/dist/lib/requirements.js.map +1 -0
  464. package/dist/lib/research-bundle.d.ts +2 -0
  465. package/dist/lib/research-bundle.d.ts.map +1 -0
  466. package/dist/lib/research-bundle.js +246 -0
  467. package/dist/lib/research-bundle.js.map +1 -0
  468. package/dist/lib/roadmap.d.ts +2 -0
  469. package/dist/lib/roadmap.d.ts.map +1 -0
  470. package/dist/lib/roadmap.js +541 -0
  471. package/dist/lib/roadmap.js.map +1 -0
  472. package/dist/lib/sample.d.ts +16 -0
  473. package/dist/lib/sample.d.ts.map +1 -0
  474. package/dist/lib/sample.js +20 -0
  475. package/dist/lib/sample.js.map +1 -0
  476. package/dist/lib/scaffold.d.ts +2 -0
  477. package/dist/lib/scaffold.d.ts.map +1 -0
  478. package/dist/lib/scaffold.js +355 -0
  479. package/dist/lib/scaffold.js.map +1 -0
  480. package/dist/lib/scan/_utils.d.ts +11 -0
  481. package/dist/lib/scan/_utils.d.ts.map +1 -0
  482. package/dist/lib/scan/_utils.js +36 -0
  483. package/dist/lib/scan/_utils.js.map +1 -0
  484. package/dist/lib/scan/base64.d.ts +15 -0
  485. package/dist/lib/scan/base64.d.ts.map +1 -0
  486. package/dist/lib/scan/base64.js +66 -0
  487. package/dist/lib/scan/base64.js.map +1 -0
  488. package/dist/lib/scan/ignorefile.d.ts +30 -0
  489. package/dist/lib/scan/ignorefile.d.ts.map +1 -0
  490. package/dist/lib/scan/ignorefile.js +101 -0
  491. package/dist/lib/scan/ignorefile.js.map +1 -0
  492. package/dist/lib/scan/injection.d.ts +14 -0
  493. package/dist/lib/scan/injection.d.ts.map +1 -0
  494. package/dist/lib/scan/injection.js +39 -0
  495. package/dist/lib/scan/injection.js.map +1 -0
  496. package/dist/lib/scan/patterns.d.ts +17 -0
  497. package/dist/lib/scan/patterns.d.ts.map +1 -0
  498. package/dist/lib/scan/patterns.js +123 -0
  499. package/dist/lib/scan/patterns.js.map +1 -0
  500. package/dist/lib/scan/strip-markdown.d.ts +7 -0
  501. package/dist/lib/scan/strip-markdown.d.ts.map +1 -0
  502. package/dist/lib/scan/strip-markdown.js +38 -0
  503. package/dist/lib/scan/strip-markdown.js.map +1 -0
  504. package/dist/lib/scan/types.d.ts +23 -0
  505. package/dist/lib/scan/types.d.ts.map +1 -0
  506. package/dist/lib/scan/types.js +3 -0
  507. package/dist/lib/scan/types.js.map +1 -0
  508. package/dist/lib/scheduler-wait.d.ts +2 -0
  509. package/dist/lib/scheduler-wait.d.ts.map +1 -0
  510. package/dist/lib/scheduler-wait.js +59 -0
  511. package/dist/lib/scheduler-wait.js.map +1 -0
  512. package/dist/lib/scheduler.d.ts +254 -0
  513. package/dist/lib/scheduler.d.ts.map +1 -0
  514. package/dist/lib/scheduler.js +1147 -0
  515. package/dist/lib/scheduler.js.map +1 -0
  516. package/dist/lib/state.d.ts +2 -0
  517. package/dist/lib/state.d.ts.map +1 -0
  518. package/dist/lib/state.js +744 -0
  519. package/dist/lib/state.js.map +1 -0
  520. package/dist/lib/think.d.ts +18 -0
  521. package/dist/lib/think.d.ts.map +1 -0
  522. package/dist/lib/think.js +317 -0
  523. package/dist/lib/think.js.map +1 -0
  524. package/dist/lib/tracker.d.ts +2 -0
  525. package/dist/lib/tracker.d.ts.map +1 -0
  526. package/dist/lib/tracker.js +1121 -0
  527. package/dist/lib/tracker.js.map +1 -0
  528. package/dist/lib/types.d.ts +1514 -0
  529. package/dist/lib/types.d.ts.map +1 -0
  530. package/dist/lib/types.js +4 -0
  531. package/dist/lib/types.js.map +1 -0
  532. package/dist/lib/utils.d.ts +2 -0
  533. package/dist/lib/utils.d.ts.map +1 -0
  534. package/dist/lib/utils.js +1363 -0
  535. package/dist/lib/utils.js.map +1 -0
  536. package/dist/lib/verify.d.ts +2 -0
  537. package/dist/lib/verify.d.ts.map +1 -0
  538. package/dist/lib/verify.js +1153 -0
  539. package/dist/lib/verify.js.map +1 -0
  540. package/dist/lib/wireup/autofix.d.ts +2 -0
  541. package/dist/lib/wireup/autofix.d.ts.map +1 -0
  542. package/dist/lib/wireup/autofix.js +188 -0
  543. package/dist/lib/wireup/autofix.js.map +1 -0
  544. package/dist/lib/wireup/cli.d.ts +2 -0
  545. package/dist/lib/wireup/cli.d.ts.map +1 -0
  546. package/dist/lib/wireup/cli.js +194 -0
  547. package/dist/lib/wireup/cli.js.map +1 -0
  548. package/dist/lib/wireup/detection.d.ts +47 -0
  549. package/dist/lib/wireup/detection.d.ts.map +1 -0
  550. package/dist/lib/wireup/detection.js +410 -0
  551. package/dist/lib/wireup/detection.js.map +1 -0
  552. package/dist/lib/wireup/discovery.d.ts +2 -0
  553. package/dist/lib/wireup/discovery.d.ts.map +1 -0
  554. package/dist/lib/wireup/discovery.js +934 -0
  555. package/dist/lib/wireup/discovery.js.map +1 -0
  556. package/dist/lib/wireup/execution.d.ts +2 -0
  557. package/dist/lib/wireup/execution.d.ts.map +1 -0
  558. package/dist/lib/wireup/execution.js +573 -0
  559. package/dist/lib/wireup/execution.js.map +1 -0
  560. package/dist/lib/wireup/index.d.ts +2 -0
  561. package/dist/lib/wireup/index.d.ts.map +1 -0
  562. package/dist/lib/wireup/index.js +85 -0
  563. package/dist/lib/wireup/index.js.map +1 -0
  564. package/dist/lib/wireup/orchestrator.d.ts +2 -0
  565. package/dist/lib/wireup/orchestrator.d.ts.map +1 -0
  566. package/dist/lib/wireup/orchestrator.js +366 -0
  567. package/dist/lib/wireup/orchestrator.js.map +1 -0
  568. package/dist/lib/wireup/report.d.ts +47 -0
  569. package/dist/lib/wireup/report.d.ts.map +1 -0
  570. package/dist/lib/wireup/report.js +201 -0
  571. package/dist/lib/wireup/report.js.map +1 -0
  572. package/dist/lib/wireup/scenarios.d.ts +2 -0
  573. package/dist/lib/wireup/scenarios.d.ts.map +1 -0
  574. package/dist/lib/wireup/scenarios.js +516 -0
  575. package/dist/lib/wireup/scenarios.js.map +1 -0
  576. package/dist/lib/wireup/state.d.ts +2 -0
  577. package/dist/lib/wireup/state.d.ts.map +1 -0
  578. package/dist/lib/wireup/state.js +102 -0
  579. package/dist/lib/wireup/state.js.map +1 -0
  580. package/dist/lib/wireup/types.d.ts +376 -0
  581. package/dist/lib/wireup/types.d.ts.map +1 -0
  582. package/dist/lib/wireup/types.js +3 -0
  583. package/dist/lib/wireup/types.js.map +1 -0
  584. package/dist/lib/worktree.d.ts +2 -0
  585. package/dist/lib/worktree.d.ts.map +1 -0
  586. package/dist/lib/worktree.js +999 -0
  587. package/dist/lib/worktree.js.map +1 -0
  588. package/lib/autopilot-milestone.ts +136 -0
  589. package/lib/autopilot-pipeline.ts +1179 -0
  590. package/lib/autopilot-waves.ts +361 -0
  591. package/lib/autopilot.ts +1874 -0
  592. package/lib/autoplan.ts +280 -0
  593. package/lib/autoresearch.js +4 -0
  594. package/lib/autoresearch.ts +886 -0
  595. package/lib/backend.ts +1252 -0
  596. package/lib/benchmark.ts +341 -0
  597. package/lib/citations.ts +760 -0
  598. package/lib/cleanup.ts +1588 -0
  599. package/lib/cli/adapters.ts +41 -0
  600. package/lib/cli/agent.ts +83 -0
  601. package/lib/cli/index.ts +273 -0
  602. package/lib/cli/output.ts +33 -0
  603. package/lib/cli/scan-dispatch.ts +130 -0
  604. package/lib/cli/tools.ts +198 -0
  605. package/lib/commands/_dashboard-parsers.ts +275 -0
  606. package/lib/commands/analysis.ts +1851 -0
  607. package/lib/commands/assumptions.ts +232 -0
  608. package/lib/commands/blame.ts +174 -0
  609. package/lib/commands/budget.ts +148 -0
  610. package/lib/commands/check-plans.ts +233 -0
  611. package/lib/commands/config.ts +287 -0
  612. package/lib/commands/dashboard.ts +680 -0
  613. package/lib/commands/estimate.ts +204 -0
  614. package/lib/commands/eval-diff.ts +252 -0
  615. package/lib/commands/freshness.ts +213 -0
  616. package/lib/commands/health.ts +607 -0
  617. package/lib/commands/index.ts +266 -0
  618. package/lib/commands/install.ts +307 -0
  619. package/lib/commands/knowhow-aggregator.ts +345 -0
  620. package/lib/commands/knowledge-search.ts +153 -0
  621. package/lib/commands/long-term-roadmap.ts +390 -0
  622. package/lib/commands/patterns.ts +465 -0
  623. package/lib/commands/phase-info.ts +698 -0
  624. package/lib/commands/plan-lint.ts +546 -0
  625. package/lib/commands/plan-phase.ts +375 -0
  626. package/lib/commands/progress.ts +319 -0
  627. package/lib/commands/quality.ts +138 -0
  628. package/lib/commands/rollback.ts +195 -0
  629. package/lib/commands/scan.ts +72 -0
  630. package/lib/commands/search.ts +300 -0
  631. package/lib/commands/select-candidate.ts +687 -0
  632. package/lib/commands/singularity.ts +222 -0
  633. package/lib/commands/slug-timestamp.ts +74 -0
  634. package/lib/commands/tail.ts +129 -0
  635. package/lib/commands/todo.ts +273 -0
  636. package/lib/commands/watch.ts +80 -0
  637. package/lib/complexity.ts +117 -0
  638. package/lib/context/agents.ts +505 -0
  639. package/lib/context/base.ts +123 -0
  640. package/lib/context/execute.ts +977 -0
  641. package/lib/context/index.ts +110 -0
  642. package/lib/context/progress.ts +278 -0
  643. package/lib/context/project.ts +531 -0
  644. package/lib/context/research.ts +646 -0
  645. package/lib/dead-ends.ts +506 -0
  646. package/lib/deps.ts +773 -0
  647. package/lib/discussion.ts +1275 -0
  648. package/lib/drift.ts +519 -0
  649. package/lib/evolve/_dimensions-features.ts +525 -0
  650. package/lib/evolve/_dimensions.ts +511 -0
  651. package/lib/evolve/_product-ideation.ts +405 -0
  652. package/lib/evolve/_prompts.ts +178 -0
  653. package/lib/evolve/cli.ts +330 -0
  654. package/lib/evolve/discovery.ts +571 -0
  655. package/lib/evolve/index.ts +105 -0
  656. package/lib/evolve/orchestrator.ts +1139 -0
  657. package/lib/evolve/scoring.ts +167 -0
  658. package/lib/evolve/state.ts +330 -0
  659. package/lib/evolve/types.ts +290 -0
  660. package/lib/frontmatter.ts +615 -0
  661. package/lib/gates.ts +695 -0
  662. package/lib/genome.ts +402 -0
  663. package/lib/got.js +4 -0
  664. package/lib/got.ts +361 -0
  665. package/lib/invariants.ts +378 -0
  666. package/lib/knowledge.ts +768 -0
  667. package/lib/long-term-roadmap.ts +806 -0
  668. package/lib/markdown-split.ts +273 -0
  669. package/lib/mcp-server.ts +3292 -0
  670. package/lib/metrics.ts +49 -0
  671. package/lib/overstory.ts +270 -0
  672. package/lib/parallel.ts +570 -0
  673. package/lib/paths.ts +293 -0
  674. package/lib/phase-complete-llm.ts +376 -0
  675. package/lib/phase-complete.ts +366 -0
  676. package/lib/phase-io.ts +101 -0
  677. package/lib/phase.ts +1981 -0
  678. package/lib/plan-tournament.ts +426 -0
  679. package/lib/refinement.ts +349 -0
  680. package/lib/requirements.ts +469 -0
  681. package/lib/research-bundle.ts +300 -0
  682. package/lib/roadmap.ts +775 -0
  683. package/lib/scaffold.ts +480 -0
  684. package/lib/scan/_utils.ts +37 -0
  685. package/lib/scan/base64.ts +90 -0
  686. package/lib/scan/ignorefile.ts +109 -0
  687. package/lib/scan/injection.ts +67 -0
  688. package/lib/scan/patterns.ts +139 -0
  689. package/lib/scan/strip-markdown.ts +39 -0
  690. package/lib/scan/types.ts +28 -0
  691. package/lib/scheduler-wait.ts +58 -0
  692. package/lib/scheduler.ts +1370 -0
  693. package/lib/state.ts +1000 -0
  694. package/lib/think.ts +365 -0
  695. package/lib/tracker.ts +1591 -0
  696. package/lib/types.ts +1663 -0
  697. package/lib/utils.ts +1479 -0
  698. package/lib/verify.ts +1434 -0
  699. package/lib/wireup/autofix.ts +241 -0
  700. package/lib/wireup/cli.ts +278 -0
  701. package/lib/wireup/detection.ts +542 -0
  702. package/lib/wireup/discovery.ts +1063 -0
  703. package/lib/wireup/execution.ts +686 -0
  704. package/lib/wireup/index.ts +117 -0
  705. package/lib/wireup/orchestrator.ts +519 -0
  706. package/lib/wireup/report.ts +286 -0
  707. package/lib/wireup/scenarios.ts +616 -0
  708. package/lib/wireup/state.ts +139 -0
  709. package/lib/wireup/types.ts +436 -0
  710. package/lib/worktree.ts +1309 -0
  711. package/package.json +67 -0
@@ -0,0 +1,1017 @@
1
+ ---
2
+ description: Execute all plans in a phase using wave-based parallel execution
3
+ argument-hint: <phase number>
4
+ ---
5
+
6
+ <!-- Variable reference guide:
7
+ ${CLAUDE_PLUGIN_ROOT} — Absolute path to the GRD plugin root. Used for:
8
+ - bin/grd-tools.js calls (grd-tools lives in bin/, not the skill directory)
9
+ - @references/*.md and @templates/*.md (cross-directory references)
10
+ - agents/*.md references from commands/ (cross-directory)
11
+ ${CLAUDE_SKILL_DIR} — Resolves to the directory containing THIS skill file (commands/).
12
+ Available since Claude Code v2.1.69. Use for same-directory references
13
+ (e.g., referencing another command from a command file).
14
+ Currently unused because all GRD cross-references are cross-directory.
15
+ -->
16
+
17
+ <purpose>
18
+ Execute all plans in a phase using wave-based parallel execution. Orchestrator stays lean — delegates plan execution to subagents. After execution, auto-triggers eval report if EVAL.md exists and tracks experiment parameters in commit messages.
19
+ </purpose>
20
+
21
+ <core_principle>
22
+ Orchestrator coordinates, not executes. Each subagent loads the full execute-plan context. Orchestrator: discover plans -> analyze deps -> group waves -> spawn agents -> handle checkpoints -> collect results -> trigger eval.
23
+ </core_principle>
24
+
25
+ <required_reading>
26
+ Read STATE.md before any operation to load project context.
27
+ </required_reading>
28
+
29
+ <process>
30
+
31
+ <step name="initialize" priority="first">
32
+ Load all context in one call:
33
+
34
+ ```bash
35
+ INIT=$(node ${CLAUDE_PLUGIN_ROOT}/bin/grd-tools.js init execute-phase "${PHASE_ARG}" --include context)
36
+ ```
37
+
38
+ Parse JSON for: `executor_model`, `verifier_model`, `reviewer_model`, `commit_docs`, `parallelization`, `branching_strategy`, `branch_name`, `base_branch`, `worktree_dir`, `branch_template`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `plans`, `incomplete_plans`, `plan_count`, `incomplete_count`, `state_exists`, `roadmap_exists`, `autonomous_mode`, `use_teams`, `code_review_enabled`, `code_review_timing`, `code_review_severity_gate`, `team_timeout_minutes`, `max_concurrent_teammates`, `phases_dir`, `research_dir`, `codebase_dir`, `webmcp_available`, `webmcp_skip_reason`, `isolation_mode`, `main_repo_path`, `native_worktree_available`, `context_content`.
39
+
40
+ **If `phase_found` is false:** Error — phase directory not found.
41
+ **If `plan_count` is 0:** Error — no plans found in phase.
42
+ **If `state_exists` is false but `.planning/` exists:** Offer reconstruct or continue.
43
+
44
+ When `parallelization` is false, plans within a wave execute sequentially.
45
+ </step>
46
+
47
+ <step name="setup_isolation" condition="branching_strategy != none">
48
+ Set up isolation for this phase execution based on `isolation_mode` from init JSON.
49
+
50
+ **Mode A: native (isolation_mode='native')**
51
+
52
+ Native worktree isolation is available (Claude Code manages worktrees automatically). Do NOT create a worktree manually.
53
+
54
+ - Record: `ISOLATION_MODE=native`
55
+ - Record: `MAIN_REPO_PATH` from init JSON (for STATE.md writes)
56
+ - Note: Each executor agent will be spawned with `isolation: "worktree"` parameter on the Task call
57
+ - The branch name will be captured from each executor's Task result
58
+ - No `WORKTREE_PATH` is pre-computed — Claude Code handles worktree creation transparently
59
+
60
+ **Mode B: manual (isolation_mode='manual')**
61
+
62
+ GRD manages the worktree explicitly (v0.2.5 behavior). Preserve existing worktree creation:
63
+
64
+ 1. **Check for uncommitted changes on current branch:**
65
+ ```bash
66
+ DIRTY=$(git status --porcelain)
67
+ ```
68
+ If non-empty: warn "Uncommitted changes detected. Stash or commit before worktree creation." Stop.
69
+
70
+ 2. **Create worktree:**
71
+ ```bash
72
+ WT_RESULT=$(node ${CLAUDE_PLUGIN_ROOT}/bin/grd-tools.js worktree create --phase "${PHASE_NUMBER}" --slug "${PHASE_SLUG}")
73
+ ```
74
+ Parse JSON result for `path` and `branch`. If `error` field present: report error and stop.
75
+ Store: `WORKTREE_PATH` = result.path, `WORKTREE_BRANCH` = result.branch
76
+
77
+ 3. **Verify worktree is ready:**
78
+ ```bash
79
+ ls "${WORKTREE_PATH}/.planning" && echo "Worktree ready"
80
+ ```
81
+
82
+ - Record: `ISOLATION_MODE=manual`, `WORKTREE_PATH`, `WORKTREE_BRANCH`
83
+ - Record: `MAIN_REPO_PATH` as the current working directory
84
+ - All executor agents will receive `WORKTREE_PATH` and operate within it.
85
+ - The main checkout remains clean on its original branch.
86
+
87
+ **Mode C: overstory (isolation_mode='overstory')**
88
+
89
+ Overstory manages agent lifecycle, worktrees, and merging. GRD dispatches plans via `ov sling`.
90
+
91
+ - Record: `ISOLATION_MODE=overstory`
92
+ - Record: `MAIN_REPO_PATH` from init JSON
93
+ - Load: `OVERSTORY_CONFIG` from init JSON `overstory_config`
94
+ - **Stale overlay cleanup:** Remove any leftover files matching `.planning/.tmp/overlay-*.md` from prior crashed runs
95
+ - Verify: `overstory_available` is true from init JSON. If false:
96
+ - Check if `OVERSTORY_CONFIG.install_prompt` is true
97
+ - If yes: prompt user "Overstory CLI not found. Install? (bun install -g overstory)"
98
+ - On confirm: run `node ${CLAUDE_PLUGIN_ROOT}/bin/grd-tools.js overstory install`, then re-detect
99
+ - On decline or if install_prompt is false: fall back to Mode A (native) or Mode B (manual) with warning
100
+ - No worktree pre-creation — Overstory handles this via `ov sling`
101
+
102
+ **When `branching_strategy` is `"none"`:** Skip this step entirely. Continue on the current directory with no worktree isolation (backwards compatible). No `ISOLATION_MODE` is set.
103
+ </step>
104
+
105
+ <step name="validate_phase">
106
+ From init JSON: `phase_dir`, `plan_count`, `incomplete_count`.
107
+
108
+ Report: "Found {plan_count} plans in {phase_dir} ({incomplete_count} incomplete)"
109
+ </step>
110
+
111
+ <step name="discover_and_group_plans">
112
+ Load plan inventory with wave grouping in one call:
113
+
114
+ ```bash
115
+ PLAN_INDEX=$(node ${CLAUDE_PLUGIN_ROOT}/bin/grd-tools.js phase-plan-index "${PHASE_NUMBER}")
116
+ ```
117
+
118
+ Parse JSON for: `phase`, `plans[]` (each with `id`, `wave`, `autonomous`, `objective`, `files_modified`, `task_count`, `has_summary`), `waves` (map of wave number -> plan IDs), `incomplete`, `has_checkpoints`.
119
+
120
+ **Filtering:** Skip plans where `has_summary: true`. If `--gaps-only`: also skip non-gap_closure plans. If all filtered: "No matching incomplete plans" -> exit.
121
+
122
+ Report:
123
+ ```
124
+ ## Execution Plan
125
+
126
+ **Phase {X}: {Name}** — {total_plans} plans across {wave_count} waves
127
+
128
+ | Wave | Plans | What it builds |
129
+ |------|-------|----------------|
130
+ | 1 | 01-01, 01-02 | {from plan objectives, 3-8 words} |
131
+ | 2 | 01-03 | ... |
132
+ ```
133
+ </step>
134
+
135
+ <step name="create_phase_team" condition="use_teams=true">
136
+ **Only when `use_teams: true` from init.**
137
+
138
+ Create an Agent Team for this phase:
139
+
140
+ ```
141
+ TeamCreate(
142
+ team_name="grd-phase-${PHASE_NUMBER}-${PHASE_SLUG}",
143
+ description="Executing phase ${PHASE_NUMBER}: ${PHASE_NAME}"
144
+ )
145
+ ```
146
+
147
+ The team lead (this orchestrator) coordinates all executor teammates and handles checkpoint mediation.
148
+ </step>
149
+
150
+ <step name="execute_waves_teams" condition="use_teams=true">
151
+ **Alternative to `execute_waves` — only when `use_teams: true`.**
152
+
153
+ Execute each wave in sequence using Agent Teams coordination.
154
+
155
+ **For each wave:**
156
+
157
+ 1. **Describe what's being built (same as standard flow).**
158
+
159
+ 2. **Spawn executor teammates** (up to `max_concurrent_teammates`):
160
+
161
+ **When ISOLATION_MODE=native:** Add `isolation: "worktree"` parameter to the Task call. Use `<native_isolation>` block instead of `<worktree>`:
162
+
163
+ ```
164
+ Task(
165
+ subagent_type="grd:grd-executor",
166
+ model="{executor_model}",
167
+ team_name="grd-phase-${PHASE_NUMBER}-${PHASE_SLUG}",
168
+ name="executor-${PLAN_ID}",
169
+ isolation: "worktree",
170
+ prompt="
171
+ <objective>
172
+ Execute plan ${plan_number} of phase ${phase_number}-${phase_name}.
173
+ Commit each task atomically. Create SUMMARY.md. Update STATE.md.
174
+ Track experiment parameters in commit messages where applicable.
175
+ </objective>
176
+
177
+ <team_coordination>
178
+ You are part of team: grd-phase-${PHASE_NUMBER}-${PHASE_SLUG}
179
+ Team lead: orchestrator
180
+ If you hit a checkpoint, use SendMessage to report to team lead.
181
+ Wait for team lead's response before continuing.
182
+ </team_coordination>
183
+
184
+ <native_isolation>
185
+ Isolation mode: native
186
+ You are running in a Claude Code-managed worktree. Your working directory
187
+ IS the worktree — operate naturally. No path prefixing needed.
188
+ Main repo path: ${MAIN_REPO_PATH}
189
+ STATE.md updates must use this main repo path (not your working directory).
190
+ </native_isolation>
191
+
192
+ <phase_context>
193
+ ${context_content or "No CONTEXT.md found for this phase."}
194
+ </phase_context>
195
+
196
+ <execution_context>
197
+ @${CLAUDE_PLUGIN_ROOT}/references/execute-plan.md
198
+ @${CLAUDE_PLUGIN_ROOT}/templates/summary.md
199
+ @${CLAUDE_PLUGIN_ROOT}/references/checkpoints.md
200
+ @${CLAUDE_PLUGIN_ROOT}/references/tdd.md
201
+ </execution_context>
202
+
203
+ <paths>
204
+ research_dir: ${research_dir}
205
+ phases_dir: ${phases_dir}
206
+ phase_dir: ${phase_dir}
207
+ codebase_dir: ${codebase_dir}
208
+ </paths>
209
+
210
+ <files_to_read>
211
+ Read these files at execution start using the Read tool:
212
+ - Plan: ${phase_dir}/${plan_file}
213
+ - State: .planning/STATE.md
214
+ - Config: .planning/config.json (if exists)
215
+ </files_to_read>
216
+
217
+ <experiment_tracking>
218
+ When committing tasks that involve experiment parameters (hyperparameters, model configs, dataset splits, etc.):
219
+ - Include key parameters in commit message body
220
+ - Format: param: value on separate lines
221
+ </experiment_tracking>
222
+
223
+ <success_criteria>
224
+ - [ ] All tasks executed
225
+ - [ ] Each task committed individually
226
+ - [ ] Experiment parameters tracked in commits
227
+ - [ ] SUMMARY.md created in plan directory
228
+ - [ ] STATE.md updated with position and decisions
229
+ </success_criteria>
230
+ "
231
+ )
232
+ ```
233
+
234
+ **When ISOLATION_MODE=manual:** Keep existing `<worktree>` block (v0.2.5 behavior):
235
+
236
+ ```
237
+ Task(
238
+ subagent_type="grd:grd-executor",
239
+ model="{executor_model}",
240
+ team_name="grd-phase-${PHASE_NUMBER}-${PHASE_SLUG}",
241
+ name="executor-${PLAN_ID}",
242
+ prompt="
243
+ <objective>
244
+ Execute plan ${plan_number} of phase ${phase_number}-${phase_name}.
245
+ Commit each task atomically. Create SUMMARY.md. Update STATE.md.
246
+ Track experiment parameters in commit messages where applicable.
247
+ </objective>
248
+
249
+ <team_coordination>
250
+ You are part of team: grd-phase-${PHASE_NUMBER}-${PHASE_SLUG}
251
+ Team lead: orchestrator
252
+ If you hit a checkpoint, use SendMessage to report to team lead.
253
+ Wait for team lead's response before continuing.
254
+ </team_coordination>
255
+
256
+ <worktree>
257
+ Working directory: ${WORKTREE_PATH}
258
+ All file operations (Read, Write, Edit) and Bash commands MUST use this
259
+ directory as the working root. Use absolute paths prefixed with this directory
260
+ for all file operations. For Bash commands, use: cd "${WORKTREE_PATH}" && ...
261
+ </worktree>
262
+
263
+ <phase_context>
264
+ ${context_content or "No CONTEXT.md found for this phase."}
265
+ </phase_context>
266
+
267
+ <execution_context>
268
+ @${CLAUDE_PLUGIN_ROOT}/references/execute-plan.md
269
+ @${CLAUDE_PLUGIN_ROOT}/templates/summary.md
270
+ @${CLAUDE_PLUGIN_ROOT}/references/checkpoints.md
271
+ @${CLAUDE_PLUGIN_ROOT}/references/tdd.md
272
+ </execution_context>
273
+
274
+ <paths>
275
+ research_dir: ${research_dir}
276
+ phases_dir: ${phases_dir}
277
+ phase_dir: ${phase_dir}
278
+ codebase_dir: ${codebase_dir}
279
+ </paths>
280
+
281
+ <files_to_read>
282
+ Read these files at execution start using the Read tool:
283
+ - Plan: ${phase_dir}/${plan_file}
284
+ - State: .planning/STATE.md
285
+ - Config: .planning/config.json (if exists)
286
+ </files_to_read>
287
+
288
+ <experiment_tracking>
289
+ When committing tasks that involve experiment parameters (hyperparameters, model configs, dataset splits, etc.):
290
+ - Include key parameters in commit message body
291
+ - Format: param: value on separate lines
292
+ </experiment_tracking>
293
+
294
+ <success_criteria>
295
+ - [ ] All tasks executed
296
+ - [ ] Each task committed individually
297
+ - [ ] Experiment parameters tracked in commits
298
+ - [ ] SUMMARY.md created in plan directory
299
+ - [ ] STATE.md updated with position and decisions
300
+ </success_criteria>
301
+ "
302
+ )
303
+ ```
304
+
305
+ **When branching_strategy=none:** No isolation block at all in the prompt. Omit both `<worktree>` and `<native_isolation>` blocks, and do not set `isolation` parameter on the Task call. Include `<phase_context>` block in all modes.
306
+
307
+ 3. **Create and assign tasks:**
308
+
309
+ For each plan in this wave:
310
+ ```
311
+ TaskCreate(subject="Execute plan ${PLAN_ID}", description="...")
312
+ TaskUpdate(taskId=..., owner="executor-${PLAN_ID}")
313
+ ```
314
+
315
+ 4. **Monitor via TaskList** until all wave tasks show `completed`.
316
+
317
+ 5. **Handle teammate messages:**
318
+ - **Checkpoint messages:** Present checkpoint to user, get response, SendMessage response back to teammate
319
+ - **Completion messages:** Verify via spot-checks (same as standard flow)
320
+ - **Failure messages:** Report to user, ask "Retry?" or "Continue?"
321
+
322
+ 6. **Spot-check results** (same as standard `execute_waves` step 4).
323
+
324
+ 6b. **WebMCP sanity checks (if `webmcp_available=true` from init):**
325
+
326
+ Apply the same WebMCP sanity check logic described in the standard `execute_waves` step 4b. Skip when `webmcp_available` is false (log: "WebMCP not available — skipping health checks (reason: {webmcp_skip_reason})"). When enabled, run three health checks (`hive_get_health_status`, `hive_check_console_errors`, `hive_get_page_info`) for each completed plan in this wave. Retry failed checks once; halt on second consecutive failure.
327
+
328
+ 7. **Code review (if `code_review_timing="per_wave"` and `code_review_enabled=true`):**
329
+
330
+ ```
331
+ Task(
332
+ subagent_type="grd:grd-code-reviewer",
333
+ model="{reviewer_model}",
334
+ team_name="grd-phase-${PHASE_NUMBER}-${PHASE_SLUG}",
335
+ name="reviewer-wave-${WAVE}",
336
+ prompt="
337
+ Review wave ${WAVE} of phase ${PHASE_NUMBER}.
338
+ Plans reviewed: ${PLAN_IDS_IN_WAVE}
339
+ Phase directory: ${PHASE_DIR}
340
+
341
+ PATHS:
342
+ research_dir: ${research_dir}
343
+ phases_dir: ${phases_dir}
344
+ phase_dir: ${phase_dir}
345
+ codebase_dir: ${codebase_dir}
346
+
347
+ <phase_context>
348
+ ${context_content or "No CONTEXT.md found for this phase."}
349
+ </phase_context>
350
+
351
+ Read each plan's PLAN.md and SUMMARY.md.
352
+ Produce ${PHASE_NUMBER}-${WAVE}-REVIEW.md in ${PHASE_DIR}.
353
+ "
354
+ )
355
+ ```
356
+
357
+ **Handle review verdict:**
358
+ - `pass`: Proceed to next wave
359
+ - `blocker_found` and `severity_gate="blocker"` or `severity_gate="warning"`:
360
+ Present blockers to user. Options: "Fix and re-run wave" / "Acknowledge and continue" / "Stop execution"
361
+ - `warnings_only` and `severity_gate="warning"`:
362
+ Present warnings to user. Same options.
363
+ - `severity_gate="none"`: Log review, always continue.
364
+
365
+ 8. **Proceed to next wave.**
366
+ </step>
367
+
368
+ <step name="execute_waves" condition="use_teams=false">
369
+ **Standard execution — when `use_teams: false` (default).**
370
+
371
+ Execute each wave in sequence. Within a wave: parallel if `PARALLELIZATION=true`, sequential if `false`.
372
+
373
+ **For each wave:**
374
+
375
+ 1. **Describe what's being built (BEFORE spawning):**
376
+
377
+ Read each plan's `<objective>`. Extract what's being built and why.
378
+
379
+ ```
380
+ ---
381
+ ## Wave {N}
382
+
383
+ **{Plan ID}: {Plan Name}**
384
+ {2-3 sentences: what this builds, technical approach, why it matters}
385
+
386
+ Spawning {count} agent(s)...
387
+ ---
388
+ ```
389
+
390
+ 2. **Spawn executor agents:**
391
+
392
+ Pass paths only — executors read files themselves with their fresh 200k context.
393
+ This keeps orchestrator context lean (~10-15%).
394
+
395
+ **When ISOLATION_MODE=native:** Add `isolation: "worktree"` parameter to the Task call. Use the `<native_isolation>` block instead of `<worktree>`:
396
+
397
+ ```
398
+ Task(
399
+ subagent_type="grd:grd-executor",
400
+ model="{executor_model}",
401
+ isolation: "worktree",
402
+ prompt="
403
+ <objective>
404
+ Execute plan {plan_number} of phase {phase_number}-{phase_name}.
405
+ Commit each task atomically. Create SUMMARY.md. Update STATE.md.
406
+ Track experiment parameters in commit messages where applicable.
407
+ </objective>
408
+
409
+ <native_isolation>
410
+ Isolation mode: native
411
+ You are running in a Claude Code-managed worktree. Your working directory
412
+ IS the worktree — operate naturally. No path prefixing needed.
413
+ Main repo path: ${MAIN_REPO_PATH}
414
+ STATE.md updates must use this main repo path (not your working directory).
415
+ </native_isolation>
416
+
417
+ <phase_context>
418
+ ${context_content or "No CONTEXT.md found for this phase."}
419
+ </phase_context>
420
+
421
+ <execution_context>
422
+ @${CLAUDE_PLUGIN_ROOT}/references/execute-plan.md
423
+ @${CLAUDE_PLUGIN_ROOT}/templates/summary.md
424
+ @${CLAUDE_PLUGIN_ROOT}/references/checkpoints.md
425
+ @${CLAUDE_PLUGIN_ROOT}/references/tdd.md
426
+ </execution_context>
427
+
428
+ <paths>
429
+ research_dir: ${research_dir}
430
+ phases_dir: ${phases_dir}
431
+ phase_dir: ${phase_dir}
432
+ codebase_dir: ${codebase_dir}
433
+ </paths>
434
+
435
+ <files_to_read>
436
+ Read these files at execution start using the Read tool:
437
+ - Plan: {phase_dir}/{plan_file}
438
+ - State: .planning/STATE.md
439
+ - Config: .planning/config.json (if exists)
440
+ </files_to_read>
441
+
442
+ <experiment_tracking>
443
+ When committing tasks that involve experiment parameters (hyperparameters, model configs, dataset splits, etc.):
444
+ - Include key parameters in commit message body
445
+ - Format: `param: value` on separate lines
446
+ - Example: `feat(03-02): train baseline model\n\nlr: 0.001\nbatch_size: 32\nepochs: 50`
447
+ </experiment_tracking>
448
+
449
+ <success_criteria>
450
+ - [ ] All tasks executed
451
+ - [ ] Each task committed individually
452
+ - [ ] Experiment parameters tracked in commits
453
+ - [ ] SUMMARY.md created in plan directory
454
+ - [ ] STATE.md updated with position and decisions
455
+ </success_criteria>
456
+ "
457
+ )
458
+ ```
459
+
460
+ **When ISOLATION_MODE=manual:** Keep existing `<worktree>` block (v0.2.5 behavior):
461
+
462
+ ```
463
+ Task(
464
+ subagent_type="grd:grd-executor",
465
+ model="{executor_model}",
466
+ prompt="
467
+ <objective>
468
+ Execute plan {plan_number} of phase {phase_number}-{phase_name}.
469
+ Commit each task atomically. Create SUMMARY.md. Update STATE.md.
470
+ Track experiment parameters in commit messages where applicable.
471
+ </objective>
472
+
473
+ <worktree>
474
+ Working directory: ${WORKTREE_PATH}
475
+ All file operations (Read, Write, Edit) and Bash commands MUST use this
476
+ directory as the working root. Use absolute paths prefixed with this directory
477
+ for all file operations. For Bash commands, use: cd "${WORKTREE_PATH}" && ...
478
+ </worktree>
479
+
480
+ <phase_context>
481
+ ${context_content or "No CONTEXT.md found for this phase."}
482
+ </phase_context>
483
+
484
+ <execution_context>
485
+ @${CLAUDE_PLUGIN_ROOT}/references/execute-plan.md
486
+ @${CLAUDE_PLUGIN_ROOT}/templates/summary.md
487
+ @${CLAUDE_PLUGIN_ROOT}/references/checkpoints.md
488
+ @${CLAUDE_PLUGIN_ROOT}/references/tdd.md
489
+ </execution_context>
490
+
491
+ <paths>
492
+ research_dir: ${research_dir}
493
+ phases_dir: ${phases_dir}
494
+ phase_dir: ${phase_dir}
495
+ codebase_dir: ${codebase_dir}
496
+ </paths>
497
+
498
+ <files_to_read>
499
+ Read these files at execution start using the Read tool:
500
+ - Plan: {phase_dir}/{plan_file}
501
+ - State: .planning/STATE.md
502
+ - Config: .planning/config.json (if exists)
503
+ </files_to_read>
504
+
505
+ <experiment_tracking>
506
+ When committing tasks that involve experiment parameters (hyperparameters, model configs, dataset splits, etc.):
507
+ - Include key parameters in commit message body
508
+ - Format: `param: value` on separate lines
509
+ - Example: `feat(03-02): train baseline model\n\nlr: 0.001\nbatch_size: 32\nepochs: 50`
510
+ </experiment_tracking>
511
+
512
+ <success_criteria>
513
+ - [ ] All tasks executed
514
+ - [ ] Each task committed individually
515
+ - [ ] Experiment parameters tracked in commits
516
+ - [ ] SUMMARY.md created in plan directory
517
+ - [ ] STATE.md updated with position and decisions
518
+ </success_criteria>
519
+ "
520
+ )
521
+ ```
522
+
523
+ **When branching_strategy=none:** No isolation block at all in the prompt. Omit both `<worktree>` and `<native_isolation>` blocks, and do not set `isolation` parameter on the Task call. Include `<phase_context>` block in all modes. The executor operates in the normal working directory.
524
+
525
+ **If ISOLATION_MODE is 'overstory':**
526
+
527
+ For each wave:
528
+
529
+ 1. **Generate overlays:**
530
+ For each plan in wave:
531
+ - Read PLAN.md content from phase directory
532
+ - Generate overlay via lib/overstory.ts `generateOverlay(planContent, context)`
533
+ - Write overlay to `.planning/.tmp/overlay-${PHASE_NUMBER}-${PLAN_ID}.md`
534
+
535
+ 2. **Dispatch workers:**
536
+ For each plan in wave:
537
+ - Call `ov sling "GRD plan ${PLAN_ID}: execute plan" --runtime ${OVERSTORY_CONFIG.runtime} --model ${EXECUTOR_MODEL} --overlay <overlay_path>`
538
+ - Parse JSON result: record `agent_id`, `worktree_path`, `branch` per plan
539
+
540
+ 3. **Poll for completion:**
541
+ Every `OVERSTORY_CONFIG.poll_interval_ms` (default 5000ms):
542
+ - Run `ov status --json`, filter to dispatched agent_ids
543
+ - For each agent with `state: 'running'`:
544
+ a. Check mail: `ov mail --agent ${agent_id} --json`
545
+ b. If checkpoint messages found (type='checkpoint'):
546
+ - Surface checkpoint body to user
547
+ - Get user response
548
+ - Send via `ov nudge ${agent_id} -- "${response}"`
549
+ - For each agent with `state: 'done'`:
550
+ a. **Copy SUMMARY.md from worktree BEFORE merge:**
551
+ `cp ${agent.worktree_path}/${PHASE_DIR}/${PLAN_ID}-SUMMARY.md ${MAIN_REPO_PATH}/${PHASE_DIR}/`
552
+ b. Run `ov merge ${agent_id} --json` — parse MergeResult
553
+ c. If `merged: false`: log conflict to SUMMARY.md, warn user
554
+ - For each agent with `state: 'failed'`:
555
+ a. Log failure, copy any partial SUMMARY.md
556
+ b. Mark plan as failed in status tracker
557
+ - Check timeout: if any agent exceeds `team_timeout_minutes`, run `ov stop ${agent_id}`
558
+
559
+ 4. **Wave complete:**
560
+ - Clean up overlay files: remove `.planning/.tmp/overlay-${PHASE_NUMBER}-*.md`
561
+ - Code review (if timing=per_wave): run as normal
562
+ - Proceed to next wave
563
+
564
+ 5. **Phase complete:**
565
+ - Clean up `.planning/.tmp/` if empty
566
+ - Record metrics via `state record-metric`
567
+ - Trigger eval report if EVAL.md exists
568
+
569
+ 3. **Wait for all agents in wave to complete.**
570
+
571
+ 4. **Report completion — spot-check claims first:**
572
+
573
+ For each SUMMARY.md:
574
+ - Verify first 2 files from `key-files.created` exist on disk
575
+ - Check `git log --oneline --all --grep="{phase}-{plan}"` returns >=1 commit
576
+ - Check for `## Self-Check: FAILED` marker
577
+
578
+ If ANY spot-check fails: report which plan failed, route to failure handler — ask "Retry plan?" or "Continue with remaining waves?"
579
+
580
+ If pass:
581
+ ```
582
+ ---
583
+ ## Wave {N} Complete
584
+
585
+ **{Plan ID}: {Plan Name}**
586
+ {What was built — from SUMMARY.md}
587
+ {Notable deviations, if any}
588
+
589
+ {If more waves: what this enables for next wave}
590
+ ---
591
+ ```
592
+
593
+ 4b. **WebMCP sanity checks (if `webmcp_available=true` from init):**
594
+
595
+ **Skip condition:** If `webmcp_available` is `false` in the INIT JSON, skip this step entirely. Log: "WebMCP not available — skipping health checks (reason: {webmcp_skip_reason})"
596
+
597
+ **When enabled, run three health checks for each completed plan in this wave:**
598
+
599
+ ```
600
+ ## WebMCP Health Check — Plan {PLAN_ID}
601
+
602
+ Check 1: hive_get_health_status
603
+ → Verify backend is responding. Expected: status field indicates healthy.
604
+
605
+ Check 2: hive_check_console_errors
606
+ → Verify no new JavaScript errors. Expected: no new errors since plan execution started.
607
+
608
+ Check 3: hive_get_page_info
609
+ → Verify app is rendering. Expected: page has content and is interactive.
610
+ ```
611
+
612
+ **Retry logic:**
613
+ - If ANY check fails, log which check failed and the error
614
+ - Retry the FAILED check(s) once (not all three — only the ones that failed)
615
+ - If the retry also fails, HALT execution with:
616
+ ```
617
+ ## WebMCP Health Check FAILED
618
+
619
+ **Plan:** {PLAN_ID}
620
+ **Failed check:** {check_name} (e.g., hive_check_console_errors)
621
+ **Error:** {error_details}
622
+ **Attempts:** 2/2
623
+
624
+ Execution halted. The web application is in an unhealthy state after plan {PLAN_ID}.
625
+
626
+ Options:
627
+ - Fix the issue and re-run: `/grd:execute-phase {PHASE}`
628
+ - Skip WebMCP checks: set `webmcp.enabled: false` in `.planning/config.json`
629
+ ```
630
+ - If all checks pass (including any retried ones): continue to step 5
631
+
632
+ **Important:** These checks call Chrome DevTools MCP tools directly via the orchestrator's tool access (not via a subagent). The orchestrator already has access to MCP tools from its tool list.
633
+
634
+ 5. **Handle failures:**
635
+
636
+ **Known Claude Code bug (classifyHandoffIfNeeded):** If an agent reports "failed" with error containing `classifyHandoffIfNeeded is not defined`, this is a Claude Code runtime bug — not a GRD or agent issue. The error fires in the completion handler AFTER all tool calls finish. In this case: run the same spot-checks as step 4 (SUMMARY.md exists, git commits present, no Self-Check: FAILED). If spot-checks PASS -> treat as **successful**. If spot-checks FAIL -> treat as real failure below.
637
+
638
+ For real failures: report which plan failed -> ask "Continue?" or "Stop?" -> if continue, dependent plans may also fail. If stop, partial completion report.
639
+
640
+ 6. **Execute checkpoint plans between waves** — see `<checkpoint_handling>`.
641
+
642
+ 7. **Proceed to next wave.**
643
+ </step>
644
+
645
+ <step name="checkpoint_handling">
646
+ Plans with `autonomous: false` require user interaction.
647
+
648
+ **Flow:**
649
+
650
+ 1. Spawn agent for checkpoint plan
651
+ 2. Agent runs until checkpoint task or auth gate -> returns structured state
652
+ 3. Agent return includes: completed tasks table, current task + blocker, checkpoint type/details, what's awaited
653
+ 4. **Present to user:**
654
+ ```
655
+ ## Checkpoint: [Type]
656
+
657
+ **Plan:** 03-03 Dashboard Layout
658
+ **Progress:** 2/3 tasks complete
659
+
660
+ [Checkpoint Details from agent return]
661
+ [Awaiting section from agent return]
662
+ ```
663
+ 5. User responds: "approved"/"done" | issue description | decision selection
664
+ 6. **Spawn continuation agent (NOT resume)** using continuation-prompt.md template
665
+ 7. Continuation agent verifies previous commits, continues from resume point
666
+ 8. Repeat until plan completes or user stops
667
+ </step>
668
+
669
+ <step name="aggregate_results">
670
+ After all waves:
671
+
672
+ ```markdown
673
+ ## Phase {X}: {Name} Execution Complete
674
+
675
+ **Waves:** {N} | **Plans:** {M}/{total} complete
676
+
677
+ | Wave | Plans | Status |
678
+ |------|-------|--------|
679
+ | 1 | plan-01, plan-02 | Complete |
680
+ | CP | plan-03 | Verified |
681
+ | 2 | plan-04 | Complete |
682
+
683
+ ### Plan Details
684
+ 1. **03-01**: [one-liner from SUMMARY.md]
685
+ 2. **03-02**: [one-liner from SUMMARY.md]
686
+
687
+ ### Issues Encountered
688
+ [Aggregate from SUMMARYs, or "None"]
689
+ ```
690
+ </step>
691
+
692
+ <step name="completion_flow" condition="branching_strategy != none">
693
+ Present the user with 4 completion options for the worktree.
694
+
695
+ **ExitWorktree (native isolation only):**
696
+
697
+ Before presenting completion options, exit the worktree to return to the main repository context. This ensures all subsequent git operations (merge, PR, discard) run from the correct directory.
698
+
699
+ When ISOLATION_MODE=native, call the ExitWorktree tool:
700
+
701
+ ```
702
+ Use the ExitWorktree tool to leave the current worktree and return to the main repository.
703
+ ```
704
+
705
+ This step is skipped when ISOLATION_MODE=manual (GRD manages worktree switching itself) or when branching_strategy=none.
706
+
707
+ **When ISOLATION_MODE=native:**
708
+
709
+ After all executor agents complete, determine the worktree branch name and path:
710
+
711
+ 1. **Find the worktree:** Run `git worktree list` in the main repo (`${MAIN_REPO_PATH}`) and look for the phase branch. The branch may follow Claude Code's naming convention rather than GRD's template.
712
+ 2. **Capture branch name:** Parse the branch from `git worktree list` output, or run `git rev-parse --abbrev-ref HEAD` within the worktree directory.
713
+ 3. **Capture worktree path:** Parse from `git worktree list` output. Store as `WORKTREE_PATH` for use in completion commands.
714
+
715
+ Present the 4 completion options:
716
+
717
+ ```
718
+ ## Phase Complete -- Choose Completion Action
719
+
720
+ All plans executed in worktree. Choose how to finish:
721
+
722
+ 1. **Merge locally** -- Run tests, merge branch into base, delete worktree
723
+ 2. **Push and create PR** -- Run tests, push branch, create PR, delete worktree
724
+ 3. **Keep branch** -- Leave worktree and branch intact for later
725
+ 4. **Discard work** -- Delete worktree and branch (destructive!)
726
+ ```
727
+
728
+ For each completion option, use the worktree commands with explicit branch name:
729
+ - **Merge:** `node ${CLAUDE_PLUGIN_ROOT}/bin/grd-tools.js worktree merge --phase "${PHASE_NUMBER}" --branch "${BRANCH_NAME}"` (uses the explicit branch parameter from Plan 02 to handle non-GRD branch names)
730
+ - **PR:** `node ${CLAUDE_PLUGIN_ROOT}/bin/grd-tools.js worktree push-pr --phase "${PHASE_NUMBER}"` (reads branch from worktree HEAD automatically)
731
+ - **Keep:** Note the branch name and worktree path for the user
732
+ - **Discard:** `node ${CLAUDE_PLUGIN_ROOT}/bin/grd-tools.js worktree remove --phase "${PHASE_NUMBER}"`
733
+
734
+ The test gate should run in the worktree directory. Use the worktree path obtained from step 1.
735
+
736
+ **When ISOLATION_MODE=manual:**
737
+
738
+ Preserve existing v0.2.5 completion flow exactly:
739
+
740
+ ```
741
+ ## Phase Complete -- Choose Completion Action
742
+
743
+ All plans executed in worktree. Choose how to finish:
744
+
745
+ 1. **Merge locally** -- Run tests, merge branch into base, delete worktree
746
+ 2. **Push and create PR** -- Run tests, push branch, create PR, delete worktree
747
+ 3. **Keep branch** -- Leave worktree and branch intact for later
748
+ 4. **Discard work** -- Delete worktree and branch (destructive!)
749
+ ```
750
+
751
+ Based on user's choice, call the worktree complete command:
752
+
753
+ ```bash
754
+ COMPLETE_RESULT=$(node ${CLAUDE_PLUGIN_ROOT}/bin/grd-tools.js worktree complete \
755
+ --action "${ACTION}" \
756
+ --phase "${PHASE_NUMBER}" \
757
+ [--test-cmd "${TEST_CMD}"] \
758
+ [--base "${BASE_BRANCH}"] \
759
+ [--title "Phase ${PHASE_NUMBER}: ${PHASE_NAME} (${MILESTONE_VERSION})"] \
760
+ [--body "${PR_BODY}"])
761
+ ```
762
+
763
+ **For both modes, parse JSON result:**
764
+
765
+ **If `blocked: true`** (test gate failed on merge/pr):
766
+ ```
767
+ ## Test Gate Failed
768
+
769
+ Tests must pass before merge/PR. Fix failures and retry.
770
+
771
+ Exit code: ${test_exit_code}
772
+ ${test_stdout}
773
+ ${test_stderr}
774
+
775
+ Options:
776
+ - Fix tests in the worktree and retry completion
777
+ - Choose "keep" to preserve the branch for manual fixing
778
+ - Choose "discard" to abandon this work
779
+ ```
780
+
781
+ **If `error`** (merge conflict, push failure, etc.):
782
+ Report the error with actionable guidance.
783
+
784
+ **If success** (action-specific):
785
+ - `merge`: "Phase ${PHASE_NUMBER} merged into ${BASE_BRANCH}. Branch deleted."
786
+ - `pr`: "PR created: ${pr_url}. Branch: ${branch} -> ${base}."
787
+ - `keep`: "Worktree and branch preserved at ${path}."
788
+ - `discard`: "Worktree and branch deleted."
789
+ </step>
790
+
791
+ <step name="tracker_sync">
792
+ **Sync phase status to issue tracker (non-blocking):**
793
+
794
+ Check tracker config provider first. **For GitHub:**
795
+ ```bash
796
+ node ${CLAUDE_PLUGIN_ROOT}/bin/grd-tools.js tracker sync-phase "${PHASE_NUMBER}" --raw 2>/dev/null || true
797
+ ```
798
+
799
+ **For mcp-atlassian** (see @${CLAUDE_PLUGIN_ROOT}/references/mcp-tracker-protocol.md):
800
+ ```bash
801
+ OPS=$(node ${CLAUDE_PLUGIN_ROOT}/bin/grd-tools.js tracker prepare-phase-sync "${PHASE_NUMBER}" --raw)
802
+ ```
803
+ For each `"create"` operation, call MCP `create_issue`, then `record-mapping`.
804
+
805
+ This updates the tracker with any new plans created during execution. If no tracker is configured, this is a no-op.
806
+ </step>
807
+
808
+ <step name="code_review_per_phase" condition="code_review_timing=per_phase AND code_review_enabled=true">
809
+ **Run code review across all plans in the phase.**
810
+
811
+ Only when `code_review_timing: "per_phase"` and `code_review_enabled: true`. Skipped if `timing: "per_wave"` (already reviewed per wave) or `timing: "disabled"`.
812
+
813
+ ```
814
+ Task(
815
+ subagent_type="grd:grd-code-reviewer",
816
+ model="{reviewer_model}",
817
+ prompt="
818
+ Review all plans in phase ${PHASE_NUMBER}.
819
+ Plans: ${ALL_PLAN_IDS}
820
+ Phase directory: ${PHASE_DIR}
821
+
822
+ PATHS:
823
+ research_dir: ${research_dir}
824
+ phases_dir: ${phases_dir}
825
+ phase_dir: ${phase_dir}
826
+ codebase_dir: ${codebase_dir}
827
+
828
+ <phase_context>
829
+ ${context_content or "No CONTEXT.md found for this phase."}
830
+ </phase_context>
831
+
832
+ Read each plan's PLAN.md and SUMMARY.md.
833
+ Produce ${PHASE_NUMBER}-REVIEW.md in ${PHASE_DIR}.
834
+ "
835
+ )
836
+ ```
837
+
838
+ **Handle review verdict** (same as per-wave handling):
839
+ - `pass`: Continue to eval
840
+ - `blocker_found`: Present to user, get acknowledgement before proceeding
841
+ - `warnings_only`: Present if `severity_gate="warning"`, else continue
842
+ </step>
843
+
844
+ <step name="teardown_phase_team" condition="use_teams=true">
845
+ **Only when `use_teams: true`.**
846
+
847
+ After all execution and review complete, shut down the team:
848
+
849
+ 1. Send shutdown requests to all remaining teammates:
850
+ ```
851
+ SendMessage(type="shutdown_request", recipient="executor-{plan_id}", content="Phase execution complete")
852
+ ```
853
+ For each teammate still active.
854
+
855
+ 2. Wait for shutdown confirmations.
856
+
857
+ 3. Delete the team:
858
+ ```
859
+ TeamDelete()
860
+ ```
861
+ </step>
862
+
863
+ <step name="auto_trigger_eval">
864
+ **After execution completes, check for EVAL.md:**
865
+
866
+ ```bash
867
+ ls "${PHASE_DIR}"/*-EVAL.md 2>/dev/null
868
+ ```
869
+
870
+ **If EVAL.md exists:**
871
+
872
+ Display:
873
+ ```
874
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
875
+ GRD ► RUNNING EVALUATION
876
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
877
+ ```
878
+
879
+ Read EVAL.md and run Tier 1 (sanity) and Tier 2 (proxy) checks automatically.
880
+ Record results in `{phase}-EVAL-RESULTS.md`.
881
+
882
+ **If eval results < targets:**
883
+
884
+ ```
885
+ ## Eval Results Below Targets
886
+
887
+ | Metric | Target | Actual | Status |
888
+ |--------|--------|--------|--------|
889
+ | [metric] | [target] | [actual] | BELOW |
890
+
891
+ ---
892
+
893
+ **Options:**
894
+ - /grd:iterate — re-evaluate approach and iterate
895
+ - /grd:plan-phase {X} --gaps — plan targeted fixes
896
+ - Continue to verification anyway
897
+ ```
898
+
899
+ **If eval results >= targets:** Report success, continue to verification.
900
+
901
+ **If no EVAL.md:** Skip eval, proceed to verification.
902
+ </step>
903
+
904
+ <step name="verify_phase_goal">
905
+ Verify phase achieved its GOAL, not just completed tasks.
906
+
907
+ ```
908
+ Task(
909
+ prompt="Verify phase {phase_number} goal achievement.
910
+ Phase directory: {phase_dir}
911
+ Phase goal: {goal from ROADMAP.md}
912
+ Check must_haves against actual codebase. Create VERIFICATION.md.
913
+
914
+ PATHS:
915
+ research_dir: ${research_dir}
916
+ phases_dir: ${phases_dir}
917
+ phase_dir: ${phase_dir}
918
+ codebase_dir: ${codebase_dir}
919
+
920
+ <phase_context>
921
+ ${context_content or 'No CONTEXT.md found for this phase.'}
922
+ </phase_context>",
923
+ subagent_type="grd:grd-verifier",
924
+ model="{verifier_model}"
925
+ )
926
+ ```
927
+
928
+ Read status:
929
+ ```bash
930
+ grep "^status:" "$PHASE_DIR"/*-VERIFICATION.md | cut -d: -f2 | tr -d ' '
931
+ ```
932
+
933
+ | Status | Action |
934
+ |--------|--------|
935
+ | `passed` | -> update_roadmap |
936
+ | `human_needed` | Present items for human testing, get approval or feedback |
937
+ | `gaps_found` | Present gap summary, offer `/grd:plan-phase {phase} --gaps` |
938
+
939
+ **If gaps_found:**
940
+ ```
941
+ ## Phase {X}: {Name} — Gaps Found
942
+
943
+ **Score:** {N}/{M} must-haves verified
944
+ **Report:** {phase_dir}/{phase}-VERIFICATION.md
945
+
946
+ ### What's Missing
947
+ {Gap summaries from VERIFICATION.md}
948
+
949
+ ---
950
+ ## Next Up
951
+
952
+ `/grd:plan-phase {X} --gaps`
953
+ `/grd:iterate` — if eval results also below target
954
+
955
+ <sub>`/clear` first -> fresh context window</sub>
956
+
957
+ Also: `cat {phase_dir}/{phase}-VERIFICATION.md` — full report
958
+ Also: `/grd:verify-work {X}` — manual testing first
959
+ ```
960
+
961
+ Gap closure cycle: `/grd:plan-phase {X} --gaps` reads VERIFICATION.md -> creates gap plans with `gap_closure: true` -> user runs `/grd:execute-phase {X} --gaps-only` -> verifier re-runs.
962
+ </step>
963
+
964
+ <step name="update_roadmap">
965
+ Mark phase complete in ROADMAP.md (date, status).
966
+
967
+ ```bash
968
+ node ${CLAUDE_PLUGIN_ROOT}/bin/grd-tools.js commit "docs(phase-{X}): complete phase execution" --files .planning/ROADMAP.md .planning/STATE.md ${phase_dir}/*-VERIFICATION.md .planning/REQUIREMENTS.md
969
+ ```
970
+ </step>
971
+
972
+ <step name="offer_next">
973
+
974
+ **If more phases:**
975
+ ```
976
+ ## Next Up
977
+
978
+ **Phase {X+1}: {Name}** — {Goal}
979
+
980
+ `/grd:plan-phase {X+1}`
981
+
982
+ <sub>`/clear` first for fresh context</sub>
983
+ ```
984
+
985
+ **If milestone complete:**
986
+ ```
987
+ MILESTONE COMPLETE!
988
+
989
+ All {N} phases executed.
990
+
991
+ `/grd:complete-milestone`
992
+ ```
993
+ </step>
994
+
995
+ </process>
996
+
997
+ <context_efficiency>
998
+ Orchestrator: ~10-15% context. Subagents: fresh 200k each. No polling (Task blocks). No context bleed.
999
+ </context_efficiency>
1000
+
1001
+ <failure_handling>
1002
+ - **classifyHandoffIfNeeded false failure:** Agent reports "failed" but error is `classifyHandoffIfNeeded is not defined` -> Claude Code bug, not GRD. Spot-check (SUMMARY exists, commits present) -> if pass, treat as success
1003
+ - **Agent fails mid-plan:** Missing SUMMARY.md -> report, ask user how to proceed
1004
+ - **Dependency chain breaks:** Wave 1 fails -> Wave 2 dependents likely fail -> user chooses attempt or skip
1005
+ - **All agents in wave fail:** Systemic issue -> stop, report for investigation
1006
+ - **Checkpoint unresolvable:** "Skip this plan?" or "Abort phase execution?" -> record partial progress in STATE.md
1007
+ </failure_handling>
1008
+
1009
+ <resumption>
1010
+ Re-run `/grd:execute-phase {phase}` -> discover_plans finds completed SUMMARYs -> skips them -> resumes from first incomplete plan -> continues wave execution.
1011
+
1012
+ STATE.md tracks: last completed plan, current wave, pending checkpoints.
1013
+
1014
+ **When resuming with manual isolation:** Check if a worktree already exists for this phase (via `worktree list`). If it does, reuse it instead of creating a new one. If it doesn't, create a fresh one. The `setup_isolation` step handles this: if `worktree create` returns an `error` with "already exists", parse the existing worktree path from the error response and reuse it.
1015
+
1016
+ **When resuming with native isolation:** Check `git worktree list` in the main repo for an existing worktree on the phase branch. If found, reuse it — Claude Code will recognize the existing worktree when spawning executor agents with `isolation: "worktree"`. If not found, native isolation will create a new one automatically on the next executor spawn.
1017
+ </resumption>