agentic-orchestrator 0.1.28 → 0.2.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 (836) hide show
  1. package/.claude/settings.local.json +46 -1
  2. package/.cortexrc +28 -0
  3. package/.github/agents/copilot-instructions.md +29 -0
  4. package/.github/copilot-instructions.md +93 -0
  5. package/.vscode/settings.json +13 -0
  6. package/.vscode/tms.code-snippets +223 -0
  7. package/AGENTS.md +72 -1
  8. package/Agentic-Orchestrator.iml +12 -11
  9. package/CLAUDE.md +72 -1
  10. package/CONSTITUTION.md +504 -0
  11. package/FUTURE-ENHANCEMENTS.md +85 -0
  12. package/NEXT-TASKS.md +25 -0
  13. package/PROMPTS.md +161 -0
  14. package/README.md +126 -29
  15. package/agentic/orchestrator/agents.yaml +4 -3
  16. package/agentic/orchestrator/defaults/policy.defaults.yaml +39 -3
  17. package/agentic/orchestrator/gates.yaml +15 -3
  18. package/agentic/orchestrator/policy.yaml +47 -3
  19. package/agentic/orchestrator/prompts/builder.system.md +69 -20
  20. package/agentic/orchestrator/prompts/planner-intake.system.md +149 -0
  21. package/agentic/orchestrator/prompts/planner.system.md +113 -40
  22. package/agentic/orchestrator/prompts/qa.system.md +73 -18
  23. package/agentic/orchestrator/prompts/reconciler.system.md +119 -0
  24. package/agentic/orchestrator/schemas/agents.schema.json +89 -1
  25. package/agentic/orchestrator/schemas/execution-control.schema.json +242 -0
  26. package/agentic/orchestrator/schemas/index.schema.json +234 -0
  27. package/agentic/orchestrator/schemas/intake.review.schema.json +82 -0
  28. package/agentic/orchestrator/schemas/organizer-ordering-artifact.schema.json +75 -0
  29. package/agentic/orchestrator/schemas/plan.schema.json +44 -0
  30. package/agentic/orchestrator/schemas/policy.schema.json +238 -9
  31. package/agentic/orchestrator/schemas/policy.user.schema.json +129 -1
  32. package/agentic/orchestrator/schemas/spec.manifest.bootstrap.schema.json +101 -0
  33. package/agentic/orchestrator/schemas/spec.manifest.verified.schema.json +80 -0
  34. package/agentic/orchestrator/schemas/state.schema.json +298 -3
  35. package/agentic/orchestrator/tools/catalog.json +145 -15
  36. package/agentic/orchestrator/tools/schemas/input/doctor.run.input.schema.json +18 -0
  37. package/agentic/orchestrator/tools/schemas/input/evidence.latest.input.schema.json +4 -0
  38. package/agentic/orchestrator/tools/schemas/input/evidence.verify_chain.input.schema.json +13 -0
  39. package/agentic/orchestrator/tools/schemas/input/feature.intake_submit.input.schema.json +11 -0
  40. package/agentic/orchestrator/tools/schemas/input/feature.question_answer.input.schema.json +15 -0
  41. package/agentic/orchestrator/tools/schemas/input/feature.question_create.input.schema.json +21 -0
  42. package/agentic/orchestrator/tools/schemas/input/feature.question_list.input.schema.json +13 -0
  43. package/agentic/orchestrator/tools/schemas/input/feature.ready_to_merge.input.schema.json +5 -0
  44. package/agentic/orchestrator/tools/schemas/input/feature.send_message.input.schema.json +1 -1
  45. package/agentic/orchestrator/tools/schemas/input/replay.timeline_get.input.schema.json +32 -0
  46. package/agentic/orchestrator/tools/schemas/input/repo.conflict_abort.input.schema.json +16 -0
  47. package/agentic/orchestrator/tools/schemas/input/repo.conflict_files.input.schema.json +16 -0
  48. package/agentic/orchestrator/tools/schemas/input/repo.reconcile_mainline.input.schema.json +37 -0
  49. package/agentic/orchestrator/tools/schemas/input/repo.resolve_conflict.input.schema.json +40 -0
  50. package/agentic/orchestrator/tools/schemas/input/runtime.execution_request_list.input.schema.json +7 -0
  51. package/agentic/orchestrator/tools/schemas/input/runtime.execution_request_submit.input.schema.json +25 -0
  52. package/agentic/orchestrator/tools/schemas/output/doctor.run.output.schema.json +34 -0
  53. package/agentic/orchestrator/tools/schemas/output/evidence.verify_chain.output.schema.json +23 -0
  54. package/agentic/orchestrator/tools/schemas/output/feature.get_context.output.schema.json +62 -2
  55. package/agentic/orchestrator/tools/schemas/output/feature.intake_submit.output.schema.json +24 -0
  56. package/agentic/orchestrator/tools/schemas/output/feature.question_answer.output.schema.json +21 -0
  57. package/agentic/orchestrator/tools/schemas/output/feature.question_create.output.schema.json +12 -0
  58. package/agentic/orchestrator/tools/schemas/output/feature.question_list.output.schema.json +14 -0
  59. package/agentic/orchestrator/tools/schemas/output/feature.ready_to_merge.output.schema.json +31 -0
  60. package/agentic/orchestrator/tools/schemas/output/feature.send_message.output.schema.json +8 -18
  61. package/agentic/orchestrator/tools/schemas/output/replay.timeline_get.output.schema.json +64 -0
  62. package/agentic/orchestrator/tools/schemas/output/repo.conflict_abort.output.schema.json +16 -0
  63. package/agentic/orchestrator/tools/schemas/output/repo.conflict_files.output.schema.json +22 -0
  64. package/agentic/orchestrator/tools/schemas/output/repo.reconcile_mainline.output.schema.json +61 -0
  65. package/agentic/orchestrator/tools/schemas/output/repo.resolve_conflict.output.schema.json +19 -0
  66. package/agentic/orchestrator/tools/schemas/output/report.dashboard.output.schema.json +26 -0
  67. package/agentic/orchestrator/tools/schemas/output/runtime.execution_request_list.output.schema.json +17 -0
  68. package/agentic/orchestrator/tools/schemas/output/runtime.execution_request_submit.output.schema.json +24 -0
  69. package/agentic/orchestrator/tools.md +13 -0
  70. package/apps/control-plane/scripts/validate-mcp-contracts.ts +1 -1
  71. package/apps/control-plane/src/application/kernel-tool-wiring.ts +140 -2
  72. package/apps/control-plane/src/application/services/activity-monitor-service.ts +44 -1
  73. package/apps/control-plane/src/application/services/bootstrap-manifest-generator-service.ts +251 -0
  74. package/apps/control-plane/src/application/services/checkpoint-service.ts +87 -27
  75. package/apps/control-plane/src/application/services/collision-override-service.ts +906 -0
  76. package/apps/control-plane/src/application/services/collision-queue-service.ts +129 -38
  77. package/apps/control-plane/src/application/services/cost-tracking-service.ts +94 -0
  78. package/apps/control-plane/src/application/services/execution-control-service.ts +599 -0
  79. package/apps/control-plane/src/application/services/feature-deletion-service.ts +37 -1
  80. package/apps/control-plane/src/application/services/feature-lifecycle-service.ts +182 -4
  81. package/apps/control-plane/src/application/services/feature-send-message-service.ts +17 -8
  82. package/apps/control-plane/src/application/services/feature-state-service.ts +191 -6
  83. package/apps/control-plane/src/application/services/gate-service.ts +121 -2
  84. package/apps/control-plane/src/application/services/git-reconciliation-service.ts +1591 -0
  85. package/apps/control-plane/src/application/services/intake-service.ts +1468 -0
  86. package/apps/control-plane/src/application/services/merge-service.ts +308 -17
  87. package/apps/control-plane/src/application/services/notifier-service.ts +3 -1
  88. package/apps/control-plane/src/application/services/performance-analytics-service.ts +75 -0
  89. package/apps/control-plane/src/application/services/plan-service.ts +336 -20
  90. package/apps/control-plane/src/application/services/question-service.ts +693 -0
  91. package/apps/control-plane/src/application/services/reactions-service.ts +73 -17
  92. package/apps/control-plane/src/application/services/replay-timeline-service.ts +295 -0
  93. package/apps/control-plane/src/application/services/reporting-service.ts +194 -10
  94. package/apps/control-plane/src/application/services/run-lease-service.ts +121 -5
  95. package/apps/control-plane/src/application/services/worktree-watchdog-service.ts +95 -8
  96. package/apps/control-plane/src/application/tools/tool-metadata.ts +7 -0
  97. package/apps/control-plane/src/application/usage-types.ts +138 -0
  98. package/apps/control-plane/src/cli/add-command-handler.ts +162 -0
  99. package/apps/control-plane/src/cli/answer-command-handler.ts +113 -0
  100. package/apps/control-plane/src/cli/attach-command-handler.ts +12 -3
  101. package/apps/control-plane/src/cli/cli-argument-parser.ts +133 -11
  102. package/apps/control-plane/src/cli/collision-command-handler.ts +113 -0
  103. package/apps/control-plane/src/cli/command-catalog.ts +479 -0
  104. package/apps/control-plane/src/cli/complete-command-handler.ts +23 -0
  105. package/apps/control-plane/src/cli/completion-command-handler.ts +25 -0
  106. package/apps/control-plane/src/cli/completion-resolver.ts +319 -0
  107. package/apps/control-plane/src/cli/completion-shell-renderer.ts +58 -0
  108. package/apps/control-plane/src/cli/dashboard-command-handler.ts +111 -1
  109. package/apps/control-plane/src/cli/dashboard-runtime-runner.ts +1036 -0
  110. package/apps/control-plane/src/cli/dashboard-runtime.ts +31 -0
  111. package/apps/control-plane/src/cli/help-command-handler.ts +17 -185
  112. package/apps/control-plane/src/cli/init-command-handler.ts +51 -6
  113. package/apps/control-plane/src/cli/merge-command-handler.ts +200 -0
  114. package/apps/control-plane/src/cli/questions-command-handler.ts +70 -0
  115. package/apps/control-plane/src/cli/replay-command-handler.ts +98 -0
  116. package/apps/control-plane/src/cli/resume-command-handler.ts +231 -16
  117. package/apps/control-plane/src/cli/retry-command-handler.ts +229 -17
  118. package/apps/control-plane/src/cli/retry-resume-decision.ts +75 -0
  119. package/apps/control-plane/src/cli/rollback-command-handler.ts +4 -2
  120. package/apps/control-plane/src/cli/run-command-handler.ts +35 -1
  121. package/apps/control-plane/src/cli/spec-ingestion-service.ts +45 -55
  122. package/apps/control-plane/src/cli/spec-preparation.ts +114 -0
  123. package/apps/control-plane/src/cli/spec-utils.ts +90 -11
  124. package/apps/control-plane/src/cli/status-command-handler.ts +122 -0
  125. package/apps/control-plane/src/cli/types.ts +41 -3
  126. package/apps/control-plane/src/core/collisions.ts +150 -31
  127. package/apps/control-plane/src/core/constants.ts +18 -1
  128. package/apps/control-plane/src/core/error-codes.ts +39 -0
  129. package/apps/control-plane/src/core/execution-control.ts +56 -0
  130. package/apps/control-plane/src/core/feature-resume-phase.ts +118 -0
  131. package/apps/control-plane/src/core/gate-freshness.ts +359 -0
  132. package/apps/control-plane/src/core/gate-log-extractor.ts +97 -0
  133. package/apps/control-plane/src/core/gates.ts +90 -1
  134. package/apps/control-plane/src/core/intake-artifacts.ts +295 -0
  135. package/apps/control-plane/src/core/kernel-types.ts +11 -0
  136. package/apps/control-plane/src/core/kernel.ts +604 -16
  137. package/apps/control-plane/src/core/mainline-conflict.ts +22 -0
  138. package/apps/control-plane/src/core/merge-repair.ts +149 -0
  139. package/apps/control-plane/src/core/path-layout.ts +46 -2
  140. package/apps/control-plane/src/core/path-rules.ts +11 -3
  141. package/apps/control-plane/src/core/plan-submit-recovery.ts +130 -0
  142. package/apps/control-plane/src/core/questions.ts +49 -0
  143. package/apps/control-plane/src/core/runtime-sessions.ts +4 -0
  144. package/apps/control-plane/src/core/schemas.ts +40 -1
  145. package/apps/control-plane/src/core/tool-caller.ts +25 -1
  146. package/apps/control-plane/src/core/utils/index-normalizer.ts +25 -4
  147. package/apps/control-plane/src/core/worktree-diff.ts +66 -0
  148. package/apps/control-plane/src/index.ts +29 -1
  149. package/apps/control-plane/src/interfaces/cli/bootstrap.ts +300 -6
  150. package/apps/control-plane/src/mcp/kernel-tool-executor.ts +17 -0
  151. package/apps/control-plane/src/mcp/tool-runtime.ts +63 -4
  152. package/apps/control-plane/src/providers/api-worker-provider.ts +62 -15
  153. package/apps/control-plane/src/providers/cli-worker-provider.ts +1037 -61
  154. package/apps/control-plane/src/providers/output-parsers/generic-output-parser.ts +99 -1
  155. package/apps/control-plane/src/providers/output-parsers/types.ts +2 -0
  156. package/apps/control-plane/src/providers/provider-defaults.ts +116 -7
  157. package/apps/control-plane/src/providers/providers.ts +225 -21
  158. package/apps/control-plane/src/providers/worker-provider-factory.ts +26 -2
  159. package/apps/control-plane/src/supervisor/artifact-stager.ts +52 -0
  160. package/apps/control-plane/src/supervisor/build-wave-executor.ts +477 -166
  161. package/apps/control-plane/src/supervisor/execution-enrollment-service.ts +408 -0
  162. package/apps/control-plane/src/supervisor/organizer-enrollment-scheduler.ts +117 -0
  163. package/apps/control-plane/src/supervisor/organizer-sidecar-service.ts +394 -0
  164. package/apps/control-plane/src/supervisor/plan-conformance-scorer.ts +2 -5
  165. package/apps/control-plane/src/supervisor/planner-phase.ts +85 -0
  166. package/apps/control-plane/src/supervisor/planning-wave-executor.ts +993 -64
  167. package/apps/control-plane/src/supervisor/prompt-bundle-loader.ts +20 -1
  168. package/apps/control-plane/src/supervisor/qa-wave-executor.ts +384 -177
  169. package/apps/control-plane/src/supervisor/run-coordinator.ts +723 -20
  170. package/apps/control-plane/src/supervisor/runtime.ts +485 -9
  171. package/apps/control-plane/src/supervisor/session-orchestrator.ts +220 -1
  172. package/apps/control-plane/src/supervisor/types.ts +152 -1
  173. package/apps/control-plane/src/supervisor/worker-decision-loop.ts +1030 -92
  174. package/apps/control-plane/test/activity-monitor.spec.ts +76 -0
  175. package/apps/control-plane/test/add-command-handler.spec.ts +189 -0
  176. package/apps/control-plane/test/application/services/feature-state-service.spec.ts +208 -0
  177. package/apps/control-plane/test/artifact-stager.spec.ts +93 -0
  178. package/apps/control-plane/test/batch-operations.spec.ts +58 -0
  179. package/apps/control-plane/test/bootstrap-edge-cases.spec.ts +50 -2
  180. package/apps/control-plane/test/bootstrap-manifest-generator-service.spec.ts +99 -0
  181. package/apps/control-plane/test/bootstrap.spec.ts +177 -4
  182. package/apps/control-plane/test/checkpoint-service.spec.ts +977 -29
  183. package/apps/control-plane/test/cli-argument-parser.spec.ts +119 -0
  184. package/apps/control-plane/test/cli-helpers.spec.ts +1202 -12
  185. package/apps/control-plane/test/cli.unit.spec.ts +797 -16
  186. package/apps/control-plane/test/collision-command-handler.spec.ts +182 -0
  187. package/apps/control-plane/test/collision-override-service.spec.ts +878 -0
  188. package/apps/control-plane/test/collision-queue.spec.ts +430 -2
  189. package/apps/control-plane/test/collisions.spec.ts +209 -1
  190. package/apps/control-plane/test/core-utils.spec.ts +61 -0
  191. package/apps/control-plane/test/cost-tracking.spec.ts +224 -0
  192. package/apps/control-plane/test/dashboard-api.integration.spec.ts +185 -5
  193. package/apps/control-plane/test/dashboard-client.spec.ts +948 -0
  194. package/apps/control-plane/test/dashboard-command.spec.ts +138 -6
  195. package/apps/control-plane/test/dashboard-runtime-runner.spec.ts +1550 -0
  196. package/apps/control-plane/test/dashboard-runtime.spec.ts +138 -0
  197. package/apps/control-plane/test/dashboard-ui-utils.spec.ts +56 -12
  198. package/apps/control-plane/test/dependency-scheduler.spec.ts +7 -1
  199. package/apps/control-plane/test/env-file.spec.ts +76 -0
  200. package/apps/control-plane/test/execution-control-service.spec.ts +535 -0
  201. package/apps/control-plane/test/execution-enrollment-service.spec.ts +648 -0
  202. package/apps/control-plane/test/feature-lifecycle.spec.ts +126 -0
  203. package/apps/control-plane/test/feature-resume-phase.spec.ts +164 -0
  204. package/apps/control-plane/test/feature-send-message-service.spec.ts +161 -0
  205. package/apps/control-plane/test/feature-state-service.spec.ts +295 -0
  206. package/apps/control-plane/test/fs.spec.ts +80 -0
  207. package/apps/control-plane/test/gate-freshness.spec.ts +590 -0
  208. package/apps/control-plane/test/gate-log-extractor.spec.ts +170 -0
  209. package/apps/control-plane/test/gates.spec.ts +108 -0
  210. package/apps/control-plane/test/git-reconciliation-service.spec.ts +2307 -0
  211. package/apps/control-plane/test/helpers.ts +65 -0
  212. package/apps/control-plane/test/incremental-gates.spec.ts +271 -0
  213. package/apps/control-plane/test/index-normalizer.spec.ts +98 -0
  214. package/apps/control-plane/test/init-wizard.spec.ts +17 -0
  215. package/apps/control-plane/test/intake-artifacts.spec.ts +203 -0
  216. package/apps/control-plane/test/intake-service.spec.ts +3176 -0
  217. package/apps/control-plane/test/kernel-collision-replay.spec.ts +3 -2
  218. package/apps/control-plane/test/kernel-tool-executor.spec.ts +77 -0
  219. package/apps/control-plane/test/kernel-tool-wiring.spec.ts +279 -0
  220. package/apps/control-plane/test/kernel.branches.spec.ts +15 -2
  221. package/apps/control-plane/test/kernel.coverage.spec.ts +7 -3
  222. package/apps/control-plane/test/kernel.coverage2.spec.ts +731 -2
  223. package/apps/control-plane/test/kernel.spec.ts +464 -2
  224. package/apps/control-plane/test/mainline-conflict.spec.ts +66 -0
  225. package/apps/control-plane/test/mcp-helpers.spec.ts +79 -0
  226. package/apps/control-plane/test/mcp.spec.ts +177 -13
  227. package/apps/control-plane/test/merge-command-handler.spec.ts +531 -0
  228. package/apps/control-plane/test/merge-service.spec.ts +570 -4
  229. package/apps/control-plane/test/notifier-service.spec.ts +26 -0
  230. package/apps/control-plane/test/organizer-enrollment-scheduler.spec.ts +340 -0
  231. package/apps/control-plane/test/organizer-ordering-artifact.spec.ts +95 -0
  232. package/apps/control-plane/test/organizer-sidecar-service.spec.ts +468 -0
  233. package/apps/control-plane/test/output-loop-detector.spec.ts +6 -0
  234. package/apps/control-plane/test/path-layout.spec.ts +70 -0
  235. package/apps/control-plane/test/performance-analytics.spec.ts +124 -0
  236. package/apps/control-plane/test/plan-conformance-scorer.spec.ts +53 -0
  237. package/apps/control-plane/test/plan-service.spec.ts +686 -4
  238. package/apps/control-plane/test/planning-wave-executor.spec.ts +3272 -86
  239. package/apps/control-plane/test/policy-loader-service.spec.ts +5 -0
  240. package/apps/control-plane/test/prompt-overlay.spec.ts +65 -0
  241. package/apps/control-plane/test/provider-command-runner-epipe.spec.ts +64 -0
  242. package/apps/control-plane/test/providers/api-worker-provider.spec.ts +129 -0
  243. package/apps/control-plane/test/providers/cli-worker-provider.spec.ts +148 -0
  244. package/apps/control-plane/test/providers/usage-types.spec.ts +98 -0
  245. package/apps/control-plane/test/providers.spec.ts +293 -16
  246. package/apps/control-plane/test/question-command-handlers.spec.ts +156 -0
  247. package/apps/control-plane/test/question-service.spec.ts +1119 -0
  248. package/apps/control-plane/test/reactions.spec.ts +114 -0
  249. package/apps/control-plane/test/replay-command-handler.spec.ts +144 -0
  250. package/apps/control-plane/test/replay-timeline-service.spec.ts +459 -0
  251. package/apps/control-plane/test/response.spec.ts +31 -0
  252. package/apps/control-plane/test/resume-command.spec.ts +757 -9
  253. package/apps/control-plane/test/retry-resume-decision.spec.ts +133 -0
  254. package/apps/control-plane/test/rollback-command-handler.spec.ts +334 -0
  255. package/apps/control-plane/test/rollback-command.spec.ts +120 -0
  256. package/apps/control-plane/test/run-coordinator.spec.ts +3062 -404
  257. package/apps/control-plane/test/schemas/state.schema.spec.ts +71 -0
  258. package/apps/control-plane/test/service-retry-paths.spec.ts +112 -0
  259. package/apps/control-plane/test/services.spec.ts +472 -2
  260. package/apps/control-plane/test/session-management.spec.ts +346 -1
  261. package/apps/control-plane/test/spec-ingestion.spec.ts +102 -28
  262. package/apps/control-plane/test/spec-preparation.spec.ts +182 -0
  263. package/apps/control-plane/test/supervisor-collaborators.spec.ts +191 -3
  264. package/apps/control-plane/test/supervisor.calltool.spec.ts +198 -0
  265. package/apps/control-plane/test/supervisor.spec.ts +95 -16
  266. package/apps/control-plane/test/supervisor.unit.spec.ts +385 -18
  267. package/apps/control-plane/test/tool-runtime.spec.ts +122 -0
  268. package/apps/control-plane/test/worker-decision-loop.spec.ts +3479 -476
  269. package/apps/control-plane/test/worker-execution-policy.spec.ts +1416 -6
  270. package/apps/control-plane/test/worker-provider-adapters.spec.ts +1894 -37
  271. package/apps/control-plane/test/worker-provider-factory.spec.ts +81 -0
  272. package/apps/control-plane/test/worktree-watchdog-service.spec.ts +125 -0
  273. package/apps/control-plane/vitest.config.ts +5 -0
  274. package/config/agentic/orchestrator/agents.yaml +22 -1
  275. package/config/agentic/orchestrator/gates.yaml +24 -7
  276. package/config/agentic/orchestrator/policy.yaml +23 -1
  277. package/config/agentic/orchestrator/prompts/builder.system.md +69 -20
  278. package/config/agentic/orchestrator/prompts/organizer.system.md +85 -0
  279. package/config/agentic/orchestrator/prompts/overrides/builder.claude.md +28 -0
  280. package/config/agentic/orchestrator/prompts/overrides/builder.codex.md +28 -0
  281. package/config/agentic/orchestrator/prompts/overrides/planner.claude.md +20 -0
  282. package/config/agentic/orchestrator/prompts/overrides/planner.codex.md +20 -0
  283. package/config/agentic/orchestrator/prompts/planner-intake.system.md +149 -0
  284. package/config/agentic/orchestrator/prompts/planner.system.md +113 -40
  285. package/config/agentic/orchestrator/prompts/qa.system.md +75 -18
  286. package/config/agentic/orchestrator/prompts/reconciler.system.md +119 -0
  287. package/dist/apps/control-plane/application/kernel-tool-wiring.d.ts +26 -2
  288. package/dist/apps/control-plane/application/kernel-tool-wiring.js +40 -2
  289. package/dist/apps/control-plane/application/kernel-tool-wiring.js.map +1 -1
  290. package/dist/apps/control-plane/application/services/activity-monitor-service.js +37 -1
  291. package/dist/apps/control-plane/application/services/activity-monitor-service.js.map +1 -1
  292. package/dist/apps/control-plane/application/services/bootstrap-manifest-generator-service.d.ts +4 -0
  293. package/dist/apps/control-plane/application/services/bootstrap-manifest-generator-service.js +188 -0
  294. package/dist/apps/control-plane/application/services/bootstrap-manifest-generator-service.js.map +1 -0
  295. package/dist/apps/control-plane/application/services/checkpoint-service.d.ts +5 -0
  296. package/dist/apps/control-plane/application/services/checkpoint-service.js +69 -24
  297. package/dist/apps/control-plane/application/services/checkpoint-service.js.map +1 -1
  298. package/dist/apps/control-plane/application/services/collision-override-service.d.ts +139 -0
  299. package/dist/apps/control-plane/application/services/collision-override-service.js +568 -0
  300. package/dist/apps/control-plane/application/services/collision-override-service.js.map +1 -0
  301. package/dist/apps/control-plane/application/services/collision-queue-service.d.ts +15 -0
  302. package/dist/apps/control-plane/application/services/collision-queue-service.js +92 -33
  303. package/dist/apps/control-plane/application/services/collision-queue-service.js.map +1 -1
  304. package/dist/apps/control-plane/application/services/cost-tracking-service.d.ts +11 -0
  305. package/dist/apps/control-plane/application/services/cost-tracking-service.js +75 -0
  306. package/dist/apps/control-plane/application/services/cost-tracking-service.js.map +1 -1
  307. package/dist/apps/control-plane/application/services/execution-control-service.d.ts +75 -0
  308. package/dist/apps/control-plane/application/services/execution-control-service.js +421 -0
  309. package/dist/apps/control-plane/application/services/execution-control-service.js.map +1 -0
  310. package/dist/apps/control-plane/application/services/feature-deletion-service.d.ts +1 -0
  311. package/dist/apps/control-plane/application/services/feature-deletion-service.js +23 -1
  312. package/dist/apps/control-plane/application/services/feature-deletion-service.js.map +1 -1
  313. package/dist/apps/control-plane/application/services/feature-lifecycle-service.d.ts +24 -1
  314. package/dist/apps/control-plane/application/services/feature-lifecycle-service.js +132 -3
  315. package/dist/apps/control-plane/application/services/feature-lifecycle-service.js.map +1 -1
  316. package/dist/apps/control-plane/application/services/feature-send-message-service.js +16 -8
  317. package/dist/apps/control-plane/application/services/feature-send-message-service.js.map +1 -1
  318. package/dist/apps/control-plane/application/services/feature-state-service.d.ts +36 -0
  319. package/dist/apps/control-plane/application/services/feature-state-service.js +163 -6
  320. package/dist/apps/control-plane/application/services/feature-state-service.js.map +1 -1
  321. package/dist/apps/control-plane/application/services/gate-service.d.ts +2 -1
  322. package/dist/apps/control-plane/application/services/gate-service.js +95 -5
  323. package/dist/apps/control-plane/application/services/gate-service.js.map +1 -1
  324. package/dist/apps/control-plane/application/services/git-reconciliation-service.d.ts +92 -0
  325. package/dist/apps/control-plane/application/services/git-reconciliation-service.js +1097 -0
  326. package/dist/apps/control-plane/application/services/git-reconciliation-service.js.map +1 -0
  327. package/dist/apps/control-plane/application/services/intake-service.d.ts +63 -0
  328. package/dist/apps/control-plane/application/services/intake-service.js +1050 -0
  329. package/dist/apps/control-plane/application/services/intake-service.js.map +1 -0
  330. package/dist/apps/control-plane/application/services/merge-service.d.ts +5 -1
  331. package/dist/apps/control-plane/application/services/merge-service.js +233 -18
  332. package/dist/apps/control-plane/application/services/merge-service.js.map +1 -1
  333. package/dist/apps/control-plane/application/services/notifier-service.d.ts +1 -1
  334. package/dist/apps/control-plane/application/services/notifier-service.js +1 -0
  335. package/dist/apps/control-plane/application/services/notifier-service.js.map +1 -1
  336. package/dist/apps/control-plane/application/services/performance-analytics-service.d.ts +11 -0
  337. package/dist/apps/control-plane/application/services/performance-analytics-service.js +59 -0
  338. package/dist/apps/control-plane/application/services/performance-analytics-service.js.map +1 -1
  339. package/dist/apps/control-plane/application/services/plan-service.d.ts +5 -0
  340. package/dist/apps/control-plane/application/services/plan-service.js +254 -15
  341. package/dist/apps/control-plane/application/services/plan-service.js.map +1 -1
  342. package/dist/apps/control-plane/application/services/question-service.d.ts +72 -0
  343. package/dist/apps/control-plane/application/services/question-service.js +507 -0
  344. package/dist/apps/control-plane/application/services/question-service.js.map +1 -0
  345. package/dist/apps/control-plane/application/services/reactions-service.d.ts +2 -0
  346. package/dist/apps/control-plane/application/services/reactions-service.js +60 -17
  347. package/dist/apps/control-plane/application/services/reactions-service.js.map +1 -1
  348. package/dist/apps/control-plane/application/services/replay-timeline-service.d.ts +39 -0
  349. package/dist/apps/control-plane/application/services/replay-timeline-service.js +205 -0
  350. package/dist/apps/control-plane/application/services/replay-timeline-service.js.map +1 -0
  351. package/dist/apps/control-plane/application/services/reporting-service.d.ts +59 -0
  352. package/dist/apps/control-plane/application/services/reporting-service.js +121 -9
  353. package/dist/apps/control-plane/application/services/reporting-service.js.map +1 -1
  354. package/dist/apps/control-plane/application/services/run-lease-service.d.ts +20 -0
  355. package/dist/apps/control-plane/application/services/run-lease-service.js +81 -4
  356. package/dist/apps/control-plane/application/services/run-lease-service.js.map +1 -1
  357. package/dist/apps/control-plane/application/services/worktree-watchdog-service.d.ts +10 -0
  358. package/dist/apps/control-plane/application/services/worktree-watchdog-service.js +65 -8
  359. package/dist/apps/control-plane/application/services/worktree-watchdog-service.js.map +1 -1
  360. package/dist/apps/control-plane/application/tools/tool-metadata.js +7 -0
  361. package/dist/apps/control-plane/application/tools/tool-metadata.js.map +1 -1
  362. package/dist/apps/control-plane/application/usage-types.d.ts +65 -0
  363. package/dist/apps/control-plane/application/usage-types.js +75 -0
  364. package/dist/apps/control-plane/application/usage-types.js.map +1 -0
  365. package/dist/apps/control-plane/cli/add-command-handler.d.ts +18 -0
  366. package/dist/apps/control-plane/cli/add-command-handler.js +110 -0
  367. package/dist/apps/control-plane/cli/add-command-handler.js.map +1 -0
  368. package/dist/apps/control-plane/cli/answer-command-handler.d.ts +8 -0
  369. package/dist/apps/control-plane/cli/answer-command-handler.js +96 -0
  370. package/dist/apps/control-plane/cli/answer-command-handler.js.map +1 -0
  371. package/dist/apps/control-plane/cli/attach-command-handler.js +8 -3
  372. package/dist/apps/control-plane/cli/attach-command-handler.js.map +1 -1
  373. package/dist/apps/control-plane/cli/cli-argument-parser.js +131 -11
  374. package/dist/apps/control-plane/cli/cli-argument-parser.js.map +1 -1
  375. package/dist/apps/control-plane/cli/collision-command-handler.d.ts +8 -0
  376. package/dist/apps/control-plane/cli/collision-command-handler.js +90 -0
  377. package/dist/apps/control-plane/cli/collision-command-handler.js.map +1 -0
  378. package/dist/apps/control-plane/cli/command-catalog.d.ts +21 -0
  379. package/dist/apps/control-plane/cli/command-catalog.js +416 -0
  380. package/dist/apps/control-plane/cli/command-catalog.js.map +1 -0
  381. package/dist/apps/control-plane/cli/complete-command-handler.d.ts +15 -0
  382. package/dist/apps/control-plane/cli/complete-command-handler.js +26 -0
  383. package/dist/apps/control-plane/cli/complete-command-handler.js.map +1 -0
  384. package/dist/apps/control-plane/cli/completion-command-handler.d.ts +8 -0
  385. package/dist/apps/control-plane/cli/completion-command-handler.js +20 -0
  386. package/dist/apps/control-plane/cli/completion-command-handler.js.map +1 -0
  387. package/dist/apps/control-plane/cli/completion-resolver.d.ts +1 -0
  388. package/dist/apps/control-plane/cli/completion-resolver.js +250 -0
  389. package/dist/apps/control-plane/cli/completion-resolver.js.map +1 -0
  390. package/dist/apps/control-plane/cli/completion-shell-renderer.d.ts +3 -0
  391. package/dist/apps/control-plane/cli/completion-shell-renderer.js +53 -0
  392. package/dist/apps/control-plane/cli/completion-shell-renderer.js.map +1 -0
  393. package/dist/apps/control-plane/cli/dashboard-command-handler.d.ts +1 -0
  394. package/dist/apps/control-plane/cli/dashboard-command-handler.js +84 -1
  395. package/dist/apps/control-plane/cli/dashboard-command-handler.js.map +1 -1
  396. package/dist/apps/control-plane/cli/dashboard-runtime-runner.d.ts +81 -0
  397. package/dist/apps/control-plane/cli/dashboard-runtime-runner.js +724 -0
  398. package/dist/apps/control-plane/cli/dashboard-runtime-runner.js.map +1 -0
  399. package/dist/apps/control-plane/cli/dashboard-runtime.d.ts +1 -0
  400. package/dist/apps/control-plane/cli/dashboard-runtime.js +26 -0
  401. package/dist/apps/control-plane/cli/dashboard-runtime.js.map +1 -0
  402. package/dist/apps/control-plane/cli/help-command-handler.js +13 -172
  403. package/dist/apps/control-plane/cli/help-command-handler.js.map +1 -1
  404. package/dist/apps/control-plane/cli/init-command-handler.js +51 -6
  405. package/dist/apps/control-plane/cli/init-command-handler.js.map +1 -1
  406. package/dist/apps/control-plane/cli/merge-command-handler.d.ts +8 -0
  407. package/dist/apps/control-plane/cli/merge-command-handler.js +139 -0
  408. package/dist/apps/control-plane/cli/merge-command-handler.js.map +1 -0
  409. package/dist/apps/control-plane/cli/questions-command-handler.d.ts +8 -0
  410. package/dist/apps/control-plane/cli/questions-command-handler.js +59 -0
  411. package/dist/apps/control-plane/cli/questions-command-handler.js.map +1 -0
  412. package/dist/apps/control-plane/cli/replay-command-handler.d.ts +15 -0
  413. package/dist/apps/control-plane/cli/replay-command-handler.js +55 -0
  414. package/dist/apps/control-plane/cli/replay-command-handler.js.map +1 -0
  415. package/dist/apps/control-plane/cli/resume-command-handler.d.ts +2 -0
  416. package/dist/apps/control-plane/cli/resume-command-handler.js +180 -17
  417. package/dist/apps/control-plane/cli/resume-command-handler.js.map +1 -1
  418. package/dist/apps/control-plane/cli/retry-command-handler.js +202 -16
  419. package/dist/apps/control-plane/cli/retry-command-handler.js.map +1 -1
  420. package/dist/apps/control-plane/cli/retry-resume-decision.d.ts +26 -0
  421. package/dist/apps/control-plane/cli/retry-resume-decision.js +61 -0
  422. package/dist/apps/control-plane/cli/retry-resume-decision.js.map +1 -0
  423. package/dist/apps/control-plane/cli/rollback-command-handler.js +3 -2
  424. package/dist/apps/control-plane/cli/rollback-command-handler.js.map +1 -1
  425. package/dist/apps/control-plane/cli/run-command-handler.js +26 -2
  426. package/dist/apps/control-plane/cli/run-command-handler.js.map +1 -1
  427. package/dist/apps/control-plane/cli/spec-ingestion-service.d.ts +2 -0
  428. package/dist/apps/control-plane/cli/spec-ingestion-service.js +37 -48
  429. package/dist/apps/control-plane/cli/spec-ingestion-service.js.map +1 -1
  430. package/dist/apps/control-plane/cli/spec-preparation.d.ts +14 -0
  431. package/dist/apps/control-plane/cli/spec-preparation.js +81 -0
  432. package/dist/apps/control-plane/cli/spec-preparation.js.map +1 -0
  433. package/dist/apps/control-plane/cli/spec-utils.d.ts +4 -0
  434. package/dist/apps/control-plane/cli/spec-utils.js +70 -11
  435. package/dist/apps/control-plane/cli/spec-utils.js.map +1 -1
  436. package/dist/apps/control-plane/cli/status-command-handler.js +69 -0
  437. package/dist/apps/control-plane/cli/status-command-handler.js.map +1 -1
  438. package/dist/apps/control-plane/cli/types.d.ts +41 -4
  439. package/dist/apps/control-plane/cli/types.js +9 -1
  440. package/dist/apps/control-plane/cli/types.js.map +1 -1
  441. package/dist/apps/control-plane/core/collisions.d.ts +37 -19
  442. package/dist/apps/control-plane/core/collisions.js +87 -12
  443. package/dist/apps/control-plane/core/collisions.js.map +1 -1
  444. package/dist/apps/control-plane/core/constants.d.ts +17 -1
  445. package/dist/apps/control-plane/core/constants.js +18 -1
  446. package/dist/apps/control-plane/core/constants.js.map +1 -1
  447. package/dist/apps/control-plane/core/error-codes.d.ts +39 -0
  448. package/dist/apps/control-plane/core/error-codes.js +39 -0
  449. package/dist/apps/control-plane/core/error-codes.js.map +1 -1
  450. package/dist/apps/control-plane/core/execution-control.d.ts +45 -0
  451. package/dist/apps/control-plane/core/execution-control.js +2 -0
  452. package/dist/apps/control-plane/core/execution-control.js.map +1 -0
  453. package/dist/apps/control-plane/core/feature-resume-phase.d.ts +3 -0
  454. package/dist/apps/control-plane/core/feature-resume-phase.js +88 -0
  455. package/dist/apps/control-plane/core/feature-resume-phase.js.map +1 -0
  456. package/dist/apps/control-plane/core/gate-freshness.d.ts +48 -0
  457. package/dist/apps/control-plane/core/gate-freshness.js +267 -0
  458. package/dist/apps/control-plane/core/gate-freshness.js.map +1 -0
  459. package/dist/apps/control-plane/core/gate-log-extractor.d.ts +22 -0
  460. package/dist/apps/control-plane/core/gate-log-extractor.js +66 -0
  461. package/dist/apps/control-plane/core/gate-log-extractor.js.map +1 -0
  462. package/dist/apps/control-plane/core/gates.d.ts +11 -2
  463. package/dist/apps/control-plane/core/gates.js +67 -3
  464. package/dist/apps/control-plane/core/gates.js.map +1 -1
  465. package/dist/apps/control-plane/core/intake-artifacts.d.ts +109 -0
  466. package/dist/apps/control-plane/core/intake-artifacts.js +143 -0
  467. package/dist/apps/control-plane/core/intake-artifacts.js.map +1 -0
  468. package/dist/apps/control-plane/core/kernel-types.d.ts +8 -0
  469. package/dist/apps/control-plane/core/kernel.d.ts +256 -8
  470. package/dist/apps/control-plane/core/kernel.js +400 -14
  471. package/dist/apps/control-plane/core/kernel.js.map +1 -1
  472. package/dist/apps/control-plane/core/mainline-conflict.d.ts +7 -0
  473. package/dist/apps/control-plane/core/mainline-conflict.js +20 -0
  474. package/dist/apps/control-plane/core/mainline-conflict.js.map +1 -0
  475. package/dist/apps/control-plane/core/merge-repair.d.ts +35 -0
  476. package/dist/apps/control-plane/core/merge-repair.js +99 -0
  477. package/dist/apps/control-plane/core/merge-repair.js.map +1 -0
  478. package/dist/apps/control-plane/core/path-layout.d.ts +10 -0
  479. package/dist/apps/control-plane/core/path-layout.js +32 -2
  480. package/dist/apps/control-plane/core/path-layout.js.map +1 -1
  481. package/dist/apps/control-plane/core/path-rules.js +9 -3
  482. package/dist/apps/control-plane/core/path-rules.js.map +1 -1
  483. package/dist/apps/control-plane/core/plan-submit-recovery.d.ts +22 -0
  484. package/dist/apps/control-plane/core/plan-submit-recovery.js +78 -0
  485. package/dist/apps/control-plane/core/plan-submit-recovery.js.map +1 -0
  486. package/dist/apps/control-plane/core/questions.d.ts +40 -0
  487. package/dist/apps/control-plane/core/questions.js +2 -0
  488. package/dist/apps/control-plane/core/questions.js.map +1 -0
  489. package/dist/apps/control-plane/core/runtime-sessions.d.ts +4 -0
  490. package/dist/apps/control-plane/core/schemas.d.ts +2 -0
  491. package/dist/apps/control-plane/core/schemas.js +31 -1
  492. package/dist/apps/control-plane/core/schemas.js.map +1 -1
  493. package/dist/apps/control-plane/core/tool-caller.d.ts +18 -1
  494. package/dist/apps/control-plane/core/utils/index-normalizer.js +17 -4
  495. package/dist/apps/control-plane/core/utils/index-normalizer.js.map +1 -1
  496. package/dist/apps/control-plane/core/worktree-diff.d.ts +4 -0
  497. package/dist/apps/control-plane/core/worktree-diff.js +52 -0
  498. package/dist/apps/control-plane/core/worktree-diff.js.map +1 -0
  499. package/dist/apps/control-plane/index.d.ts +10 -2
  500. package/dist/apps/control-plane/index.js +9 -2
  501. package/dist/apps/control-plane/index.js.map +1 -1
  502. package/dist/apps/control-plane/interfaces/cli/bootstrap.js +236 -6
  503. package/dist/apps/control-plane/interfaces/cli/bootstrap.js.map +1 -1
  504. package/dist/apps/control-plane/mcp/kernel-tool-executor.js +16 -0
  505. package/dist/apps/control-plane/mcp/kernel-tool-executor.js.map +1 -1
  506. package/dist/apps/control-plane/mcp/tool-runtime.d.ts +5 -0
  507. package/dist/apps/control-plane/mcp/tool-runtime.js +40 -5
  508. package/dist/apps/control-plane/mcp/tool-runtime.js.map +1 -1
  509. package/dist/apps/control-plane/providers/api-worker-provider.d.ts +2 -2
  510. package/dist/apps/control-plane/providers/api-worker-provider.js +40 -9
  511. package/dist/apps/control-plane/providers/api-worker-provider.js.map +1 -1
  512. package/dist/apps/control-plane/providers/cli-worker-provider.d.ts +59 -3
  513. package/dist/apps/control-plane/providers/cli-worker-provider.js +758 -46
  514. package/dist/apps/control-plane/providers/cli-worker-provider.js.map +1 -1
  515. package/dist/apps/control-plane/providers/output-parsers/generic-output-parser.js +91 -1
  516. package/dist/apps/control-plane/providers/output-parsers/generic-output-parser.js.map +1 -1
  517. package/dist/apps/control-plane/providers/output-parsers/types.d.ts +2 -0
  518. package/dist/apps/control-plane/providers/provider-defaults.d.ts +12 -0
  519. package/dist/apps/control-plane/providers/provider-defaults.js +103 -7
  520. package/dist/apps/control-plane/providers/provider-defaults.js.map +1 -1
  521. package/dist/apps/control-plane/providers/providers.d.ts +50 -4
  522. package/dist/apps/control-plane/providers/providers.js +145 -14
  523. package/dist/apps/control-plane/providers/providers.js.map +1 -1
  524. package/dist/apps/control-plane/providers/worker-provider-factory.d.ts +2 -0
  525. package/dist/apps/control-plane/providers/worker-provider-factory.js +8 -1
  526. package/dist/apps/control-plane/providers/worker-provider-factory.js.map +1 -1
  527. package/dist/apps/control-plane/supervisor/artifact-stager.d.ts +5 -0
  528. package/dist/apps/control-plane/supervisor/artifact-stager.js +45 -0
  529. package/dist/apps/control-plane/supervisor/artifact-stager.js.map +1 -0
  530. package/dist/apps/control-plane/supervisor/build-wave-executor.d.ts +24 -1
  531. package/dist/apps/control-plane/supervisor/build-wave-executor.js +362 -150
  532. package/dist/apps/control-plane/supervisor/build-wave-executor.js.map +1 -1
  533. package/dist/apps/control-plane/supervisor/execution-enrollment-service.d.ts +41 -0
  534. package/dist/apps/control-plane/supervisor/execution-enrollment-service.js +311 -0
  535. package/dist/apps/control-plane/supervisor/execution-enrollment-service.js.map +1 -0
  536. package/dist/apps/control-plane/supervisor/organizer-enrollment-scheduler.d.ts +15 -0
  537. package/dist/apps/control-plane/supervisor/organizer-enrollment-scheduler.js +93 -0
  538. package/dist/apps/control-plane/supervisor/organizer-enrollment-scheduler.js.map +1 -0
  539. package/dist/apps/control-plane/supervisor/organizer-sidecar-service.d.ts +44 -0
  540. package/dist/apps/control-plane/supervisor/organizer-sidecar-service.js +311 -0
  541. package/dist/apps/control-plane/supervisor/organizer-sidecar-service.js.map +1 -0
  542. package/dist/apps/control-plane/supervisor/plan-conformance-scorer.js +2 -5
  543. package/dist/apps/control-plane/supervisor/plan-conformance-scorer.js.map +1 -1
  544. package/dist/apps/control-plane/supervisor/planner-phase.d.ts +3 -0
  545. package/dist/apps/control-plane/supervisor/planner-phase.js +70 -0
  546. package/dist/apps/control-plane/supervisor/planner-phase.js.map +1 -0
  547. package/dist/apps/control-plane/supervisor/planning-wave-executor.d.ts +42 -0
  548. package/dist/apps/control-plane/supervisor/planning-wave-executor.js +753 -55
  549. package/dist/apps/control-plane/supervisor/planning-wave-executor.js.map +1 -1
  550. package/dist/apps/control-plane/supervisor/prompt-bundle-loader.js +19 -1
  551. package/dist/apps/control-plane/supervisor/prompt-bundle-loader.js.map +1 -1
  552. package/dist/apps/control-plane/supervisor/qa-wave-executor.d.ts +21 -0
  553. package/dist/apps/control-plane/supervisor/qa-wave-executor.js +287 -156
  554. package/dist/apps/control-plane/supervisor/qa-wave-executor.js.map +1 -1
  555. package/dist/apps/control-plane/supervisor/run-coordinator.d.ts +30 -1
  556. package/dist/apps/control-plane/supervisor/run-coordinator.js +561 -17
  557. package/dist/apps/control-plane/supervisor/run-coordinator.js.map +1 -1
  558. package/dist/apps/control-plane/supervisor/runtime.d.ts +84 -0
  559. package/dist/apps/control-plane/supervisor/runtime.js +393 -3
  560. package/dist/apps/control-plane/supervisor/runtime.js.map +1 -1
  561. package/dist/apps/control-plane/supervisor/session-orchestrator.d.ts +54 -0
  562. package/dist/apps/control-plane/supervisor/session-orchestrator.js +176 -1
  563. package/dist/apps/control-plane/supervisor/session-orchestrator.js.map +1 -1
  564. package/dist/apps/control-plane/supervisor/types.d.ts +142 -1
  565. package/dist/apps/control-plane/supervisor/types.js.map +1 -1
  566. package/dist/apps/control-plane/supervisor/worker-decision-loop.d.ts +68 -2
  567. package/dist/apps/control-plane/supervisor/worker-decision-loop.js +723 -89
  568. package/dist/apps/control-plane/supervisor/worker-decision-loop.js.map +1 -1
  569. package/docs/core/ARCHITECTURE.md +227 -0
  570. package/docs/core/DECISIONS.md +94 -0
  571. package/docs/core/DOMAIN-LOGIC.md +60 -0
  572. package/docs/core/PATTERNS.md +201 -0
  573. package/docs/core/TROUBLESHOOTING.md +347 -0
  574. package/docs/core/intentgraph-dependencies.json +39860 -0
  575. package/docs/core/intentgraph.index.json +46580 -0
  576. package/docs/plans/2026-03-10-gate-failure-targeted-repair-design.md +224 -0
  577. package/docs/plans/2026-03-10-gate-failure-targeted-repair.md +1032 -0
  578. package/docs/superpowers/plans/2026-03-16-provider-cli-config.md +743 -0
  579. package/docs/superpowers/plans/2026-03-23-reconcile-divergence-fix.md +777 -0
  580. package/docs/superpowers/plans/2026-03-28-ordering-agent-implementation.md +1754 -0
  581. package/docs/superpowers/plans/2026-03-29-drop-zone-and-provider-optimization.md +1108 -0
  582. package/docs/superpowers/plans/2026-03-29-merge-target-feature-branch.md +685 -0
  583. package/docs/superpowers/plans/2026-03-29-organizer-sidecar-runtime-loop.md +1289 -0
  584. package/docs/superpowers/specs/2026-03-23-reconcile-divergence-fix-design.md +118 -0
  585. package/docs/superpowers/specs/2026-03-28-ordering-agent-spec-audit-design.md +50 -0
  586. package/docs/superpowers/specs/2026-03-29-drop-zone-and-provider-optimization-design.md +254 -0
  587. package/docs/superpowers/specs/2026-03-29-merge-target-feature-branch-design.md +152 -0
  588. package/docs/superpowers/specs/2026-03-29-organizer-sidecar-runtime-loop-design.md +225 -0
  589. package/package.json +3 -2
  590. package/packages/web-dashboard/package.json +2 -1
  591. package/packages/web-dashboard/src/app/analytics/page.tsx +36 -2
  592. package/packages/web-dashboard/src/app/api/actions/route.ts +274 -63
  593. package/packages/web-dashboard/src/app/api/actions/status/route.ts +35 -0
  594. package/packages/web-dashboard/src/app/api/analytics/provider/route.ts +18 -0
  595. package/packages/web-dashboard/src/app/api/collisions/approve/route.ts +58 -0
  596. package/packages/web-dashboard/src/app/api/features/[id]/checkpoint-diff/route.ts +36 -0
  597. package/packages/web-dashboard/src/app/api/features/[id]/checkpoints/route.ts +29 -0
  598. package/packages/web-dashboard/src/app/api/features/[id]/conflicts/abort/route.ts +29 -0
  599. package/packages/web-dashboard/src/app/api/features/[id]/conflicts/files/route.ts +30 -0
  600. package/packages/web-dashboard/src/app/api/features/[id]/conflicts/resolve/route.ts +51 -0
  601. package/packages/web-dashboard/src/app/api/features/[id]/conflicts/route.ts +75 -0
  602. package/packages/web-dashboard/src/app/api/features/[id]/diff/route.ts +16 -2
  603. package/packages/web-dashboard/src/app/api/features/[id]/files/route.ts +26 -0
  604. package/packages/web-dashboard/src/app/api/features/[id]/gate-history/route.ts +27 -0
  605. package/packages/web-dashboard/src/app/api/features/[id]/genealogy/route.ts +26 -0
  606. package/packages/web-dashboard/src/app/api/features/[id]/history/run/[runId]/route.ts +20 -0
  607. package/packages/web-dashboard/src/app/api/features/[id]/history/runs/route.ts +34 -0
  608. package/packages/web-dashboard/src/app/api/features/[id]/intake-workspace/route.ts +20 -0
  609. package/packages/web-dashboard/src/app/api/features/[id]/live-output/route.ts +74 -0
  610. package/packages/web-dashboard/src/app/api/features/[id]/plan/amend/route.ts +21 -0
  611. package/packages/web-dashboard/src/app/api/features/[id]/plan-progress/route.ts +20 -0
  612. package/packages/web-dashboard/src/app/api/features/[id]/planner-artifacts/[artifact]/route.ts +78 -0
  613. package/packages/web-dashboard/src/app/api/features/[id]/planner-lifecycle/route.ts +20 -0
  614. package/packages/web-dashboard/src/app/api/features/[id]/planning-workspace/route.ts +20 -0
  615. package/packages/web-dashboard/src/app/api/features/[id]/questions/[questionId]/answer/route.ts +27 -0
  616. package/packages/web-dashboard/src/app/api/features/[id]/questions/route.ts +18 -0
  617. package/packages/web-dashboard/src/app/api/features/[id]/review/route.ts +14 -7
  618. package/packages/web-dashboard/src/app/api/features/[id]/route.ts +57 -2
  619. package/packages/web-dashboard/src/app/api/features/[id]/spec/route.ts +30 -0
  620. package/packages/web-dashboard/src/app/api/features/[id]/triage/route.ts +83 -0
  621. package/packages/web-dashboard/src/app/api/features/[id]/worker-events/route.ts +40 -0
  622. package/packages/web-dashboard/src/app/api/launch/preview/route.ts +86 -0
  623. package/packages/web-dashboard/src/app/api/launch/submit/route.ts +180 -0
  624. package/packages/web-dashboard/src/app/api/mainline/status/route.ts +74 -0
  625. package/packages/web-dashboard/src/app/api/merge-queue/route.ts +13 -0
  626. package/packages/web-dashboard/src/app/api/policy/budget/route.ts +14 -0
  627. package/packages/web-dashboard/src/app/api/projects/route.ts +11 -7
  628. package/packages/web-dashboard/src/app/api/reconciler/queue/route.ts +47 -0
  629. package/packages/web-dashboard/src/app/api/run/route.ts +26 -2
  630. package/packages/web-dashboard/src/app/api/runtime/events/route.ts +227 -0
  631. package/packages/web-dashboard/src/app/api/runtime/operations/route.ts +269 -0
  632. package/packages/web-dashboard/src/app/api/runtime/questions/route.ts +11 -0
  633. package/packages/web-dashboard/src/app/api/runtime/runs/route.ts +80 -0
  634. package/packages/web-dashboard/src/app/api/status/route.ts +4 -2
  635. package/packages/web-dashboard/src/app/feature/[id]/page.tsx +32 -42
  636. package/packages/web-dashboard/src/app/globals.css +34 -3
  637. package/packages/web-dashboard/src/app/launch/page.tsx +362 -0
  638. package/packages/web-dashboard/src/app/layout.tsx +23 -1
  639. package/packages/web-dashboard/src/app/page.tsx +263 -272
  640. package/packages/web-dashboard/src/components/dashboard/attention-strip.tsx +52 -0
  641. package/packages/web-dashboard/src/components/dashboard/collision-approval-drawer.tsx +185 -0
  642. package/packages/web-dashboard/src/components/dashboard/command-center-header.tsx +102 -0
  643. package/packages/web-dashboard/src/components/dashboard/mainline-status-banner.tsx +84 -0
  644. package/packages/web-dashboard/src/components/dashboard/merged-archive.tsx +36 -0
  645. package/packages/web-dashboard/src/components/dashboard/prioritized-queues.tsx +98 -0
  646. package/packages/web-dashboard/src/components/dashboard/reconciler-queue-card.tsx +115 -0
  647. package/packages/web-dashboard/src/components/dashboard/secondary-diagnostics-rail.tsx +48 -0
  648. package/packages/web-dashboard/src/components/dashboard/task-filter-bar.tsx +74 -0
  649. package/packages/web-dashboard/src/components/dashboard/triage-drawer.tsx +455 -0
  650. package/packages/web-dashboard/src/components/diff-viewer.tsx +19 -3
  651. package/packages/web-dashboard/src/components/evidence-viewer.tsx +65 -51
  652. package/packages/web-dashboard/src/components/feature-card.tsx +90 -7
  653. package/packages/web-dashboard/src/components/feature-cost-panel.tsx +112 -11
  654. package/packages/web-dashboard/src/components/feature-list-view.tsx +25 -4
  655. package/packages/web-dashboard/src/components/features/runtime-inspector/EventsTimelineView.tsx +260 -0
  656. package/packages/web-dashboard/src/components/features/runtime-inspector/OperationsListView.tsx +172 -0
  657. package/packages/web-dashboard/src/components/features/runtime-inspector/RuntimeInspectorPanel.tsx +896 -0
  658. package/packages/web-dashboard/src/components/filter-bar.tsx +7 -39
  659. package/packages/web-dashboard/src/components/focus/ActionableRiskList.tsx +46 -0
  660. package/packages/web-dashboard/src/components/focus/AgentRolePerformanceCard.tsx +200 -0
  661. package/packages/web-dashboard/src/components/focus/BlockedGuidanceBanner.tsx +149 -0
  662. package/packages/web-dashboard/src/components/focus/CheckpointInspector.tsx +123 -0
  663. package/packages/web-dashboard/src/components/focus/CheckpointRail.tsx +118 -0
  664. package/packages/web-dashboard/src/components/focus/CheckpointScrubber.tsx +249 -0
  665. package/packages/web-dashboard/src/components/focus/CollisionApprovalBanner.tsx +192 -0
  666. package/packages/web-dashboard/src/components/focus/CollisionRadar.tsx +136 -0
  667. package/packages/web-dashboard/src/components/focus/ConflictStatusCard.tsx +52 -0
  668. package/packages/web-dashboard/src/components/focus/ContextSidebar.tsx +108 -0
  669. package/packages/web-dashboard/src/components/focus/DiagnosisPanel.tsx +68 -0
  670. package/packages/web-dashboard/src/components/focus/FeatureDecisionBanner.tsx +68 -0
  671. package/packages/web-dashboard/src/components/focus/FeatureQuestionAnswerPanel.tsx +167 -0
  672. package/packages/web-dashboard/src/components/focus/FocusHeader.tsx +54 -0
  673. package/packages/web-dashboard/src/components/focus/FocusLayout.tsx +283 -0
  674. package/packages/web-dashboard/src/components/focus/GateFlakinessSummary.tsx +144 -0
  675. package/packages/web-dashboard/src/components/focus/GenealogyTree.tsx +34 -0
  676. package/packages/web-dashboard/src/components/focus/HeroBlock.tsx +67 -0
  677. package/packages/web-dashboard/src/components/focus/LiveAgentConsole.tsx +277 -0
  678. package/packages/web-dashboard/src/components/focus/MergeQueueCard.tsx +78 -0
  679. package/packages/web-dashboard/src/components/focus/OperationalSummaryCard.tsx +227 -0
  680. package/packages/web-dashboard/src/components/focus/PinnedActions.tsx +96 -0
  681. package/packages/web-dashboard/src/components/focus/PlanAmendmentPanel.tsx +250 -0
  682. package/packages/web-dashboard/src/components/focus/PlanProgressPanel.tsx +133 -0
  683. package/packages/web-dashboard/src/components/focus/PlannerArtifactViewer.tsx +158 -0
  684. package/packages/web-dashboard/src/components/focus/PlannerLifecycleHeader.tsx +141 -0
  685. package/packages/web-dashboard/src/components/focus/ProgressSnapshotCard.tsx +113 -0
  686. package/packages/web-dashboard/src/components/focus/RecentMaterialChanges.tsx +69 -0
  687. package/packages/web-dashboard/src/components/focus/RoleLogViewer.tsx +436 -0
  688. package/packages/web-dashboard/src/components/focus/RunHistoryBrowser.tsx +62 -0
  689. package/packages/web-dashboard/src/components/focus/SpecViewer.tsx +172 -0
  690. package/packages/web-dashboard/src/components/focus/TabBar.tsx +33 -0
  691. package/packages/web-dashboard/src/components/focus/UsageBurnChart.tsx +212 -0
  692. package/packages/web-dashboard/src/components/focus/VerificationSummaryCard.tsx +122 -0
  693. package/packages/web-dashboard/src/components/focus/tabs/ChangesTab.tsx +325 -0
  694. package/packages/web-dashboard/src/components/focus/tabs/ConflictsTab.tsx +395 -0
  695. package/packages/web-dashboard/src/components/focus/tabs/GatesQaTab.tsx +38 -0
  696. package/packages/web-dashboard/src/components/focus/tabs/HistoryTab.tsx +213 -0
  697. package/packages/web-dashboard/src/components/focus/tabs/IntakeTab.tsx +429 -0
  698. package/packages/web-dashboard/src/components/focus/tabs/OverviewTab.tsx +217 -0
  699. package/packages/web-dashboard/src/components/focus/tabs/PlanningTab.tsx +390 -0
  700. package/packages/web-dashboard/src/components/focus/tabs/ReviewTab.tsx +497 -0
  701. package/packages/web-dashboard/src/components/focus/tabs/RuntimeTab.tsx +213 -0
  702. package/packages/web-dashboard/src/components/focus/tabs/TranscriptTab.tsx +315 -0
  703. package/packages/web-dashboard/src/components/gate-results.tsx +2 -2
  704. package/packages/web-dashboard/src/components/human-input-panel.tsx +33 -57
  705. package/packages/web-dashboard/src/components/kanban-board.tsx +4 -0
  706. package/packages/web-dashboard/src/components/launch/launch-draft-card.tsx +154 -0
  707. package/packages/web-dashboard/src/components/plan-viewer.tsx +147 -69
  708. package/packages/web-dashboard/src/components/quick-launch-panel.tsx +20 -47
  709. package/packages/web-dashboard/src/components/summary-bar.tsx +30 -76
  710. package/packages/web-dashboard/src/lib/aop-client.ts +2484 -36
  711. package/packages/web-dashboard/src/lib/blocked-state-guidance.ts +475 -0
  712. package/packages/web-dashboard/src/lib/collision-radar.ts +136 -0
  713. package/packages/web-dashboard/src/lib/dashboard-action-states.ts +204 -0
  714. package/packages/web-dashboard/src/lib/dashboard-runtime-client.ts +439 -0
  715. package/packages/web-dashboard/src/lib/dashboard-utils.ts +179 -18
  716. package/packages/web-dashboard/src/lib/drop-zone-utils.ts +92 -0
  717. package/packages/web-dashboard/src/lib/focus-detail-derivations.ts +958 -0
  718. package/packages/web-dashboard/src/lib/focus-view.ts +300 -0
  719. package/packages/web-dashboard/src/lib/health-diagnosis.ts +356 -0
  720. package/packages/web-dashboard/src/lib/launch-contracts.ts +77 -0
  721. package/packages/web-dashboard/src/lib/launch-markdown.ts +103 -0
  722. package/packages/web-dashboard/src/lib/launch-page-preview.ts +89 -0
  723. package/packages/web-dashboard/src/lib/live-feed.ts +1 -1
  724. package/packages/web-dashboard/src/lib/multi-project-config.ts +33 -0
  725. package/packages/web-dashboard/src/lib/orchestrator-tools.ts +881 -60
  726. package/packages/web-dashboard/src/lib/planner-workspace.ts +1285 -0
  727. package/packages/web-dashboard/src/lib/review-contracts.ts +5 -3
  728. package/packages/web-dashboard/src/lib/runtime-files.ts +285 -0
  729. package/packages/web-dashboard/src/lib/tool-catalog.ts +51 -0
  730. package/packages/web-dashboard/src/lib/types.ts +731 -3
  731. package/packages/web-dashboard/src/lib/usage-burn.ts +175 -0
  732. package/packages/web-dashboard/src/lib/worktree-diff.ts +128 -0
  733. package/packages/web-dashboard/src/styles/dashboard.module.css +1742 -459
  734. package/packages/web-dashboard/test/api/actions/route.spec.ts +675 -0
  735. package/packages/web-dashboard/test/api/features/diff.route.spec.ts +57 -0
  736. package/packages/web-dashboard/test/api/features/feature.route.spec.ts +99 -0
  737. package/packages/web-dashboard/test/api/features/live-output.route.spec.ts +123 -0
  738. package/packages/web-dashboard/test/api/features/plan-amend.route.spec.ts +95 -0
  739. package/packages/web-dashboard/test/api/features/planner-workspaces.route.spec.ts +162 -0
  740. package/packages/web-dashboard/test/api/features/question-answer.route.spec.ts +99 -0
  741. package/packages/web-dashboard/test/api/features/triage.route.spec.ts +195 -0
  742. package/packages/web-dashboard/test/api/launch/preview.route.spec.ts +149 -0
  743. package/packages/web-dashboard/test/api/launch/submit.route.spec.ts +382 -0
  744. package/packages/web-dashboard/test/api/runtime/events/route.spec.ts +164 -0
  745. package/packages/web-dashboard/test/api/runtime/operations/route.spec.ts +156 -0
  746. package/packages/web-dashboard/test/api/runtime/runs/route.spec.ts +112 -0
  747. package/packages/web-dashboard/test/components/changes-tab.spec.tsx +76 -0
  748. package/packages/web-dashboard/test/components/command-center-root.spec.tsx +87 -0
  749. package/packages/web-dashboard/test/components/diagnosis-panel.spec.tsx +59 -0
  750. package/packages/web-dashboard/test/components/feature-card.spec.tsx +45 -0
  751. package/packages/web-dashboard/test/components/focus-layout.spec.tsx +299 -0
  752. package/packages/web-dashboard/test/components/gate-results.spec.tsx +39 -0
  753. package/packages/web-dashboard/test/components/gates-qa-tab.spec.tsx +118 -0
  754. package/packages/web-dashboard/test/components/human-input-panel.spec.tsx +54 -0
  755. package/packages/web-dashboard/test/components/intake-tab.spec.tsx +210 -0
  756. package/packages/web-dashboard/test/components/kanban-board.spec.tsx +35 -0
  757. package/packages/web-dashboard/test/components/launch-draft-card.spec.tsx +114 -0
  758. package/packages/web-dashboard/test/components/launch-page.spec.tsx +79 -0
  759. package/packages/web-dashboard/test/components/overview-tab.spec.tsx +236 -0
  760. package/packages/web-dashboard/test/components/planning-tab.spec.tsx +202 -0
  761. package/packages/web-dashboard/test/components/review-tab.spec.tsx +169 -0
  762. package/packages/web-dashboard/test/components/role-log-viewer.spec.ts +42 -0
  763. package/packages/web-dashboard/test/components/runtime-inspector.spec.tsx +22 -0
  764. package/packages/web-dashboard/test/components/runtime-tab.spec.tsx +133 -0
  765. package/packages/web-dashboard/test/components/transcript-tab.spec.tsx +46 -0
  766. package/packages/web-dashboard/test/components/triage-drawer.spec.tsx +159 -0
  767. package/packages/web-dashboard/test/lib/aop-client.spec.ts +235 -0
  768. package/packages/web-dashboard/test/lib/dashboard-runtime-client.spec.ts +144 -0
  769. package/packages/web-dashboard/test/lib/focus-detail-derivations.spec.ts +314 -0
  770. package/packages/web-dashboard/test/lib/focus-view.spec.ts +248 -0
  771. package/packages/web-dashboard/test/lib/health-diagnosis.spec.ts +277 -0
  772. package/packages/web-dashboard/test/lib/launch-markdown.spec.ts +36 -0
  773. package/packages/web-dashboard/test/lib/multi-project-config.spec.ts +54 -0
  774. package/packages/web-dashboard/test/lib/orchestrator-tools.spec.ts +352 -0
  775. package/packages/web-dashboard/test/lib/planner-workspace.spec.ts +289 -0
  776. package/packages/web-dashboard/test/lib/worktree-diff.spec.ts +119 -0
  777. package/packages/web-dashboard/vitest.config.ts +2 -0
  778. package/spec-files/completed/agentic_orchestrator_add_feature_to_active_execution_spec.md +557 -0
  779. package/spec-files/completed/agentic_orchestrator_dashboard_command_center_redesign_spec.md +1147 -0
  780. package/spec-files/completed/agentic_orchestrator_execution_mode_spec.md +18 -16
  781. package/spec-files/completed/agentic_orchestrator_feature_focus_view_track_a_spec.md +672 -0
  782. package/spec-files/completed/agentic_orchestrator_feature_focus_view_track_b_spec.md +794 -0
  783. package/spec-files/completed/agentic_orchestrator_feature_focus_view_track_c_decision_centric_remediation_spec.md +1037 -0
  784. package/spec-files/completed/agentic_orchestrator_feature_focus_view_ux_redesign_spec.md +1432 -0
  785. package/spec-files/completed/agentic_orchestrator_focus_plan_tab_intake_planning_workspace_spec.md +921 -0
  786. package/spec-files/completed/agentic_orchestrator_intentional_collision_override_spec.md +584 -0
  787. package/spec-files/completed/agentic_orchestrator_interactive_planning_intake_and_requirements_verification_spec.md +1185 -0
  788. package/spec-files/completed/agentic_orchestrator_reactive_execution_enrollment_spec.md +864 -0
  789. package/spec-files/{outstanding → completed}/agentic_orchestrator_runtime_inspection_spec.md +92 -19
  790. package/spec-files/completed/agentic_orchestrator_scope_aware_run_lease_spec.md +408 -0
  791. package/spec-files/completed/git-reconciliation-engine.md +827 -0
  792. package/spec-files/outstanding/agentic_orchestrator_dashboard_quick_launch_and_control_surface_spec.md +331 -0
  793. package/spec-files/outstanding/agentic_orchestrator_enterprise_governance_dashboard_spec.md +16 -6
  794. package/spec-files/outstanding/agentic_orchestrator_evidence_integrity_doctor_spec.md +60 -9
  795. package/spec-files/outstanding/agentic_orchestrator_focus_plan_tab_execution_contract_workspace_spec.md +616 -0
  796. package/spec-files/outstanding/agentic_orchestrator_headless_standby_dashboard_runtime_spec.md +310 -0
  797. package/spec-files/outstanding/agentic_orchestrator_human_input_interaction_protocol_spec.md +175 -72
  798. package/spec-files/outstanding/agentic_orchestrator_interactive_rename_cleanup_spec.md +197 -0
  799. package/spec-files/outstanding/agentic_orchestrator_interactive_resume_and_reconciliation_disposition_spec.md +412 -0
  800. package/spec-files/outstanding/agentic_orchestrator_knowledge_canary_spec.md +166 -137
  801. package/spec-files/outstanding/agentic_orchestrator_observability_replay_spec.md +3 -3
  802. package/spec-files/outstanding/agentic_orchestrator_phase_specific_agent_profiles_and_token_telemetry_spec.md +303 -0
  803. package/spec-files/outstanding/agentic_orchestrator_planning_review_quality_spec.md +18 -5
  804. package/spec-files/outstanding/agentic_orchestrator_policy_stratification_spec.md +225 -0
  805. package/spec-files/outstanding/agentic_orchestrator_quality_adoption_execution_spec.md +77 -50
  806. package/spec-files/outstanding/agentic_orchestrator_ready_to_merge_branch_handoff_spec.md +724 -0
  807. package/spec-files/outstanding/agentic_orchestrator_remove_deterministic_mode_spec.md +263 -0
  808. package/spec-files/outstanding/agentic_orchestrator_request_more_context_and_dashboard_human_input_spec.md +456 -0
  809. package/spec-files/outstanding/agentic_orchestrator_spec_coverage_and_reconciliation_enforcement_spec.md +1411 -0
  810. package/spec-files/outstanding/agentic_orchestrator_spec_ordering_agent_spec.md +370 -0
  811. package/spec-files/outstanding/shadow_workspace_implementation_spec.md +1 -1
  812. package/spec-files/progress.md +2026 -120
  813. package/specs/001-runtime-inspection/checklists/requirements.md +35 -0
  814. package/specs/001-runtime-inspection/design.md +338 -0
  815. package/specs/001-runtime-inspection/spec.md +95 -0
  816. package/specs/002-scope-aware-lease/checklists/requirements.md +35 -0
  817. package/specs/002-scope-aware-lease/contracts/lease-registry.schema.json +101 -0
  818. package/specs/002-scope-aware-lease/data-model.md +236 -0
  819. package/specs/002-scope-aware-lease/plan.md +766 -0
  820. package/specs/002-scope-aware-lease/quickstart.md +150 -0
  821. package/specs/002-scope-aware-lease/research.md +135 -0
  822. package/specs/002-scope-aware-lease/spec.md +128 -0
  823. package/specs/002-scope-aware-lease/tasks.md +767 -0
  824. package/tsconfig.json +1 -1
  825. package/vitest.config.ts +28 -0
  826. package/ARCHITECTURE_ADHERENCE_ANALYSIS.md +0 -871
  827. package/packages/web-dashboard/next-env.d.ts +0 -6
  828. package/packages/web-dashboard/src/components/detail-panel.tsx +0 -1124
  829. package/packages/web-dashboard/src/components/review-workspace.tsx +0 -1162
  830. /package/spec-files/{outstanding → completed}/agentic_orchestrator_artifact_database_publishing_spec.md +0 -0
  831. /package/spec-files/{outstanding → completed}/agentic_orchestrator_cli_shell_tab_completion_spec.md +0 -0
  832. /package/spec-files/{outstanding → completed}/agentic_orchestrator_dashboard_diff_and_agent_console_spec.md +0 -0
  833. /package/spec-files/{outstanding → completed}/agentic_orchestrator_performance_improvements_spec.md +0 -0
  834. /package/spec-files/{outstanding → completed}/agentic_orchestrator_persistent_worker_runtime_spec.md +0 -0
  835. /package/spec-files/{outstanding → completed}/agentic_orchestrator_provider_auth_bootstrap_spec.md +0 -0
  836. /package/spec-files/{outstanding → completed}/agentic_orchestrator_real_worker_provider_execution_spec.md +0 -0
