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,921 @@
1
+ # Agentic Orchestrator Focus Intake/Planning Tabs Workspace Spec
2
+
3
+ > Purpose: Redesign the Focus page planning surface so it accurately models the planner lifecycle as two distinct subphases, `intake` and `planning`, using two distinct focus tabs instead of one overloaded Plan tab.
4
+
5
+ ## 1. Context
6
+
7
+ The planner no longer has one monolithic "planning" phase.
8
+
9
+ It now has two sequential subphases:
10
+
11
+ 1. `intake`
12
+ 2. `planning`
13
+
14
+ `intake` produces and verifies the requirements contract.
15
+ `planning` produces and maintains the accepted execution plan against that verified contract.
16
+
17
+ The current Plan tab in `packages/web-dashboard/src/components/focus/` still reflects the old mental model:
18
+
19
+ - `Source Spec`
20
+ - `Plan Progress`
21
+ - `Accepted Plan`
22
+
23
+ That was acceptable when "plan" meant one artifact.
24
+ It is no longer acceptable now that the system distinguishes:
25
+
26
+ - raw spec input
27
+ - bootstrap manifest
28
+ - verified manifest
29
+ - accepted execution plan
30
+
31
+ The current Plan tab therefore hides the most important operator question:
32
+
33
+ `Are we still validating requirements, or are we already planning execution?`
34
+
35
+ ## 2. Problem Statement
36
+
37
+ The existing Plan tab is structurally wrong for the new lifecycle.
38
+
39
+ ### 2.1 Current UX failures
40
+
41
+ - The tab assumes a single accepted-plan contract instead of a two-step contract formation flow.
42
+ - `PlanProgressPanel` is too generic and is not intake-aware.
43
+ - `buildPlanProgressSummary()` currently derives build/QA/review-era tasks, which is misleading when the feature is still in `intake` or `planning`.
44
+ - Intake state is shown as a lightweight summary in `OverviewTab`, but the actual deep workspace for intake/planning decisions is still missing.
45
+ - The verified requirements contract is not visually elevated above the raw source spec once intake is complete.
46
+ - The accepted plan card does not tell the operator whether the plan is current to the verified manifest, whether it is stale, or whether traceability is complete.
47
+ - The operator cannot easily answer "what changed during intake?" without reading raw JSON artifacts.
48
+ - Open intake questions are not treated as a first-class Plan-tab concern even though they block the transition into execution planning.
49
+ - Forcing both lifecycle stages into one tab collapses two different operator jobs into one screen and will create avoidable confusion.
50
+ - The current cards are artifact-led, not decision-led.
51
+
52
+ ### 2.2 Consequence
53
+
54
+ Operators cannot quickly determine:
55
+
56
+ - which planner subphase is active
57
+ - whether planning can begin
58
+ - what is blocking promotion out of intake
59
+ - whether the accepted plan is current and trustworthy
60
+ - whether the accepted plan fully covers the verified obligations
61
+
62
+ ## 3. Scope and Supersession
63
+
64
+ This spec updates the Focus-page planner-oriented surface in the feature focus view.
65
+
66
+ It supersedes the one-stage Plan-tab assumptions from:
67
+
68
+ - `spec-files/completed/agentic_orchestrator_feature_focus_view_track_c_decision_centric_remediation_spec.md` section 7
69
+
70
+ It builds on, but does not replace, the intake lifecycle defined in:
71
+
72
+ - `spec-files/outstanding/agentic_orchestrator_interactive_planning_intake_and_requirements_verification_spec.md`
73
+
74
+ Normative rule:
75
+
76
+ - `OverviewTab` may keep a lightweight intake summary.
77
+ - The old single `Plan` tab must be split into a dedicated `Intake` tab and a dedicated `Planning` tab.
78
+ - Those two tabs become the primary deep-detail workspace for planner-owned work.
79
+
80
+ ## 4. UX Goals
81
+
82
+ The redesigned Intake and Planning tabs must optimize for operator decisions, not artifact dumping.
83
+
84
+ ### 4.1 The top of the tab must answer
85
+
86
+ 1. Which planner subphase is active right now?
87
+ 2. Is the feature blocked in intake, actively planning, or ready for build?
88
+ 3. What is the single next thing required to advance the planner lifecycle?
89
+ 4. Which contract is authoritative right now:
90
+ - source spec
91
+ - bootstrap manifest
92
+ - verified manifest
93
+ - accepted plan
94
+ 5. Is the accepted plan current to the verified requirements contract?
95
+
96
+ ### 4.2 The tab must reduce cognitive load
97
+
98
+ - It must not force the operator to interpret raw JSON before understanding status.
99
+ - It must not show build/QA/review tasks as the current plan state when the feature is still in `intake` or `planning`.
100
+ - It must not make the raw source spec look equally authoritative to the verified manifest after intake is complete.
101
+
102
+ ### 4.3 The tab must preserve auditability
103
+
104
+ - Raw artifacts must remain available.
105
+ - Their provenance, version, and timestamps must be visible.
106
+ - Derived summaries must always link back to concrete artifacts.
107
+
108
+ ## 5. Non-Goals
109
+
110
+ - This spec does not redesign the Overview, Runtime, Review, or History tabs beyond the Plan-tab handoff points they already depend on.
111
+ - This spec does not introduce in-browser artifact editing.
112
+ - This spec does not change kernel lifecycle invariants.
113
+ - This spec does not replace the existing question protocol; it only repositions intake/planning question context in the Plan tab.
114
+
115
+ ## 6. Information Architecture
116
+
117
+ The old single `Plan` tab must be removed as the primary planner workspace.
118
+
119
+ It is replaced by two distinct tabs:
120
+
121
+ 1. `Intake`
122
+ 2. `Planning`
123
+
124
+ Reason:
125
+
126
+ - `intake` and `planning` are different operator jobs
127
+ - they have different contracts
128
+ - they have different blockers
129
+ - combining them into one tab invites confusion and weakens prioritization
130
+
131
+ ## 6.1 Tab model
132
+
133
+ ### 6.1.1 Required tabs
134
+
135
+ Add two focus tabs:
136
+
137
+ - `intake`
138
+ - `planning`
139
+
140
+ Preferred user-facing labels:
141
+
142
+ - `Intake`
143
+ - `Planning`
144
+
145
+ The old `plan` tab id should be retired rather than relabeled.
146
+
147
+ ### 6.1.2 Visibility rules
148
+
149
+ The `Intake` tab must be visible when any of the following are true:
150
+
151
+ - feature phase is `intake`
152
+ - feature phase is `awaiting_input` and `resume_status=intake`
153
+ - intake artifacts exist
154
+ - intake summary exists
155
+
156
+ The `Planning` tab must be visible when any of the following are true:
157
+
158
+ - feature phase is `planning`
159
+ - feature phase is `building`, `qa`, `ready_to_merge`, or `merged`
160
+ - a verified manifest exists
161
+ - a plan exists
162
+
163
+ ### 6.1.3 Default-tab rules
164
+
165
+ Default active tab must be:
166
+
167
+ - `Intake` when the feature is in `intake`
168
+ - `Intake` when the feature is `awaiting_input` for intake
169
+ - `Planning` when intake is verified and planning is active or later
170
+
171
+ The user must not land on `Planning` first while intake is still unresolved.
172
+
173
+ ## 6.2 Shared planner lifecycle header
174
+
175
+ Both tabs must render the same `PlannerLifecycleHeader` at the top.
176
+
177
+ This shared header prevents the two-tab design from feeling disconnected.
178
+
179
+ ### 6.2.1 Decision banner
180
+
181
+ The banner must produce one primary state, not a bag of badges.
182
+
183
+ Allowed primary banner states:
184
+
185
+ - `Waiting on intake clarification`
186
+ - `Intake in progress`
187
+ - `Ready for execution planning`
188
+ - `Execution planning in progress`
189
+ - `Accepted plan is current`
190
+ - `Accepted plan is stale`
191
+
192
+ The banner must include:
193
+
194
+ - current subphase
195
+ - primary blocker or readiness statement
196
+ - current owner:
197
+ - `planner`
198
+ - `operator`
199
+ - `system`
200
+ - last subphase update timestamp
201
+ - a clear next-action sentence
202
+
203
+ ### 6.2.2 Lifecycle stepper
204
+
205
+ The header must render a five-step horizontal or stacked stepper:
206
+
207
+ 1. `Source Spec`
208
+ 2. `Bootstrap Manifest`
209
+ 3. `Verified Manifest`
210
+ 4. `Accepted Plan`
211
+ 5. `Execution`
212
+
213
+ Each step must be one of:
214
+
215
+ - `complete`
216
+ - `current`
217
+ - `blocked`
218
+ - `pending`
219
+
220
+ Normative rule:
221
+
222
+ - when `phase=intake`, steps 4 and 5 must not appear "in progress"
223
+ - when `phase=planning`, step 3 may be `complete`, step 4 may be `current`, and step 5 must remain `pending`
224
+
225
+ ## 6.3 Intake tab
226
+
227
+ The `Intake` tab is the primary surface whenever the feature is in `intake` or `awaiting_input` with `resume_status=intake`.
228
+
229
+ ### 6.3.1 Required sections
230
+
231
+ 1. `Requirements Intake Summary`
232
+ 2. `Ambiguity Queue`
233
+ 3. `Promotion Readiness`
234
+ 4. `What Changed During Intake`
235
+ 5. `Intake Artifacts`
236
+
237
+ ### 6.3.2 Requirements Intake Summary
238
+
239
+ This card must show:
240
+
241
+ - intake status
242
+ - bootstrap manifest version
243
+ - verified manifest version
244
+ - obligation count in bootstrap manifest
245
+ - obligation count in verified manifest
246
+ - open ambiguity count
247
+ - questions open / resolved
248
+ - promotion basis
249
+ - last verified timestamp
250
+
251
+ The promotion basis must be mapped into human language:
252
+
253
+ - `structured_spec` -> `Promoted directly from a structured spec`
254
+ - `questions_resolved` -> `Promoted after intake questions were resolved`
255
+ - `policy_approved_auto_promotion` -> `Auto-promoted by policy`
256
+ - `human_review_confirmed` -> `Promoted after explicit human review`
257
+
258
+ The raw enum string must not be the primary display.
259
+
260
+ ### 6.3.3 Ambiguity Queue
261
+
262
+ This card must make ambiguity state actionable.
263
+
264
+ Each ambiguity row must show:
265
+
266
+ - ambiguity id
267
+ - summary
268
+ - status
269
+ - linked obligation ids
270
+ - whether it is blocking promotion
271
+ - whether a linked open intake question exists
272
+
273
+ Rows must be grouped into:
274
+
275
+ - `Open`
276
+ - `Resolved`
277
+
278
+ If there are no ambiguities, the card must say so explicitly.
279
+
280
+ ### 6.3.4 Answering mechanism in the Ambiguity Queue
281
+
282
+ The ambiguity queue itself must provide the operator mechanism for answering open intake questions.
283
+
284
+ Normative rule:
285
+
286
+ - the operator must be able to answer a linked open intake question directly from the relevant ambiguity row
287
+ - the operator must not need to hunt for a separate detached human-input card elsewhere on the page
288
+
289
+ Preferred behavior:
290
+
291
+ - each open ambiguity row with a linked open intake question shows an `Answer` or `Resolve` action
292
+ - clicking that action expands an inline answer panel scoped to that ambiguity
293
+ - the inline answer panel reuses `HumanInputPanel` behavior and transport
294
+
295
+ The inline answer panel must show:
296
+
297
+ - question prompt
298
+ - role and phase
299
+ - ambiguity id
300
+ - linked obligation ids
301
+ - expected answer choices or schema hints
302
+ - resume target
303
+
304
+ If an intake-blocking question exists without an `ambiguity_id`, the tab must render a fallback `General Intake Question` section immediately below the queue.
305
+
306
+ ### 6.3.5 Promotion Readiness
307
+
308
+ This card must answer:
309
+
310
+ - can intake promote into execution planning right now?
311
+
312
+ It must show:
313
+
314
+ - `Ready` or `Blocked`
315
+ - blocker reasons as a flat list
316
+ - whether a verified manifest exists
317
+ - whether open intake questions remain
318
+ - whether unresolved ambiguities remain
319
+
320
+ It must not show a fake percentage.
321
+
322
+ ### 6.3.6 What Changed During Intake
323
+
324
+ This card replaces raw-manifest comparison as the default first view.
325
+
326
+ It must summarize the delta from bootstrap -> verified:
327
+
328
+ - ambiguities resolved count
329
+ - ambiguities still open count
330
+ - obligations added
331
+ - obligations removed
332
+ - confidence upgrades
333
+ - confidence downgrades
334
+
335
+ First rollout may be summary-only.
336
+
337
+ Raw JSON diff is optional and should remain behind a disclosure.
338
+
339
+ ### 6.3.7 Intake Artifacts
340
+
341
+ The Intake tab must own its own artifact viewer.
342
+
343
+ Required artifact tabs:
344
+
345
+ 1. `Source Spec`
346
+ 2. `Bootstrap Manifest`
347
+ 3. `Verified Manifest`
348
+ 4. `Intake Review`
349
+
350
+ Presentation rules:
351
+
352
+ - `Source Spec` renders with the shared markdown renderer
353
+ - manifests and review artifacts render in a pretty-printed JSON viewer
354
+ - every artifact view must show path, version, and last-updated timestamp
355
+ - every artifact view must expose `Open raw`
356
+
357
+ Authority rule:
358
+
359
+ - once intake is verified, `Verified Manifest` is the requirements contract of record
360
+ - `Source Spec` becomes a reference input, not the primary contract
361
+
362
+ ## 6.4 Planning tab
363
+
364
+ The `Planning` tab is the primary surface whenever the feature is in `planning` or later and a verified manifest exists.
365
+
366
+ ### 6.4.1 Required sections
367
+
368
+ 1. `Execution Planning Summary`
369
+ 2. `Plan Contract Health`
370
+ 3. `Plan Trace Coverage`
371
+ 4. `Current Planning Focus`
372
+ 5. `Accepted Execution Plan`
373
+ 6. `Planning Artifacts`
374
+
375
+ ### 6.4.2 Intake handoff summary
376
+
377
+ The Planning tab must include a slim, non-dominant handoff summary at the top of its body stating:
378
+
379
+ - verified manifest version
380
+ - promotion basis
381
+ - last verified timestamp
382
+ - open ambiguity count at handoff
383
+
384
+ This is not a second full intake workspace.
385
+
386
+ It exists only to anchor planning against the verified contract.
387
+
388
+ ### 6.4.3 Execution Planning Summary
389
+
390
+ This card must show:
391
+
392
+ - planning status:
393
+ - `not started`
394
+ - `ready to plan`
395
+ - `in progress`
396
+ - `accepted`
397
+ - `stale`
398
+ - `blocked`
399
+ - accepted plan version
400
+ - accepted-plan timestamp
401
+ - gate profile
402
+ - scoped file counts:
403
+ - create
404
+ - modify
405
+ - delete
406
+ - task count
407
+ - risk count
408
+
409
+ ### 6.4.4 Plan Contract Health
410
+
411
+ This card must answer:
412
+
413
+ - is the accepted plan current to the latest verified manifest?
414
+
415
+ It must surface:
416
+
417
+ - verified manifest version
418
+ - plan source verified-manifest version
419
+ - stale/current outcome
420
+ - mismatch reason
421
+
422
+ Normative requirement:
423
+
424
+ - the plan artifact or an adjacent derived read model must bind the accepted plan to a specific verified manifest version
425
+ - dashboard UX must not infer "current" only from timestamp proximity if explicit version binding can be persisted
426
+
427
+ Preferred contract additions to `plan.json`:
428
+
429
+ - `source_verified_manifest_version`
430
+ - `source_verified_at`
431
+
432
+ ### 6.4.5 Plan Trace Coverage
433
+
434
+ This card must use `plan.plan_trace` when available.
435
+
436
+ It must summarize:
437
+
438
+ - total verified obligations
439
+ - mapped obligations
440
+ - unmapped obligations
441
+ - deferred obligations
442
+ - out-of-scope obligations
443
+ - obligations missing planned verification intent
444
+
445
+ The operator must be able to see which verified obligations are not yet represented in the accepted plan.
446
+
447
+ The card must not require the operator to open raw `plan.json` to determine coverage.
448
+
449
+ ### 6.4.6 Current Planning Focus
450
+
451
+ This card must answer:
452
+
453
+ - what is the planner doing right now?
454
+ - what remains before the plan is truly accepted?
455
+
456
+ It must derive from:
457
+
458
+ - explicit plan task state when present
459
+ - planner worker events
460
+ - plan version changes
461
+ - verified-manifest freshness
462
+
463
+ The card must show:
464
+
465
+ - current planner focus line
466
+ - next up to three planning tasks
467
+ - blocked planning tasks, if any
468
+
469
+ Important rule:
470
+
471
+ - while the feature is still in `planning`, this card must not talk about implementation, QA, review, or merge as if they are the current work item
472
+ - those belong to broader feature execution, not the planning subphase
473
+
474
+ ### 6.4.7 Accepted Execution Plan
475
+
476
+ This replaces the current low-signal `Accepted Plan` card.
477
+
478
+ It must become a planning contract card with:
479
+
480
+ - plan summary
481
+ - top acceptance criteria
482
+ - scoped files preview
483
+ - risks preview
484
+ - owners or owner roles
485
+ - raw task list
486
+
487
+ If no accepted plan exists yet:
488
+
489
+ - do not show an empty `Accepted Plan` shell
490
+ - instead show `No accepted execution plan yet` plus the exact reason:
491
+ - intake not verified
492
+ - planning not started
493
+ - planning blocked
494
+
495
+ ### 6.4.8 Planning Artifacts
496
+
497
+ The Planning tab must own its own artifact viewer.
498
+
499
+ Required artifact tabs:
500
+
501
+ 1. `Verified Manifest`
502
+ 2. `Plan Markdown`
503
+ 3. `Plan JSON`
504
+
505
+ Presentation rules:
506
+
507
+ - `Plan Markdown` renders with the shared markdown renderer
508
+ - `Verified Manifest` and `Plan JSON` render in a pretty-printed JSON viewer
509
+ - every artifact view must show path, version, and last-updated timestamp
510
+ - every artifact view must expose `Open raw`
511
+
512
+ ## 6.5 State behavior matrix
513
+
514
+ ### 6.5.1 `phase=intake`
515
+
516
+ - `Intake` tab is primary
517
+ - `Planning` tab may be visible but must not imply an accepted plan exists
518
+ - planning sections should explain why planning cannot begin yet
519
+
520
+ ### 6.5.2 `phase=awaiting_input` with `resume_status=intake`
521
+
522
+ - banner = `Waiting on intake clarification`
523
+ - `Intake` tab is primary
524
+ - ambiguity rows with linked open questions expose inline answer controls
525
+ - promotion-readiness block is open by default
526
+
527
+ ### 6.5.3 `phase=planning`
528
+
529
+ - banner = `Execution planning in progress`
530
+ - `Planning` tab is primary
531
+ - `Intake` tab remains available as the verified-contract audit trail
532
+
533
+ ### 6.5.4 `phase=building|qa|ready_to_merge|merged`
534
+
535
+ - `Planning` becomes the historical contract section
536
+ - `Intake` remains inspectable as provenance
537
+ - header states that execution is operating against an accepted plan
538
+ - if the plan is stale relative to the verified manifest, the stale warning must still appear
539
+
540
+ ## 7. Data Model and Derivations
541
+
542
+ The current `FeatureDetail.plan_progress` is too shallow to power this UX.
543
+
544
+ Normative rule:
545
+
546
+ - keep `plan_progress` for lightweight overview widgets if desired
547
+ - do not use it as the primary read model for the Intake or Planning tabs
548
+
549
+ ## 7.1 New read models
550
+
551
+ Add three read models to `packages/web-dashboard/src/lib/types.ts`:
552
+
553
+ 1. `PlannerLifecycleSummary`
554
+ 2. `FeatureIntakeWorkspace`
555
+ 3. `FeaturePlanningWorkspace`
556
+
557
+ Suggested shared shape:
558
+
559
+ ```ts
560
+ type PlannerSubphase = 'intake' | 'planning' | 'post_planning';
561
+
562
+ interface PlanLifecycleStep {
563
+ id: 'source_spec' | 'bootstrap_manifest' | 'verified_manifest' | 'accepted_plan' | 'execution';
564
+ label: string;
565
+ status: 'complete' | 'current' | 'blocked' | 'pending';
566
+ detail: string;
567
+ }
568
+
569
+ interface ManifestArtifactSummary {
570
+ version: number | null;
571
+ generated_at: string | null;
572
+ obligation_count: number;
573
+ ambiguity_count?: number;
574
+ verification_basis?: string | null;
575
+ confidence: {
576
+ high: number;
577
+ medium: number;
578
+ low: number;
579
+ };
580
+ }
581
+
582
+ interface PlannerLifecycleSummary {
583
+ current_subphase: PlannerSubphase;
584
+ current_owner: 'planner' | 'operator' | 'system' | null;
585
+ last_updated_at: string | null;
586
+ banner_state:
587
+ | 'waiting_on_intake_clarification'
588
+ | 'intake_in_progress'
589
+ | 'ready_for_execution_planning'
590
+ | 'execution_planning_in_progress'
591
+ | 'accepted_plan_current'
592
+ | 'accepted_plan_stale';
593
+ lifecycle_steps: PlanLifecycleStep[];
594
+ next_action: string;
595
+ primary_detail: string;
596
+ }
597
+
598
+ interface FeatureIntakeWorkspace {
599
+ lifecycle: PlannerLifecycleSummary;
600
+ summary: FeatureIntakeSummary | null;
601
+ review: FeatureIntakeReviewSummary | null;
602
+ bootstrap_manifest: ManifestArtifactSummary | null;
603
+ verified_manifest: ManifestArtifactSummary | null;
604
+ open_ambiguities: Array<{
605
+ id: string;
606
+ summary: string;
607
+ obligation_ids: string[];
608
+ blocking: boolean;
609
+ linked_open_question_id: string | null;
610
+ }>;
611
+ resolved_ambiguities: Array<{
612
+ id: string;
613
+ summary: string;
614
+ obligation_ids: string[];
615
+ }>;
616
+ promotion_readiness: {
617
+ ready: boolean;
618
+ blocker_reasons: string[];
619
+ };
620
+ manifest_delta: {
621
+ ambiguities_resolved: number;
622
+ ambiguities_open: number;
623
+ obligations_added: number;
624
+ obligations_removed: number;
625
+ confidence_upgrades: number;
626
+ confidence_downgrades: number;
627
+ };
628
+ open_questions: FeatureQuestion[];
629
+ }
630
+
631
+ interface FeaturePlanningWorkspace {
632
+ lifecycle: PlannerLifecycleSummary;
633
+ intake_handoff: {
634
+ verified_manifest_version: number | null;
635
+ promotion_basis: string | null;
636
+ last_verified_at: string | null;
637
+ open_ambiguity_count: number;
638
+ } | null;
639
+ status: 'not_started' | 'ready_to_plan' | 'in_progress' | 'accepted' | 'stale' | 'blocked';
640
+ accepted_plan_version: number | null;
641
+ accepted_at: string | null;
642
+ gate_profile: string | null;
643
+ task_count: number;
644
+ risk_count: number;
645
+ current_focus: string | null;
646
+ next_tasks: PlanProgressTaskSummary[];
647
+ blocked_tasks: PlanProgressTaskSummary[];
648
+ file_scope: {
649
+ create: number;
650
+ modify: number;
651
+ delete: number;
652
+ sample_paths: string[];
653
+ };
654
+ trace_coverage: {
655
+ total_obligations: number;
656
+ mapped: number;
657
+ unmapped: number;
658
+ deferred: number;
659
+ out_of_scope: number;
660
+ missing_verification_intent: number;
661
+ };
662
+ freshness: {
663
+ source_verified_manifest_version: number | null;
664
+ current_verified_manifest_version: number | null;
665
+ stale: boolean;
666
+ reason: string | null;
667
+ };
668
+ }
669
+ ```
670
+
671
+ ## 7.2 Derivation rules
672
+
673
+ ### 7.2.1 Lifecycle derivation
674
+
675
+ The shared lifecycle summary must derive from:
676
+
677
+ - feature phase
678
+ - intake summary
679
+ - existence/freshness of verified manifest
680
+ - existence/freshness of accepted plan
681
+ - open intake questions
682
+ - planner worker events
683
+
684
+ ### 7.2.2 Intake derivation
685
+
686
+ The Intake read model must load and summarize:
687
+
688
+ - `spec.md`
689
+ - `spec.manifest.bootstrap.json`
690
+ - `spec.manifest.verified.json`
691
+ - `intake.review.json`
692
+ - feature questions filtered to `resume_status=intake`
693
+
694
+ Linked ambiguity question behavior:
695
+
696
+ - if a question references `ambiguity_id`, bind it to that ambiguity row
697
+ - if a question references obligation ids but not ambiguity id, show that relationship in row metadata when determinable
698
+
699
+ ### 7.2.3 Planning derivation
700
+
701
+ The Planning read model must load and summarize:
702
+
703
+ - `plan.md`
704
+ - `plan.json`
705
+ - `plan.plan_trace`
706
+ - verified-manifest obligations
707
+ - planner worker events
708
+
709
+ ### 7.2.4 Staleness
710
+
711
+ Accepted-plan freshness must not be hand-wavy.
712
+
713
+ Preferred rule:
714
+
715
+ - stale if `plan.source_verified_manifest_version !== verified_manifest.manifest_version`
716
+
717
+ Fallback rule only if version binding is unavailable:
718
+
719
+ - stale if verified-manifest update is newer than the accepted plan and no later plan acceptance is recorded
720
+
721
+ ### 7.2.5 Progress semantics
722
+
723
+ Do not reuse the current "implementation / verification / review / merge" progress model at the top of the planner tabs.
724
+
725
+ For these tabs:
726
+
727
+ - `Intake` progress concerns requirement verification and promotion only
728
+ - `Planning` progress concerns accepted-plan quality and completeness only
729
+
730
+ ## 8. API and Loader Changes
731
+
732
+ ## 8.1 New routes
733
+
734
+ Add:
735
+
736
+ - `GET /api/features/[id]/planner-lifecycle`
737
+ - `GET /api/features/[id]/intake-workspace`
738
+ - `GET /api/features/[id]/planning-workspace`
739
+
740
+ Reason:
741
+
742
+ - separate tabs should load separate decision surfaces
743
+ - intake and planning have different artifact mixes
744
+ - this keeps tab ownership clean
745
+
746
+ `planner-lifecycle` may be embedded in the tab-specific routes if duplication is simpler, but the ownership boundary must remain explicit.
747
+
748
+ ## 8.2 Existing route handling
749
+
750
+ `/api/features/[id]/spec` may remain for raw artifact viewing.
751
+
752
+ `/api/features/[id]/plan-progress` may remain for lightweight overview widgets, but neither new tab should depend on it as its primary source.
753
+
754
+ ## 8.3 Refresh behavior
755
+
756
+ The Intake and Planning tabs must not introduce uncontrolled polling.
757
+
758
+ Allowed refresh triggers:
759
+
760
+ - initial tab mount
761
+ - explicit refresh action
762
+ - successful human-input answer submission
763
+ - optional bounded polling only when:
764
+ - the relevant tab is active
765
+ - the feature is in `intake` or `planning`
766
+ - the interval is fixed and conservative
767
+
768
+ ## 9. Component Ownership
769
+
770
+ ## 9.1 Required Focus-page changes
771
+
772
+ - `packages/web-dashboard/src/components/focus/FocusLayout.tsx`
773
+ - must mount two distinct tabs instead of the old single `PlanTab`
774
+ - `packages/web-dashboard/src/components/focus/tabs/PlanTab.tsx`
775
+ - should be replaced by `IntakeTab.tsx` and `PlanningTab.tsx`
776
+ - `packages/web-dashboard/src/components/focus/PlanProgressPanel.tsx`
777
+ - should be removed or split into lifecycle-specific summary components
778
+ - `packages/web-dashboard/src/components/plan-viewer.tsx`
779
+ - should become planning-specific contract rendering, not a generic accepted-plan blob
780
+ - `packages/web-dashboard/src/components/focus/SpecViewer.tsx`
781
+ - should no longer represent the entire planner surface by itself
782
+ - `packages/web-dashboard/src/components/human-input-panel.tsx`
783
+ - must be reused inside the ambiguity-answer flow for intake
784
+
785
+ ## 9.2 New components expected
786
+
787
+ - `PlannerLifecycleHeader`
788
+ - `IntakeTab`
789
+ - `PlanningTab`
790
+ - `AmbiguityQueueCard`
791
+ - `AmbiguityQuestionInlinePanel`
792
+ - `PromotionReadinessCard`
793
+ - `ManifestDeltaCard`
794
+ - `PlanContractHealthCard`
795
+ - `PlanTraceCoverageCard`
796
+ - `IntakeArtifactViewer`
797
+ - `PlanningArtifactViewer`
798
+
799
+ Names may vary, but the responsibilities must be split along those boundaries.
800
+
801
+ ## 10. Copy, Formatting, and Layout Rules
802
+
803
+ ## 10.1 Labeling
804
+
805
+ Use human-facing labels.
806
+
807
+ Avoid leading with raw internal enum names such as:
808
+
809
+ - `questions_resolved`
810
+ - `policy_approved_auto_promotion`
811
+ - `in_progress`
812
+
813
+ Human-friendly text must be primary; raw values may be secondary metadata.
814
+
815
+ ## 10.2 Tab hierarchy
816
+
817
+ - `Intake` and `Planning` must read as different operator workspaces, not as two arbitrary content buckets
818
+ - each tab should have one dominant top summary
819
+ - historical/raw artifact viewers must not compete with the summary cards for attention
820
+
821
+ ## 10.3 No fake precision
822
+
823
+ - do not show a single overall percentage for the combined intake/planning lifecycle unless the underlying model is genuinely reliable
824
+ - step-state or readiness-state presentation is preferred
825
+
826
+ ## 10.4 Authority cues
827
+
828
+ After verified manifest promotion:
829
+
830
+ - the verified manifest must read as the contract of record
831
+ - the source spec must read as original input/reference
832
+
833
+ ## 11. Testing Strategy
834
+
835
+ ## 11.1 Derivation tests
836
+
837
+ Add read-model tests for:
838
+
839
+ - feature still in `intake`
840
+ - feature awaiting intake input
841
+ - intake verified but no accepted plan yet
842
+ - planning active
843
+ - accepted plan stale against newer verified manifest
844
+ - accepted plan current and trace-complete
845
+
846
+ ## 11.2 Route tests
847
+
848
+ Add route coverage for:
849
+
850
+ - `GET /api/features/[id]/planner-lifecycle`
851
+ - `GET /api/features/[id]/intake-workspace`
852
+ - `GET /api/features/[id]/planning-workspace`
853
+ - missing artifact fallback behavior
854
+ - partial artifact states
855
+
856
+ ## 11.3 Component tests
857
+
858
+ Add rendering tests proving:
859
+
860
+ - intake state does not show implementation/QA/review as the current task
861
+ - ambiguity rows with linked open questions expose inline answer actions
862
+ - answering UI renders inside the `Intake` tab rather than in a detached planner card
863
+ - verified manifest becomes primary after promotion
864
+ - stale accepted-plan warning renders correctly in `Planning`
865
+ - artifact viewers expose the required tab-specific artifacts
866
+
867
+ ## 11.4 Regression focus
868
+
869
+ The tests must guard against:
870
+
871
+ - the old failure mode where one combined tab implies a single accepted-plan workflow regardless of whether intake has finished
872
+ - the ambiguity-queue failure mode where open questions are visible but not actionable
873
+
874
+ ## 12. Implementation Slices
875
+
876
+ ### 12.1 Slice A - Tab split and shared lifecycle header
877
+
878
+ - add new focus-tab ids
879
+ - split the old `PlanTab` into `IntakeTab` and `PlanningTab`
880
+ - add shared lifecycle header
881
+
882
+ ### 12.2 Slice B - Intake workspace and inline answer flow
883
+
884
+ - add intake read model and route
885
+ - add intake summary, ambiguity queue, readiness, delta, and artifact viewer
886
+ - wire linked open questions into inline ambiguity-row answer panels
887
+
888
+ ### 12.3 Slice C - Planning workspace
889
+
890
+ - add planning read model and route
891
+ - replace the generic accepted-plan card
892
+ - add plan contract health
893
+ - add plan trace coverage
894
+ - add planning focus / remaining planner work
895
+
896
+ ### 12.4 Slice D - Artifact viewers and cleanup
897
+
898
+ - separate intake/planning artifact ownership
899
+ - add pretty JSON views where needed
900
+ - remove stale one-stage assumptions from existing focus components
901
+
902
+ ### 12.5 Slice E - Tests and migration cleanup
903
+
904
+ - update focus-layout and planner-tab tests
905
+ - remove stale single-tab assumptions
906
+ - ensure overview snapshots still use lightweight summaries only
907
+
908
+ ## 13. Acceptance Criteria
909
+
910
+ 1. The feature focus view exposes separate `Intake` and `Planning` tabs instead of one combined planning tab.
911
+ 2. When a feature is in `intake`, the `Intake` tab clearly states that intake is the active subphase and does not imply that an accepted execution plan already exists.
912
+ 3. When a feature is `awaiting_input` for intake, the operator can answer linked open intake questions directly from the relevant ambiguity row inside the `Intake` tab.
913
+ 4. If an intake-blocking question exists without a matching ambiguity row, the `Intake` tab still surfaces an immediately actionable fallback answer section.
914
+ 5. The top of both planner tabs explicitly answers whether the feature is blocked in intake, ready for planning, actively planning, or operating against a current accepted plan.
915
+ 6. The `Intake` tab visually distinguishes the authoritative requirements contract (`Verified Manifest`) from the raw source spec once intake is verified.
916
+ 7. The operator can understand what changed during intake without opening raw JSON artifacts.
917
+ 8. The `Planning` tab tells the operator whether the accepted plan is current to the verified manifest and why it is stale when it is stale.
918
+ 9. The `Planning` tab summarizes obligation-to-plan trace coverage from `plan_trace` instead of hiding that data in raw `plan.json`.
919
+ 10. The `Planning` tab no longer treats build/QA/review/merge work as the current planning task while the feature is still in planner-owned subphases.
920
+ 11. Intake and planning raw lifecycle artifacts remain inspectable from their owning tabs through tab-specific artifact viewers.
921
+ 12. The implementation includes component and loader regression coverage for intake, intake-answering, planning, stale-plan, and accepted-plan-complete states.