agentic-orchestrator 0.1.6 → 0.1.8

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 (438) hide show
  1. package/.prettierignore +10 -0
  2. package/.prettierrc.json +24 -0
  3. package/CLAUDE.md +3 -2
  4. package/README.md +71 -48
  5. package/agentic/orchestrator/defaults/policy.defaults.yaml +1 -1
  6. package/agentic/orchestrator/prompts/planner.system.md +1 -0
  7. package/agentic/orchestrator/schemas/agents.schema.json +5 -22
  8. package/agentic/orchestrator/schemas/gates.schema.json +4 -19
  9. package/agentic/orchestrator/schemas/index.schema.json +3 -14
  10. package/agentic/orchestrator/schemas/multi-project.schema.json +2 -8
  11. package/agentic/orchestrator/schemas/plan.schema.json +6 -26
  12. package/agentic/orchestrator/schemas/policy.schema.json +19 -81
  13. package/agentic/orchestrator/schemas/policy.user.schema.json +1 -5
  14. package/agentic/orchestrator/schemas/qa_test_index.schema.json +5 -29
  15. package/agentic/orchestrator/schemas/state.schema.json +11 -61
  16. package/agentic/orchestrator/tools/catalog.json +33 -164
  17. package/agentic/orchestrator/tools/schemas/input/evidence.latest.input.schema.json +1 -3
  18. package/agentic/orchestrator/tools/schemas/input/feature.delete.input.schema.json +1 -5
  19. package/agentic/orchestrator/tools/schemas/input/feature.get_context.input.schema.json +1 -3
  20. package/agentic/orchestrator/tools/schemas/input/feature.init.input.schema.json +1 -4
  21. package/agentic/orchestrator/tools/schemas/input/feature.log_append.input.schema.json +1 -5
  22. package/agentic/orchestrator/tools/schemas/input/feature.ready_to_merge.input.schema.json +1 -6
  23. package/agentic/orchestrator/tools/schemas/input/feature.state_get.input.schema.json +1 -3
  24. package/agentic/orchestrator/tools/schemas/input/feature.state_patch.input.schema.json +1 -5
  25. package/agentic/orchestrator/tools/schemas/input/gates.run.input.schema.json +1 -5
  26. package/agentic/orchestrator/tools/schemas/input/locks.acquire.input.schema.json +1 -5
  27. package/agentic/orchestrator/tools/schemas/input/locks.release.input.schema.json +1 -5
  28. package/agentic/orchestrator/tools/schemas/input/performance.record_outcome.input.schema.json +10 -1
  29. package/agentic/orchestrator/tools/schemas/input/plan.get.input.schema.json +1 -3
  30. package/agentic/orchestrator/tools/schemas/input/plan.submit.input.schema.json +1 -5
  31. package/agentic/orchestrator/tools/schemas/input/plan.update.input.schema.json +1 -6
  32. package/agentic/orchestrator/tools/schemas/input/qa.test_index_get.input.schema.json +1 -3
  33. package/agentic/orchestrator/tools/schemas/input/qa.test_index_update.input.schema.json +1 -6
  34. package/agentic/orchestrator/tools/schemas/input/repo.apply_patch.input.schema.json +1 -5
  35. package/agentic/orchestrator/tools/schemas/input/repo.diff.input.schema.json +1 -3
  36. package/agentic/orchestrator/tools/schemas/input/repo.diff_bundle.input.schema.json +1 -3
  37. package/agentic/orchestrator/tools/schemas/input/repo.ensure_worktree.input.schema.json +1 -4
  38. package/agentic/orchestrator/tools/schemas/input/repo.read_file.input.schema.json +1 -4
  39. package/agentic/orchestrator/tools/schemas/input/repo.search.input.schema.json +1 -4
  40. package/agentic/orchestrator/tools/schemas/input/repo.status.input.schema.json +1 -3
  41. package/agentic/orchestrator/tools/schemas/input/report.feature_summary.input.schema.json +1 -3
  42. package/agentic/orchestrator/tools/schemas/output/collisions.scan.output.schema.json +1 -3
  43. package/agentic/orchestrator/tools/schemas/output/evidence.latest.output.schema.json +1 -4
  44. package/agentic/orchestrator/tools/schemas/output/feature.delete.output.schema.json +4 -20
  45. package/agentic/orchestrator/tools/schemas/output/feature.discover_specs.output.schema.json +2 -7
  46. package/agentic/orchestrator/tools/schemas/output/feature.get_context.output.schema.json +1 -8
  47. package/agentic/orchestrator/tools/schemas/output/feature.init.output.schema.json +1 -5
  48. package/agentic/orchestrator/tools/schemas/output/feature.log_append.output.schema.json +1 -5
  49. package/agentic/orchestrator/tools/schemas/output/feature.ready_to_merge.output.schema.json +1 -6
  50. package/agentic/orchestrator/tools/schemas/output/feature.state_get.output.schema.json +1 -4
  51. package/agentic/orchestrator/tools/schemas/output/feature.state_patch.output.schema.json +1 -5
  52. package/agentic/orchestrator/tools/schemas/output/gates.list.output.schema.json +2 -7
  53. package/agentic/orchestrator/tools/schemas/output/gates.run.output.schema.json +1 -8
  54. package/agentic/orchestrator/tools/schemas/output/locks.acquire.output.schema.json +1 -7
  55. package/agentic/orchestrator/tools/schemas/output/locks.release.output.schema.json +1 -5
  56. package/agentic/orchestrator/tools/schemas/output/performance.get_analytics.output.schema.json +22 -2
  57. package/agentic/orchestrator/tools/schemas/output/plan.get.output.schema.json +1 -4
  58. package/agentic/orchestrator/tools/schemas/output/plan.submit.output.schema.json +1 -5
  59. package/agentic/orchestrator/tools/schemas/output/plan.update.output.schema.json +1 -5
  60. package/agentic/orchestrator/tools/schemas/output/qa.test_index_get.output.schema.json +1 -5
  61. package/agentic/orchestrator/tools/schemas/output/qa.test_index_update.output.schema.json +1 -4
  62. package/agentic/orchestrator/tools/schemas/output/repo.apply_patch.output.schema.json +1 -6
  63. package/agentic/orchestrator/tools/schemas/output/repo.diff.output.schema.json +1 -4
  64. package/agentic/orchestrator/tools/schemas/output/repo.diff_bundle.output.schema.json +1 -7
  65. package/agentic/orchestrator/tools/schemas/output/repo.ensure_worktree.output.schema.json +1 -6
  66. package/agentic/orchestrator/tools/schemas/output/repo.read_file.output.schema.json +1 -5
  67. package/agentic/orchestrator/tools/schemas/output/repo.search.output.schema.json +1 -5
  68. package/agentic/orchestrator/tools/schemas/output/repo.status.output.schema.json +1 -5
  69. package/agentic/orchestrator/tools/schemas/output/report.dashboard.output.schema.json +1 -4
  70. package/apps/control-plane/scripts/validate-architecture-rules.mjs +16 -5
  71. package/apps/control-plane/scripts/validate-docker-mcp-contract.mjs +30 -8
  72. package/apps/control-plane/scripts/validate-mcp-contracts.ts +13 -7
  73. package/apps/control-plane/src/application/adapters/adapter-registry.ts +35 -15
  74. package/apps/control-plane/src/application/multi-project-loader.ts +27 -10
  75. package/apps/control-plane/src/application/services/activity-monitor-service.ts +26 -14
  76. package/apps/control-plane/src/application/services/collision-queue-service.ts +31 -17
  77. package/apps/control-plane/src/application/services/cost-tracking-service.ts +23 -16
  78. package/apps/control-plane/src/application/services/dependency-scheduler-service.ts +12 -4
  79. package/apps/control-plane/src/application/services/feature-deletion-service.ts +94 -58
  80. package/apps/control-plane/src/application/services/feature-lifecycle-service.ts +19 -13
  81. package/apps/control-plane/src/application/services/feature-state-service.ts +29 -19
  82. package/apps/control-plane/src/application/services/gate-interpolation-service.ts +7 -2
  83. package/apps/control-plane/src/application/services/gate-service.ts +64 -41
  84. package/apps/control-plane/src/application/services/instance-isolation-service.ts +1 -1
  85. package/apps/control-plane/src/application/services/issue-tracker-service.ts +49 -38
  86. package/apps/control-plane/src/application/services/lock-service.ts +75 -49
  87. package/apps/control-plane/src/application/services/merge-service.ts +91 -50
  88. package/apps/control-plane/src/application/services/notifier-service.ts +42 -20
  89. package/apps/control-plane/src/application/services/patch-service.ts +73 -44
  90. package/apps/control-plane/src/application/services/performance-analytics-service.ts +8 -6
  91. package/apps/control-plane/src/application/services/plan-service.ts +148 -89
  92. package/apps/control-plane/src/application/services/policy-loader-service.ts +10 -4
  93. package/apps/control-plane/src/application/services/pr-monitor-service.ts +33 -14
  94. package/apps/control-plane/src/application/services/qa-index-service.ts +20 -16
  95. package/apps/control-plane/src/application/services/reactions-service.ts +30 -15
  96. package/apps/control-plane/src/application/services/reporting-service.ts +16 -12
  97. package/apps/control-plane/src/application/services/run-lease-service.ts +138 -81
  98. package/apps/control-plane/src/application/tools/tool-metadata.ts +5 -5
  99. package/apps/control-plane/src/application/tools/tool-router.ts +6 -3
  100. package/apps/control-plane/src/cli/aop.ts +2 -2
  101. package/apps/control-plane/src/cli/attach-command-handler.ts +9 -9
  102. package/apps/control-plane/src/cli/cleanup-command-handler.ts +16 -11
  103. package/apps/control-plane/src/cli/cli-argument-parser.ts +6 -3
  104. package/apps/control-plane/src/cli/dashboard-command-handler.ts +28 -8
  105. package/apps/control-plane/src/cli/delete-command-handler.ts +7 -7
  106. package/apps/control-plane/src/cli/env-file.ts +115 -0
  107. package/apps/control-plane/src/cli/help-command-handler.ts +61 -32
  108. package/apps/control-plane/src/cli/init-command-handler.ts +182 -56
  109. package/apps/control-plane/src/cli/io.ts +7 -3
  110. package/apps/control-plane/src/cli/resume-command-handler.ts +21 -13
  111. package/apps/control-plane/src/cli/retry-command-handler.ts +12 -11
  112. package/apps/control-plane/src/cli/run-command-handler.ts +12 -8
  113. package/apps/control-plane/src/cli/send-command-handler.ts +6 -6
  114. package/apps/control-plane/src/cli/spec-ingestion-service.ts +14 -8
  115. package/apps/control-plane/src/cli/spec-input-resolver.ts +6 -1
  116. package/apps/control-plane/src/cli/spec-utils.ts +2 -2
  117. package/apps/control-plane/src/cli/status-command-handler.ts +13 -12
  118. package/apps/control-plane/src/cli/tooling.ts +3 -3
  119. package/apps/control-plane/src/cli/types.ts +1 -1
  120. package/apps/control-plane/src/core/collisions.ts +27 -10
  121. package/apps/control-plane/src/core/constants.ts +13 -7
  122. package/apps/control-plane/src/core/error-codes.ts +1 -1
  123. package/apps/control-plane/src/core/fs.ts +11 -5
  124. package/apps/control-plane/src/core/gates.ts +53 -27
  125. package/apps/control-plane/src/core/git.ts +18 -6
  126. package/apps/control-plane/src/core/kernel.ts +513 -227
  127. package/apps/control-plane/src/core/patch.ts +7 -3
  128. package/apps/control-plane/src/core/path-layout.ts +5 -1
  129. package/apps/control-plane/src/core/path-rules.ts +19 -5
  130. package/apps/control-plane/src/core/qa-index.ts +26 -12
  131. package/apps/control-plane/src/core/response.ts +9 -6
  132. package/apps/control-plane/src/core/schemas.ts +29 -10
  133. package/apps/control-plane/src/core/tool-caller.ts +1 -1
  134. package/apps/control-plane/src/core/workspace-hooks.ts +5 -5
  135. package/apps/control-plane/src/index.ts +3 -9
  136. package/apps/control-plane/src/interfaces/cli/bootstrap.ts +79 -35
  137. package/apps/control-plane/src/mcp/kernel-tool-executor.ts +7 -3
  138. package/apps/control-plane/src/mcp/mcp-server-adapter.ts +12 -10
  139. package/apps/control-plane/src/mcp/operation-ledger.ts +18 -8
  140. package/apps/control-plane/src/mcp/protocol-contract.ts +2 -2
  141. package/apps/control-plane/src/mcp/runtime-factory.ts +15 -6
  142. package/apps/control-plane/src/mcp/token-auth-verifier.ts +3 -2
  143. package/apps/control-plane/src/mcp/token-claims-validator.ts +11 -7
  144. package/apps/control-plane/src/mcp/tool-authorizer.ts +1 -3
  145. package/apps/control-plane/src/mcp/tool-client.ts +17 -5
  146. package/apps/control-plane/src/mcp/tool-contract-validator.ts +17 -8
  147. package/apps/control-plane/src/mcp/tool-registry-loader.ts +7 -3
  148. package/apps/control-plane/src/mcp/tool-runtime.ts +66 -39
  149. package/apps/control-plane/src/mcp/tools-markdown-generator.ts +6 -1
  150. package/apps/control-plane/src/providers/providers.ts +137 -54
  151. package/apps/control-plane/src/supervisor/build-wave-executor.ts +44 -25
  152. package/apps/control-plane/src/supervisor/planning-wave-executor.ts +46 -33
  153. package/apps/control-plane/src/supervisor/prompt-bundle-loader.ts +1 -1
  154. package/apps/control-plane/src/supervisor/qa-wave-executor.ts +38 -23
  155. package/apps/control-plane/src/supervisor/run-coordinator.ts +71 -36
  156. package/apps/control-plane/src/supervisor/runtime.ts +59 -35
  157. package/apps/control-plane/src/supervisor/session-orchestrator.ts +48 -31
  158. package/apps/control-plane/src/supervisor/types.ts +22 -7
  159. package/apps/control-plane/src/supervisor/worker-decision-loop.ts +30 -20
  160. package/apps/control-plane/test/activity-monitor.spec.ts +54 -30
  161. package/apps/control-plane/test/adapter-registry.spec.ts +5 -5
  162. package/apps/control-plane/test/aop.spec.ts +4 -4
  163. package/apps/control-plane/test/batch-operations.spec.ts +20 -18
  164. package/apps/control-plane/test/bootstrap-attach.spec.ts +52 -19
  165. package/apps/control-plane/test/bootstrap-edge-cases.spec.ts +58 -27
  166. package/apps/control-plane/test/bootstrap.spec.ts +72 -40
  167. package/apps/control-plane/test/cleanup-command.spec.ts +86 -32
  168. package/apps/control-plane/test/cli-helpers.spec.ts +119 -66
  169. package/apps/control-plane/test/cli.spec.ts +1 -1
  170. package/apps/control-plane/test/cli.unit.spec.ts +226 -167
  171. package/apps/control-plane/test/collision-queue.spec.ts +49 -40
  172. package/apps/control-plane/test/collisions.spec.ts +30 -30
  173. package/apps/control-plane/test/core-utils.spec.ts +29 -15
  174. package/apps/control-plane/test/cost-tracking.spec.ts +38 -22
  175. package/apps/control-plane/test/dashboard-api.integration.spec.ts +68 -36
  176. package/apps/control-plane/test/dashboard-client.spec.ts +18 -12
  177. package/apps/control-plane/test/dashboard-command.spec.ts +11 -7
  178. package/apps/control-plane/test/delete-command-handler.spec.ts +49 -41
  179. package/apps/control-plane/test/dependency-scheduler.spec.ts +47 -20
  180. package/apps/control-plane/test/epoch-tracking.spec.ts +9 -9
  181. package/apps/control-plane/test/feature-deletion-service.spec.ts +60 -52
  182. package/apps/control-plane/test/feature-lifecycle.spec.ts +36 -17
  183. package/apps/control-plane/test/gates.spec.ts +101 -81
  184. package/apps/control-plane/test/git-spawn-error.spec.ts +1 -1
  185. package/apps/control-plane/test/helpers.ts +10 -6
  186. package/apps/control-plane/test/incremental-gates.spec.ts +59 -20
  187. package/apps/control-plane/test/init-wizard.spec.ts +328 -68
  188. package/apps/control-plane/test/instance-isolation.spec.ts +43 -10
  189. package/apps/control-plane/test/issue-tracker.spec.ts +368 -128
  190. package/apps/control-plane/test/kernel-collision-replay.spec.ts +50 -29
  191. package/apps/control-plane/test/kernel.branches.spec.ts +64 -40
  192. package/apps/control-plane/test/kernel.coverage.spec.ts +85 -49
  193. package/apps/control-plane/test/kernel.coverage2.spec.ts +109 -65
  194. package/apps/control-plane/test/kernel.spec.ts +134 -51
  195. package/apps/control-plane/test/lock-service.spec.ts +92 -68
  196. package/apps/control-plane/test/mcp-helpers.spec.ts +53 -39
  197. package/apps/control-plane/test/mcp.spec.ts +231 -115
  198. package/apps/control-plane/test/merge-service.spec.ts +142 -94
  199. package/apps/control-plane/test/multi-project.spec.ts +28 -22
  200. package/apps/control-plane/test/notifier-service.spec.ts +136 -92
  201. package/apps/control-plane/test/parallel-gates.spec.ts +51 -35
  202. package/apps/control-plane/test/patch-service.spec.ts +128 -48
  203. package/apps/control-plane/test/performance-analytics.spec.ts +99 -63
  204. package/apps/control-plane/test/plan-service.spec.ts +50 -39
  205. package/apps/control-plane/test/planning-wave-executor.spec.ts +95 -71
  206. package/apps/control-plane/test/policy-loader-service.spec.ts +41 -19
  207. package/apps/control-plane/test/pr-monitor.spec.ts +113 -64
  208. package/apps/control-plane/test/providers.spec.ts +208 -104
  209. package/apps/control-plane/test/qa-index-service.spec.ts +31 -33
  210. package/apps/control-plane/test/qa-index.spec.ts +58 -61
  211. package/apps/control-plane/test/reactions.spec.ts +88 -45
  212. package/apps/control-plane/test/response.spec.ts +5 -5
  213. package/apps/control-plane/test/resume-command.spec.ts +121 -80
  214. package/apps/control-plane/test/run-coordinator.spec.ts +205 -136
  215. package/apps/control-plane/test/schema-date-time.spec.ts +49 -41
  216. package/apps/control-plane/test/service-retry-paths.spec.ts +77 -57
  217. package/apps/control-plane/test/services.spec.ts +147 -129
  218. package/apps/control-plane/test/session-management.spec.ts +136 -74
  219. package/apps/control-plane/test/spec-ingestion.spec.ts +23 -21
  220. package/apps/control-plane/test/spec-input-resolver.spec.ts +11 -10
  221. package/apps/control-plane/test/supervisor-collaborators.spec.ts +168 -121
  222. package/apps/control-plane/test/supervisor.calltool.spec.ts +21 -18
  223. package/apps/control-plane/test/supervisor.spec.ts +67 -43
  224. package/apps/control-plane/test/supervisor.unit.spec.ts +195 -126
  225. package/apps/control-plane/test/token-auth-verifier.spec.ts +29 -14
  226. package/apps/control-plane/test/tool-registry-loader.spec.ts +51 -27
  227. package/apps/control-plane/test/tool-runtime.spec.ts +63 -46
  228. package/apps/control-plane/test/worker-decision-loop.spec.ts +143 -122
  229. package/apps/control-plane/test/workspace-hooks.spec.ts +61 -23
  230. package/apps/control-plane/tsconfig.build.json +2 -7
  231. package/apps/control-plane/tsconfig.json +1 -5
  232. package/apps/control-plane/vitest.config.ts +7 -7
  233. package/config/agentic/orchestrator/adapters.yaml +3 -0
  234. package/config/agentic/orchestrator/agents.yaml +14 -0
  235. package/config/agentic/orchestrator/gates.yaml +28 -0
  236. package/config/agentic/orchestrator/policy.yaml +22 -0
  237. package/config/agentic/orchestrator/prompts/builder.system.md +1 -0
  238. package/config/agentic/orchestrator/prompts/planner.system.md +16 -0
  239. package/config/agentic/orchestrator/prompts/qa.system.md +1 -0
  240. package/dist/apps/control-plane/application/adapters/adapter-registry.js +12 -5
  241. package/dist/apps/control-plane/application/adapters/adapter-registry.js.map +1 -1
  242. package/dist/apps/control-plane/application/multi-project-loader.js +26 -9
  243. package/dist/apps/control-plane/application/multi-project-loader.js.map +1 -1
  244. package/dist/apps/control-plane/application/services/activity-monitor-service.js +7 -7
  245. package/dist/apps/control-plane/application/services/activity-monitor-service.js.map +1 -1
  246. package/dist/apps/control-plane/application/services/collision-queue-service.js +7 -7
  247. package/dist/apps/control-plane/application/services/collision-queue-service.js.map +1 -1
  248. package/dist/apps/control-plane/application/services/cost-tracking-service.js +6 -8
  249. package/dist/apps/control-plane/application/services/cost-tracking-service.js.map +1 -1
  250. package/dist/apps/control-plane/application/services/dependency-scheduler-service.js.map +1 -1
  251. package/dist/apps/control-plane/application/services/feature-deletion-service.js +37 -29
  252. package/dist/apps/control-plane/application/services/feature-deletion-service.js.map +1 -1
  253. package/dist/apps/control-plane/application/services/feature-lifecycle-service.js +10 -10
  254. package/dist/apps/control-plane/application/services/feature-lifecycle-service.js.map +1 -1
  255. package/dist/apps/control-plane/application/services/feature-state-service.js +11 -11
  256. package/dist/apps/control-plane/application/services/feature-state-service.js.map +1 -1
  257. package/dist/apps/control-plane/application/services/gate-interpolation-service.js +3 -1
  258. package/dist/apps/control-plane/application/services/gate-interpolation-service.js.map +1 -1
  259. package/dist/apps/control-plane/application/services/gate-service.js +26 -26
  260. package/dist/apps/control-plane/application/services/gate-service.js.map +1 -1
  261. package/dist/apps/control-plane/application/services/instance-isolation-service.js +1 -1
  262. package/dist/apps/control-plane/application/services/instance-isolation-service.js.map +1 -1
  263. package/dist/apps/control-plane/application/services/issue-tracker-service.js +25 -15
  264. package/dist/apps/control-plane/application/services/issue-tracker-service.js.map +1 -1
  265. package/dist/apps/control-plane/application/services/lock-service.js +32 -32
  266. package/dist/apps/control-plane/application/services/lock-service.js.map +1 -1
  267. package/dist/apps/control-plane/application/services/merge-service.js +41 -27
  268. package/dist/apps/control-plane/application/services/merge-service.js.map +1 -1
  269. package/dist/apps/control-plane/application/services/notifier-service.js +29 -15
  270. package/dist/apps/control-plane/application/services/notifier-service.js.map +1 -1
  271. package/dist/apps/control-plane/application/services/patch-service.js +21 -19
  272. package/dist/apps/control-plane/application/services/patch-service.js.map +1 -1
  273. package/dist/apps/control-plane/application/services/performance-analytics-service.js +4 -4
  274. package/dist/apps/control-plane/application/services/performance-analytics-service.js.map +1 -1
  275. package/dist/apps/control-plane/application/services/plan-service.js +33 -33
  276. package/dist/apps/control-plane/application/services/plan-service.js.map +1 -1
  277. package/dist/apps/control-plane/application/services/policy-loader-service.js.map +1 -1
  278. package/dist/apps/control-plane/application/services/pr-monitor-service.js +23 -11
  279. package/dist/apps/control-plane/application/services/pr-monitor-service.js.map +1 -1
  280. package/dist/apps/control-plane/application/services/qa-index-service.js +11 -11
  281. package/dist/apps/control-plane/application/services/qa-index-service.js.map +1 -1
  282. package/dist/apps/control-plane/application/services/reactions-service.js +13 -9
  283. package/dist/apps/control-plane/application/services/reactions-service.js.map +1 -1
  284. package/dist/apps/control-plane/application/services/reporting-service.js +11 -9
  285. package/dist/apps/control-plane/application/services/reporting-service.js.map +1 -1
  286. package/dist/apps/control-plane/application/services/run-lease-service.js +34 -33
  287. package/dist/apps/control-plane/application/services/run-lease-service.js.map +1 -1
  288. package/dist/apps/control-plane/application/tools/tool-metadata.js +2 -2
  289. package/dist/apps/control-plane/application/tools/tool-router.js.map +1 -1
  290. package/dist/apps/control-plane/cli/attach-command-handler.js +9 -9
  291. package/dist/apps/control-plane/cli/cleanup-command-handler.js +11 -9
  292. package/dist/apps/control-plane/cli/cleanup-command-handler.js.map +1 -1
  293. package/dist/apps/control-plane/cli/cli-argument-parser.js +4 -3
  294. package/dist/apps/control-plane/cli/cli-argument-parser.js.map +1 -1
  295. package/dist/apps/control-plane/cli/dashboard-command-handler.js +23 -7
  296. package/dist/apps/control-plane/cli/dashboard-command-handler.js.map +1 -1
  297. package/dist/apps/control-plane/cli/delete-command-handler.js +7 -7
  298. package/dist/apps/control-plane/cli/env-file.d.ts +4 -0
  299. package/dist/apps/control-plane/cli/env-file.js +89 -0
  300. package/dist/apps/control-plane/cli/env-file.js.map +1 -0
  301. package/dist/apps/control-plane/cli/help-command-handler.js +58 -30
  302. package/dist/apps/control-plane/cli/help-command-handler.js.map +1 -1
  303. package/dist/apps/control-plane/cli/init-command-handler.js +97 -37
  304. package/dist/apps/control-plane/cli/init-command-handler.js.map +1 -1
  305. package/dist/apps/control-plane/cli/io.js +2 -2
  306. package/dist/apps/control-plane/cli/io.js.map +1 -1
  307. package/dist/apps/control-plane/cli/resume-command-handler.js +9 -9
  308. package/dist/apps/control-plane/cli/resume-command-handler.js.map +1 -1
  309. package/dist/apps/control-plane/cli/retry-command-handler.js +12 -11
  310. package/dist/apps/control-plane/cli/retry-command-handler.js.map +1 -1
  311. package/dist/apps/control-plane/cli/run-command-handler.js +12 -8
  312. package/dist/apps/control-plane/cli/run-command-handler.js.map +1 -1
  313. package/dist/apps/control-plane/cli/send-command-handler.js +6 -6
  314. package/dist/apps/control-plane/cli/spec-ingestion-service.js +10 -8
  315. package/dist/apps/control-plane/cli/spec-ingestion-service.js.map +1 -1
  316. package/dist/apps/control-plane/cli/spec-input-resolver.js.map +1 -1
  317. package/dist/apps/control-plane/cli/spec-utils.js.map +1 -1
  318. package/dist/apps/control-plane/cli/status-command-handler.js +8 -8
  319. package/dist/apps/control-plane/cli/status-command-handler.js.map +1 -1
  320. package/dist/apps/control-plane/cli/tooling.js +1 -1
  321. package/dist/apps/control-plane/core/collisions.js +11 -8
  322. package/dist/apps/control-plane/core/collisions.js.map +1 -1
  323. package/dist/apps/control-plane/core/constants.js +13 -7
  324. package/dist/apps/control-plane/core/constants.js.map +1 -1
  325. package/dist/apps/control-plane/core/error-codes.js +1 -1
  326. package/dist/apps/control-plane/core/fs.js.map +1 -1
  327. package/dist/apps/control-plane/core/gates.d.ts +2 -2
  328. package/dist/apps/control-plane/core/gates.js +26 -19
  329. package/dist/apps/control-plane/core/gates.js.map +1 -1
  330. package/dist/apps/control-plane/core/git.js +3 -3
  331. package/dist/apps/control-plane/core/git.js.map +1 -1
  332. package/dist/apps/control-plane/core/kernel.d.ts +1 -0
  333. package/dist/apps/control-plane/core/kernel.js +134 -81
  334. package/dist/apps/control-plane/core/kernel.js.map +1 -1
  335. package/dist/apps/control-plane/core/patch.js +7 -3
  336. package/dist/apps/control-plane/core/patch.js.map +1 -1
  337. package/dist/apps/control-plane/core/path-layout.d.ts +1 -0
  338. package/dist/apps/control-plane/core/path-layout.js +4 -1
  339. package/dist/apps/control-plane/core/path-layout.js.map +1 -1
  340. package/dist/apps/control-plane/core/path-rules.js +3 -1
  341. package/dist/apps/control-plane/core/path-rules.js.map +1 -1
  342. package/dist/apps/control-plane/core/qa-index.js +5 -5
  343. package/dist/apps/control-plane/core/qa-index.js.map +1 -1
  344. package/dist/apps/control-plane/core/response.js +3 -3
  345. package/dist/apps/control-plane/core/response.js.map +1 -1
  346. package/dist/apps/control-plane/core/schemas.js +10 -6
  347. package/dist/apps/control-plane/core/schemas.js.map +1 -1
  348. package/dist/apps/control-plane/core/workspace-hooks.js +3 -3
  349. package/dist/apps/control-plane/index.d.ts +1 -1
  350. package/dist/apps/control-plane/index.js +1 -1
  351. package/dist/apps/control-plane/index.js.map +1 -1
  352. package/dist/apps/control-plane/interfaces/cli/bootstrap.js +40 -23
  353. package/dist/apps/control-plane/interfaces/cli/bootstrap.js.map +1 -1
  354. package/dist/apps/control-plane/mcp/kernel-tool-executor.js +1 -1
  355. package/dist/apps/control-plane/mcp/kernel-tool-executor.js.map +1 -1
  356. package/dist/apps/control-plane/mcp/mcp-server-adapter.js +6 -7
  357. package/dist/apps/control-plane/mcp/mcp-server-adapter.js.map +1 -1
  358. package/dist/apps/control-plane/mcp/operation-ledger.js +5 -5
  359. package/dist/apps/control-plane/mcp/operation-ledger.js.map +1 -1
  360. package/dist/apps/control-plane/mcp/protocol-contract.js +2 -2
  361. package/dist/apps/control-plane/mcp/runtime-factory.js +2 -2
  362. package/dist/apps/control-plane/mcp/runtime-factory.js.map +1 -1
  363. package/dist/apps/control-plane/mcp/token-auth-verifier.js +1 -1
  364. package/dist/apps/control-plane/mcp/token-auth-verifier.js.map +1 -1
  365. package/dist/apps/control-plane/mcp/token-claims-validator.js +5 -5
  366. package/dist/apps/control-plane/mcp/token-claims-validator.js.map +1 -1
  367. package/dist/apps/control-plane/mcp/tool-authorizer.js +1 -3
  368. package/dist/apps/control-plane/mcp/tool-authorizer.js.map +1 -1
  369. package/dist/apps/control-plane/mcp/tool-client.js +2 -2
  370. package/dist/apps/control-plane/mcp/tool-client.js.map +1 -1
  371. package/dist/apps/control-plane/mcp/tool-contract-validator.js +3 -3
  372. package/dist/apps/control-plane/mcp/tool-contract-validator.js.map +1 -1
  373. package/dist/apps/control-plane/mcp/tool-registry-loader.js +1 -1
  374. package/dist/apps/control-plane/mcp/tool-registry-loader.js.map +1 -1
  375. package/dist/apps/control-plane/mcp/tool-runtime.js +17 -17
  376. package/dist/apps/control-plane/mcp/tool-runtime.js.map +1 -1
  377. package/dist/apps/control-plane/mcp/tools-markdown-generator.js +6 -1
  378. package/dist/apps/control-plane/mcp/tools-markdown-generator.js.map +1 -1
  379. package/dist/apps/control-plane/providers/providers.d.ts +3 -2
  380. package/dist/apps/control-plane/providers/providers.js +81 -39
  381. package/dist/apps/control-plane/providers/providers.js.map +1 -1
  382. package/dist/apps/control-plane/supervisor/build-wave-executor.js +12 -12
  383. package/dist/apps/control-plane/supervisor/build-wave-executor.js.map +1 -1
  384. package/dist/apps/control-plane/supervisor/planning-wave-executor.js +19 -16
  385. package/dist/apps/control-plane/supervisor/planning-wave-executor.js.map +1 -1
  386. package/dist/apps/control-plane/supervisor/prompt-bundle-loader.js +1 -1
  387. package/dist/apps/control-plane/supervisor/qa-wave-executor.js +13 -13
  388. package/dist/apps/control-plane/supervisor/qa-wave-executor.js.map +1 -1
  389. package/dist/apps/control-plane/supervisor/run-coordinator.js +37 -20
  390. package/dist/apps/control-plane/supervisor/run-coordinator.js.map +1 -1
  391. package/dist/apps/control-plane/supervisor/runtime.js +25 -21
  392. package/dist/apps/control-plane/supervisor/runtime.js.map +1 -1
  393. package/dist/apps/control-plane/supervisor/session-orchestrator.js +29 -23
  394. package/dist/apps/control-plane/supervisor/session-orchestrator.js.map +1 -1
  395. package/dist/apps/control-plane/supervisor/types.d.ts +3 -3
  396. package/dist/apps/control-plane/supervisor/types.js.map +1 -1
  397. package/dist/apps/control-plane/supervisor/worker-decision-loop.js +14 -16
  398. package/dist/apps/control-plane/supervisor/worker-decision-loop.js.map +1 -1
  399. package/eslint.config.mjs +20 -20
  400. package/example-configurations/README.md +1 -1
  401. package/example-configurations/java/agents.yaml +3 -3
  402. package/example-configurations/java/policy.yaml +1 -1
  403. package/example-configurations/node/agents.yaml +3 -3
  404. package/example-configurations/node/policy.yaml +1 -1
  405. package/package.json +10 -5
  406. package/packages/web-dashboard/next.config.js +2 -2
  407. package/packages/web-dashboard/src/app/api/actions/route.ts +25 -9
  408. package/packages/web-dashboard/src/app/api/events/route.ts +20 -6
  409. package/packages/web-dashboard/src/app/api/features/[id]/checkout/route.ts +88 -37
  410. package/packages/web-dashboard/src/app/api/features/[id]/evidence/[artifact]/route.ts +8 -5
  411. package/packages/web-dashboard/src/app/api/features/[id]/review/route.ts +27 -9
  412. package/packages/web-dashboard/src/app/api/features/[id]/route.ts +5 -2
  413. package/packages/web-dashboard/src/app/api/projects/route.ts +5 -5
  414. package/packages/web-dashboard/src/app/globals.css +10 -2
  415. package/packages/web-dashboard/src/app/page.tsx +100 -37
  416. package/packages/web-dashboard/src/lib/aop-client.ts +68 -37
  417. package/packages/web-dashboard/src/lib/multi-project-config.ts +28 -7
  418. package/packages/web-dashboard/src/lib/orchestrator-tools.ts +59 -36
  419. package/packages/web-dashboard/tsconfig.json +3 -11
  420. package/scripts/nx-safe.mjs +10 -10
  421. package/spec-files/completed/agentic_orchestrator_cli_delete_command_spec.md +5 -0
  422. package/spec-files/completed/agentic_orchestrator_feature_gaps_closure_spec.md +189 -90
  423. package/spec-files/completed/agentic_orchestrator_init_policy_ux_simplification_spec.md +49 -16
  424. package/spec-files/completed/agentic_orchestrator_mcp_formalization_spec.md +24 -1
  425. package/spec-files/completed/agentic_orchestrator_single_global_orchestrator_spec.md +9 -0
  426. package/spec-files/completed/agentic_orchestrator_spec.md +171 -75
  427. package/spec-files/completed/agentic_orchestrator_validator_hardening_spec.md +25 -17
  428. package/spec-files/outstanding/agentic_orchestrator_artifact_database_publishing_spec.md +40 -5
  429. package/spec-files/outstanding/agentic_orchestrator_enterprise_governance_dashboard_spec.md +23 -12
  430. package/spec-files/outstanding/agentic_orchestrator_knowledge_canary_spec.md +16 -4
  431. package/spec-files/outstanding/agentic_orchestrator_observability_integrity_diagnostics_spec.md +42 -2
  432. package/spec-files/outstanding/agentic_orchestrator_performance_improvements_spec.md +209 -130
  433. package/spec-files/outstanding/agentic_orchestrator_planning_review_quality_spec.md +56 -3
  434. package/spec-files/outstanding/agentic_orchestrator_productization_commercial_spec.md +77 -10
  435. package/spec-files/outstanding/agentic_orchestrator_provider_auth_bootstrap_spec.md +384 -0
  436. package/spec-files/outstanding/agentic_orchestrator_quality_adoption_execution_spec.md +29 -14
  437. package/spec-files/progress.md +186 -175
  438. package/tsconfig.json +2 -8