@@ -0,0 +1,1185 @@
1
+ # Feature Spec: Interactive Planning Intake and Requirements Verification
2
+
3
+ > **Purpose of this document**: Redesign the planner mental model so raw `spec.md` is first normalized into a verified requirements contract through an explicit intake phase before normal execution planning begins.
4
+
5
+ **Version:** 1.1
6
+ **Date:** 2026-03-17
7
+ **Status:** Draft
8
+ **Roadmap Mapping:** M59
9
+
10
+ ---
11
+
12
+ ## 0. Standards and Dependencies
13
+
14
+ ### 0.1 Required Standards
15
+
16
+ All implementation MUST preserve:
17
+
18
+ - deterministic orchestration state transitions and normalized error envelopes
19
+ - MCP/in-process tool parity
20
+ - atomic artifact mutation under `.aop/**`
21
+ - optimistic concurrency for `plan.json`
22
+ - compatibility with the shared M43 human-input protocol baseline
23
+ - platform-agnostic requirement and traceability semantics
24
+
25
+ ### 0.2 Required Inputs
26
+
27
+ Implementing agents MUST read:
28
+
29
+ - `apps/control-plane/src/core/constants.ts`
30
+ - `apps/control-plane/src/core/kernel.ts`
31
+ - `apps/control-plane/src/application/services/feature-lifecycle-service.ts`
32
+ - `apps/control-plane/src/application/services/plan-service.ts`
33
+ - `apps/control-plane/src/application/services/question-service.ts`
34
+ - `apps/control-plane/src/supervisor/planning-wave-executor.ts`
35
+ - `apps/control-plane/src/supervisor/worker-decision-loop.ts`
36
+ - `apps/control-plane/src/supervisor/runtime.ts`
37
+ - `agentic/orchestrator/schemas/state.schema.json`
38
+ - `agentic/orchestrator/schemas/policy.schema.json`
39
+ - `agentic/orchestrator/prompts/planner.system.md`
40
+ - `config/agentic/orchestrator/prompts/planner.system.md`
41
+ - `spec-files/outstanding/agentic_orchestrator_human_input_interaction_protocol_spec.md`
42
+ - `spec-files/outstanding/agentic_orchestrator_spec_coverage_and_reconciliation_enforcement_spec.md`
43
+
44
+ ### 0.3 Scope
45
+
46
+ This spec implements:
47
+
48
+ - a new explicit `intake` phase before execution planning
49
+ - planner role split into:
50
+ - requirements normalization during intake
51
+ - execution planning after verified requirements exist
52
+ - bootstrap manifest proposal generation from arbitrary `spec.md`
53
+ - verified manifest promotion before builder/QA are allowed to run
54
+ - targeted user interaction during intake using existing question protocol
55
+ - artifact and policy changes needed to keep builder, QA, and later planner reconciliation anchored to the same verified contract
56
+ - intake-specific UI and payload extensions on top of the M43 baseline
57
+
58
+ Out of scope:
59
+
60
+ - full product-discovery conversations
61
+ - arbitrary free-form chat between operator and agents
62
+ - platform-specific semantic verification
63
+ - replacing or re-specifying the generic question protocol owned by M43
64
+
65
+ ### 0.4 Dependency Boundary
66
+
67
+ M43 (`agentic_orchestrator_human_input_interaction_protocol_spec.md`) is the prerequisite and authoritative baseline for:
68
+
69
+ - `awaiting_input`
70
+ - `questions.json`
71
+ - `feature.question_create`
72
+ - `feature.question_list`
73
+ - `feature.question_answer`
74
+ - generic question-ready visibility rules
75
+ - shared dashboard/CLI answer transport
76
+
77
+ This spec defines only the intake-specific extension layer:
78
+
79
+ - `intake` lifecycle state
80
+ - manifest artifacts
81
+ - intake review/promotion flow
82
+ - intake-specific metadata and UI context
83
+ - intake-only gating of planning/build/QA/reconciliation
84
+
85
+ ---
86
+
87
+ ## 1. Problem Statement
88
+
89
+ The current planner mental model assumes that one planning phase can:
90
+
91
+ 1. interpret arbitrary raw `spec.md`
92
+ 2. infer the intended requirement set
93
+ 3. transform that inference into a trustworthy plan
94
+ 4. feed builder/QA/reconciliation with a stable target
95
+
96
+ That is too much responsibility for one phase.
97
+
98
+ ### 1.1 Current Failure Mode
99
+
100
+ When the planner reads only raw spec prose:
101
+
102
+ - ambiguity in the spec leaks directly into the plan
103
+ - missing requirements are not surfaced early enough
104
+ - later builder and QA work may be “correct against plan” but still incomplete against user intent
105
+ - post-QA reconciliation is forced to reinterpret raw spec again, which reintroduces nondeterminism
106
+
107
+ ### 1.2 Root Cause
108
+
109
+ The system lacks a first-class contract-formation step between:
110
+
111
+ - **raw user intent**
112
+
113
+ and:
114
+
115
+ - **deterministic execution**
116
+
117
+ That gap cannot be solved by better planning prompts alone.
118
+
119
+ ---
120
+
121
+ ## 2. Target Mental Model
122
+
123
+ The planner is not a single-stage “plan writer.”
124
+
125
+ It is a two-stage role:
126
+
127
+ 1. **Intake Planner**
128
+ - normalize raw spec into explicit requirement artifacts
129
+ - identify ambiguity
130
+ - ask targeted questions when needed
131
+ - produce a verified manifest contract
132
+ 2. **Execution Planner**
133
+ - create `plan.json` against that verified manifest
134
+ - later reconcile implementation and verification progress against that same manifest
135
+
136
+ ### 2.1 New Deterministic Boundary
137
+
138
+ The deterministic execution loop must begin only after intake completes.
139
+
140
+ That means:
141
+
142
+ - arbitrary prose may drive a bootstrap proposal
143
+ - only a verified manifest may drive enforced planning, building, QA, and later reconciliation
144
+
145
+ ### 2.2 Human Interaction Principle
146
+
147
+ Human interaction belongs at the intake boundary when the system is still uncertain about requirements, not later when builder or QA are already executing against an unstable contract.
148
+
149
+ Questions during intake should be:
150
+
151
+ - narrow
152
+ - requirement-forming
153
+ - blocking only when ambiguity materially affects the verified manifest
154
+
155
+ ---
156
+
157
+ ## 3. Lifecycle Redesign
158
+
159
+ ## 3.1 New Feature Status
160
+
161
+ Add explicit feature status:
162
+
163
+ - `intake`
164
+
165
+ Updated lifecycle:
166
+
167
+ ```text
168
+ intake -> planning -> building -> qa -> ready_to_merge -> merged
169
+ ```
170
+
171
+ Cross-cutting pause states remain:
172
+
173
+ - `awaiting_input`
174
+ - `blocked`
175
+ - `failed`
176
+
177
+ ### 3.1.1 Meaning of `intake`
178
+
179
+ `intake` means:
180
+
181
+ - the feature has a canonical `spec.md`
182
+ - execution planning has not started yet
183
+ - the runtime is forming or verifying the requirement contract
184
+ - builder and QA must not run
185
+
186
+ ### 3.1.2 Transition Rules
187
+
188
+ - feature creation starts in `intake`
189
+ - `intake -> planning` only when a verified manifest exists
190
+ - `awaiting_input -> intake` resumes if intake questions were answered
191
+ - `planning -> intake` is forbidden unless a future explicit re-intake flow is added
192
+
193
+ ---
194
+
195
+ ## 4. Artifact Model
196
+
197
+ ## 4.1 Bootstrap Proposal Artifact
198
+
199
+ Location:
200
+
201
+ - `.aop/features/<feature_id>/spec.manifest.bootstrap.json`
202
+
203
+ Purpose:
204
+
205
+ - infer candidate obligations from raw `spec.md`
206
+ - non-authoritative
207
+ - used by intake planner as input
208
+
209
+ ## 4.2 Verified Manifest Artifact
210
+
211
+ Location:
212
+
213
+ - `.aop/features/<feature_id>/spec.manifest.verified.json`
214
+
215
+ Purpose:
216
+
217
+ - authoritative obligation contract
218
+ - required before `planning`
219
+ - used by:
220
+ - execution planner
221
+ - builder
222
+ - QA
223
+ - post-QA reconciliation
224
+
225
+ ## 4.3 Intake Review Artifact
226
+
227
+ Location:
228
+
229
+ - `.aop/features/<feature_id>/intake.review.json`
230
+
231
+ Purpose:
232
+
233
+ - record intake decisions and unresolved ambiguity
234
+
235
+ Suggested shape:
236
+
237
+ ```json
238
+ {
239
+ "feature_id": "example_feature",
240
+ "version": 1,
241
+ "status": "proposed",
242
+ "questions_open": 1,
243
+ "questions_resolved": 2,
244
+ "ambiguities": [
245
+ {
246
+ "id": "AMB-001",
247
+ "summary": "Unclear whether merge queue view is required for all phases or only non-merged phases",
248
+ "status": "open"
249
+ }
250
+ ],
251
+ "promotion_basis": null
252
+ }
253
+ ```
254
+
255
+ ## 4.4 Plan Artifact Dependency
256
+
257
+ `plan.json` may not be accepted unless:
258
+
259
+ - a verified manifest exists
260
+ - `plan_trace` references obligation IDs from that verified manifest
261
+
262
+ ---
263
+
264
+ ## 5. Intake Phase Flow
265
+
266
+ ## 5.1 End-to-End Flow
267
+
268
+ 1. user provides `spec.md`
269
+ 2. feature is created in `intake`
270
+ 3. system generates `spec.manifest.bootstrap.json`
271
+ 4. intake planner reviews:
272
+ - raw `spec.md`
273
+ - bootstrap manifest
274
+ - existing intake review artifact, if any
275
+ 5. intake planner decides:
276
+ - manifest is good enough to verify
277
+ - manifest needs targeted human clarification
278
+ - manifest needs revision without human clarification
279
+ 6. if questions are needed:
280
+ - planner emits targeted intake questions
281
+ - feature enters `awaiting_input` with `resume_status=intake`
282
+ 7. once questions are answered:
283
+ - intake planner updates proposal
284
+ - system promotes to verified manifest when criteria are met
285
+ 8. feature transitions `intake -> planning`
286
+ 9. execution planner produces `plan.json`
287
+
288
+ ## 5.2 Intake Planner Responsibilities
289
+
290
+ During intake, planner must:
291
+
292
+ - inspect the bootstrap manifest proposal
293
+ - identify missing, conflicting, or ambiguous obligations
294
+ - ask only requirement-forming questions
295
+ - submit a verified-manifest proposal or revised bootstrap guidance
296
+ - avoid execution-level planning until the manifest is verified
297
+
298
+ ## 5.3 What Intake Questions Look Like
299
+
300
+ Examples:
301
+
302
+ - “Is `MergeQueueCard` required for all non-merged phases or only `ready_to_merge`?”
303
+ - “Should obligation `OBL-004` be treated as in-scope for this feature or deferred to a follow-on track?”
304
+ - “Is the requirement to expose `/api/merge-queue` mandatory or optional if queue length is 1?”
305
+
306
+ Bad intake questions:
307
+
308
+ - “How should I implement this?”
309
+ - “What React hooks should I use?”
310
+ - “Do you want me to write tests?”
311
+
312
+ Those belong to planning/build/QA, not intake.
313
+
314
+ ---
315
+
316
+ ## 6. System Ownership and Runtime Responsibilities
317
+
318
+ ## 6.1 No New Long-Lived Agent Type Required
319
+
320
+ This feature does not require a new persistent `PromptIntakeAgent`.
321
+
322
+ Default architecture:
323
+
324
+ - reuse planner role
325
+ - add an explicit intake subphase / prompt bundle
326
+ - keep intake runtime system-owned
327
+
328
+ That means the planner role has two modes:
329
+
330
+ - `planner:intake`
331
+ - `planner:execution`
332
+
333
+ ## 6.2 Runtime Ownership
334
+
335
+ The runtime must explicitly own:
336
+
337
+ - feature creation in `intake`
338
+ - bootstrap manifest generation
339
+ - intake context assembly
340
+ - question creation and answer routing
341
+ - verified-manifest promotion
342
+ - transition to `planning` only after verification
343
+
344
+ ## 6.3 Preferred Invocation Points
345
+
346
+ 1. feature initialization
347
+ 2. first planner context load for an `intake` feature
348
+ 3. answer-resume flow for intake questions
349
+
350
+ Builder and QA executors must skip features in:
351
+
352
+ - `intake`
353
+ - `awaiting_input` where `resume_status=intake`
354
+
355
+ ---
356
+
357
+ ## 7. Contracts and Tools
358
+
359
+ ## 7.1 New Planner Output Type
360
+
361
+ Add planner output type:
362
+
363
+ - `INTAKE_SUBMISSION`
364
+
365
+ Example:
366
+
367
+ ```json
368
+ {
369
+ "type": "INTAKE_SUBMISSION",
370
+ "intake_submission": {
371
+ "verified_manifest": {
372
+ "feature_id": "example_feature",
373
+ "manifest_version": 1,
374
+ "artifact_type": "verified",
375
+ "verification_basis": "questions_resolved",
376
+ "obligations": []
377
+ },
378
+ "open_ambiguities": [],
379
+ "resolved_ambiguities": [],
380
+ "requires_user_input": false
381
+ }
382
+ }
383
+ ```
384
+
385
+ ## 7.2 Alternative Planner Request Path
386
+
387
+ The intake planner may also emit:
388
+
389
+ ```json
390
+ {
391
+ "type": "REQUEST",
392
+ "request": {
393
+ "action": "ask_user_input",
394
+ "blocking": true,
395
+ "prompt": "Clarify whether OBL-004 is required in this feature or deferred.",
396
+ "details": {
397
+ "ambiguity_id": "AMB-004",
398
+ "obligation_id": "OBL-004"
399
+ }
400
+ }
401
+ }
402
+ ```
403
+
404
+ This must use the existing question protocol.
405
+
406
+ No new generic request action is introduced here. M59 reuses the M43 `ask_user_input` contract exactly.
407
+
408
+ ## 7.3 Tool Surface
409
+
410
+ Add or extend tools:
411
+
412
+ - `feature.intake_get`
413
+ - read bootstrap manifest, verified manifest, intake review state, ambiguity summary
414
+ - `feature.intake_submit`
415
+ - persist verified manifest and intake review result
416
+ - existing:
417
+ - `feature.question_create`
418
+ - `feature.question_answer`
419
+ - `feature.get_context`
420
+
421
+ If the team prefers not to add new explicit tools, `feature.get_context` and planner output parsing may be extended instead. But the intake artifact persistence boundary must still be explicit.
422
+
423
+ ## 7.4 Intake Question Readiness Contract
424
+
425
+ M43 owns the generic ready-state contract for persisted questions.
426
+
427
+ M59 adds one intake-specific predicate:
428
+
429
+ ```text
430
+ intake_question_ready =
431
+ generic_question_ready_from_M43
432
+ AND question.resume_status == intake
433
+ ```
434
+
435
+ Only after that predicate holds may the UI and CLI treat the question as actionable intake work.
436
+
437
+ ### 7.4.1 Non-Ready States
438
+
439
+ The following do **not** count as “ready with a question”:
440
+
441
+ - planner mentioned uncertainty in a NOTE
442
+ - planner emitted malformed or invalid question output
443
+ - planner emitted a REQUEST but tool execution failed
444
+ - question persistence failed
445
+ - feature did not transition to `awaiting_input`
446
+
447
+ In those cases:
448
+
449
+ - the question must not appear in dashboard or CLI question lists
450
+ - the runtime should log a planner/runtime error instead
451
+
452
+ ### 7.4.2 Ready-State Source of Truth
453
+
454
+ Operator-visible intake readiness is still determined from persisted artifacts and feature state, never from transient model output.
455
+
456
+ For intake, the distinguishing persisted predicate is:
457
+
458
+ ```text
459
+ question.resume_status == intake
460
+ ```
461
+
462
+ This ensures frontend and CLI remain consistent even if the planner runtime disconnects after asking the question.
463
+
464
+ ## 7.5 API Payload Contracts
465
+
466
+ This feature must define the exact payload additions the UI consumes for intake interactions.
467
+
468
+ ### 7.5.1 `FeatureQuestion` Intake Extensions
469
+
470
+ Existing question payloads must be extended, not replaced.
471
+
472
+ Add optional fields:
473
+
474
+ ```ts
475
+ interface FeatureQuestion {
476
+ ambiguity_id?: string | null;
477
+ obligation_ids?: string[];
478
+ intake_context?: {
479
+ intake_status: 'in_progress' | 'awaiting_input' | 'verified';
480
+ bootstrap_manifest_version: number | null;
481
+ verified_manifest_version: number | null;
482
+ promotion_basis: string | null;
483
+ } | null;
484
+ }
485
+ ```
486
+
487
+ Normative behavior:
488
+
489
+ - these fields are present for intake-originated planner questions
490
+ - they may be absent for builder/QA questions
491
+
492
+ ### 7.5.2 `FeatureSummary` Intake Extensions
493
+
494
+ M43 already owns the baseline human-input summary fields such as:
495
+
496
+ - `open_question_count`
497
+ - `awaiting_since`
498
+ - `requested_by_role`
499
+ - `resume_status`
500
+
501
+ M59 adds only the intake-specific summary surface needed to classify intake blockers without opening the feature.
502
+
503
+ Add or guarantee:
504
+
505
+ ```ts
506
+ interface FeatureSummary {
507
+ status: string;
508
+ phase?:
509
+ | 'intake'
510
+ | 'planning'
511
+ | 'building'
512
+ | 'qa'
513
+ | 'ready_to_merge'
514
+ | 'merged'
515
+ | 'blocked'
516
+ | 'awaiting_input'
517
+ | 'unknown';
518
+ open_question_count?: number;
519
+ awaiting_since?: string | null;
520
+ requested_by_role?: string | null;
521
+ resume_status?: string | null;
522
+ intake_status?: 'not_started' | 'in_progress' | 'awaiting_input' | 'verified' | null;
523
+ bootstrap_manifest_version?: number | null;
524
+ verified_manifest_version?: number | null;
525
+ }
526
+ ```
527
+
528
+ ### 7.5.3 `FeatureTriageDetail` Intake Extensions
529
+
530
+ The triage drawer must receive explicit intake detail, not infer it from generic questions alone.
531
+
532
+ Extend payload:
533
+
534
+ ```ts
535
+ interface FeatureTriageDetail {
536
+ open_questions?: FeatureQuestion[];
537
+ intake?: {
538
+ status: 'not_started' | 'in_progress' | 'awaiting_input' | 'verified';
539
+ bootstrap_manifest_version: number | null;
540
+ verified_manifest_version: number | null;
541
+ open_ambiguity_count: number;
542
+ promotion_basis: string | null;
543
+ } | null;
544
+ }
545
+ ```
546
+
547
+ ### 7.5.4 Dashboard Root Status Payload
548
+
549
+ `DashboardStatusPayload.pending_questions.items` must include intake questions with the same extended `FeatureQuestion` shape, including:
550
+
551
+ - `phase = intake`
552
+ - `resume_status = intake`
553
+ - `ambiguity_id` when present
554
+ - `obligation_ids` when present
555
+
556
+ ### 7.5.5 Feature-Level Questions Route
557
+
558
+ M43 owns the existence and baseline behavior of `GET /api/features/[id]/questions`.
559
+
560
+ For intake questions specifically, the route must include:
561
+
562
+ - role = `planner`
563
+ - phase = `intake`
564
+ - intake context metadata
565
+ - ambiguity/obligation references if present
566
+
567
+ ### 7.5.6 Question Answer Route
568
+
569
+ M43 owns the baseline answer route and its use of `feature.question_answer`.
570
+
571
+ M59 requires the same route to support intake answers and return enough resume data for intake-aware UI.
572
+
573
+ `POST /api/features/[id]/questions/[questionId]/answer` must accept:
574
+
575
+ ```ts
576
+ interface IntakeAnswerRequest {
577
+ answer: string | Record<string, unknown>;
578
+ answered_by?: string;
579
+ }
580
+ ```
581
+
582
+ And return enough information for the UI to update deterministically:
583
+
584
+ ```ts
585
+ interface IntakeAnswerResponse {
586
+ ok: boolean;
587
+ data?: {
588
+ feature_id: string;
589
+ question_id: string;
590
+ question_status: 'answered';
591
+ feature_status: string;
592
+ resume_status: string | null;
593
+ resumed: boolean;
594
+ };
595
+ error?: {
596
+ message: string;
597
+ };
598
+ }
599
+ ```
600
+
601
+ The frontend should treat `resumed=true` as the signal that the feature has been queued back into intake execution.
602
+
603
+ If the M43 baseline answer response does not yet expose `resume_status`, M59 extends that payload; it does not create a parallel answer route.
604
+
605
+ ### 7.5.7 Focus View Detail Payload
606
+
607
+ Feature-focus data loaders should include:
608
+
609
+ - `questions: FeatureQuestion[]`
610
+ - `intake_review` summary:
611
+
612
+ ```ts
613
+ interface IntakeReviewSummary {
614
+ status: 'proposed' | 'awaiting_input' | 'verified';
615
+ open_ambiguity_count: number;
616
+ resolved_ambiguity_count: number;
617
+ bootstrap_manifest_version: number | null;
618
+ verified_manifest_version: number | null;
619
+ promotion_basis: string | null;
620
+ }
621
+ ```
622
+
623
+ This prevents the focus view from having to reconstruct intake state from multiple low-level artifacts.
624
+
625
+ ---
626
+
627
+ ## 8. Verified Manifest Promotion
628
+
629
+ ## 8.1 Promotion Rule
630
+
631
+ A bootstrap proposal may become a verified manifest only when:
632
+
633
+ - no blocking ambiguities remain
634
+ - any required user clarifications are answered
635
+ - manifest shape is schema-valid
636
+ - policy allows verification under the current confidence / review basis
637
+
638
+ ## 8.2 Promotion Bases
639
+
640
+ Allowed `verification_basis` values:
641
+
642
+ - `structured_spec`
643
+ - `questions_resolved`
644
+ - `policy_approved_auto_promotion`
645
+ - `human_review_confirmed`
646
+
647
+ ## 8.3 Enforcement Rule
648
+
649
+ Only `spec.manifest.verified.json` may be used for:
650
+
651
+ - blocking plan admission
652
+ - enforced `plan_trace` validation
653
+ - enforced builder/QA/reconciliation audit
654
+
655
+ Bootstrap manifests remain advisory only.
656
+
657
+ ---
658
+
659
+ ## 9. Execution Planning After Intake
660
+
661
+ ## 9.1 Transition to Planning
662
+
663
+ Once verified manifest exists:
664
+
665
+ - feature transitions `intake -> planning`
666
+ - planner switches from intake mode to execution mode
667
+ - planner creates `plan.json` with `plan_trace`
668
+
669
+ ## 9.2 Planning Inputs
670
+
671
+ Execution planner must receive:
672
+
673
+ - `spec.md`
674
+ - verified manifest
675
+ - intake review summary
676
+ - resolved user answers from intake
677
+
678
+ The execution planner should not need to reinterpret raw spec ambiguity that was already resolved during intake.
679
+
680
+ ## 9.3 Later Reconciliation
681
+
682
+ Future planner reconciliation phases must compare against:
683
+
684
+ - verified manifest
685
+ - accepted `plan_trace`
686
+ - implementation/verification evidence
687
+
688
+ They must not reopen intake-level ambiguity unless a future explicit re-intake workflow exists.
689
+
690
+ ---
691
+
692
+ ## 10. Operator UX: Dashboard, Focus View, and CLI
693
+
694
+ This feature must explicitly define how intake questions and verified-manifest state appear to operators.
695
+
696
+ The operator should not need to infer intake state from logs.
697
+
698
+ ## 10.1 Board / Dashboard Expectations
699
+
700
+ ### 10.1.1 Status and Queueing
701
+
702
+ When intake planner opens a blocking clarification question:
703
+
704
+ - feature status becomes `awaiting_input`
705
+ - `resume_status` is `intake`
706
+ - the feature must appear in the existing **Needs Me** queue
707
+
708
+ This aligns with the current dashboard behavior that already derives `Needs Me` from waiting-input signals and open question count.
709
+
710
+ Normative behavior:
711
+
712
+ - `intake` with no blocking question:
713
+ - feature appears as an active in-progress item, not `Needs Me`
714
+ - `awaiting_input` during intake:
715
+ - feature appears in `Needs Me`
716
+ - client status label should render `Awaiting Input`
717
+ - root dashboard pending-questions panel must include intake questions
718
+
719
+ ### 10.1.2 Needs Me Card
720
+
721
+ The **Needs Me** queue should remain the top-level operator signal for features awaiting intake clarification.
722
+
723
+ Clicking a feature in **Needs Me** must:
724
+
725
+ - select the feature
726
+ - open the triage drawer on the board
727
+ - offer a direct link into the feature focus view
728
+
729
+ ### 10.1.3 Root Pending Questions Section
730
+
731
+ The existing root “Pending Questions” section should include intake questions with enough context to route the operator:
732
+
733
+ - feature ID
734
+ - role = `planner`
735
+ - phase = `intake`
736
+ - prompt text
737
+
738
+ Selecting an item should focus the feature and open its triage/focus surfaces.
739
+
740
+ ## 10.2 Triage Drawer Expectations
741
+
742
+ The triage drawer must become a first-class intake response surface, not only a passive open-question list.
743
+
744
+ ### 10.2.1 Intake Question Presentation
745
+
746
+ When a selected feature has an open intake question:
747
+
748
+ - the triage drawer must show:
749
+ - question prompt
750
+ - planner role / intake phase
751
+ - expected answer choices or schema hints
752
+ - resume target = `intake`
753
+
754
+ ### 10.2.2 Response Entry
755
+
756
+ The operator should be able to answer the question directly in the triage drawer.
757
+
758
+ This means the current open-question display must be extended with:
759
+
760
+ - choice buttons when `expected_answer.choices` exist
761
+ - a text area or structured-response field
762
+ - a submit action that posts the answer
763
+
764
+ The generic “Send Message” box is not sufficient for closing blocking intake questions. The intake answer path must call `feature.question_answer`, not `feature.send_message`.
765
+
766
+ ### 10.2.3 Post-Answer Behavior
767
+
768
+ After successful answer submission from the triage drawer:
769
+
770
+ - show toast: “Answer sent. Feature queued to resume intake.”
771
+ - refresh the selected feature
772
+ - remove the blocking question from the open-question section
773
+ - if no other blockers remain, feature should leave `Needs Me` on next refresh
774
+
775
+ ## 10.3 Focus View Expectations
776
+
777
+ The feature focus view must be the deep-detail surface for intake interactions.
778
+
779
+ ### 10.3.1 Human Input Panel
780
+
781
+ The existing `HumanInputPanel` should be reused and extended for intake questions.
782
+
783
+ When the feature is in `awaiting_input` with `resume_status=intake`, the focus view should display:
784
+
785
+ - banner: `Awaiting your input`
786
+ - planner role and `intake` phase
787
+ - prompt text
788
+ - details / ambiguity metadata
789
+ - expected answer choices or schema hints
790
+ - resume target: `intake`
791
+
792
+ ### 10.3.2 Intake Context
793
+
794
+ For intake-specific questions, the focus view should additionally surface:
795
+
796
+ - ambiguity ID
797
+ - affected obligation IDs, if known
798
+ - bootstrap manifest summary
799
+ - verification basis status:
800
+ - `bootstrap only`
801
+ - `questions resolved`
802
+ - `verified`
803
+
804
+ This gives the operator enough context to answer without reading raw artifacts.
805
+
806
+ ### 10.3.3 Recommended Tab Placement
807
+
808
+ Intake-response UI should appear in the focus view’s review-oriented area, with the current `HumanInputPanel` as the base surface.
809
+
810
+ If a dedicated intake tab is not added in M59, then:
811
+
812
+ - the panel must be visible on the feature overview/review surface when open intake questions exist
813
+
814
+ ## 10.4 Frontend Request / Response Wiring
815
+
816
+ M43 owns the generic agent-to-runtime-to-frontend question transport.
817
+
818
+ This section defines only the intake-specific mapping onto those existing seams.
819
+
820
+ ### 10.4.1 From Agent to Frontend
821
+
822
+ Flow:
823
+
824
+ 1. intake planner emits `REQUEST.action=ask_user_input`
825
+ 2. runtime routes to `feature.question_create`
826
+ 3. `QuestionService` persists the question and sets status to `awaiting_input`
827
+ 4. dashboard data loaders read question artifacts and human-input state
828
+ 5. board, triage drawer, and focus view render the open question
829
+
830
+ Current frontend seams that should be reused:
831
+
832
+ - root pending-questions data
833
+ - triage drawer `open_questions`
834
+ - feature-level questions route
835
+ - focus-view `questions` payload
836
+
837
+ Readiness rule for all frontend surfaces:
838
+
839
+ - render an intake question as actionable only if it satisfies the persisted ready-state contract from §7.4
840
+ - otherwise render nothing and wait for refreshed persisted state
841
+
842
+ ### 10.4.2 From Frontend to Runtime
843
+
844
+ Flow:
845
+
846
+ 1. operator enters answer in triage drawer or focus view
847
+ 2. frontend posts to question-answer API route
848
+ 3. route calls control-plane question-answer tool path
849
+ 4. runtime closes the question and resumes the feature into `intake`
850
+
851
+ Normative rule:
852
+
853
+ - blocking intake answers must go through `feature.question_answer`
854
+ - they must not be implemented as free-form `feature.send_message`
855
+
856
+ ### 10.4.3 Required Frontend Routes
857
+
858
+ The UI integration should reuse or extend existing routes such as:
859
+
860
+ - `GET /api/features/[id]/triage`
861
+ - `GET /api/features/[id]/questions`
862
+ - `POST /api/features/[id]/questions/[questionId]/answer`
863
+ - root dashboard pending-questions summary route/data path
864
+
865
+ If additional intake metadata is needed, extend these payloads instead of inventing parallel one-off transport.
866
+
867
+ ### 10.4.4 Message vs Answer Path
868
+
869
+ This feature must distinguish two operator actions clearly:
870
+
871
+ - **answer question**
872
+ - closes a blocking intake question
873
+ - uses `feature.question_answer`
874
+ - **send message**
875
+ - non-blocking contextual message to a worker
876
+ - uses `feature.send_message`
877
+
878
+ The UI must not multiplex these into one ambiguous control.
879
+
880
+ If an open blocking intake question exists:
881
+
882
+ - the primary action in triage/focus surfaces must be **Answer Question**
883
+ - `Send Message` may remain available, but it must not imply closure of the blocker
884
+
885
+ ## 10.5 CLI Relationship
886
+
887
+ The CLI remains a first-class operator path alongside the dashboard, but M59 assumes the shared M43 CLI question workflow rather than redefining it.
888
+
889
+ ### 10.5.1 Status Visibility
890
+
891
+ `aop status` must surface:
892
+
893
+ - feature status = `awaiting_input`
894
+ - resume target = `intake`
895
+ - open intake question count
896
+ - short prompt summary
897
+
898
+ ### 10.5.2 Explicit Question Commands
899
+
900
+ The shared question workflow should remain valid:
901
+
902
+ - `aop questions`
903
+ - `aop answer`
904
+
905
+ For intake questions, CLI output must clearly show:
906
+
907
+ - role = `planner`
908
+ - phase = `intake`
909
+ - ambiguity or obligation reference if present
910
+
911
+ ### 10.5.3 CLI / Dashboard Parity
912
+
913
+ Dashboard answer flow and CLI answer flow must both terminate in the same backend call:
914
+
915
+ - `feature.question_answer`
916
+
917
+ The dashboard is not a special side channel. It is a UI wrapper over the same question protocol as the CLI.
918
+
919
+ ## 10.6 How the Operator Knows a Response Is Required
920
+
921
+ M43 owns the generic visible-question rule. M59 defines the intake-specific classification of those visible questions.
922
+
923
+ An intake question requiring response is considered visible when all of the following are true:
924
+
925
+ - feature status = `awaiting_input`
926
+ - `human_input.open_question_count > 0`
927
+ - an open question exists with `resume_status=intake`
928
+ - the open question satisfies the ready-state contract in §7.4
929
+
930
+ The operator should see at least one of:
931
+
932
+ - **Needs Me** queue entry
933
+ - root pending-questions panel
934
+ - triage drawer open-question section
935
+ - focus-view `HumanInputPanel`
936
+ - CLI `aop status` / `aop questions`
937
+
938
+ This redundancy is intentional.
939
+
940
+ ---
941
+
942
+ ## 11. Policy Additions
943
+
944
+ Add policy section:
945
+
946
+ ```yaml
947
+ planning:
948
+ intake:
949
+ enabled: true
950
+ require_verified_manifest_before_planning: true
951
+ allow_auto_promotion: false
952
+ auto_promotion_min_confidence: high
953
+ max_intake_question_rounds: 2
954
+ on_unresolved_ambiguity: awaiting_input # awaiting_input | blocked | fail_feature
955
+ ```
956
+
957
+ Normative behavior:
958
+
959
+ - default should favor safety over silent assumption
960
+ - if intake cannot verify the manifest, execution planning should not start
961
+
962
+ ---
963
+
964
+ ## 12. State Schema Changes
965
+
966
+ Add new state enum:
967
+
968
+ - `intake`
969
+
970
+ Add frontmatter section:
971
+
972
+ ```yaml
973
+ intake:
974
+ status: not_started | in_progress | awaiting_input | verified
975
+ bootstrap_manifest_version: integer | null
976
+ verified_manifest_version: integer | null
977
+ open_ambiguity_count: integer
978
+ last_verified_at: date-time | null
979
+ ```
980
+
981
+ Rules:
982
+
983
+ - `status=planning` requires `intake.status=verified`
984
+ - `verified_manifest_version` must be non-null before `planning`
985
+
986
+ ---
987
+
988
+ ## 13. Implementation Plan
989
+
990
+ M59 must not re-implement the generic M43 protocol. It layers intake-specific behavior on top of it.
991
+
992
+ ### M59.0 — Align to M43 baseline
993
+
994
+ - treat M43 as the shared protocol authority
995
+ - require `resume_status=intake` support in the M43 resumable-state contract
996
+ - reuse existing question tools and answer routes rather than inventing parallel transport
997
+
998
+ ### M59.1 — Add `intake` lifecycle status
999
+
1000
+ Update:
1001
+
1002
+ - `apps/control-plane/src/core/constants.ts`
1003
+ - `agentic/orchestrator/schemas/state.schema.json`
1004
+ - lifecycle/status consumers
1005
+
1006
+ ### M59.2 — Add intake artifacts and schemas
1007
+
1008
+ Add:
1009
+
1010
+ - schema for bootstrap manifest
1011
+ - schema for verified manifest
1012
+ - schema for `intake.review.json`
1013
+
1014
+ ### M59.3 — Add bootstrap manifest generation
1015
+
1016
+ Create:
1017
+
1018
+ - system-owned bootstrap generation service
1019
+
1020
+ This service produces `spec.manifest.bootstrap.json` only.
1021
+
1022
+ ### M59.4 — Add intake planner mode
1023
+
1024
+ Update:
1025
+
1026
+ - planner prompt bundle(s)
1027
+ - worker decision loop output parsing for `INTAKE_SUBMISSION`
1028
+
1029
+ ### M59.5 — Add intake persistence and promotion
1030
+
1031
+ Create/update:
1032
+
1033
+ - intake service
1034
+ - verified manifest promotion logic
1035
+ - transition from `intake -> planning`
1036
+
1037
+ ### M59.6 — Integrate question protocol
1038
+
1039
+ Update:
1040
+
1041
+ - question creation/answer routing so intake questions resume back into `intake`
1042
+ - reuse M43 ready-state and answer transport, adding intake-only predicates and payload extensions where needed
1043
+
1044
+ ### M59.7 — Dashboard and focus-view intake UX
1045
+
1046
+ Update:
1047
+
1048
+ - board/root pending-questions rendering
1049
+ - triage drawer open-question response controls
1050
+ - focus-view `HumanInputPanel` intake context and resume target handling
1051
+ - any frontend types/routes needed to expose intake metadata
1052
+
1053
+ ### M59.8 — Execution planner gating
1054
+
1055
+ Update:
1056
+
1057
+ - `PlanService`
1058
+ - planning wave executor
1059
+
1060
+ So execution planning is blocked until verified manifest exists.
1061
+
1062
+ ### M59.9 — CLI and reconciliation alignment
1063
+
1064
+ Update:
1065
+
1066
+ - shared CLI status/question displays for intake context
1067
+ - post-QA reconciliation to use verified manifest only
1068
+
1069
+ ---
1070
+
1071
+ ## 14. Testing Plan
1072
+
1073
+ ## 13.1 Intake Flow Tests
1074
+
1075
+ Add tests proving:
1076
+
1077
+ - new features begin in `intake`
1078
+ - bootstrap manifest is generated before execution planning
1079
+ - planner cannot submit execution plan without verified manifest
1080
+
1081
+ ## 13.2 Question Loop Tests
1082
+
1083
+ Add tests proving:
1084
+
1085
+ - intake planner can open blocking questions
1086
+ - answering intake questions resumes into `intake`
1087
+ - verified manifest promotion occurs only after required answers are present
1088
+ - generic ready-state behavior remains covered by M43 tests; M59 adds only the `resume_status=intake` predicate and intake metadata checks
1089
+
1090
+ ## 13.2.1 Dashboard / Focus View Tests
1091
+
1092
+ Add tests proving:
1093
+
1094
+ - `awaiting_input` intake features appear in **Needs Me**
1095
+ - triage drawer renders intake question context and answer controls
1096
+ - focus-view `HumanInputPanel` renders planner/intake context and resume target
1097
+ - dashboard answer submission calls the question-answer route and refreshes state
1098
+ - transient planner REQUEST output without persisted question record does not render as operator-visible work
1099
+ - answer route returns resumed state payload that the UI can use deterministically
1100
+
1101
+ ## 13.3 Planning Transition Tests
1102
+
1103
+ Add tests proving:
1104
+
1105
+ - `intake -> planning` occurs only after verified manifest exists
1106
+ - builder/QA do not run while feature is in `intake`
1107
+ - execution planner receives verified manifest context
1108
+
1109
+ ## 13.4 Reconciliation Tests
1110
+
1111
+ Add tests proving:
1112
+
1113
+ - post-QA reconciliation audits against verified manifest
1114
+ - raw `spec.md` is not reinterpreted as the primary contract once intake is complete
1115
+
1116
+ ## 13.5 Cross-Platform Fixtures
1117
+
1118
+ Add intake fixtures for:
1119
+
1120
+ - TypeScript/UI spec
1121
+ - Python service spec
1122
+ - Java/backend spec
1123
+ - CLI/config spec
1124
+
1125
+ Each should exercise:
1126
+
1127
+ - bootstrap proposal
1128
+ - ambiguity detection
1129
+ - manifest verification
1130
+ - transition into planning
1131
+
1132
+ ---
1133
+
1134
+ ## 15. Risks and Mitigations
1135
+
1136
+ | Risk | Impact | Mitigation |
1137
+ | ---------------------------------------------------------- | ------ | ---------------------------------------------------------------------------------------------- |
1138
+ | Intake adds latency before planning starts | Medium | Keep questions narrow and only ask when ambiguity blocks contract formation. |
1139
+ | Teams perceive intake as “extra bureaucracy” | Medium | Allow auto-promotion when confidence and policy permit; otherwise ask only blocking questions. |
1140
+ | Planner prompt overload between intake and execution modes | Medium | Separate planner prompt bundles or explicit mode-specific instructions. |
1141
+ | Legacy specs still have low-quality bootstrap manifests | High | Keep bootstrap advisory until verified; never treat raw extraction as enforceable truth. |
1142
+ | Re-intake may be needed after major scope change | Medium | Explicitly defer re-intake flow to future spec rather than allowing silent reopen. |
1143
+ | Dashboard and CLI drift in question handling | Medium | Force both surfaces through `feature.question_answer` and shared question payloads. |
1144
+
1145
+ ---
1146
+
1147
+ ## 16. Acceptance Criteria
1148
+
1149
+ This feature is complete when all of the following are true:
1150
+
1151
+ 1. New features begin in `intake`, not `planning`.
1152
+ 2. The system generates a bootstrap manifest proposal from `spec.md` before execution planning starts.
1153
+ 3. The planner has an intake mode that can:
1154
+ - review the bootstrap proposal
1155
+ - ask targeted requirement-forming questions
1156
+ - submit a verified manifest
1157
+ 4. Builder and QA never run before a verified manifest exists.
1158
+ 5. Execution planning cannot begin until the feature transitions `intake -> planning`.
1159
+ 6. Intake questions use the existing M43 question protocol and resume into `intake`.
1160
+ 7. Dashboard UX explicitly supports intake questions through:
1161
+ - **Needs Me**
1162
+ - root pending-questions panel
1163
+ - triage drawer answer controls
1164
+ - focus-view `HumanInputPanel`
1165
+ 8. CLI and dashboard answer flows both terminate in the shared `feature.question_answer` path; M59 does not introduce a parallel intake-only answer channel.
1166
+ 9. `plan.json` and later reconciliation evaluate against the verified manifest, not raw ambiguous spec prose.
1167
+ 10. Cross-platform fixtures prove the intake-to-planning model works for at least TypeScript, Python, and Java style specs.
1168
+ 11. The spec does not duplicate or redefine generic question lifecycle rules already owned by M43.
1169
+ 12. `npm run typecheck`, `npm run lint`, and relevant Vitest suites pass.
1170
+
1171
+ ---
1172
+
1173
+ ## 17. Explicit Non-Requirements
1174
+
1175
+ This spec does not require:
1176
+
1177
+ - a general-purpose conversational PM agent
1178
+ - indefinite back-and-forth with the user
1179
+ - platform-specific semantic analysis
1180
+ - replacing the existing human-input protocol
1181
+
1182
+ The purpose is narrower:
1183
+
1184
+ - form a verified requirements contract first
1185
+ - then execute deterministically against that contract