agentic-orchestrator 0.1.28 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +110 -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 +83 -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 +357 -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 +131 -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 +107 -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 +845 -59
  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 +54 -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,1147 @@
1
+ # Feature Spec: AOP Dashboard Command Center Redesign
2
+
3
+ > Purpose: redefine the root AOP dashboard (`/`) as a triage-first, client-grade command center that surfaces what needs attention now, reduces operational noise, and cleanly hands off deep review to Focus view and Analytics.
4
+
5
+ **Version:** 1.0
6
+ **Date:** 2026-03-14
7
+ **Status:** Draft
8
+ **Roadmap Mapping:** M47-A (Command Center Core), M47-B (Dashboard Governance + Configuration), M47-C (Insight Layer)
9
+ **Depends On:** M44 (dashboard component baseline), M45 (route architecture and advanced dashboard UX), M46 (focus-review and diff/agent-console direction)
10
+
11
+ ---
12
+
13
+ ## 0. Scope and Standards
14
+
15
+ ### 0.1 Primary User Jobs
16
+
17
+ This redesign optimizes `/` for three jobs in strict priority order:
18
+
19
+ 1. **Client triage job:** understand what requires attention, what is blocked, and what is ready for decision in under 10 seconds.
20
+ 2. **Operator control job:** detect unhealthy orchestration, lock/dependency contention, and budget risk before throughput degrades.
21
+ 3. **Navigation job:** move quickly from system-level triage into feature-level Focus view or Analytics without losing context.
22
+
23
+ The root dashboard is **not** the primary deep-review surface after this redesign. Deep code review, rich diff inspection, agent transcript inspection, and long-form evidence reading belong in `/feature/:id` and `/analytics`.
24
+
25
+ ### 0.2 Current Problems This Spec Corrects
26
+
27
+ The current root dashboard over-serves system internals and under-serves client decision flow:
28
+
29
+ - The page mixes board triage and deep feature review into one route, creating excessive cognitive load.
30
+ - The right-side detail panel performs too much work and fetch fanout for a triage surface.
31
+ - The information hierarchy is system-centric (`phase`, `activity_state`, internal gate labels) instead of client-centric (`Needs Me`, `At Risk`, `Ready`, `Stalled`).
32
+ - Cost is still surfaced as the primary usage metric in several places, even though token usage is the better operational baseline.
33
+ - The current policy/config surface for the dashboard is too limited for a real client-facing control plane.
34
+ - Mutating actions are not governed consistently enough for a client-grade dashboard.
35
+ - The layout creates too many independent scroll regions and too much below-the-fold interaction cost.
36
+
37
+ ### 0.3 Non-Negotiable Principles
38
+
39
+ 1. **Triage first:** the first screen must answer what needs attention now.
40
+ 2. **Client language over system language:** derived labels should map internal state into actionable client meaning.
41
+ 3. **Progressive disclosure:** rich diagnostics remain available, but not at the expense of board scanability.
42
+ 4. **Token-first usage truth:** token usage is the primary budget/usage metric; USD is optional derived context.
43
+ 5. **Safe by default:** mutating actions and sensitive data exposure must be explicitly governed.
44
+ 6. **Route clarity:** `/` is command center, `/feature/:id` is deep feature focus, `/analytics` is trend analysis.
45
+
46
+ ### 0.4 Required Quality Standards
47
+
48
+ All implementation for this spec MUST satisfy:
49
+
50
+ - TypeScript strict mode passes.
51
+ - ESLint zero warnings.
52
+ - `npm run build`, `npm run typecheck`, `npm run lint`, and `npm test` pass.
53
+ - Coverage remains >= 90% lines/branches/functions/statements.
54
+ - Accessibility baseline is WCAG 2.2 AA for all new interactive UI.
55
+ - Primary triage workflows remain usable at 360px CSS width without page-level horizontal scrolling.
56
+
57
+ ### 0.5 Visual System Contract
58
+
59
+ The root dashboard redesign MUST use the current shared Aequitas-inspired light visual system already established in the dashboard codebase:
60
+
61
+ - Light surfaces and elevated white/light-blue panels.
62
+ - Teal primary action styling.
63
+ - Gold/orange warning emphasis.
64
+ - Slate primary and secondary text.
65
+ - Red reserved for destructive/blocked/critical states.
66
+ - Soft borders and shadows rather than dark-console framing.
67
+
68
+ This spec explicitly rejects reintroducing the earlier dark operations-console palette for `/`.
69
+
70
+ ### 0.6 Out-of-Scope Clarification
71
+
72
+ This redesign does **not** make `/` a replacement for:
73
+
74
+ - reviewer-grade diff workspace
75
+ - full agent console
76
+ - raw log investigation
77
+ - full checkpoint comparison
78
+ - rich evidence reading
79
+
80
+ Those remain in Focus view and related M46 work.
81
+
82
+ ---
83
+
84
+ ## 1. Experience Architecture
85
+
86
+ ### 1.1 Route Roles
87
+
88
+ The product surface is intentionally split:
89
+
90
+ 1. **Board / Command Center (`/`)**
91
+ - triage
92
+ - queue management
93
+ - lightweight feature preview
94
+ - operator health
95
+ - fast navigation
96
+ 2. **Focus View (`/feature/:id`)**
97
+ - deep review
98
+ - review actions
99
+ - transcript/runtime/diff/evidence
100
+ 3. **Analytics (`/analytics`)**
101
+ - trends
102
+ - provider and throughput analysis
103
+ - portfolio-level reporting
104
+
105
+ ### 1.2 Root Dashboard Information Hierarchy
106
+
107
+ The root page MUST render in this order:
108
+
109
+ 1. Command Center Header
110
+ 2. Attention Strip
111
+ 3. Task-First Filter Bar
112
+ 4. Main Triage Layout
113
+ 5. Secondary Diagnostics Rail
114
+
115
+ This is a hierarchy requirement, not a mere layout preference.
116
+
117
+ ### 1.3 Main Triage Layout
118
+
119
+ Desktop:
120
+
121
+ - Left: prioritized work queues and board/list switchable portfolio view
122
+ - Right: lightweight triage drawer for selected feature
123
+
124
+ Tablet/mobile:
125
+
126
+ - Attention Strip and task filters remain above the fold
127
+ - Board/list becomes primary content
128
+ - Selecting a feature opens an overlay or anchored drawer optimized for quick inspection
129
+ - Full review should route to Focus view rather than trying to replicate full detail inline
130
+
131
+ ### 1.4 Triage Drawer Rule
132
+
133
+ The root dashboard selection panel is renamed conceptually from a **detail panel** to a **triage drawer**.
134
+
135
+ It MUST answer:
136
+
137
+ - Why is this feature relevant right now?
138
+ - What is the current status and substate?
139
+ - What changed recently?
140
+ - What is blocking it?
141
+ - What actions are valid here?
142
+ - Should I stay here or open Focus view?
143
+
144
+ It MUST NOT try to be a full review workspace.
145
+
146
+ ---
147
+
148
+ ## 2. Delivery Tracks
149
+
150
+ ### 2.1 Track A - Command Center Core
151
+
152
+ Track A is the required root-dashboard redesign:
153
+
154
+ - triage-first page hierarchy
155
+ - attention strip
156
+ - task-first filters
157
+ - lighter triage drawer
158
+ - richer board cards
159
+ - merged/archive demotion
160
+ - reduced scroll complexity
161
+ - token-first usage presentation on `/`
162
+
163
+ ### 2.2 Track B - Governance + Configuration
164
+
165
+ Track B productizes the dashboard for external-facing/client-safe usage:
166
+
167
+ - dashboard policy schema expansion
168
+ - action authorization hardening
169
+ - module visibility configuration
170
+ - redaction controls
171
+ - project metadata improvements
172
+ - token-to-USD optional conversion contract
173
+
174
+ ### 2.3 Track C - Insight Layer
175
+
176
+ Track C adds higher-order insight and recency intelligence:
177
+
178
+ - “what changed since last visit”
179
+ - client-facing attention ranking
180
+ - staleness and SLA signals
181
+ - derived portfolio summaries
182
+ - queue trend and workload signals
183
+
184
+ Track C must not block Track A.
185
+
186
+ ---
187
+
188
+ ## 3. Revised Improvements (UX-50 to UX-62)
189
+
190
+ ### UX-50 - Command Center Header
191
+
192
+ **Intent:** establish a stronger top-of-page control surface and orient the user immediately.
193
+
194
+ **Requirements:**
195
+
196
+ - Header shows:
197
+ - page title
198
+ - live connection state
199
+ - current project/environment
200
+ - last snapshot freshness
201
+ - quick link to Analytics
202
+ - Board/List toggle remains, but it is secondary to task filters.
203
+ - Project switcher should display client-facing project labels when configured, not only raw internal names.
204
+ - Header copy should be client-comprehensible, not only system-observability language.
205
+
206
+ ### UX-51 - Attention Strip
207
+
208
+ **Intent:** replace generic aggregate-first scanning with ranked urgency.
209
+
210
+ **Requirements:**
211
+
212
+ - Render a first-class strip above the general summary tiles.
213
+ - Attention cards must include, at minimum:
214
+ - `Needs Your Input`
215
+ - `Blocked`
216
+ - `Ready To Merge`
217
+ - `Stalled`
218
+ - `Budget Risk`
219
+ - `Run Health`
220
+ - Each card must include count, severity, and a short reason label.
221
+ - Clicking an attention card applies a task filter preset.
222
+ - Attention ranking must prioritize human-blocking states over passive metrics.
223
+
224
+ ### UX-52 - Task-First Filter Bar
225
+
226
+ **Intent:** let clients filter by job-to-be-done instead of raw internal state.
227
+
228
+ **Requirements:**
229
+
230
+ - Default presets:
231
+ - `Needs Me`
232
+ - `At Risk`
233
+ - `Ready`
234
+ - `Stalled`
235
+ - `Waiting On Dependencies`
236
+ - `Waiting On CI`
237
+ - `Recently Changed`
238
+ - Existing phase/activity filters move under an `Advanced Filters` disclosure section.
239
+ - Filter state remains URL-synced.
240
+ - Search must match feature id and, when available, user-facing goal/intent summary.
241
+ - The board must show explicit empty states for active task filters.
242
+
243
+ ### UX-53 - Prioritized Work Queues
244
+
245
+ **Intent:** give clients a ranked operational queue before showing the full portfolio board.
246
+
247
+ **Requirements:**
248
+
249
+ - Render compact queue modules above the board:
250
+ - `Action Required`
251
+ - `Ready For Review`
252
+ - `Blocked Critical Path`
253
+ - `Recently Changed`
254
+ - Each queue entry includes:
255
+ - feature id
256
+ - short reason
257
+ - recency
258
+ - one-click select
259
+ - one-click open in Focus view
260
+ - Queue ordering must be deterministic.
261
+ - Queue modules may collapse when empty.
262
+
263
+ ### UX-54 - Richer Board Cards for Client Decisions
264
+
265
+ **Intent:** make the board useful without forcing frequent drawer opens.
266
+
267
+ **Requirements:**
268
+
269
+ - Each card MUST support:
270
+ - feature id
271
+ - phase chip
272
+ - client-facing substate label
273
+ - last meaningful update age
274
+ - waiting-input indicator
275
+ - dependency/lock indicator
276
+ - CI/review readiness indicator
277
+ - usage/budget state
278
+ - The card should answer “what is happening here” in one glance.
279
+ - Internal raw labels such as `activity_state` may remain in tooltips or advanced metadata, but should not be the primary visible label.
280
+ - `Merged` cards should not consume equal prominence with active work.
281
+
282
+ ### UX-55 - Merged Archive Demotion
283
+
284
+ **Intent:** prevent completed work from diluting active triage.
285
+
286
+ **Requirements:**
287
+
288
+ - `Merged` moves out of the primary active board layout.
289
+ - Acceptable implementations:
290
+ - collapsed archive section
291
+ - dedicated `Merged` tab
292
+ - compact summary list
293
+ - Active triage views must prioritize non-terminal work.
294
+ - Merged items remain discoverable and searchable.
295
+
296
+ ### UX-56 - Lightweight Triage Drawer
297
+
298
+ **Intent:** replace the heavy root detail panel with a fast, job-oriented preview surface.
299
+
300
+ **Requirements:**
301
+
302
+ - Drawer sections:
303
+ - overview
304
+ - why this needs attention
305
+ - blockers/dependencies
306
+ - review/PR snapshot
307
+ - usage snapshot
308
+ - next valid actions
309
+ - open Focus view CTA
310
+ - The drawer MUST NOT eagerly load all deep-review data currently fetched by the full `DetailPanel`.
311
+ - Deep sections such as full diff, raw evidence, checkpoint comparison, and runtime internals must not be first-class content on `/`.
312
+ - The drawer may include small previews, but full workflows route to Focus view.
313
+
314
+ ### UX-57 - Token-First Usage and Budgeting
315
+
316
+ **Intent:** make usage reporting operationally truthful and consistent across the product.
317
+
318
+ **Requirements:**
319
+
320
+ - Root dashboard usage displays are token-first.
321
+ - Replace `Cost Today` language on `/` with `Usage Today` or equivalent token-first wording.
322
+ - Primary board metrics:
323
+ - total tokens today
324
+ - per-feature tokens used
325
+ - per-feature token budget state
326
+ - USD may be shown only as optional secondary context when conversion is configured.
327
+ - If conversion is absent, no derived USD should be shown.
328
+
329
+ ### UX-58 - Action Governance Model
330
+
331
+ **Intent:** make client-visible mutating actions safe and explicitly governed.
332
+
333
+ **Requirements:**
334
+
335
+ - Dashboard actions requiring governance:
336
+ - approve
337
+ - deny
338
+ - request changes
339
+ - retry
340
+ - send message
341
+ - quick launch
342
+ - Authorization checks must not be limited to quick launch only.
343
+ - Disabled actions must render explanatory UI states, not silent disappearance unless policy explicitly requests hiding.
344
+ - Each action should declare:
345
+ - enabled/disabled
346
+ - authorized/unauthorized
347
+ - reason
348
+
349
+ ### UX-59 - Redaction-Safe Client Mode
350
+
351
+ **Intent:** allow the same dashboard to serve both internal operators and external/client stakeholders safely.
352
+
353
+ **Requirements:**
354
+
355
+ - Sensitive surfaces requiring explicit policy control:
356
+ - raw logs
357
+ - raw evidence
358
+ - exact file paths
359
+ - provider/model internals
360
+ - low-level runtime/session wiring
361
+ - The root dashboard must support redacted display modes.
362
+ - Redaction should affect presentation and route availability where required.
363
+ - Redacted states must be clear and non-broken.
364
+
365
+ ### UX-60 - Project Metadata and Portfolio Switching
366
+
367
+ **Intent:** make multi-project usage feel productized rather than filesystem-driven.
368
+
369
+ **Requirements:**
370
+
371
+ - Multi-project switcher should support:
372
+ - display label
373
+ - environment
374
+ - owner/team
375
+ - sort order
376
+ - pinned/default project
377
+ - archived/hidden state
378
+ - Raw path information must not be required in UI.
379
+ - The active project context should be obvious in the header and URL.
380
+
381
+ ### UX-61 - Change Detection and “Since You Last Looked”
382
+
383
+ **Intent:** reduce repeat scanning cost for returning users.
384
+
385
+ **Requirements:**
386
+
387
+ - The dashboard should support change markers for:
388
+ - newly blocked
389
+ - newly ready to merge
390
+ - new human-input request
391
+ - CI regression
392
+ - budget threshold crossed
393
+ - Track C may use local persisted client state or server-side cursors, but implementation must clearly define which.
394
+ - Change markers should be subtle but prominent enough to support fast rescanning.
395
+
396
+ ### UX-62 - Scroll, Density, and Mobile Corrections
397
+
398
+ **Intent:** remove avoidable friction from the board interaction model.
399
+
400
+ **Requirements:**
401
+
402
+ - Reduce nested scrolling where possible.
403
+ - On narrow screens, selected-feature preview must not require a long scroll below the full board.
404
+ - The root page must avoid stacking a full deep-review panel below the board on mobile.
405
+ - Dense modules such as live feed, locks, dependencies, and collisions should collapse or move to a secondary diagnostics rail when not urgent.
406
+
407
+ ---
408
+
409
+ ## 4. Data and Loading Contracts
410
+
411
+ ### 4.1 First-Paint Contract for `/`
412
+
413
+ The root page first paint MUST rely primarily on the status snapshot and not depend on multi-request feature-detail hydration.
414
+
415
+ Required at first paint:
416
+
417
+ - portfolio feature summaries
418
+ - run health summary
419
+ - lock/dependency/collision summaries
420
+ - token-usage aggregates
421
+ - attention-ranking inputs
422
+ - project context
423
+
424
+ ### 4.2 Drawer-Lazy Contract
425
+
426
+ Selecting a feature in `/` may lazily fetch drawer-only data, but the drawer payload should be materially smaller than Focus view.
427
+
428
+ Allowed drawer-lazy content:
429
+
430
+ - compact review snapshot
431
+ - short blocker explanation
432
+ - brief usage snapshot
433
+ - compact PR/review context
434
+
435
+ Not allowed as required root-route drawer fetches:
436
+
437
+ - full diff payload
438
+ - raw logs
439
+ - full evidence bodies
440
+ - checkpoint diff comparison
441
+ - long transcript streams
442
+
443
+ ### 4.3 Focus Escalation Rule
444
+
445
+ If a user needs:
446
+
447
+ - full review actions context
448
+ - code diff inspection
449
+ - evidence reading
450
+ - runtime investigation
451
+ - transcript or console workflows
452
+
453
+ the page should guide them into `/feature/:id` rather than growing `/` into a second deep-review route.
454
+
455
+ ---
456
+
457
+ ## 5. Type and Payload Changes
458
+
459
+ ### 5.1 Dashboard Status Payload Additions
460
+
461
+ `DashboardStatusPayload.metrics` should evolve to support token-first triage:
462
+
463
+ ```typescript
464
+ metrics?: {
465
+ total_tokens_today?: number;
466
+ total_cost_today_usd?: number | null;
467
+ merge_histogram_14d?: number[];
468
+ }
469
+ ```
470
+
471
+ ### 5.2 Feature Summary Additions
472
+
473
+ `FeatureSummary` should support richer client-facing triage signals:
474
+
475
+ ```typescript
476
+ attention_reasons?: string[];
477
+ waiting_input_count?: number;
478
+ last_meaningful_change_at?: string;
479
+ usage_tokens?: number | null;
480
+ budget_state?: 'normal' | 'warning' | 'critical' | 'exceeded' | 'unknown';
481
+ client_status_label?: string;
482
+ ```
483
+
484
+ The server should prefer deriving these once rather than forcing the client to repeatedly reconstruct them from low-level fields.
485
+
486
+ ### 5.3 Triage Drawer Payload
487
+
488
+ If a separate route is introduced for drawer hydration, it should be explicitly smaller than `FeatureDetail` and optimized for `/`.
489
+
490
+ Suggested shape:
491
+
492
+ ```typescript
493
+ interface FeatureTriageDetail {
494
+ feature: FeatureSummary;
495
+ why_attention: string[];
496
+ blocker_summary?: string | null;
497
+ dependency_summary?: string[];
498
+ review_snapshot?: {
499
+ pr_url?: string | null;
500
+ ci_status?: string | null;
501
+ review_decision?: string | null;
502
+ merge_ready?: boolean | null;
503
+ };
504
+ usage?: {
505
+ tokens_used?: number | null;
506
+ budget_limit_tokens?: number | null;
507
+ derived_cost_usd?: number | null;
508
+ };
509
+ }
510
+ ```
511
+
512
+ ---
513
+
514
+ ## 6. Component Delivery Contract
515
+
516
+ This section is normative. An implementation agent should not infer the component plan from prose alone. The root dashboard redesign includes explicit component additions, refactors, and removals from `/`.
517
+
518
+ ### 6.1 New Components To Deliver
519
+
520
+ The following new components are expected as part of Track A unless the implementer can show an equivalent decomposition with equal or better separation of concerns:
521
+
522
+ #### Root Composition Components
523
+
524
+ - `components/dashboard/command-center-header.tsx`
525
+ - owns root header presentation
526
+ - includes project context, connection/freshness state, and top-level navigation actions
527
+ - `components/dashboard/attention-strip.tsx`
528
+ - owns ranked attention cards
529
+ - applies task-filter presets
530
+ - `components/dashboard/task-filter-bar.tsx`
531
+ - owns task-first filters and advanced filter disclosure
532
+ - `components/dashboard/prioritized-queues.tsx`
533
+ - owns compact queue modules above the main board/list area
534
+ - `components/dashboard/secondary-diagnostics-rail.tsx`
535
+ - owns lower-priority diagnostic modules promoted or collapsed based on urgency
536
+
537
+ #### Board and Selection Components
538
+
539
+ - `components/dashboard/triage-drawer.tsx`
540
+ - replaces the current root use of the heavy `DetailPanel`
541
+ - root-route only
542
+ - `components/dashboard/merged-archive.tsx`
543
+ - owns merged-item demotion behavior
544
+ - collapsed archive, tab, or compact summary implementation
545
+ - `components/dashboard/board-toolbar.tsx`
546
+ - optional but recommended
547
+ - owns board/list mode toggle and any local portfolio view controls separated from the page header
548
+
549
+ #### Optional Supporting Components
550
+
551
+ - `components/dashboard/attention-card.tsx`
552
+ - `components/dashboard/task-filter-chip-group.tsx`
553
+ - `components/dashboard/queue-module.tsx`
554
+ - `components/dashboard/triage-overview.tsx`
555
+ - `components/dashboard/triage-actions.tsx`
556
+ - `components/dashboard/usage-summary-tile.tsx`
557
+
558
+ These supporting components are not individually mandatory, but the responsibilities they represent should exist somewhere in the new composition.
559
+
560
+ ### 6.2 Existing Components To Refactor
561
+
562
+ The following existing components are expected to be refactored rather than left unchanged:
563
+
564
+ - `components/summary-bar.tsx`
565
+ - refactor from aggregate-summary-first toward token-first usage and compatibility with the new attention hierarchy
566
+ - likely reduced in prominence or split internally
567
+ - `components/filter-bar.tsx`
568
+ - refactor into a task-first filter surface
569
+ - raw phase/activity controls move behind advanced disclosure
570
+ - `components/feature-card.tsx`
571
+ - refactor to support client-facing substate labels, usage state, richer risk/readiness signals, and merged de-emphasis
572
+ - `components/kanban-board.tsx`
573
+ - refactor to support merged demotion and integration with prioritized triage model
574
+ - `components/feature-list-view.tsx`
575
+ - refactor so list view reflects the same task-first information hierarchy as board view
576
+ - `components/run-health-panel.tsx`
577
+ - refactor or wrap so run health can participate in the Attention Strip and secondary diagnostics rail
578
+ - `components/dependency-chains.tsx`
579
+ - refactor or wrap for use inside prioritized queues and/or diagnostics rail
580
+ - `components/lock-resource-map.tsx`
581
+ - refactor or wrap for diagnostics rail placement and urgency-aware visibility
582
+ - `components/collision-queue.tsx`
583
+ - refactor or wrap for diagnostics rail placement and urgency-aware visibility
584
+ - `components/quick-launch-panel.tsx`
585
+ - refactor under Track B governance rules so it supports explicit enabled/authorized/reason semantics
586
+ - `components/live-event-feed.tsx`
587
+ - refactor for demotion from primary root flow into secondary diagnostics or collapsed affordance
588
+
589
+ ### 6.3 Existing Components To Remove From Root Route
590
+
591
+ The following components or responsibilities should no longer be primary root-route content once Track A is complete:
592
+
593
+ - `components/detail-panel.tsx`
594
+ - removed from `/`
595
+ - replaced by `components/dashboard/triage-drawer.tsx`
596
+ - remains available for Focus view or may be further split there
597
+
598
+ The following deep-review responsibilities must be removed from the root route even if some remain implemented elsewhere:
599
+
600
+ - full diff viewer rendering
601
+ - full evidence viewer rendering
602
+ - checkpoint timeline and checkpoint comparison UI
603
+ - runtime inspector deep-dive UI
604
+ - full review action form as the dominant root selection experience
605
+ - long history/log sections
606
+
607
+ ### 6.4 Existing Components That Remain Focus-View Or Deep-Review Concerns
608
+
609
+ These components are not root command-center primitives after this redesign and should remain attached to Focus-view or deep-review contexts:
610
+
611
+ - `components/diff-viewer.tsx`
612
+ - `components/evidence-viewer.tsx`
613
+ - `components/gate-step-drilldown.tsx`
614
+ - `components/review-brief-panel.tsx`
615
+ - `components/qa-coverage-map.tsx`
616
+ - `components/features/runtime-inspector/RuntimeInspectorPanel.tsx`
617
+ - deep checkpoint comparison and timeline UI currently hosted inside `DetailPanel`
618
+
619
+ An implementation agent should avoid re-importing these as first-class sections on `/` unless the spec is amended.
620
+
621
+ ### 6.5 Root Route Component Mapping
622
+
623
+ The intended end-state mapping is:
624
+
625
+ | Current Root Usage | End-State |
626
+ | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
627
+ | `page.tsx` orchestrates nearly all dashboard concerns directly | `page.tsx` becomes a thin route composer using command-center components |
628
+ | `SummaryBar` is the first scan surface | `AttentionStrip` is first; `SummaryBar` becomes secondary or partially absorbed |
629
+ | `FilterBar` exposes raw internal filter taxonomy | `TaskFilterBar` exposes task-first filters with advanced disclosure |
630
+ | `DetailPanel` provides deep review in `/` | `TriageDrawer` provides lightweight preview in `/`; deep review moves to Focus |
631
+ | `CollisionQueue`, `LockResourceMap`, `DependencyChains`, `LiveEventFeed`, `QuickLaunchPanel` all compete in the same primary region | these move into `PrioritizedQueues` and/or `SecondaryDiagnosticsRail` with clearer priority rules |
632
+ | `Merged` is a full board column | `MergedArchive` or equivalent demoted archive experience |
633
+
634
+ ### 6.6 Implementation Rule
635
+
636
+ Track A should not be considered complete until:
637
+
638
+ - the new root command-center components exist
639
+ - the old root-route dependency on `DetailPanel` is removed
640
+ - the component ownership of primary triage responsibilities is explicit in code, not only in page-level JSX
641
+
642
+ ---
643
+
644
+ ## 7. Configuration Contracts
645
+
646
+ ### 7.1 `policy.yaml` Dashboard Section Expansion
647
+
648
+ The dashboard policy surface should expand beyond `enabled`, `port`, and `quick_launch`.
649
+
650
+ Recommended shape:
651
+
652
+ ```yaml
653
+ dashboard:
654
+ enabled: true
655
+ port: 3000
656
+ quick_launch: false
657
+ default_view: board
658
+ modules:
659
+ run_health: true
660
+ locks: true
661
+ dependencies: true
662
+ collision_queue: true
663
+ live_feed: false
664
+ attention_thresholds:
665
+ stale_feature_minutes: 20
666
+ blocked_age_minutes: 15
667
+ waiting_input_age_minutes: 10
668
+ run_heartbeat_degraded_seconds: 30
669
+ run_heartbeat_critical_seconds: 120
670
+ usage_display:
671
+ primary_metric: tokens
672
+ token_cost_conversion:
673
+ usd_per_1k_tokens: 0.35
674
+ redaction:
675
+ hide_raw_logs: true
676
+ hide_raw_evidence: true
677
+ hide_provider_details: false
678
+ hide_file_paths: false
679
+ actions:
680
+ approve: true
681
+ deny: true
682
+ request_changes: true
683
+ retry: true
684
+ send_message: true
685
+ quick_launch: false
686
+ ```
687
+
688
+ ### 7.2 Budget Configuration Evolution
689
+
690
+ Budget policy should align with token-first usage:
691
+
692
+ ```yaml
693
+ budget:
694
+ per_feature_limit_tokens: 250000
695
+ alert_threshold: 0.8
696
+ token_cost_conversion:
697
+ usd_per_1k_tokens: 0.35
698
+ ```
699
+
700
+ Rules:
701
+
702
+ - `per_feature_limit_tokens` is the primary threshold for dashboard usage states.
703
+ - `token_cost_conversion` is optional.
704
+ - If conversion is absent, derived USD must be omitted.
705
+ - Existing USD-only budget settings may be preserved temporarily for backward compatibility, but the root dashboard must prefer token limits when both exist.
706
+
707
+ ### 7.3 Multi-Project Config Metadata
708
+
709
+ `multi-project.yaml` should support richer UI metadata:
710
+
711
+ ```yaml
712
+ defaults:
713
+ default_project: aequitas-prod
714
+ projects:
715
+ - name: aequitas-prod
716
+ label: Aequitas Production
717
+ environment: production
718
+ owner: Platform
719
+ sort_order: 10
720
+ pinned: true
721
+ hidden: false
722
+ path: ~/workspace/Aequitas/projects/AequitasWebUI
723
+ ```
724
+
725
+ These fields are for presentation and triage quality, not orchestration logic.
726
+
727
+ ---
728
+
729
+ ## 8. Risks, Side Effects, and Tradeoffs
730
+
731
+ ### 8.1 Side Effects to Address
732
+
733
+ - A lighter root drawer means some existing power-user workflows move out of `/`.
734
+ - Task-first filters require stronger derived server-side semantics; weak derivation will create misleading triage states.
735
+ - Token-first usage may confuse users accustomed to dollar-only reporting unless copy is explicit.
736
+ - Redaction and authorization layers can make internal debugging slower if they are too coarse or too aggressive.
737
+ - Demoting merged work improves triage but may reduce visibility for audit-oriented users unless search/archive affordances stay strong.
738
+
739
+ ### 8.2 Tradeoffs to Call Out Explicitly
740
+
741
+ - **Breadth vs clarity:** the command center becomes less of an everything-console and more of a decision surface.
742
+ - **Derived labels vs raw transparency:** client-facing statuses are more usable but require disciplined mapping from raw orchestrator state.
743
+ - **Safety vs speed:** stronger action governance adds implementation work and may reduce “frictionless” internal use.
744
+ - **Consistency vs flexibility:** a more opinionated module hierarchy will improve UX but reduce ad hoc layout freedom.
745
+
746
+ ---
747
+
748
+ ## 9. Acceptance Criteria
749
+
750
+ M47 is accepted when all are true:
751
+
752
+ 1. `/` clearly answers what needs attention now without requiring drawer open or board-wide scanning.
753
+ 2. The root dashboard no longer functions as a full deep-review workspace; Focus view is the intentional escalation path.
754
+ 3. Task-first filters exist and are more prominent than raw phase/activity filters.
755
+ 4. Root usage displays are token-first, with optional derived USD only when configured.
756
+ 5. Mutating dashboard actions have explicit enabled/authorized/reason semantics, not quick-launch-only governance.
757
+ 6. Multi-project switching supports client-facing metadata rather than only raw project names and paths.
758
+ 7. Mobile triage no longer relies on a long below-the-board detail panel workflow.
759
+ 8. The redesign uses the shared Aequitas-aligned light visual system and does not regress back to the dark ops-console style.
760
+
761
+ ---
762
+
763
+ ## 10. Implementation Sequence
764
+
765
+ This section is normative for agent execution. An implementation agent should treat these slices as the default rollout order unless a user explicitly requests a different sequence.
766
+
767
+ ### 10.1 Delivery Strategy
768
+
769
+ Implementation should proceed in small, testable slices with visible product checkpoints:
770
+
771
+ 1. establish root-dashboard architecture changes without changing governance
772
+ 2. migrate `/` to token-first, triage-first UI
773
+ 3. shrink root-route detail loading and move deep workflows behind Focus navigation
774
+ 4. add governance/configuration contracts
775
+ 5. add higher-order insight features only after the core command-center flow is stable
776
+
777
+ The implementation should avoid a single giant rewrite of `src/app/page.tsx`. Extract composition first, then replace behavior incrementally.
778
+
779
+ ### 10.2 Target Files and Ownership
780
+
781
+ The likely primary implementation surface is:
782
+
783
+ - `packages/web-dashboard/src/app/page.tsx`
784
+ - `packages/web-dashboard/src/styles/dashboard.module.css`
785
+ - `packages/web-dashboard/src/lib/dashboard-utils.ts`
786
+ - `packages/web-dashboard/src/lib/types.ts`
787
+ - `packages/web-dashboard/src/components/summary-bar.tsx`
788
+ - `packages/web-dashboard/src/components/filter-bar.tsx`
789
+ - `packages/web-dashboard/src/components/feature-card.tsx`
790
+ - `packages/web-dashboard/src/components/kanban-board.tsx`
791
+ - `packages/web-dashboard/src/components/feature-list-view.tsx`
792
+ - `packages/web-dashboard/src/components/detail-panel.tsx`
793
+
794
+ New components are expected. Recommended additions:
795
+
796
+ - `packages/web-dashboard/src/components/dashboard/command-center-header.tsx`
797
+ - `packages/web-dashboard/src/components/dashboard/attention-strip.tsx`
798
+ - `packages/web-dashboard/src/components/dashboard/task-filter-bar.tsx`
799
+ - `packages/web-dashboard/src/components/dashboard/prioritized-queues.tsx`
800
+ - `packages/web-dashboard/src/components/dashboard/triage-drawer.tsx`
801
+ - `packages/web-dashboard/src/components/dashboard/merged-archive.tsx`
802
+ - `packages/web-dashboard/src/components/dashboard/secondary-diagnostics-rail.tsx`
803
+
804
+ Potential new or expanded server surfaces:
805
+
806
+ - `packages/web-dashboard/src/app/api/status/route.ts`
807
+ - `packages/web-dashboard/src/app/api/policy/budget/route.ts`
808
+ - `packages/web-dashboard/src/app/api/projects/route.ts`
809
+ - optional new drawer-focused route if a reduced payload is introduced
810
+
811
+ Potential orchestrator/config surfaces:
812
+
813
+ - `agentic/orchestrator/defaults/policy.defaults.yaml`
814
+ - `agentic/orchestrator/policy.yaml`
815
+ - `agentic/orchestrator/schemas/policy.schema.json`
816
+ - `agentic/orchestrator/schemas/policy.user.schema.json`
817
+ - `packages/web-dashboard/src/lib/multi-project-config.ts`
818
+
819
+ ### 10.3 Track A - Command Center Core
820
+
821
+ #### Slice A1 - Component Extraction and Layout Skeleton
822
+
823
+ **Goal:** make the root dashboard composable before changing behavior.
824
+
825
+ **Required work:**
826
+
827
+ - Extract current header, summary, filters, board/list switcher, and root selection panel orchestration out of monolithic `page.tsx`.
828
+ - Introduce a dedicated root layout structure for:
829
+ - header
830
+ - attention area
831
+ - filter area
832
+ - main triage area
833
+ - secondary diagnostics rail
834
+ - Preserve current functionality during extraction.
835
+
836
+ **Implementation notes:**
837
+
838
+ - Do not change API contracts in this slice.
839
+ - Do not remove current detail functionality yet; only isolate it behind a wrapper.
840
+ - Keep route/query synchronization behavior intact.
841
+
842
+ **Verification gate:**
843
+
844
+ - `/` still renders board and list modes correctly.
845
+ - selected feature sync in URL still works.
846
+ - keyboard navigation still works.
847
+
848
+ #### Slice A2 - Attention Strip and Task-First Filter Model
849
+
850
+ **Goal:** change the top-of-page decision model from aggregate-first to task-first.
851
+
852
+ **Required work:**
853
+
854
+ - Add a new attention-strip component above the existing summary area.
855
+ - Add task-first presets:
856
+ - `Needs Me`
857
+ - `At Risk`
858
+ - `Ready`
859
+ - `Stalled`
860
+ - `Waiting On Dependencies`
861
+ - `Waiting On CI`
862
+ - `Recently Changed`
863
+ - Move raw phase/activity filtering under an advanced disclosure section.
864
+ - Extend filter state typing and URL serialization in `dashboard-utils.ts`.
865
+
866
+ **Implementation notes:**
867
+
868
+ - Reuse current summary counts where possible, but add derived selectors for new task filters.
869
+ - Derived filters must be deterministic and documented inline in utility code.
870
+ - Do not remove legacy quick filters until the new task filters are wired and tested.
871
+
872
+ **Verification gate:**
873
+
874
+ - URL round-trip preserves task filters.
875
+ - task filters produce stable filtered sets in both board and list view.
876
+ - empty-state messaging remains clear when filters reduce a column to zero features.
877
+
878
+ #### Slice A3 - Richer Board Cards and Merged Demotion
879
+
880
+ **Goal:** improve scanability without opening the drawer.
881
+
882
+ **Required work:**
883
+
884
+ - Add client-facing substate labels and richer status affordances to `FeatureCard`.
885
+ - Add usage/budget indicators to cards when data is available.
886
+ - Demote merged work out of the primary active board layout.
887
+ - Ensure list view reflects the same information hierarchy, not just board view.
888
+
889
+ **Implementation notes:**
890
+
891
+ - Avoid adding heavy per-card fetches.
892
+ - Prefer deriving card-level fields from the status payload.
893
+ - If the payload lacks necessary data, expand the status payload instead of fetching per card.
894
+
895
+ **Verification gate:**
896
+
897
+ - Board is still readable at mobile breakpoints.
898
+ - merged items remain discoverable.
899
+ - no new nested hover-only information is required to understand card state.
900
+
901
+ #### Slice A4 - Triage Drawer Replacement
902
+
903
+ **Goal:** replace the current heavy root detail panel with a lightweight triage drawer.
904
+
905
+ **Required work:**
906
+
907
+ - Introduce `TriageDrawer` as a distinct component from the current `DetailPanel`.
908
+ - Restrict root-route drawer content to:
909
+ - overview
910
+ - why attention
911
+ - blockers/dependencies
912
+ - compact PR/review snapshot
913
+ - compact usage snapshot
914
+ - valid next actions
915
+ - Focus CTA
916
+ - Remove deep-review-first sections from `/`:
917
+ - full diff
918
+ - full evidence body viewers
919
+ - checkpoint comparison
920
+ - deep runtime investigation
921
+ - full history/log sections
922
+
923
+ **Implementation notes:**
924
+
925
+ - It is acceptable to temporarily wrap or reuse small portions of `DetailPanel`, but the end state should not import the full deep-review stack into `/`.
926
+ - If a reduced drawer payload route is introduced, implement it here.
927
+ - The drawer should open quickly and should not trigger the full current feature detail fetch fanout.
928
+
929
+ **Verification gate:**
930
+
931
+ - feature selection latency on `/` is materially lower than current full detail load behavior.
932
+ - the user can still navigate to Focus view for deep review in one click.
933
+ - mobile no longer relies on a long below-the-board detail workflow.
934
+
935
+ #### Slice A5 - Token-First Usage on Root Dashboard
936
+
937
+ **Goal:** align `/` with token-first usage reporting.
938
+
939
+ **Required work:**
940
+
941
+ - Replace `Cost Today` presentation with token-first `Usage Today` wording.
942
+ - Expand root metrics and card/drawer display to use tokens as primary usage/budget measure.
943
+ - Support optional derived USD only when configured.
944
+ - Update any root-route budget messaging and copy accordingly.
945
+
946
+ **Implementation notes:**
947
+
948
+ - This may require parallel changes to status payload and policy budget route contracts.
949
+ - Preserve backward compatibility where possible, but the UI contract should become token-first immediately.
950
+
951
+ **Verification gate:**
952
+
953
+ - when token conversion is absent, no USD appears on `/`
954
+ - when conversion is present, USD renders only as secondary context
955
+ - budget states are driven by token thresholds, not USD thresholds, when both exist
956
+
957
+ ### 10.4 Track B - Governance + Configuration
958
+
959
+ #### Slice B1 - Policy Schema and Defaults Expansion
960
+
961
+ **Goal:** create a first-class dashboard configuration model.
962
+
963
+ **Required work:**
964
+
965
+ - Expand `policy.schema.json` and `policy.user.schema.json` to include:
966
+ - `default_view`
967
+ - `modules`
968
+ - `attention_thresholds`
969
+ - `usage_display`
970
+ - `redaction`
971
+ - `actions`
972
+ - Update defaults in `policy.defaults.yaml`.
973
+ - Ensure lean-policy behavior remains sane when fields are omitted.
974
+
975
+ **Implementation notes:**
976
+
977
+ - Backward compatibility matters here.
978
+ - Omitted configuration must continue to produce a usable dashboard.
979
+ - Defaults should remain safe, not maximally permissive.
980
+
981
+ **Verification gate:**
982
+
983
+ - schema validation passes
984
+ - default policy boot still works
985
+ - omitted fields produce stable defaults
986
+
987
+ #### Slice B2 - Budget Contract Evolution
988
+
989
+ **Goal:** move budget APIs and UI contracts from USD-first to token-first.
990
+
991
+ **Required work:**
992
+
993
+ - Expand `/api/policy/budget` to return token-first fields.
994
+ - Support optional token-to-USD conversion.
995
+ - Update root and Focus consumers to handle mixed old/new config safely.
996
+
997
+ **Verification gate:**
998
+
999
+ - token-first config works
1000
+ - legacy USD-only config still degrades gracefully
1001
+ - no root-route component assumes USD is always present
1002
+
1003
+ #### Slice B3 - Action Governance Hardening
1004
+
1005
+ **Goal:** enforce consistent authorization and action-state semantics.
1006
+
1007
+ **Required work:**
1008
+
1009
+ - Introduce explicit action governance for:
1010
+ - approve
1011
+ - deny
1012
+ - request changes
1013
+ - retry
1014
+ - send message
1015
+ - quick launch
1016
+ - Apply authz checks consistently, not only to quick launch.
1017
+ - Expose enablement/authorization/reason state to the UI.
1018
+
1019
+ **Implementation notes:**
1020
+
1021
+ - The current allow-all adapter is acceptable as a fallback implementation, but the contract must no longer assume “all actions allowed” as the only behavior.
1022
+ - Avoid silent failures; disabled states must be explainable.
1023
+
1024
+ **Verification gate:**
1025
+
1026
+ - unauthorized actions are blocked server-side
1027
+ - UI reflects disabled/unauthorized states without broken buttons or hidden surprises
1028
+
1029
+ #### Slice B4 - Multi-Project Metadata Productization
1030
+
1031
+ **Goal:** make project switching usable for clients and non-authors.
1032
+
1033
+ **Required work:**
1034
+
1035
+ - Extend `multi-project-config.ts` parsing for display metadata.
1036
+ - Update `/api/projects` to expose UI-safe metadata.
1037
+ - Update the root project switcher/header to use labels/environment/owner where configured.
1038
+
1039
+ **Verification gate:**
1040
+
1041
+ - existing simple configs still parse
1042
+ - richer configs render correctly
1043
+ - root UI no longer relies on raw filesystem-oriented project presentation
1044
+
1045
+ #### Slice B5 - Redaction-Safe Client Mode
1046
+
1047
+ **Goal:** support safer external-facing dashboard usage.
1048
+
1049
+ **Required work:**
1050
+
1051
+ - Add config-driven redaction behavior for sensitive dashboard surfaces.
1052
+ - Apply redaction to root dashboard presentation first.
1053
+ - Ensure hidden content produces explanatory, non-broken UI states.
1054
+
1055
+ **Verification gate:**
1056
+
1057
+ - redacted mode hides configured sensitive fields
1058
+ - non-redacted mode preserves internal operator fidelity
1059
+
1060
+ ### 10.5 Track C - Insight Layer
1061
+
1062
+ #### Slice C1 - Attention Ranking and Staleness Derivation
1063
+
1064
+ **Goal:** make attention cards and queues smarter and more trustworthy.
1065
+
1066
+ **Required work:**
1067
+
1068
+ - Add deterministic attention ranking logic to shared dashboard utilities or server derivation.
1069
+ - Derive:
1070
+ - stalled features
1071
+ - aging blocked items
1072
+ - aging waiting-input items
1073
+ - newly risky items
1074
+
1075
+ **Verification gate:**
1076
+
1077
+ - ranking order is stable
1078
+ - severity labels map to documented thresholds
1079
+
1080
+ #### Slice C2 - “Since You Last Looked” Markers
1081
+
1082
+ **Goal:** reduce rescanning cost for repeat users.
1083
+
1084
+ **Required work:**
1085
+
1086
+ - choose and document one persistence model:
1087
+ - local browser persisted timestamp/cursor
1088
+ - server cursor
1089
+ - add visual markers for newly changed risky states
1090
+
1091
+ **Verification gate:**
1092
+
1093
+ - markers clear predictably
1094
+ - markers do not flicker or falsely persist after refresh
1095
+
1096
+ #### Slice C3 - Queue and Portfolio Insight Refinement
1097
+
1098
+ **Goal:** improve workload understanding without clutter.
1099
+
1100
+ **Required work:**
1101
+
1102
+ - refine prioritized work queues
1103
+ - add compact trend or workload signals only if they materially improve triage
1104
+ - keep analytics-grade charts out of `/`
1105
+
1106
+ **Verification gate:**
1107
+
1108
+ - root dashboard remains triage-first
1109
+ - insight widgets do not displace attention and queue surfaces above the fold
1110
+
1111
+ ### 10.6 Migration and Rollout Rules
1112
+
1113
+ - Do not delete the current root detail behavior until `TriageDrawer` reaches feature parity for the reduced root-route job.
1114
+ - Prefer additive rollout behind local component boundaries rather than a flag day rewrite.
1115
+ - If a temporary compatibility layer is needed, keep it shallow and remove it before closing Track A.
1116
+ - Track B and C must be layered onto the new root hierarchy, not built against the pre-redesign structure.
1117
+
1118
+ ### 10.7 Required Verification Per Track
1119
+
1120
+ For each completed slice, the implementing agent should run at least:
1121
+
1122
+ - `npm run typecheck`
1123
+ - `npm run lint`
1124
+ - targeted tests for touched dashboard logic/components
1125
+
1126
+ Before declaring Track A complete, the implementing agent should also verify:
1127
+
1128
+ - root route still supports URL-synced selection and filters
1129
+ - board and list view both work
1130
+ - mobile triage is usable
1131
+ - Focus navigation remains intact
1132
+
1133
+ Before declaring Track B complete:
1134
+
1135
+ - schema/default/config parsing tests pass
1136
+ - action governance behaviors are covered
1137
+
1138
+ Before declaring Track C complete:
1139
+
1140
+ - change-detection and attention derivation tests pass
1141
+ - root information hierarchy remains intact
1142
+
1143
+ ---
1144
+
1145
+ ## 11. Open Questions
1146
+
1147
+ None for this revision.