@@ -16,7 +16,12 @@ beforeEach(async () => {
16
16
  await fs.writeFile(path.join(repoRoot, 'src', 'unique-b.txt'), 'b\n', 'utf8');
17
17
  });
18
18
 
19
- function buildPlan(featureId: string, planVersion: number, modifyPath: string, revisionOf: number | null = null) {
19
+ function buildPlan(
20
+ featureId: string,
21
+ planVersion: number,
22
+ modifyPath: string,
23
+ revisionOf: number | null = null,
24
+ ) {
20
25
  const plan = {
21
26
  feature_id: featureId,
22
27
  plan_version: planVersion,
@@ -27,15 +32,15 @@ function buildPlan(featureId: string, planVersion: number, modifyPath: string, r
27
32
  files: {
28
33
  create: [],
29
34
  modify: [modifyPath],
30
- delete: []
35
+ delete: [],
31
36
  },
32
37
  contracts: {
33
38
  openapi: 'none',
34
39
  events: 'none',
35
- db: 'none'
40
+ db: 'none',
36
41
  },
37
42
  acceptance_criteria: ['Deterministic plan is accepted'],
38
- gate_profile: 'default'
43
+ gate_profile: 'default',
39
44
  };
40
45
 
41
46
  if (revisionOf != null) {
@@ -64,9 +69,9 @@ describe('AopKernel collision queue replay integration', () => {
64
69
  'plan.submit',
65
70
  {
66
71
  feature_id: 'feature_a',
67
- plan_json: buildPlan('feature_a', 1, 'src/shared.txt')
72
+ plan_json: buildPlan('feature_a', 1, 'src/shared.txt'),
68
73
  },
69
- ORCHESTRATOR_CONTEXT
74
+ ORCHESTRATOR_CONTEXT,
70
75
  );
71
76
  expect(accepted.ok).toBe(true);
72
77
 
@@ -74,9 +79,9 @@ describe('AopKernel collision queue replay integration', () => {
74
79
  'plan.submit',
75
80
  {
76
81
  feature_id: 'feature_b',
77
- plan_json: buildPlan('feature_b', 1, 'src/shared.txt')
82
+ plan_json: buildPlan('feature_b', 1, 'src/shared.txt'),
78
83
  },
79
- ORCHESTRATOR_CONTEXT
84
+ ORCHESTRATOR_CONTEXT,
80
85
  );
81
86
  expect(queued.ok).toBe(false);
82
87
  expect(queued.error.code).toBe('blocked_by_collision_policy');
@@ -88,7 +93,7 @@ describe('AopKernel collision queue replay integration', () => {
88
93
  plan_version: 1,
89
94
  collision_fingerprint: expect.any(String),
90
95
  detected_at: expect.any(String),
91
- required_resources: expect.any(Array)
96
+ required_resources: expect.any(Array),
92
97
  });
93
98
  });
94
99
 
@@ -104,7 +109,7 @@ describe('AopKernel collision queue replay integration', () => {
104
109
  const lockAcquire = await kernel.invoke(
105
110
  'locks.acquire',
106
111
  { resource: 'openapi', feature_id: 'feature_a' },
107
- ORCHESTRATOR_CONTEXT
112
+ ORCHESTRATOR_CONTEXT,
108
113
  );
109
114
  expect(lockAcquire.ok).toBe(true);
110
115
 
@@ -112,9 +117,9 @@ describe('AopKernel collision queue replay integration', () => {
112
117
  'plan.submit',
113
118
  {
114
119
  feature_id: 'feature_a',
115
- plan_json: buildPlan('feature_a', 1, 'src/shared.txt')
120
+ plan_json: buildPlan('feature_a', 1, 'src/shared.txt'),
116
121
  },
117
- ORCHESTRATOR_CONTEXT
122
+ ORCHESTRATOR_CONTEXT,
118
123
  );
119
124
  expect(acceptedA1.ok).toBe(true);
120
125
 
@@ -122,9 +127,9 @@ describe('AopKernel collision queue replay integration', () => {
122
127
  'plan.submit',
123
128
  {
124
129
  feature_id: 'feature_b',
125
- plan_json: buildPlan('feature_b', 1, 'src/shared.txt')
130
+ plan_json: buildPlan('feature_b', 1, 'src/shared.txt'),
126
131
  },
127
- ORCHESTRATOR_CONTEXT
132
+ ORCHESTRATOR_CONTEXT,
128
133
  );
129
134
  expect(queuedB.ok).toBe(false);
130
135
  expect(queuedB.error.code).toBe('blocked_by_collision_policy');
@@ -133,9 +138,9 @@ describe('AopKernel collision queue replay integration', () => {
133
138
  'plan.submit',
134
139
  {
135
140
  feature_id: 'feature_c',
136
- plan_json: buildPlan('feature_c', 1, 'src/shared.txt')
141
+ plan_json: buildPlan('feature_c', 1, 'src/shared.txt'),
137
142
  },
138
- ORCHESTRATOR_CONTEXT
143
+ ORCHESTRATOR_CONTEXT,
139
144
  );
140
145
  expect(queuedC.ok).toBe(false);
141
146
  expect(queuedC.error.code).toBe('blocked_by_collision_policy');
@@ -145,9 +150,9 @@ describe('AopKernel collision queue replay integration', () => {
145
150
  {
146
151
  feature_id: 'feature_a',
147
152
  expected_plan_version: 1,
148
- plan_json: buildPlan('feature_a', 2, 'src/leader.txt', 1)
153
+ plan_json: buildPlan('feature_a', 2, 'src/leader.txt', 1),
149
154
  },
150
- ORCHESTRATOR_CONTEXT
155
+ ORCHESTRATOR_CONTEXT,
151
156
  );
152
157
  expect(acceptedA2.ok).toBe(true);
153
158
 
@@ -157,8 +162,8 @@ describe('AopKernel collision queue replay integration', () => {
157
162
  ...queueSeedIndex,
158
163
  blocked_queue: queueSeedIndex.blocked_queue.map((entry: any) => ({
159
164
  ...entry,
160
- detected_at: '2026-02-28T12:00:00Z'
161
- }))
165
+ detected_at: '2026-02-28T12:00:00Z',
166
+ })),
162
167
  };
163
168
  await kernel.writeIndex(seeded);
164
169
 
@@ -167,7 +172,7 @@ describe('AopKernel collision queue replay integration', () => {
167
172
  const firstReplayTrigger = await kernel.invoke(
168
173
  'locks.release',
169
174
  { resource: 'openapi', feature_id: 'feature_a' },
170
- ORCHESTRATOR_CONTEXT
175
+ ORCHESTRATOR_CONTEXT,
171
176
  );
172
177
  expect(firstReplayTrigger.ok).toBe(true);
173
178
 
@@ -176,7 +181,11 @@ describe('AopKernel collision queue replay integration', () => {
176
181
  expect(afterFirstReplay.blocked_queue).toHaveLength(1);
177
182
  expect(afterFirstReplay.blocked_queue[0].feature_id).toBe('feature_c');
178
183
 
179
- const planB = await kernel.invoke('plan.get', { feature_id: 'feature_b' }, ORCHESTRATOR_CONTEXT);
184
+ const planB = await kernel.invoke(
185
+ 'plan.get',
186
+ { feature_id: 'feature_b' },
187
+ ORCHESTRATOR_CONTEXT,
188
+ );
180
189
  expect(planB.ok).toBe(true);
181
190
  expect(planB.data.plan.plan_version).toBe(1);
182
191
 
@@ -185,35 +194,47 @@ describe('AopKernel collision queue replay integration', () => {
185
194
  {
186
195
  feature_id: 'feature_b',
187
196
  expected_plan_version: 1,
188
- plan_json: buildPlan('feature_b', 2, 'src/unique-b.txt', 1)
197
+ plan_json: buildPlan('feature_b', 2, 'src/unique-b.txt', 1),
189
198
  },
190
- ORCHESTRATOR_CONTEXT
199
+ ORCHESTRATOR_CONTEXT,
191
200
  );
192
201
  expect(acceptedB2.ok).toBe(true);
193
202
 
194
203
  const secondAcquire = await kernel.invoke(
195
204
  'locks.acquire',
196
205
  { resource: 'openapi', feature_id: 'feature_a' },
197
- ORCHESTRATOR_CONTEXT
206
+ ORCHESTRATOR_CONTEXT,
198
207
  );
199
208
  expect(secondAcquire.ok).toBe(true);
200
209
 
201
210
  const secondReplayTrigger = await kernel.invoke(
202
211
  'locks.release',
203
212
  { resource: 'openapi', feature_id: 'feature_a' },
204
- ORCHESTRATOR_CONTEXT
213
+ ORCHESTRATOR_CONTEXT,
205
214
  );
206
215
  expect(secondReplayTrigger.ok).toBe(true);
207
216
 
208
217
  const afterSecondReplay = await kernel.readIndex();
209
218
  expect(afterSecondReplay.blocked_queue).toHaveLength(0);
210
219
 
211
- const planC = await kernel.invoke('plan.get', { feature_id: 'feature_c' }, ORCHESTRATOR_CONTEXT);
220
+ const planC = await kernel.invoke(
221
+ 'plan.get',
222
+ { feature_id: 'feature_c' },
223
+ ORCHESTRATOR_CONTEXT,
224
+ );
212
225
  expect(planC.ok).toBe(true);
213
226
  expect(planC.data.plan.plan_version).toBe(1);
214
227
 
215
- const stateB = await kernel.invoke('feature.state_get', { feature_id: 'feature_b' }, ORCHESTRATOR_CONTEXT);
216
- const stateC = await kernel.invoke('feature.state_get', { feature_id: 'feature_c' }, ORCHESTRATOR_CONTEXT);
228
+ const stateB = await kernel.invoke(
229
+ 'feature.state_get',
230
+ { feature_id: 'feature_b' },
231
+ ORCHESTRATOR_CONTEXT,
232
+ );
233
+ const stateC = await kernel.invoke(
234
+ 'feature.state_get',
235
+ { feature_id: 'feature_c' },
236
+ ORCHESTRATOR_CONTEXT,
237
+ );
217
238
  expect(stateB.ok).toBe(true);
218
239
  expect(stateC.ok).toBe(true);
219
240
  expect(stateB.data.front_matter.version).toBeGreaterThan(1);
@@ -52,9 +52,9 @@ async function writeBranchGates(root: string): Promise<void> {
52
52
  ' path: coverage/lcov.info',
53
53
  'capabilities:',
54
54
  ' - none',
55
- ' - lcov'
55
+ ' - lcov',
56
56
  ].join('\n'),
57
- 'utf8'
57
+ 'utf8',
58
58
  );
59
59
  }
60
60
 
@@ -69,7 +69,7 @@ function validPlan(featureId: string) {
69
69
  files: { create: [], modify: ['src/sample.txt'], delete: [] },
70
70
  contracts: { openapi: 'none', events: 'none', db: 'none' },
71
71
  acceptance_criteria: ['works'],
72
- gate_profile: 'default'
72
+ gate_profile: 'default',
73
73
  };
74
74
  }
75
75
 
@@ -87,14 +87,18 @@ describe('AopKernel branch behavior', () => {
87
87
  const kernel = new AopKernel(repoRoot);
88
88
  await kernel.ensureLoaded();
89
89
 
90
- const forbiddenUnknownActor = await kernel.invoke('feature.init', { feature_id: 'x' }, { actor_type: 'unknown', actor_id: 'x' });
90
+ const forbiddenUnknownActor = await kernel.invoke(
91
+ 'feature.init',
92
+ { feature_id: 'x' },
93
+ { actor_type: 'unknown', actor_id: 'x' },
94
+ );
91
95
  expect(forbiddenUnknownActor.ok).toBe(false);
92
96
  expect(forbiddenUnknownActor.error.code).toBe(ERROR_CODES.FORBIDDEN_TOOL_FOR_ROLE);
93
97
 
94
98
  const forbiddenRoleTool = await kernel.invoke(
95
99
  'repo.status',
96
100
  { feature_id: 'x' },
97
- { actor_type: 'planner', actor_id: 'planner:test' }
101
+ { actor_type: 'planner', actor_id: 'planner:test' },
98
102
  );
99
103
  expect(forbiddenRoleTool.ok).toBe(false);
100
104
  expect(forbiddenRoleTool.error.code).toBe(ERROR_CODES.FORBIDDEN_TOOL_FOR_ROLE);
@@ -111,7 +115,7 @@ describe('AopKernel branch behavior', () => {
111
115
  const invalidSchema = await kernel.invoke(
112
116
  'plan.submit',
113
117
  { feature_id: 'feature_a', plan_json: { feature_id: 'feature_a' } },
114
- ORCH
118
+ ORCH,
115
119
  );
116
120
  expect(invalidSchema.ok).toBe(false);
117
121
  expect(invalidSchema.error.code).toBe(ERROR_CODES.PLAN_VALIDATION_FAILED);
@@ -122,10 +126,10 @@ describe('AopKernel branch behavior', () => {
122
126
  feature_id: 'feature_a',
123
127
  plan_json: {
124
128
  ...validPlan('feature_a'),
125
- plan_version: 2
126
- }
129
+ plan_version: 2,
130
+ },
127
131
  },
128
- ORCH
132
+ ORCH,
129
133
  );
130
134
  expect(invalidInitialVersion.ok).toBe(false);
131
135
  expect(invalidInitialVersion.error.code).toBe(ERROR_CODES.PLAN_VALIDATION_FAILED);
@@ -133,7 +137,7 @@ describe('AopKernel branch behavior', () => {
133
137
  const accepted = await kernel.invoke(
134
138
  'plan.submit',
135
139
  { feature_id: 'feature_a', plan_json: validPlan('feature_a') },
136
- ORCH
140
+ ORCH,
137
141
  );
138
142
  expect(accepted.ok).toBe(true);
139
143
 
@@ -145,10 +149,10 @@ describe('AopKernel branch behavior', () => {
145
149
  plan_json: {
146
150
  ...validPlan('feature_a'),
147
151
  plan_version: 3,
148
- revision_of: 2
149
- }
152
+ revision_of: 2,
153
+ },
150
154
  },
151
- ORCH
155
+ ORCH,
152
156
  );
153
157
  expect(versionConflict.ok).toBe(false);
154
158
  expect(versionConflict.error.code).toBe(ERROR_CODES.VERSION_CONFLICT);
@@ -161,10 +165,10 @@ describe('AopKernel branch behavior', () => {
161
165
  plan_json: {
162
166
  ...validPlan('feature_a'),
163
167
  plan_version: 3,
164
- revision_of: 1
165
- }
168
+ revision_of: 1,
169
+ },
166
170
  },
167
- ORCH
171
+ ORCH,
168
172
  );
169
173
  expect(invalidRevisionMetadata.ok).toBe(false);
170
174
  expect(invalidRevisionMetadata.error.code).toBe(ERROR_CODES.PLAN_VALIDATION_FAILED);
@@ -172,7 +176,7 @@ describe('AopKernel branch behavior', () => {
172
176
  const collisionRejected = await kernel.invoke(
173
177
  'plan.submit',
174
178
  { feature_id: 'feature_b', plan_json: validPlan('feature_b') },
175
- ORCH
179
+ ORCH,
176
180
  );
177
181
  expect(collisionRejected.ok).toBe(false);
178
182
  expect(collisionRejected.error.code).toBe(ERROR_CODES.COLLISION_DETECTED);
@@ -189,28 +193,40 @@ describe('AopKernel branch behavior', () => {
189
193
  const noPlanPatch = await kernel.invoke(
190
194
  'repo.apply_patch',
191
195
  { feature_id: 'feature_c', unified_diff: 'diff --git a/x b/x' },
192
- BUILDER
196
+ BUILDER,
193
197
  );
194
198
  expect(noPlanPatch.ok).toBe(false);
195
199
  expect(noPlanPatch.error.code).toBe(ERROR_CODES.PLAN_REQUIRED);
196
200
 
197
- await kernel.invoke('plan.submit', { feature_id: 'feature_c', plan_json: validPlan('feature_c') }, ORCH);
201
+ await kernel.invoke(
202
+ 'plan.submit',
203
+ { feature_id: 'feature_c', plan_json: validPlan('feature_c') },
204
+ ORCH,
205
+ );
198
206
 
199
207
  const badPatch = await kernel.invoke(
200
208
  'repo.apply_patch',
201
209
  { feature_id: 'feature_c', unified_diff: 'not a patch' },
202
- BUILDER
210
+ BUILDER,
203
211
  );
204
212
  expect(badPatch.ok).toBe(false);
205
213
  expect(badPatch.error.code).toBe(ERROR_CODES.GIT_FAILURE);
206
214
 
207
- const evidenceMissing = await kernel.invoke('evidence.latest', { feature_id: 'feature_uninit' }, ORCH);
215
+ const evidenceMissing = await kernel.invoke(
216
+ 'evidence.latest',
217
+ { feature_id: 'feature_uninit' },
218
+ ORCH,
219
+ );
208
220
  expect(evidenceMissing.ok).toBe(true);
209
221
  expect(evidenceMissing.data.latest).toBeNull();
210
222
 
211
223
  const qaPath = path.join(repoRoot, '.aop', 'features', 'feature_c', 'qa_test_index.json');
212
224
  await fs.writeFile(qaPath, '{}\n', 'utf8');
213
- const invalidQaIndex = await kernel.invoke('qa.test_index_get', { feature_id: 'feature_c' }, ORCH);
225
+ const invalidQaIndex = await kernel.invoke(
226
+ 'qa.test_index_get',
227
+ { feature_id: 'feature_c' },
228
+ ORCH,
229
+ );
214
230
  expect(invalidQaIndex.ok).toBe(false);
215
231
  expect(invalidQaIndex.error.code).toBe(ERROR_CODES.INTERNAL_ERROR);
216
232
 
@@ -218,7 +234,7 @@ describe('AopKernel branch behavior', () => {
218
234
  const missingQaIndex = await kernel.invoke(
219
235
  'qa.test_index_update',
220
236
  { feature_id: 'feature_c', expected_version: 1, updates: [] },
221
- { actor_type: 'qa', actor_id: 'qa:test' }
237
+ { actor_type: 'qa', actor_id: 'qa:test' },
222
238
  );
223
239
  expect(missingQaIndex.ok).toBe(false);
224
240
  expect(missingQaIndex.error.code).toBe(ERROR_CODES.FILE_NOT_FOUND);
@@ -228,13 +244,13 @@ describe('AopKernel branch behavior', () => {
228
244
  await fs.writeFile(
229
245
  path.join(coverageDir, 'lcov.info'),
230
246
  ['TN:', 'SF:src/a.ts', 'LF:20', 'LH:10', 'BRF:10', 'BRH:2', 'end_of_record', ''].join('\n'),
231
- 'utf8'
247
+ 'utf8',
232
248
  );
233
249
 
234
250
  const coverageFail = await kernel.invoke(
235
251
  'gates.run',
236
252
  { feature_id: 'feature_c', profile: 'coverage_low', mode: 'full' },
237
- BUILDER
253
+ BUILDER,
238
254
  );
239
255
  expect(coverageFail.ok).toBe(false);
240
256
  expect(coverageFail.error.code).toBe(ERROR_CODES.COVERAGE_BELOW_MINIMUM);
@@ -242,12 +258,16 @@ describe('AopKernel branch behavior', () => {
242
258
  const gateFail = await kernel.invoke(
243
259
  'gates.run',
244
260
  { feature_id: 'feature_c', profile: 'failing', mode: 'fast' },
245
- BUILDER
261
+ BUILDER,
246
262
  );
247
263
  expect(gateFail.ok).toBe(true);
248
264
  expect(gateFail.data.overall).toBe('fail');
249
265
 
250
- const blockedState = await kernel.invoke('feature.state_get', { feature_id: 'feature_c' }, ORCH);
266
+ const blockedState = await kernel.invoke(
267
+ 'feature.state_get',
268
+ { feature_id: 'feature_c' },
269
+ ORCH,
270
+ );
251
271
  expect(blockedState.ok).toBe(true);
252
272
  expect(blockedState.data.front_matter.status).toBe(STATUS.BLOCKED);
253
273
  });
@@ -257,7 +277,11 @@ describe('AopKernel branch behavior', () => {
257
277
  await kernel.ensureLoaded();
258
278
  await writeFeatureSpec(repoRoot, 'feature_merge');
259
279
  await kernel.invoke('feature.init', { feature_id: 'feature_merge' }, ORCH);
260
- await kernel.invoke('plan.submit', { feature_id: 'feature_merge', plan_json: validPlan('feature_merge') }, ORCH);
280
+ await kernel.invoke(
281
+ 'plan.submit',
282
+ { feature_id: 'feature_merge', plan_json: validPlan('feature_merge') },
283
+ ORCH,
284
+ );
261
285
 
262
286
  const notReady = await kernel.invoke(
263
287
  'feature.ready_to_merge',
@@ -265,9 +289,9 @@ describe('AopKernel branch behavior', () => {
265
289
  feature_id: 'feature_merge',
266
290
  commit_message: 'feat: merge',
267
291
  merge_strategy: 'merge_commit',
268
- user_approval_token: 'approved'
292
+ user_approval_token: 'approved',
269
293
  },
270
- ORCH
294
+ ORCH,
271
295
  );
272
296
  expect(notReady.ok).toBe(false);
273
297
  expect(notReady.error.code).toBe(ERROR_CODES.INVALID_STATUS_TRANSITION);
@@ -282,11 +306,11 @@ describe('AopKernel branch behavior', () => {
282
306
  expected_version: state.data.front_matter.version,
283
307
  patch: {
284
308
  front_matter: {
285
- status: STATUS.QA
286
- }
287
- }
309
+ status: STATUS.QA,
310
+ },
311
+ },
288
312
  },
289
- ORCH
313
+ ORCH,
290
314
  );
291
315
  expect(toQa.ok).toBe(true);
292
316
 
@@ -297,11 +321,11 @@ describe('AopKernel branch behavior', () => {
297
321
  expected_version: toQa.data.version,
298
322
  patch: {
299
323
  front_matter: {
300
- status: STATUS.READY_TO_MERGE
301
- }
302
- }
324
+ status: STATUS.READY_TO_MERGE,
325
+ },
326
+ },
303
327
  },
304
- ORCH
328
+ ORCH,
305
329
  );
306
330
  expect(toReady.ok).toBe(true);
307
331
 
@@ -311,9 +335,9 @@ describe('AopKernel branch behavior', () => {
311
335
  feature_id: 'feature_merge',
312
336
  commit_message: 'feat: merge',
313
337
  merge_strategy: 'merge_commit',
314
- user_approval_token: 'approved'
338
+ user_approval_token: 'approved',
315
339
  },
316
- ORCH
340
+ ORCH,
317
341
  );
318
342
  expect(missingGatePass.ok).toBe(false);
319
343
  expect(missingGatePass.error.code).toBe(ERROR_CODES.MERGE_DISABLED);