@revisium/orchestrator 0.2.0-alpha.3 → 0.2.0-alpha.5

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 (323) hide show
  1. package/README.md +4 -4
  2. package/control-plane/bootstrap.config.json +108 -550
  3. package/control-plane/default-playbook/catalog/pipelines.json +446 -1123
  4. package/control-plane/default-playbook/catalog/roles.json +1 -1
  5. package/control-plane/default-playbook/catalog/run-profiles.json +338 -0
  6. package/control-plane/default-playbook/package.json +1 -1
  7. package/control-plane/default-playbook/playbook.json +2 -1
  8. package/control-plane/default-playbook/prompts/developer.md +6 -6
  9. package/control-plane/default-playbook/prompts/integrator.md +1 -1
  10. package/dist/__generated__/client/browser.js +18 -0
  11. package/dist/__generated__/client/browser.js.map +1 -0
  12. package/dist/__generated__/client/client.js +32 -0
  13. package/dist/__generated__/client/client.js.map +1 -0
  14. package/dist/__generated__/client/commonInputTypes.js +11 -0
  15. package/dist/__generated__/client/commonInputTypes.js.map +1 -0
  16. package/dist/__generated__/client/enums.js +19 -0
  17. package/dist/__generated__/client/enums.js.map +1 -0
  18. package/dist/__generated__/client/internal/class.js +53 -0
  19. package/dist/__generated__/client/internal/class.js.map +1 -0
  20. package/dist/__generated__/client/internal/prismaNamespace.js +450 -0
  21. package/dist/__generated__/client/internal/prismaNamespace.js.map +1 -0
  22. package/dist/__generated__/client/internal/prismaNamespaceBrowser.js +421 -0
  23. package/dist/__generated__/client/internal/prismaNamespaceBrowser.js.map +1 -0
  24. package/dist/__generated__/client/models/Branch.js +2 -0
  25. package/dist/__generated__/client/models/Branch.js.map +1 -0
  26. package/dist/__generated__/client/models/CostLedgerEntry.js +2 -0
  27. package/dist/__generated__/client/models/CostLedgerEntry.js.map +1 -0
  28. package/dist/__generated__/client/models/FileBlob.js +2 -0
  29. package/dist/__generated__/client/models/FileBlob.js.map +1 -0
  30. package/dist/__generated__/client/models/InboxItem.js +2 -0
  31. package/dist/__generated__/client/models/InboxItem.js.map +1 -0
  32. package/dist/__generated__/client/models/ProjectFileUsage.js +2 -0
  33. package/dist/__generated__/client/models/ProjectFileUsage.js.map +1 -0
  34. package/dist/__generated__/client/models/Revision.js +2 -0
  35. package/dist/__generated__/client/models/Revision.js.map +1 -0
  36. package/dist/__generated__/client/models/RevoProject.js +2 -0
  37. package/dist/__generated__/client/models/RevoProject.js.map +1 -0
  38. package/dist/__generated__/client/models/Row.js +2 -0
  39. package/dist/__generated__/client/models/Row.js.map +1 -0
  40. package/dist/__generated__/client/models/RunAttempt.js +2 -0
  41. package/dist/__generated__/client/models/RunAttempt.js.map +1 -0
  42. package/dist/__generated__/client/models/RunEvent.js +2 -0
  43. package/dist/__generated__/client/models/RunEvent.js.map +1 -0
  44. package/dist/__generated__/client/models/RunOutput.js +2 -0
  45. package/dist/__generated__/client/models/RunOutput.js.map +1 -0
  46. package/dist/__generated__/client/models/RunTask.js +2 -0
  47. package/dist/__generated__/client/models/RunTask.js.map +1 -0
  48. package/dist/__generated__/client/models/Table.js +2 -0
  49. package/dist/__generated__/client/models/Table.js.map +1 -0
  50. package/dist/__generated__/client/models/TableMigration.js +2 -0
  51. package/dist/__generated__/client/models/TableMigration.js.map +1 -0
  52. package/dist/__generated__/client/models/TaskRun.js +2 -0
  53. package/dist/__generated__/client/models/TaskRun.js.map +1 -0
  54. package/dist/__generated__/client/models.js +2 -0
  55. package/dist/__generated__/client/models.js.map +1 -0
  56. package/dist/api/graphql-api/graphql-ws/pubsub.module.js +2 -1
  57. package/dist/api/graphql-api/graphql-ws/pubsub.module.js.map +1 -1
  58. package/dist/api/graphql-api/graphql-ws/subscription-bridge.service.js +110 -28
  59. package/dist/api/graphql-api/graphql-ws/subscription-bridge.service.js.map +1 -1
  60. package/dist/api/graphql-api/graphql-ws/subscription-mappers.js +3 -1
  61. package/dist/api/graphql-api/graphql-ws/subscription-mappers.js.map +1 -1
  62. package/dist/api/graphql-api/inbox/inputs/resolve-gate.input.js +9 -0
  63. package/dist/api/graphql-api/inbox/inputs/resolve-gate.input.js.map +1 -1
  64. package/dist/api/graphql-api/method/inputs/create-run-profile.input.js +54 -0
  65. package/dist/api/graphql-api/method/inputs/create-run-profile.input.js.map +1 -0
  66. package/dist/api/graphql-api/method/inputs/deprecate-run-profile.input.js +37 -0
  67. package/dist/api/graphql-api/method/inputs/deprecate-run-profile.input.js.map +1 -0
  68. package/dist/api/graphql-api/method/inputs/get-run-profile.input.js +32 -0
  69. package/dist/api/graphql-api/method/inputs/get-run-profile.input.js.map +1 -0
  70. package/dist/api/graphql-api/method/inputs/list-run-profiles.input.js +33 -0
  71. package/dist/api/graphql-api/method/inputs/list-run-profiles.input.js.map +1 -0
  72. package/dist/api/graphql-api/method/inputs/update-run-profile.input.js +59 -0
  73. package/dist/api/graphql-api/method/inputs/update-run-profile.input.js.map +1 -0
  74. package/dist/api/graphql-api/method/inputs/validate-run-profile.input.js +33 -0
  75. package/dist/api/graphql-api/method/inputs/validate-run-profile.input.js.map +1 -0
  76. package/dist/api/graphql-api/method/method.resolver.js +76 -1
  77. package/dist/api/graphql-api/method/method.resolver.js.map +1 -1
  78. package/dist/api/graphql-api/method/model/run-profile-connection.model.js +16 -0
  79. package/dist/api/graphql-api/method/model/run-profile-connection.model.js.map +1 -0
  80. package/dist/api/graphql-api/method/model/run-profile-status.model.js +6 -0
  81. package/dist/api/graphql-api/method/model/run-profile-status.model.js.map +1 -0
  82. package/dist/api/graphql-api/method/model/run-profile.model.js +79 -0
  83. package/dist/api/graphql-api/method/model/run-profile.model.js.map +1 -0
  84. package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js +6 -0
  85. package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js.map +1 -1
  86. package/dist/api/graphql-api/registerGraphqlEnums.js +6 -0
  87. package/dist/api/graphql-api/registerGraphqlEnums.js.map +1 -1
  88. package/dist/api/graphql-api/runs/inputs/create-run.input.js +17 -1
  89. package/dist/api/graphql-api/runs/inputs/create-run.input.js.map +1 -1
  90. package/dist/api/graphql-api/runs/inputs/simulate-route.input.js +11 -1
  91. package/dist/api/graphql-api/runs/inputs/simulate-route.input.js.map +1 -1
  92. package/dist/api/graphql-api/runs/model/run-workflow.model.js +5 -0
  93. package/dist/api/graphql-api/runs/model/run-workflow.model.js.map +1 -1
  94. package/dist/api/graphql-api/share/model/issue-action.model.js +7 -0
  95. package/dist/api/graphql-api/share/model/issue-action.model.js.map +1 -0
  96. package/dist/cli/commands/doctor-report.js +1 -13
  97. package/dist/cli/commands/doctor-report.js.map +1 -1
  98. package/dist/cli/commands/lifecycle.js +50 -65
  99. package/dist/cli/commands/lifecycle.js.map +1 -1
  100. package/dist/cli/commands/{revisium-helpers.js → process-helpers.js} +1 -24
  101. package/dist/cli/commands/process-helpers.js.map +1 -0
  102. package/dist/config.js +17 -55
  103. package/dist/config.js.map +1 -1
  104. package/dist/control-plane/bootstrap-json-validator.js +65 -0
  105. package/dist/control-plane/bootstrap-json-validator.js.map +1 -0
  106. package/dist/control-plane/bootstrap.js +25 -38
  107. package/dist/control-plane/bootstrap.js.map +1 -1
  108. package/dist/control-plane/change-notifications.js +45 -14
  109. package/dist/control-plane/change-notifications.js.map +1 -1
  110. package/dist/control-plane/data-access.js +1 -106
  111. package/dist/control-plane/data-access.js.map +1 -1
  112. package/dist/control-plane/default-playbook-policy.js +488 -94
  113. package/dist/control-plane/default-playbook-policy.js.map +1 -1
  114. package/dist/control-plane/definitions.js +4 -5
  115. package/dist/control-plane/definitions.js.map +1 -1
  116. package/dist/control-plane/engine-transport.js +383 -0
  117. package/dist/control-plane/engine-transport.js.map +1 -0
  118. package/dist/control-plane/inbox.js +15 -7
  119. package/dist/control-plane/inbox.js.map +1 -1
  120. package/dist/control-plane/index.js +0 -1
  121. package/dist/control-plane/index.js.map +1 -1
  122. package/dist/control-plane/json-fields.js +1 -1
  123. package/dist/control-plane/json-fields.js.map +1 -1
  124. package/dist/control-plane/merge-override-audit.js +2 -2
  125. package/dist/control-plane/merge-override-audit.js.map +1 -1
  126. package/dist/control-plane/pipeline-coverage-registry.js +486 -0
  127. package/dist/control-plane/pipeline-coverage-registry.js.map +1 -0
  128. package/dist/control-plane/query-types.js +2 -0
  129. package/dist/control-plane/query-types.js.map +1 -0
  130. package/dist/control-plane/run-profiles.js +175 -0
  131. package/dist/control-plane/run-profiles.js.map +1 -0
  132. package/dist/control-plane/schema-migration.js +0 -35
  133. package/dist/control-plane/schema-migration.js.map +1 -1
  134. package/dist/control-plane/seed-default-playbook.js +2 -31
  135. package/dist/control-plane/seed-default-playbook.js.map +1 -1
  136. package/dist/control-plane/tables.js +8 -0
  137. package/dist/control-plane/tables.js.map +1 -1
  138. package/dist/control-plane/transport.js +16 -0
  139. package/dist/control-plane/transport.js.map +1 -0
  140. package/dist/control-plane/versioned-meaning.js +72 -15
  141. package/dist/control-plane/versioned-meaning.js.map +1 -1
  142. package/dist/e2e/kit/agents.js +63 -8
  143. package/dist/e2e/kit/agents.js.map +1 -1
  144. package/dist/e2e/kit/assertions.js +15 -3
  145. package/dist/e2e/kit/assertions.js.map +1 -1
  146. package/dist/e2e/kit/crash.js +8 -4
  147. package/dist/e2e/kit/crash.js.map +1 -1
  148. package/dist/e2e/kit/drive.js +46 -11
  149. package/dist/e2e/kit/drive.js.map +1 -1
  150. package/dist/e2e/kit/env.js +17 -1
  151. package/dist/e2e/kit/env.js.map +1 -1
  152. package/dist/e2e/kit/fake-integrator.js +9 -22
  153. package/dist/e2e/kit/fake-integrator.js.map +1 -1
  154. package/dist/e2e/kit/gh-emulator.js +166 -26
  155. package/dist/e2e/kit/gh-emulator.js.map +1 -1
  156. package/dist/e2e/kit/harness.js +44 -10
  157. package/dist/e2e/kit/harness.js.map +1 -1
  158. package/dist/e2e/kit/index.js +2 -0
  159. package/dist/e2e/kit/index.js.map +1 -1
  160. package/dist/e2e/kit/run-profiles.js +50 -0
  161. package/dist/e2e/kit/run-profiles.js.map +1 -0
  162. package/dist/e2e/kit/scenario.js +207 -0
  163. package/dist/e2e/kit/scenario.js.map +1 -0
  164. package/dist/e2e/kit/scenarios.js +38 -45
  165. package/dist/e2e/kit/scenarios.js.map +1 -1
  166. package/dist/e2e/recovery-crash-child.js +2 -2
  167. package/dist/e2e/recovery-crash-child.js.map +1 -1
  168. package/dist/e2e/recovery-dd-crash-child.js +8 -6
  169. package/dist/e2e/recovery-dd-crash-child.js.map +1 -1
  170. package/dist/engine/dbos.service.js +8 -1
  171. package/dist/engine/dbos.service.js.map +1 -1
  172. package/dist/features/inbox/commands/impl/resolve-gate.command.js.map +1 -1
  173. package/dist/features/method/commands/handlers/method-command.handlers.js +64 -0
  174. package/dist/features/method/commands/handlers/method-command.handlers.js.map +1 -0
  175. package/dist/features/method/commands/impl/create-run-profile.command.js +7 -0
  176. package/dist/features/method/commands/impl/create-run-profile.command.js.map +1 -0
  177. package/dist/features/method/commands/impl/deprecate-run-profile.command.js +7 -0
  178. package/dist/features/method/commands/impl/deprecate-run-profile.command.js.map +1 -0
  179. package/dist/features/method/commands/impl/update-run-profile.command.js +7 -0
  180. package/dist/features/method/commands/impl/update-run-profile.command.js.map +1 -0
  181. package/dist/features/method/commands/index.js +6 -1
  182. package/dist/features/method/commands/index.js.map +1 -1
  183. package/dist/features/method/method-api.service.js +31 -3
  184. package/dist/features/method/method-api.service.js.map +1 -1
  185. package/dist/features/method/queries/handlers/method-query.handlers.js +58 -1
  186. package/dist/features/method/queries/handlers/method-query.handlers.js.map +1 -1
  187. package/dist/features/method/queries/impl/get-run-profile.query.js +7 -0
  188. package/dist/features/method/queries/impl/get-run-profile.query.js.map +1 -0
  189. package/dist/features/method/queries/impl/list-run-profiles.query.js +7 -0
  190. package/dist/features/method/queries/impl/list-run-profiles.query.js.map +1 -0
  191. package/dist/features/method/queries/impl/validate-run-profile.query.js +7 -0
  192. package/dist/features/method/queries/impl/validate-run-profile.query.js.map +1 -0
  193. package/dist/features/method/queries/index.js +4 -1
  194. package/dist/features/method/queries/index.js.map +1 -1
  195. package/dist/features/pr/queries/impl/get-pr-readiness.query.js.map +1 -1
  196. package/dist/features/runs/commands/impl/create-run.command.js.map +1 -1
  197. package/dist/features/runs/queries/impl/simulate-route.query.js.map +1 -1
  198. package/dist/features/shared/connection.js +6 -3
  199. package/dist/features/shared/connection.js.map +1 -1
  200. package/dist/host/daemon.js +32 -8
  201. package/dist/host/daemon.js.map +1 -1
  202. package/dist/host/ensure-host.js +3 -3
  203. package/dist/host/ensure-host.js.map +1 -1
  204. package/dist/host/host-runtime.js.map +1 -1
  205. package/dist/host/host.lifecycle.js +3 -16
  206. package/dist/host/host.lifecycle.js.map +1 -1
  207. package/dist/http/graphql-host.js +17 -8
  208. package/dist/http/graphql-host.js.map +1 -1
  209. package/dist/mcp/mcp-capabilities.js +8 -2
  210. package/dist/mcp/mcp-capabilities.js.map +1 -1
  211. package/dist/mcp/mcp-facade.service.js +53 -10
  212. package/dist/mcp/mcp-facade.service.js.map +1 -1
  213. package/dist/mcp/mcp-tool-result.js +22 -0
  214. package/dist/mcp/mcp-tool-result.js.map +1 -0
  215. package/dist/mcp/mcp-tools.js +108 -1
  216. package/dist/mcp/mcp-tools.js.map +1 -1
  217. package/dist/pipeline/await-human.js +27 -8
  218. package/dist/pipeline/await-human.js.map +1 -1
  219. package/dist/pipeline/data-driven-task.workflow.js +573 -105
  220. package/dist/pipeline/data-driven-task.workflow.js.map +1 -1
  221. package/dist/pipeline/pipeline.service.js +28 -12
  222. package/dist/pipeline/pipeline.service.js.map +1 -1
  223. package/dist/pipeline/route-contract.js +80 -39
  224. package/dist/pipeline/route-contract.js.map +1 -1
  225. package/dist/pipeline-core/condition-scopes.js +15 -0
  226. package/dist/pipeline-core/condition-scopes.js.map +1 -0
  227. package/dist/pipeline-core/index.js +2 -0
  228. package/dist/pipeline-core/index.js.map +1 -1
  229. package/dist/pipeline-core/kit/fixtures.js +81 -44
  230. package/dist/pipeline-core/kit/fixtures.js.map +1 -1
  231. package/dist/pipeline-core/materialize.js +221 -0
  232. package/dist/pipeline-core/materialize.js.map +1 -0
  233. package/dist/pipeline-core/types.js +5 -0
  234. package/dist/pipeline-core/types.js.map +1 -1
  235. package/dist/pipeline-core/validate-loops.js +2 -15
  236. package/dist/pipeline-core/validate-loops.js.map +1 -1
  237. package/dist/pipeline-core/validate-resilience.js +257 -0
  238. package/dist/pipeline-core/validate-resilience.js.map +1 -0
  239. package/dist/pipeline-core/validate.js +2 -0
  240. package/dist/pipeline-core/validate.js.map +1 -1
  241. package/dist/playbook/catalog-loader.js +40 -3
  242. package/dist/playbook/catalog-loader.js.map +1 -1
  243. package/dist/playbook/catalog-schema-validator.js +468 -0
  244. package/dist/playbook/catalog-schema-validator.js.map +1 -0
  245. package/dist/playbook/import-mapper.js +55 -3
  246. package/dist/playbook/import-mapper.js.map +1 -1
  247. package/dist/playbook/manifest.js +5 -0
  248. package/dist/playbook/manifest.js.map +1 -1
  249. package/dist/playbook/playbook-installer.js +17 -1
  250. package/dist/playbook/playbook-installer.js.map +1 -1
  251. package/dist/poller/pr-readiness-core.js +257 -93
  252. package/dist/poller/pr-readiness-core.js.map +1 -1
  253. package/dist/poller/pr-readiness.js +2 -2
  254. package/dist/poller/pr-readiness.js.map +1 -1
  255. package/dist/revisium/inbox.service.js +8 -8
  256. package/dist/revisium/inbox.service.js.map +1 -1
  257. package/dist/revisium/playbooks.service.js +311 -21
  258. package/dist/revisium/playbooks.service.js.map +1 -1
  259. package/dist/revisium/revisium.module.js +8 -8
  260. package/dist/revisium/revisium.module.js.map +1 -1
  261. package/dist/revisium/roles.service.js +3 -1
  262. package/dist/revisium/roles.service.js.map +1 -1
  263. package/dist/revisium/run.service.js +9 -8
  264. package/dist/revisium/run.service.js.map +1 -1
  265. package/dist/revisium/tokens.js +0 -1
  266. package/dist/revisium/tokens.js.map +1 -1
  267. package/dist/run/create-run.js +1 -4
  268. package/dist/run/create-run.js.map +1 -1
  269. package/dist/run/inspect-run.js +33 -29
  270. package/dist/run/inspect-run.js.map +1 -1
  271. package/dist/run/issue-ref.js +97 -2
  272. package/dist/run/issue-ref.js.map +1 -1
  273. package/dist/run/prisma-runtime-data-access.js +616 -0
  274. package/dist/run/prisma-runtime-data-access.js.map +1 -0
  275. package/dist/run/run-outputs.js +39 -14
  276. package/dist/run/run-outputs.js.map +1 -1
  277. package/dist/run/terminal-run-status.js.map +1 -1
  278. package/dist/runners/gh-identity.js +29 -7
  279. package/dist/runners/gh-identity.js.map +1 -1
  280. package/dist/runners/integrator.js +692 -89
  281. package/dist/runners/integrator.js.map +1 -1
  282. package/dist/runners/worktree.service.js +10 -8
  283. package/dist/runners/worktree.service.js.map +1 -1
  284. package/dist/schema/ajv-errors.js +15 -0
  285. package/dist/schema/ajv-errors.js.map +1 -0
  286. package/dist/smoke/isolation.js +7 -16
  287. package/dist/smoke/isolation.js.map +1 -1
  288. package/dist/storage/ensure-storage.js +118 -0
  289. package/dist/storage/ensure-storage.js.map +1 -0
  290. package/dist/storage/revo-database.js +39 -0
  291. package/dist/storage/revo-database.js.map +1 -0
  292. package/dist/storage/revo-prisma.service.js +31 -0
  293. package/dist/storage/revo-prisma.service.js.map +1 -0
  294. package/dist/storage/revo-storage.module.js +18 -0
  295. package/dist/storage/revo-storage.module.js.map +1 -0
  296. package/dist/task-control-plane/pr-readiness.service.js +5 -2
  297. package/dist/task-control-plane/pr-readiness.service.js.map +1 -1
  298. package/dist/task-control-plane/run-watch.service.js +3 -6
  299. package/dist/task-control-plane/run-watch.service.js.map +1 -1
  300. package/dist/task-control-plane/task-control-plane-api.service.js +518 -85
  301. package/dist/task-control-plane/task-control-plane-api.service.js.map +1 -1
  302. package/dist/testing/runtime-data-access.js +175 -0
  303. package/dist/testing/runtime-data-access.js.map +1 -0
  304. package/dist/worker/build-context.js +178 -2
  305. package/dist/worker/build-context.js.map +1 -1
  306. package/dist/worker/claude-code-runner.js +23 -6
  307. package/dist/worker/claude-code-runner.js.map +1 -1
  308. package/dist/worker/codex-runner.js +6 -1
  309. package/dist/worker/codex-runner.js.map +1 -1
  310. package/package.json +20 -7
  311. package/prisma/migrations/20260707080500_initial_schema/migration.sql +259 -0
  312. package/prisma/migrations/20260707103000_prisma_runtime_tables/migration.sql +234 -0
  313. package/prisma/migrations/migration_lock.toml +3 -0
  314. package/prisma/schema.prisma +338 -0
  315. package/prisma.config.ts +11 -0
  316. package/dist/cli/commands/revisium-helpers.js.map +0 -1
  317. package/dist/control-plane/client-transport.js +0 -168
  318. package/dist/control-plane/client-transport.js.map +0 -1
  319. package/dist/engine/ensure-postgres.js +0 -46
  320. package/dist/engine/ensure-postgres.js.map +0 -1
  321. package/dist/host/ensure-revisium.js +0 -135
  322. package/dist/host/ensure-revisium.js.map +0 -1
  323. package/revisium.config.json +0 -10
@@ -5,463 +5,6 @@
5
5
  "REST_API"
6
6
  ],
7
7
  "tables": [
8
- {
9
- "id": "task_runs",
10
- "schema": {
11
- "type": "object",
12
- "additionalProperties": false,
13
- "properties": {
14
- "id": {
15
- "type": "string",
16
- "default": ""
17
- },
18
- "project_id": {
19
- "type": "string",
20
- "default": ""
21
- },
22
- "title": {
23
- "type": "string",
24
- "default": ""
25
- },
26
- "description": {
27
- "type": "string",
28
- "default": ""
29
- },
30
- "status": {
31
- "type": "string",
32
- "default": "pending",
33
- "description": "pending|planning|ready|running|completed|failed|awaiting_approval|paused|cancelled"
34
- },
35
- "repos": {
36
- "type": "array",
37
- "items": {
38
- "type": "string",
39
- "default": ""
40
- }
41
- },
42
- "scope": {
43
- "type": "string",
44
- "default": ""
45
- },
46
- "priority": {
47
- "type": "number",
48
- "default": 0
49
- },
50
- "playbook_id": {
51
- "type": "string",
52
- "default": "",
53
- "description": "Installed playbook selected for this run"
54
- },
55
- "pipeline_id": {
56
- "type": "string",
57
- "default": "",
58
- "description": "Installed pipeline row id selected for this run"
59
- },
60
- "params": {
61
- "type": "string",
62
- "default": "",
63
- "description": "Serialized JSON run params"
64
- },
65
- "route_decision": {
66
- "type": "string",
67
- "default": "",
68
- "description": "Serialized JSON structured route decision"
69
- },
70
- "execution_profile": {
71
- "type": "string",
72
- "default": "",
73
- "description": "Serialized JSON resolved execution profile"
74
- },
75
- "created_by": {
76
- "type": "string",
77
- "default": ""
78
- },
79
- "created_at": {
80
- "type": "string",
81
- "default": ""
82
- },
83
- "updated_at": {
84
- "type": "string",
85
- "default": ""
86
- }
87
- },
88
- "required": []
89
- }
90
- },
91
- {
92
- "id": "tasks",
93
- "schema": {
94
- "type": "object",
95
- "additionalProperties": false,
96
- "properties": {
97
- "id": {
98
- "type": "string",
99
- "default": ""
100
- },
101
- "run_id": {
102
- "type": "string",
103
- "default": ""
104
- },
105
- "repo_ref": {
106
- "type": "string",
107
- "default": ""
108
- },
109
- "role_hint": {
110
- "type": "string",
111
- "default": ""
112
- },
113
- "title": {
114
- "type": "string",
115
- "default": ""
116
- },
117
- "status": {
118
- "type": "string",
119
- "default": "pending"
120
- },
121
- "depends_on": {
122
- "type": "array",
123
- "items": {
124
- "type": "string",
125
- "default": ""
126
- }
127
- },
128
- "scope": {
129
- "type": "string",
130
- "default": ""
131
- },
132
- "priority": {
133
- "type": "number",
134
- "default": 0
135
- },
136
- "created_at": {
137
- "type": "string",
138
- "default": ""
139
- },
140
- "updated_at": {
141
- "type": "string",
142
- "default": ""
143
- }
144
- },
145
- "required": []
146
- }
147
- },
148
- {
149
- "id": "steps",
150
- "schema": {
151
- "type": "object",
152
- "description": "DEPRECATED/unused — runtime path retired (audit §3.1, #86); no live path writes or reads a steps row (DBOS owns progress). Table drop deferred — a schema drop on existing control-planes is riskier than retiring the writes; tracked in docs/roadmap.md → Post-MVP cleanup.",
153
- "additionalProperties": false,
154
- "properties": {
155
- "id": {
156
- "type": "string",
157
- "default": ""
158
- },
159
- "task_id": {
160
- "type": "string",
161
- "default": ""
162
- },
163
- "run_id": {
164
- "type": "string",
165
- "default": ""
166
- },
167
- "role": {
168
- "type": "string",
169
- "default": ""
170
- },
171
- "kind": {
172
- "type": "string",
173
- "default": ""
174
- },
175
- "status": {
176
- "type": "string",
177
- "default": "pending",
178
- "description": "pending|ready|claimed|running|succeeded|failed|dead|awaiting_approval|skipped"
179
- },
180
- "input": {
181
- "type": "string",
182
- "default": "",
183
- "description": "Serialized JSON"
184
- },
185
- "output": {
186
- "type": "string",
187
- "default": "",
188
- "description": "Serialized JSON"
189
- },
190
- "model_profile": {
191
- "type": "string",
192
- "default": ""
193
- },
194
- "run_after": {
195
- "type": "string",
196
- "default": ""
197
- },
198
- "attempt_count": {
199
- "type": "number",
200
- "default": 0
201
- },
202
- "max_attempts": {
203
- "type": "number",
204
- "default": 3
205
- },
206
- "priority": {
207
- "type": "number",
208
- "default": 0
209
- },
210
- "depends_on": {
211
- "type": "array",
212
- "items": {
213
- "type": "string",
214
- "default": ""
215
- }
216
- },
217
- "lease_owner": {
218
- "type": "string",
219
- "default": ""
220
- },
221
- "lease_expires_at": {
222
- "type": "string",
223
- "default": ""
224
- },
225
- "dead_reason": {
226
- "type": "string",
227
- "default": ""
228
- },
229
- "created_at": {
230
- "type": "string",
231
- "default": ""
232
- },
233
- "updated_at": {
234
- "type": "string",
235
- "default": ""
236
- }
237
- },
238
- "required": []
239
- }
240
- },
241
- {
242
- "id": "attempts",
243
- "schema": {
244
- "type": "object",
245
- "additionalProperties": false,
246
- "properties": {
247
- "id": {
248
- "type": "string",
249
- "default": ""
250
- },
251
- "step_id": {
252
- "type": "string",
253
- "default": ""
254
- },
255
- "run_id": {
256
- "type": "string",
257
- "default": ""
258
- },
259
- "worker_id": {
260
- "type": "string",
261
- "default": ""
262
- },
263
- "attempt_no": {
264
- "type": "number",
265
- "default": 0
266
- },
267
- "iteration": {
268
- "type": "number",
269
- "default": 0,
270
- "description": "developer/reviewer rework iteration (0 = first pass)"
271
- },
272
- "status": {
273
- "type": "string",
274
- "default": ""
275
- },
276
- "idempotency_key": {
277
- "type": "string",
278
- "default": ""
279
- },
280
- "model_profile": {
281
- "type": "string",
282
- "default": ""
283
- },
284
- "verdict": {
285
- "type": "string",
286
- "default": "",
287
- "description": "extracted reviewer/agent verdict (PASS|MINOR|MAJOR|BLOCKER|…)"
288
- },
289
- "input_tokens": {
290
- "type": "number",
291
- "default": 0
292
- },
293
- "output_tokens": {
294
- "type": "number",
295
- "default": 0
296
- },
297
- "cost_amount": {
298
- "type": "number",
299
- "default": 0
300
- },
301
- "currency": {
302
- "type": "string",
303
- "default": "USD"
304
- },
305
- "duration_ms": {
306
- "type": "number",
307
- "default": 0
308
- },
309
- "output_summary": {
310
- "type": "string",
311
- "default": "",
312
- "description": "Serialized JSON, secret-redacted, capped"
313
- },
314
- "artifact_ref": {
315
- "type": "string",
316
- "default": "",
317
- "description": "Stable run artifact reference, e.g. run_id/attempt_id"
318
- },
319
- "stdout_tail": {
320
- "type": "string",
321
- "default": "",
322
- "description": "Secret-redacted process stdout tail, capped"
323
- },
324
- "stderr_tail": {
325
- "type": "string",
326
- "default": "",
327
- "description": "Secret-redacted process stderr tail, capped"
328
- },
329
- "lesson": {
330
- "type": "string",
331
- "default": ""
332
- },
333
- "error": {
334
- "type": "string",
335
- "default": ""
336
- },
337
- "started_at": {
338
- "type": "string",
339
- "default": ""
340
- },
341
- "finished_at": {
342
- "type": "string",
343
- "default": ""
344
- }
345
- },
346
- "required": []
347
- }
348
- },
349
- {
350
- "id": "events",
351
- "schema": {
352
- "type": "object",
353
- "additionalProperties": false,
354
- "properties": {
355
- "id": {
356
- "type": "string",
357
- "default": ""
358
- },
359
- "run_id": {
360
- "type": "string",
361
- "default": ""
362
- },
363
- "task_id": {
364
- "type": "string",
365
- "default": ""
366
- },
367
- "step_id": {
368
- "type": "string",
369
- "default": ""
370
- },
371
- "type": {
372
- "type": "string",
373
- "default": ""
374
- },
375
- "payload": {
376
- "type": "string",
377
- "default": "",
378
- "description": "Serialized JSON"
379
- },
380
- "actor": {
381
- "type": "string",
382
- "default": ""
383
- },
384
- "created_at": {
385
- "type": "string",
386
- "default": ""
387
- }
388
- },
389
- "required": []
390
- }
391
- },
392
- {
393
- "id": "inbox",
394
- "schema": {
395
- "type": "object",
396
- "additionalProperties": false,
397
- "properties": {
398
- "id": {
399
- "type": "string",
400
- "default": ""
401
- },
402
- "kind": {
403
- "type": "string",
404
- "default": "",
405
- "description": "approval|question|alert"
406
- },
407
- "run_id": {
408
- "type": "string",
409
- "default": ""
410
- },
411
- "task_id": {
412
- "type": "string",
413
- "default": ""
414
- },
415
- "step_id": {
416
- "type": "string",
417
- "default": ""
418
- },
419
- "project_id": {
420
- "type": "string",
421
- "default": ""
422
- },
423
- "title": {
424
- "type": "string",
425
- "default": ""
426
- },
427
- "context": {
428
- "type": "string",
429
- "default": "",
430
- "description": "Serialized JSON"
431
- },
432
- "options": {
433
- "type": "array",
434
- "items": {
435
- "type": "string",
436
- "default": ""
437
- }
438
- },
439
- "status": {
440
- "type": "string",
441
- "default": "pending",
442
- "description": "pending|resolved"
443
- },
444
- "answer": {
445
- "type": "string",
446
- "default": "",
447
- "description": "Serialized JSON"
448
- },
449
- "resolved_by": {
450
- "type": "string",
451
- "default": ""
452
- },
453
- "created_at": {
454
- "type": "string",
455
- "default": ""
456
- },
457
- "resolved_at": {
458
- "type": "string",
459
- "default": ""
460
- }
461
- },
462
- "required": []
463
- }
464
- },
465
8
  {
466
9
  "id": "roles",
467
10
  "schema": {
@@ -498,7 +41,7 @@
498
41
  "runner_id": {
499
42
  "type": "string",
500
43
  "default": "",
501
- "description": "Portable playbook runner binding, for example claude-code or revo-integrator"
44
+ "description": "Portable playbook runner binding, for example claude-code, codex, or script"
502
45
  },
503
46
  "allowed_tools": {
504
47
  "type": "array",
@@ -552,6 +95,15 @@
552
95
  "default": "",
553
96
  "description": "claude --permission-mode; '' = default (0008 #5)"
554
97
  },
98
+ "status": {
99
+ "type": "string",
100
+ "default": "active",
101
+ "description": "active|removed"
102
+ },
103
+ "retired_at": {
104
+ "type": "string",
105
+ "default": ""
106
+ },
555
107
  "updated_at": {
556
108
  "type": "string",
557
109
  "default": ""
@@ -613,6 +165,10 @@
613
165
  "updated_at": {
614
166
  "type": "string",
615
167
  "default": ""
168
+ },
169
+ "run_profiles_catalog_path": {
170
+ "type": "string",
171
+ "default": ""
616
172
  }
617
173
  },
618
174
  "required": []
@@ -682,6 +238,15 @@
682
238
  "default": "",
683
239
  "description": "Serialized JSON"
684
240
  },
241
+ "status": {
242
+ "type": "string",
243
+ "default": "active",
244
+ "description": "active|removed"
245
+ },
246
+ "retired_at": {
247
+ "type": "string",
248
+ "default": ""
249
+ },
685
250
  "updated_at": {
686
251
  "type": "string",
687
252
  "default": ""
@@ -735,7 +300,7 @@
735
300
  }
736
301
  },
737
302
  {
738
- "id": "routing_policy",
303
+ "id": "run_profiles",
739
304
  "schema": {
740
305
  "type": "object",
741
306
  "additionalProperties": false,
@@ -744,70 +309,65 @@
744
309
  "type": "string",
745
310
  "default": ""
746
311
  },
747
- "rule": {
312
+ "playbook_id": {
748
313
  "type": "string",
749
- "default": "",
750
- "description": "Serialized JSON"
314
+ "default": ""
751
315
  },
752
- "model_level": {
316
+ "pipeline_id": {
753
317
  "type": "string",
754
- "default": "standard"
755
- },
756
- "requires_human": {
757
- "type": "boolean",
758
- "default": false
318
+ "default": ""
759
319
  },
760
- "updated_at": {
320
+ "profile_id": {
761
321
  "type": "string",
762
322
  "default": ""
763
- }
764
- },
765
- "required": []
766
- }
767
- },
768
- {
769
- "id": "cost_ledger",
770
- "schema": {
771
- "type": "object",
772
- "additionalProperties": false,
773
- "properties": {
774
- "id": {
323
+ },
324
+ "schema_version": {
775
325
  "type": "string",
776
- "default": ""
326
+ "default": "run-profile/v1"
327
+ },
328
+ "version": {
329
+ "type": "string",
330
+ "default": "1"
777
331
  },
778
- "run_id": {
332
+ "display_name": {
779
333
  "type": "string",
780
334
  "default": ""
781
335
  },
782
- "step_id": {
336
+ "summary": {
783
337
  "type": "string",
784
338
  "default": ""
785
339
  },
786
- "attempt_id": {
340
+ "profile_json": {
341
+ "type": "string",
342
+ "default": "",
343
+ "description": "Serialized JSON normalized RunProfile payload"
344
+ },
345
+ "profile_hash": {
787
346
  "type": "string",
788
347
  "default": ""
789
348
  },
790
- "model_profile": {
349
+ "profile_revision_hash": {
791
350
  "type": "string",
792
351
  "default": ""
793
352
  },
794
- "input_tokens": {
795
- "type": "number",
796
- "default": 0
353
+ "status": {
354
+ "type": "string",
355
+ "default": "active",
356
+ "description": "active|deprecated|removed"
797
357
  },
798
- "output_tokens": {
799
- "type": "number",
800
- "default": 0
358
+ "retired_at": {
359
+ "type": "string",
360
+ "default": ""
801
361
  },
802
- "cost_amount": {
803
- "type": "number",
804
- "default": 0
362
+ "source_path": {
363
+ "type": "string",
364
+ "default": ""
805
365
  },
806
- "currency": {
366
+ "source_hash": {
807
367
  "type": "string",
808
- "default": "USD"
368
+ "default": ""
809
369
  },
810
- "recorded_at": {
370
+ "updated_at": {
811
371
  "type": "string",
812
372
  "default": ""
813
373
  }
@@ -816,54 +376,29 @@
816
376
  }
817
377
  },
818
378
  {
819
- "id": "run_outputs",
379
+ "id": "routing_policy",
820
380
  "schema": {
821
381
  "type": "object",
822
382
  "additionalProperties": false,
823
383
  "properties": {
824
384
  "id": {
825
- "type": "string",
826
- "default": "",
827
- "description": "Deterministic: out_<fnv1a64Hex(runId|nodeId|ordinal)>"
828
- },
829
- "run_id": {
830
- "type": "string",
831
- "default": ""
832
- },
833
- "node_id": {
834
385
  "type": "string",
835
386
  "default": ""
836
387
  },
837
- "ordinal": {
838
- "type": "number",
839
- "default": 0,
840
- "description": "Adapter-owned per-(run,node) execution ordinal; 1,2,3 across loop iterations (0016 §4.1)"
841
- },
842
- "name": {
843
- "type": "string",
844
- "default": "",
845
- "description": "Artifact name from the node's produces.name, e.g. plan"
846
- },
847
- "schema_ref": {
848
- "type": "string",
849
- "default": "",
850
- "description": "resultSchema the payload was shape-checked against, e.g. schema:plan"
851
- },
852
- "payload": {
388
+ "rule": {
853
389
  "type": "string",
854
390
  "default": "",
855
- "description": "Serialized JSON content, secret-redacted + size-capped at the adapter boundary"
391
+ "description": "Serialized JSON"
856
392
  },
857
- "payload_ref": {
393
+ "model_level": {
858
394
  "type": "string",
859
- "default": "",
860
- "description": "Set instead of payload when the content exceeds the inline cap (0016 §8)"
395
+ "default": "standard"
861
396
  },
862
- "attempt_id": {
863
- "type": "string",
864
- "default": ""
397
+ "requires_human": {
398
+ "type": "boolean",
399
+ "default": false
865
400
  },
866
- "produced_at": {
401
+ "updated_at": {
867
402
  "type": "string",
868
403
  "default": ""
869
404
  }
@@ -883,7 +418,12 @@
883
418
  "model_level": "deep",
884
419
  "effort": "high",
885
420
  "runner": "claude-code",
886
- "allowed_tools": ["Read", "Grep", "Glob", "Write"],
421
+ "allowed_tools": [
422
+ "Read",
423
+ "Grep",
424
+ "Glob",
425
+ "Write"
426
+ ],
887
427
  "scope_rules": "{}",
888
428
  "timeout_ms": 1200000,
889
429
  "permission_mode": "default",
@@ -896,11 +436,18 @@
896
436
  "data": {
897
437
  "id": "developer",
898
438
  "name": "developer",
899
- "system_prompt": "You are the Developer agent in an autonomous dev loop. Implement the plan from the provided context. Make the smallest correct change; write REAL behavior tests (never existence checks); NEVER use eslint-disable or NOSONAR — fix the code. Run the repo's gates (typecheck, lint:ci, test) and only finish when all pass. Do NOT change architecture or ADRs without explicit approval. Do NOT git commit, push, or create PRs — leave your changes UNCOMMITTED in the working tree; committing and opening the PR is the integrator's job (your Bash access is for running gates like npm typecheck/lint/test, NOT for git/gh). Before finishing, re-scan your own diff for the gate-blocking classes (unnecessary casts, unused imports, object stringification, multiple pushes, nested ternary) and apply lint fixes to ALL new code including any test helper you add. When your step kind is 'implement', your change MUST produce a NON-EMPTY diff — run `git status` / `git diff` and CONFIRM files actually changed before finishing; a 'succeeded' with no file change is a FAILURE, not success (gates passing on unchanged code proves nothing). If the work is ALREADY DONE (the feature/fix already exists in the code), do NOT silently succeed — set needsHuman true with output explaining it is already implemented, and nextSteps []. In your result: set output to what you implemented, the validation results, and confirmation the diff is non-empty; set nextSteps to exactly one reviewer step (role 'reviewer', kind 'review'). If blocked, set needsHuman true and nextSteps [].",
439
+ "system_prompt": "You are the Developer agent in an autonomous dev loop. Implement the plan from the provided context. Work only in the task working tree and leave final handoff to later roles. Make the smallest correct change; write REAL behavior tests (never existence checks); NEVER use eslint-disable or NOSONAR — fix the code. Run the repo's gates (typecheck, lint:ci, test) and only finish when all pass. Do NOT change architecture or ADRs without explicit approval. Your Bash access is for local inspection and validation commands such as npm typecheck/lint/test. Before finishing, re-scan your own diff for the gate-blocking classes (unnecessary casts, unused imports, object stringification, repeated mutations, nested ternary) and apply lint fixes to ALL new code including any test helper you add. When your step kind is 'implement', your change MUST produce a NON-EMPTY diff — run `git status` / `git diff` and CONFIRM files actually changed before finishing; a 'succeeded' with no file change is a FAILURE, not success (gates passing on unchanged code proves nothing). If the work is ALREADY DONE (the feature/fix already exists in the code), do NOT silently succeed — set needsHuman true with output explaining it is already implemented, and nextSteps []. In your result: set output to what you implemented, the validation results, and confirmation the diff is non-empty; set nextSteps to exactly one reviewer step (role 'reviewer', kind 'review'). If blocked, set needsHuman true and nextSteps [].",
900
440
  "model_level": "standard",
901
441
  "effort": "high",
902
442
  "runner": "claude-code",
903
- "allowed_tools": ["Read", "Edit", "Write", "Bash", "Grep", "Glob"],
443
+ "allowed_tools": [
444
+ "Read",
445
+ "Edit",
446
+ "Write",
447
+ "Bash",
448
+ "Grep",
449
+ "Glob"
450
+ ],
904
451
  "scope_rules": "{}",
905
452
  "timeout_ms": 900000,
906
453
  "permission_mode": "default",
@@ -917,7 +464,12 @@
917
464
  "model_level": "standard",
918
465
  "effort": "high",
919
466
  "runner": "claude-code",
920
- "allowed_tools": ["Read", "Grep", "Glob", "Bash"],
467
+ "allowed_tools": [
468
+ "Read",
469
+ "Grep",
470
+ "Glob",
471
+ "Bash"
472
+ ],
921
473
  "scope_rules": "{}",
922
474
  "timeout_ms": 600000,
923
475
  "permission_mode": "default",
@@ -934,7 +486,10 @@
934
486
  "model_level": "standard",
935
487
  "effort": "high",
936
488
  "runner": "script",
937
- "allowed_tools": ["Read", "Bash"],
489
+ "allowed_tools": [
490
+ "Read",
491
+ "Bash"
492
+ ],
938
493
  "scope_rules": "{}",
939
494
  "timeout_ms": 0,
940
495
  "permission_mode": "default",
@@ -968,7 +523,10 @@
968
523
  "model_level": "cheap",
969
524
  "effort": "low",
970
525
  "runner": "claude-code",
971
- "allowed_tools": ["Read", "Bash"],
526
+ "allowed_tools": [
527
+ "Read",
528
+ "Bash"
529
+ ],
972
530
  "scope_rules": "{}",
973
531
  "timeout_ms": 300000,
974
532
  "permission_mode": "default",
@@ -984,8 +542,8 @@
984
542
  "provider": "anthropic",
985
543
  "model_id": "claude-sonnet-4-6",
986
544
  "params": "{}",
987
- "cost_per_input": 3.0,
988
- "cost_per_output": 15.0,
545
+ "cost_per_input": 3,
546
+ "cost_per_output": 15,
989
547
  "updated_at": "2026-06-03T00:00:00.000Z"
990
548
  }
991
549
  },
@@ -999,7 +557,7 @@
999
557
  "model_id": "claude-haiku-4-5-20251001",
1000
558
  "params": "{}",
1001
559
  "cost_per_input": 0.8,
1002
- "cost_per_output": 4.0,
560
+ "cost_per_output": 4,
1003
561
  "updated_at": "2026-06-03T00:00:00.000Z"
1004
562
  }
1005
563
  },
@@ -1012,8 +570,8 @@
1012
570
  "provider": "anthropic",
1013
571
  "model_id": "claude-opus-4-8",
1014
572
  "params": "{}",
1015
- "cost_per_input": 15.0,
1016
- "cost_per_output": 75.0,
573
+ "cost_per_input": 15,
574
+ "cost_per_output": 75,
1017
575
  "updated_at": "2026-06-03T00:00:00.000Z"
1018
576
  }
1019
577
  },
@@ -1026,8 +584,8 @@
1026
584
  "provider": "openai",
1027
585
  "model_id": "gpt-5.5",
1028
586
  "params": "{}",
1029
- "cost_per_input": 2.0,
1030
- "cost_per_output": 8.0,
587
+ "cost_per_input": 2,
588
+ "cost_per_output": 8,
1031
589
  "updated_at": "2026-06-03T00:00:00.000Z"
1032
590
  }
1033
591
  },
@@ -1040,8 +598,8 @@
1040
598
  "provider": "openai",
1041
599
  "model_id": "gpt-5.5",
1042
600
  "params": "{}",
1043
- "cost_per_input": 2.0,
1044
- "cost_per_output": 8.0,
601
+ "cost_per_input": 2,
602
+ "cost_per_output": 8,
1045
603
  "updated_at": "2026-06-03T00:00:00.000Z"
1046
604
  }
1047
605
  },
@@ -1054,8 +612,8 @@
1054
612
  "provider": "openai",
1055
613
  "model_id": "gpt-5.5",
1056
614
  "params": "{}",
1057
- "cost_per_input": 2.0,
1058
- "cost_per_output": 8.0,
615
+ "cost_per_input": 2,
616
+ "cost_per_output": 8,
1059
617
  "updated_at": "2026-06-03T00:00:00.000Z"
1060
618
  }
1061
619
  },
@@ -1071,5 +629,5 @@
1071
629
  }
1072
630
  }
1073
631
  ],
1074
- "commitMessage": "Bootstrap control-plane schema and seed roles/model-profiles + pipeline policy (plan 0001+0007+0008)"
632
+ "commitMessage": "Bootstrap control-plane meaning schema and seed roles/model-profiles + pipeline policy"
1075
633
  }