@petepetrash/circuit 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1993) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +246 -0
  3. package/bin/circuit +44 -0
  4. package/bin/node-version-guard.d.ts +12 -0
  5. package/bin/node-version-guard.js +65 -0
  6. package/dist/app/checkpoints/discover.d.ts +63 -0
  7. package/dist/app/checkpoints/discover.d.ts.map +1 -0
  8. package/dist/app/checkpoints/discover.js +121 -0
  9. package/dist/app/checkpoints/discover.js.map +1 -0
  10. package/dist/app/checkpoints/render.d.ts +4 -0
  11. package/dist/app/checkpoints/render.d.ts.map +1 -0
  12. package/dist/app/checkpoints/render.js +68 -0
  13. package/dist/app/checkpoints/render.js.map +1 -0
  14. package/dist/app/continuity/brief.d.ts +140 -0
  15. package/dist/app/continuity/brief.d.ts.map +1 -0
  16. package/dist/app/continuity/brief.js +557 -0
  17. package/dist/app/continuity/brief.js.map +1 -0
  18. package/dist/app/continuity/harvest.d.ts +65 -0
  19. package/dist/app/continuity/harvest.d.ts.map +1 -0
  20. package/dist/app/continuity/harvest.js +658 -0
  21. package/dist/app/continuity/harvest.js.map +1 -0
  22. package/dist/app/continuity/records.d.ts +39 -0
  23. package/dist/app/continuity/records.d.ts.map +1 -0
  24. package/dist/app/continuity/records.js +210 -0
  25. package/dist/app/continuity/records.js.map +1 -0
  26. package/dist/app/history/extract.d.ts +8 -0
  27. package/dist/app/history/extract.d.ts.map +1 -0
  28. package/dist/app/history/extract.js +716 -0
  29. package/dist/app/history/extract.js.map +1 -0
  30. package/dist/app/history/indexer.d.ts +107 -0
  31. package/dist/app/history/indexer.d.ts.map +1 -0
  32. package/dist/app/history/indexer.js +234 -0
  33. package/dist/app/history/indexer.js.map +1 -0
  34. package/dist/app/history/memory-effect-read.d.ts +8 -0
  35. package/dist/app/history/memory-effect-read.d.ts.map +1 -0
  36. package/dist/app/history/memory-effect-read.js +40 -0
  37. package/dist/app/history/memory-effect-read.js.map +1 -0
  38. package/dist/app/history/memory-effect.d.ts +34 -0
  39. package/dist/app/history/memory-effect.d.ts.map +1 -0
  40. package/dist/app/history/memory-effect.js +234 -0
  41. package/dist/app/history/memory-effect.js.map +1 -0
  42. package/dist/app/history/memory-identity.d.ts +7 -0
  43. package/dist/app/history/memory-identity.d.ts.map +1 -0
  44. package/dist/app/history/memory-identity.js +39 -0
  45. package/dist/app/history/memory-identity.js.map +1 -0
  46. package/dist/app/history/memory-merge.d.ts +16 -0
  47. package/dist/app/history/memory-merge.d.ts.map +1 -0
  48. package/dist/app/history/memory-merge.js +224 -0
  49. package/dist/app/history/memory-merge.js.map +1 -0
  50. package/dist/app/history/memory-preview.d.ts +10 -0
  51. package/dist/app/history/memory-preview.d.ts.map +1 -0
  52. package/dist/app/history/memory-preview.js +103 -0
  53. package/dist/app/history/memory-preview.js.map +1 -0
  54. package/dist/app/history/pull-log.d.ts +13 -0
  55. package/dist/app/history/pull-log.d.ts.map +1 -0
  56. package/dist/app/history/pull-log.js +91 -0
  57. package/dist/app/history/pull-log.js.map +1 -0
  58. package/dist/app/history/pull-suppression.d.ts +12 -0
  59. package/dist/app/history/pull-suppression.d.ts.map +1 -0
  60. package/dist/app/history/pull-suppression.js +40 -0
  61. package/dist/app/history/pull-suppression.js.map +1 -0
  62. package/dist/app/history/query.d.ts +19 -0
  63. package/dist/app/history/query.d.ts.map +1 -0
  64. package/dist/app/history/query.js +342 -0
  65. package/dist/app/history/query.js.map +1 -0
  66. package/dist/app/history/recall-precision.d.ts +15 -0
  67. package/dist/app/history/recall-precision.d.ts.map +1 -0
  68. package/dist/app/history/recall-precision.js +116 -0
  69. package/dist/app/history/recall-precision.js.map +1 -0
  70. package/dist/app/history/run-source-files.d.ts +23 -0
  71. package/dist/app/history/run-source-files.d.ts.map +1 -0
  72. package/dist/app/history/run-source-files.js +82 -0
  73. package/dist/app/history/run-source-files.js.map +1 -0
  74. package/dist/app/history/run-start-recall.d.ts +18 -0
  75. package/dist/app/history/run-start-recall.d.ts.map +1 -0
  76. package/dist/app/history/run-start-recall.js +156 -0
  77. package/dist/app/history/run-start-recall.js.map +1 -0
  78. package/dist/app/inbox/discover.d.ts +63 -0
  79. package/dist/app/inbox/discover.d.ts.map +1 -0
  80. package/dist/app/inbox/discover.js +120 -0
  81. package/dist/app/inbox/discover.js.map +1 -0
  82. package/dist/app/inbox/render.d.ts +4 -0
  83. package/dist/app/inbox/render.d.ts.map +1 -0
  84. package/dist/app/inbox/render.js +66 -0
  85. package/dist/app/inbox/render.js.map +1 -0
  86. package/dist/app/operator-summary/writer.d.ts +41 -0
  87. package/dist/app/operator-summary/writer.d.ts.map +1 -0
  88. package/dist/app/operator-summary/writer.js +1667 -0
  89. package/dist/app/operator-summary/writer.js.map +1 -0
  90. package/dist/app/process-evidence/projection.d.ts +36 -0
  91. package/dist/app/process-evidence/projection.d.ts.map +1 -0
  92. package/dist/app/process-evidence/projection.js +137 -0
  93. package/dist/app/process-evidence/projection.js.map +1 -0
  94. package/dist/app/run-envelope/autonomous-run.d.ts +17 -0
  95. package/dist/app/run-envelope/autonomous-run.d.ts.map +1 -0
  96. package/dist/app/run-envelope/autonomous-run.js +59 -0
  97. package/dist/app/run-envelope/autonomous-run.js.map +1 -0
  98. package/dist/app/run-envelope/continuation-loop.d.ts +24 -0
  99. package/dist/app/run-envelope/continuation-loop.d.ts.map +1 -0
  100. package/dist/app/run-envelope/continuation-loop.js +72 -0
  101. package/dist/app/run-envelope/continuation-loop.js.map +1 -0
  102. package/dist/app/run-envelope/contract-lock.d.ts +15 -0
  103. package/dist/app/run-envelope/contract-lock.d.ts.map +1 -0
  104. package/dist/app/run-envelope/contract-lock.js +44 -0
  105. package/dist/app/run-envelope/contract-lock.js.map +1 -0
  106. package/dist/app/run-envelope/contract-quality.d.ts +15 -0
  107. package/dist/app/run-envelope/contract-quality.d.ts.map +1 -0
  108. package/dist/app/run-envelope/contract-quality.js +48 -0
  109. package/dist/app/run-envelope/contract-quality.js.map +1 -0
  110. package/dist/app/run-envelope/no-progress.d.ts +11 -0
  111. package/dist/app/run-envelope/no-progress.d.ts.map +1 -0
  112. package/dist/app/run-envelope/no-progress.js +40 -0
  113. package/dist/app/run-envelope/no-progress.js.map +1 -0
  114. package/dist/app/run-envelope/shadow-record.d.ts +40 -0
  115. package/dist/app/run-envelope/shadow-record.d.ts.map +1 -0
  116. package/dist/app/run-envelope/shadow-record.js +108 -0
  117. package/dist/app/run-envelope/shadow-record.js.map +1 -0
  118. package/dist/app/run-envelope/source-record.d.ts +62 -0
  119. package/dist/app/run-envelope/source-record.d.ts.map +1 -0
  120. package/dist/app/run-envelope/source-record.js +648 -0
  121. package/dist/app/run-envelope/source-record.js.map +1 -0
  122. package/dist/app/run-status/projection-common.d.ts +57 -0
  123. package/dist/app/run-status/projection-common.d.ts.map +1 -0
  124. package/dist/app/run-status/projection-common.js +90 -0
  125. package/dist/app/run-status/projection-common.js.map +1 -0
  126. package/dist/app/run-status/run-folder-projector.d.ts +9 -0
  127. package/dist/app/run-status/run-folder-projector.d.ts.map +1 -0
  128. package/dist/app/run-status/run-folder-projector.js +68 -0
  129. package/dist/app/run-status/run-folder-projector.js.map +1 -0
  130. package/dist/app/run-status/runtime-run-folder.d.ts +4 -0
  131. package/dist/app/run-status/runtime-run-folder.d.ts.map +1 -0
  132. package/dist/app/run-status/runtime-run-folder.js +461 -0
  133. package/dist/app/run-status/runtime-run-folder.js.map +1 -0
  134. package/dist/cli/checkpoints.d.ts +7 -0
  135. package/dist/cli/checkpoints.d.ts.map +1 -0
  136. package/dist/cli/checkpoints.js +60 -0
  137. package/dist/cli/checkpoints.js.map +1 -0
  138. package/dist/cli/chosen-connectors.d.ts +14 -0
  139. package/dist/cli/chosen-connectors.d.ts.map +1 -0
  140. package/dist/cli/chosen-connectors.js +85 -0
  141. package/dist/cli/chosen-connectors.js.map +1 -0
  142. package/dist/cli/circuit.d.ts +9 -0
  143. package/dist/cli/circuit.d.ts.map +1 -0
  144. package/dist/cli/circuit.js +218 -0
  145. package/dist/cli/circuit.js.map +1 -0
  146. package/dist/cli/command-vocabulary.d.ts +3 -0
  147. package/dist/cli/command-vocabulary.d.ts.map +1 -0
  148. package/dist/cli/command-vocabulary.js +26 -0
  149. package/dist/cli/command-vocabulary.js.map +1 -0
  150. package/dist/cli/commander-support.d.ts +6 -0
  151. package/dist/cli/commander-support.d.ts.map +1 -0
  152. package/dist/cli/commander-support.js +61 -0
  153. package/dist/cli/commander-support.js.map +1 -0
  154. package/dist/cli/compiled-flow-loading.d.ts +21 -0
  155. package/dist/cli/compiled-flow-loading.d.ts.map +1 -0
  156. package/dist/cli/compiled-flow-loading.js +84 -0
  157. package/dist/cli/compiled-flow-loading.js.map +1 -0
  158. package/dist/cli/config-command.d.ts +33 -0
  159. package/dist/cli/config-command.d.ts.map +1 -0
  160. package/dist/cli/config-command.js +367 -0
  161. package/dist/cli/config-command.js.map +1 -0
  162. package/dist/cli/create.d.ts +12 -0
  163. package/dist/cli/create.d.ts.map +1 -0
  164. package/dist/cli/create.js +229 -0
  165. package/dist/cli/create.js.map +1 -0
  166. package/dist/cli/custom-flow-package.d.ts +62 -0
  167. package/dist/cli/custom-flow-package.d.ts.map +1 -0
  168. package/dist/cli/custom-flow-package.js +294 -0
  169. package/dist/cli/custom-flow-package.js.map +1 -0
  170. package/dist/cli/doctor.d.ts +9 -0
  171. package/dist/cli/doctor.d.ts.map +1 -0
  172. package/dist/cli/doctor.js +147 -0
  173. package/dist/cli/doctor.js.map +1 -0
  174. package/dist/cli/flow-selection-preview.d.ts +784 -0
  175. package/dist/cli/flow-selection-preview.d.ts.map +1 -0
  176. package/dist/cli/flow-selection-preview.js +248 -0
  177. package/dist/cli/flow-selection-preview.js.map +1 -0
  178. package/dist/cli/front-door.d.ts +3 -0
  179. package/dist/cli/front-door.d.ts.map +1 -0
  180. package/dist/cli/front-door.js +41 -0
  181. package/dist/cli/front-door.js.map +1 -0
  182. package/dist/cli/generate.d.ts +8 -0
  183. package/dist/cli/generate.d.ts.map +1 -0
  184. package/dist/cli/generate.js +346 -0
  185. package/dist/cli/generate.js.map +1 -0
  186. package/dist/cli/handoff-codex-hooks.d.ts +25 -0
  187. package/dist/cli/handoff-codex-hooks.d.ts.map +1 -0
  188. package/dist/cli/handoff-codex-hooks.js +555 -0
  189. package/dist/cli/handoff-codex-hooks.js.map +1 -0
  190. package/dist/cli/handoff.d.ts +8 -0
  191. package/dist/cli/handoff.d.ts.map +1 -0
  192. package/dist/cli/handoff.js +634 -0
  193. package/dist/cli/handoff.js.map +1 -0
  194. package/dist/cli/help.d.ts +15 -0
  195. package/dist/cli/help.d.ts.map +1 -0
  196. package/dist/cli/help.js +312 -0
  197. package/dist/cli/help.js.map +1 -0
  198. package/dist/cli/history.d.ts +2 -0
  199. package/dist/cli/history.d.ts.map +1 -0
  200. package/dist/cli/history.js +384 -0
  201. package/dist/cli/history.js.map +1 -0
  202. package/dist/cli/inbox.d.ts +7 -0
  203. package/dist/cli/inbox.d.ts.map +1 -0
  204. package/dist/cli/inbox.js +58 -0
  205. package/dist/cli/inbox.js.map +1 -0
  206. package/dist/cli/interactive/app.d.ts +11 -0
  207. package/dist/cli/interactive/app.d.ts.map +1 -0
  208. package/dist/cli/interactive/app.js +220 -0
  209. package/dist/cli/interactive/app.js.map +1 -0
  210. package/dist/cli/interactive/index.d.ts +2 -0
  211. package/dist/cli/interactive/index.d.ts.map +1 -0
  212. package/dist/cli/interactive/index.js +51 -0
  213. package/dist/cli/interactive/index.js.map +1 -0
  214. package/dist/cli/interactive/state.d.ts +122 -0
  215. package/dist/cli/interactive/state.d.ts.map +1 -0
  216. package/dist/cli/interactive/state.js +413 -0
  217. package/dist/cli/interactive/state.js.map +1 -0
  218. package/dist/cli/memory.d.ts +5 -0
  219. package/dist/cli/memory.d.ts.map +1 -0
  220. package/dist/cli/memory.js +327 -0
  221. package/dist/cli/memory.js.map +1 -0
  222. package/dist/cli/post-run-artifacts.d.ts +45 -0
  223. package/dist/cli/post-run-artifacts.d.ts.map +1 -0
  224. package/dist/cli/post-run-artifacts.js +100 -0
  225. package/dist/cli/post-run-artifacts.js.map +1 -0
  226. package/dist/cli/preview.d.ts +9 -0
  227. package/dist/cli/preview.d.ts.map +1 -0
  228. package/dist/cli/preview.js +326 -0
  229. package/dist/cli/preview.js.map +1 -0
  230. package/dist/cli/reclaim.d.ts +2 -0
  231. package/dist/cli/reclaim.d.ts.map +1 -0
  232. package/dist/cli/reclaim.js +67 -0
  233. package/dist/cli/reclaim.js.map +1 -0
  234. package/dist/cli/recovery-attempt-runner.d.ts +25 -0
  235. package/dist/cli/recovery-attempt-runner.d.ts.map +1 -0
  236. package/dist/cli/recovery-attempt-runner.js +98 -0
  237. package/dist/cli/recovery-attempt-runner.js.map +1 -0
  238. package/dist/cli/resume-input.d.ts +27 -0
  239. package/dist/cli/resume-input.d.ts.map +1 -0
  240. package/dist/cli/resume-input.js +58 -0
  241. package/dist/cli/resume-input.js.map +1 -0
  242. package/dist/cli/routed-connectors.d.ts +14 -0
  243. package/dist/cli/routed-connectors.d.ts.map +1 -0
  244. package/dist/cli/routed-connectors.js +85 -0
  245. package/dist/cli/routed-connectors.js.map +1 -0
  246. package/dist/cli/run-flag-vocabulary.d.ts +14 -0
  247. package/dist/cli/run-flag-vocabulary.d.ts.map +1 -0
  248. package/dist/cli/run-flag-vocabulary.js +38 -0
  249. package/dist/cli/run-flag-vocabulary.js.map +1 -0
  250. package/dist/cli/run-output.d.ts +32 -0
  251. package/dist/cli/run-output.d.ts.map +1 -0
  252. package/dist/cli/run-output.js +47 -0
  253. package/dist/cli/run-output.js.map +1 -0
  254. package/dist/cli/run-stdout-envelope.d.ts +47 -0
  255. package/dist/cli/run-stdout-envelope.d.ts.map +1 -0
  256. package/dist/cli/run-stdout-envelope.js +98 -0
  257. package/dist/cli/run-stdout-envelope.js.map +1 -0
  258. package/dist/cli/run.d.ts +59 -0
  259. package/dist/cli/run.d.ts.map +1 -0
  260. package/dist/cli/run.js +1182 -0
  261. package/dist/cli/run.js.map +1 -0
  262. package/dist/cli/runs.d.ts +2 -0
  263. package/dist/cli/runs.d.ts.map +1 -0
  264. package/dist/cli/runs.js +88 -0
  265. package/dist/cli/runs.js.map +1 -0
  266. package/dist/cli/runtime-routing-policy.d.ts +51 -0
  267. package/dist/cli/runtime-routing-policy.d.ts.map +1 -0
  268. package/dist/cli/runtime-routing-policy.js +143 -0
  269. package/dist/cli/runtime-routing-policy.js.map +1 -0
  270. package/dist/cli/styled-table.d.ts +11 -0
  271. package/dist/cli/styled-table.d.ts.map +1 -0
  272. package/dist/cli/styled-table.js +40 -0
  273. package/dist/cli/styled-table.js.map +1 -0
  274. package/dist/cli/terminal-style.d.ts +26 -0
  275. package/dist/cli/terminal-style.d.ts.map +1 -0
  276. package/dist/cli/terminal-style.js +75 -0
  277. package/dist/cli/terminal-style.js.map +1 -0
  278. package/dist/cli/tty-notice.d.ts +21 -0
  279. package/dist/cli/tty-notice.d.ts.map +1 -0
  280. package/dist/cli/tty-notice.js +35 -0
  281. package/dist/cli/tty-notice.js.map +1 -0
  282. package/dist/cli/uninstall.d.ts +22 -0
  283. package/dist/cli/uninstall.d.ts.map +1 -0
  284. package/dist/cli/uninstall.js +277 -0
  285. package/dist/cli/uninstall.js.map +1 -0
  286. package/dist/cli/utility-progress.d.ts +14 -0
  287. package/dist/cli/utility-progress.d.ts.map +1 -0
  288. package/dist/cli/utility-progress.js +23 -0
  289. package/dist/cli/utility-progress.js.map +1 -0
  290. package/dist/cli/version-info.d.ts +2 -0
  291. package/dist/cli/version-info.d.ts.map +1 -0
  292. package/dist/cli/version-info.js +32 -0
  293. package/dist/cli/version-info.js.map +1 -0
  294. package/dist/connectors/claude-code.d.ts +16 -0
  295. package/dist/connectors/claude-code.d.ts.map +1 -0
  296. package/dist/connectors/claude-code.js +492 -0
  297. package/dist/connectors/claude-code.js.map +1 -0
  298. package/dist/connectors/codex-default-model.d.ts +10 -0
  299. package/dist/connectors/codex-default-model.d.ts.map +1 -0
  300. package/dist/connectors/codex-default-model.js +142 -0
  301. package/dist/connectors/codex-default-model.js.map +1 -0
  302. package/dist/connectors/codex.d.ts +21 -0
  303. package/dist/connectors/codex.d.ts.map +1 -0
  304. package/dist/connectors/codex.js +709 -0
  305. package/dist/connectors/codex.js.map +1 -0
  306. package/dist/connectors/connector.d.ts +7 -0
  307. package/dist/connectors/connector.d.ts.map +1 -0
  308. package/dist/connectors/connector.js +2 -0
  309. package/dist/connectors/connector.js.map +1 -0
  310. package/dist/connectors/cursor-agent.d.ts +10 -0
  311. package/dist/connectors/cursor-agent.d.ts.map +1 -0
  312. package/dist/connectors/cursor-agent.js +156 -0
  313. package/dist/connectors/cursor-agent.js.map +1 -0
  314. package/dist/connectors/custom.d.ts +7 -0
  315. package/dist/connectors/custom.d.ts.map +1 -0
  316. package/dist/connectors/custom.js +135 -0
  317. package/dist/connectors/custom.js.map +1 -0
  318. package/dist/connectors/health.d.ts +35 -0
  319. package/dist/connectors/health.d.ts.map +1 -0
  320. package/dist/connectors/health.js +169 -0
  321. package/dist/connectors/health.js.map +1 -0
  322. package/dist/connectors/remediation.d.ts +3 -0
  323. package/dist/connectors/remediation.d.ts.map +1 -0
  324. package/dist/connectors/remediation.js +16 -0
  325. package/dist/connectors/remediation.js.map +1 -0
  326. package/dist/connectors/resolver.d.ts +44 -0
  327. package/dist/connectors/resolver.d.ts.map +1 -0
  328. package/dist/connectors/resolver.js +204 -0
  329. package/dist/connectors/resolver.js.map +1 -0
  330. package/dist/connectors/subprocess.d.ts +59 -0
  331. package/dist/connectors/subprocess.d.ts.map +1 -0
  332. package/dist/connectors/subprocess.js +375 -0
  333. package/dist/connectors/subprocess.js.map +1 -0
  334. package/dist/flows/accommodation-ledger.d.ts +49 -0
  335. package/dist/flows/accommodation-ledger.d.ts.map +1 -0
  336. package/dist/flows/accommodation-ledger.js +277 -0
  337. package/dist/flows/accommodation-ledger.js.map +1 -0
  338. package/dist/flows/assemble-flow-schematic.d.ts +30 -0
  339. package/dist/flows/assemble-flow-schematic.d.ts.map +1 -0
  340. package/dist/flows/assemble-flow-schematic.js +58 -0
  341. package/dist/flows/assemble-flow-schematic.js.map +1 -0
  342. package/dist/flows/axis-selections.d.ts +4 -0
  343. package/dist/flows/axis-selections.d.ts.map +1 -0
  344. package/dist/flows/axis-selections.js +34 -0
  345. package/dist/flows/axis-selections.js.map +1 -0
  346. package/dist/flows/block-step-expansion.d.ts +69 -0
  347. package/dist/flows/block-step-expansion.d.ts.map +1 -0
  348. package/dist/flows/block-step-expansion.js +219 -0
  349. package/dist/flows/block-step-expansion.js.map +1 -0
  350. package/dist/flows/build/assembly-spec.d.ts +5 -0
  351. package/dist/flows/build/assembly-spec.d.ts.map +1 -0
  352. package/dist/flows/build/assembly-spec.js +287 -0
  353. package/dist/flows/build/assembly-spec.js.map +1 -0
  354. package/dist/flows/build/data.d.ts +848 -0
  355. package/dist/flows/build/data.d.ts.map +1 -0
  356. package/dist/flows/build/data.js +163 -0
  357. package/dist/flows/build/data.js.map +1 -0
  358. package/dist/flows/build/flow.d.ts +2 -0
  359. package/dist/flows/build/flow.d.ts.map +1 -0
  360. package/dist/flows/build/flow.js +4 -0
  361. package/dist/flows/build/flow.js.map +1 -0
  362. package/dist/flows/build/index.d.ts +4 -0
  363. package/dist/flows/build/index.d.ts.map +1 -0
  364. package/dist/flows/build/index.js +8 -0
  365. package/dist/flows/build/index.js.map +1 -0
  366. package/dist/flows/build/relay-hints.d.ts +5 -0
  367. package/dist/flows/build/relay-hints.d.ts.map +1 -0
  368. package/dist/flows/build/relay-hints.js +51 -0
  369. package/dist/flows/build/relay-hints.js.map +1 -0
  370. package/dist/flows/build/reports.d.ts +577 -0
  371. package/dist/flows/build/reports.d.ts.map +1 -0
  372. package/dist/flows/build/reports.js +698 -0
  373. package/dist/flows/build/reports.js.map +1 -0
  374. package/dist/flows/build/writers/baseline-snapshot.d.ts +4 -0
  375. package/dist/flows/build/writers/baseline-snapshot.d.ts.map +1 -0
  376. package/dist/flows/build/writers/baseline-snapshot.js +76 -0
  377. package/dist/flows/build/writers/baseline-snapshot.js.map +1 -0
  378. package/dist/flows/build/writers/checkpoint-brief-projection.d.ts +29 -0
  379. package/dist/flows/build/writers/checkpoint-brief-projection.d.ts.map +1 -0
  380. package/dist/flows/build/writers/checkpoint-brief-projection.js +145 -0
  381. package/dist/flows/build/writers/checkpoint-brief-projection.js.map +1 -0
  382. package/dist/flows/build/writers/checkpoint-brief.d.ts +3 -0
  383. package/dist/flows/build/writers/checkpoint-brief.d.ts.map +1 -0
  384. package/dist/flows/build/writers/checkpoint-brief.js +55 -0
  385. package/dist/flows/build/writers/checkpoint-brief.js.map +1 -0
  386. package/dist/flows/build/writers/checkpoint-html.d.ts +3 -0
  387. package/dist/flows/build/writers/checkpoint-html.d.ts.map +1 -0
  388. package/dist/flows/build/writers/checkpoint-html.js +106 -0
  389. package/dist/flows/build/writers/checkpoint-html.js.map +1 -0
  390. package/dist/flows/build/writers/close.d.ts +3 -0
  391. package/dist/flows/build/writers/close.d.ts.map +1 -0
  392. package/dist/flows/build/writers/close.js +72 -0
  393. package/dist/flows/build/writers/close.js.map +1 -0
  394. package/dist/flows/build/writers/plan.d.ts +3 -0
  395. package/dist/flows/build/writers/plan.d.ts.map +1 -0
  396. package/dist/flows/build/writers/plan.js +74 -0
  397. package/dist/flows/build/writers/plan.js.map +1 -0
  398. package/dist/flows/build/writers/result-projection.d.ts +13 -0
  399. package/dist/flows/build/writers/result-projection.d.ts.map +1 -0
  400. package/dist/flows/build/writers/result-projection.js +105 -0
  401. package/dist/flows/build/writers/result-projection.js.map +1 -0
  402. package/dist/flows/build/writers/touch-area-projection.d.ts +9 -0
  403. package/dist/flows/build/writers/touch-area-projection.d.ts.map +1 -0
  404. package/dist/flows/build/writers/touch-area-projection.js +120 -0
  405. package/dist/flows/build/writers/touch-area-projection.js.map +1 -0
  406. package/dist/flows/build/writers/touch-area.d.ts +3 -0
  407. package/dist/flows/build/writers/touch-area.d.ts.map +1 -0
  408. package/dist/flows/build/writers/touch-area.js +130 -0
  409. package/dist/flows/build/writers/touch-area.js.map +1 -0
  410. package/dist/flows/build/writers/verification-projection.d.ts +4 -0
  411. package/dist/flows/build/writers/verification-projection.d.ts.map +1 -0
  412. package/dist/flows/build/writers/verification-projection.js +21 -0
  413. package/dist/flows/build/writers/verification-projection.js.map +1 -0
  414. package/dist/flows/build/writers/verification.d.ts +3 -0
  415. package/dist/flows/build/writers/verification.d.ts.map +1 -0
  416. package/dist/flows/build/writers/verification.js +31 -0
  417. package/dist/flows/build/writers/verification.js.map +1 -0
  418. package/dist/flows/canonical-stage-policy.d.ts +14 -0
  419. package/dist/flows/canonical-stage-policy.d.ts.map +1 -0
  420. package/dist/flows/canonical-stage-policy.js +31 -0
  421. package/dist/flows/canonical-stage-policy.js.map +1 -0
  422. package/dist/flows/catalog-derivations.d.ts +34 -0
  423. package/dist/flows/catalog-derivations.d.ts.map +1 -0
  424. package/dist/flows/catalog-derivations.js +144 -0
  425. package/dist/flows/catalog-derivations.js.map +1 -0
  426. package/dist/flows/catalog.d.ts +16 -0
  427. package/dist/flows/catalog.d.ts.map +1 -0
  428. package/dist/flows/catalog.js +87 -0
  429. package/dist/flows/catalog.js.map +1 -0
  430. package/dist/flows/compile-schematic-to-flow.d.ts +16 -0
  431. package/dist/flows/compile-schematic-to-flow.d.ts.map +1 -0
  432. package/dist/flows/compile-schematic-to-flow.js +651 -0
  433. package/dist/flows/compile-schematic-to-flow.js.map +1 -0
  434. package/dist/flows/compiled-flow-file-plan.d.ts +8 -0
  435. package/dist/flows/compiled-flow-file-plan.d.ts.map +1 -0
  436. package/dist/flows/compiled-flow-file-plan.js +50 -0
  437. package/dist/flows/compiled-flow-file-plan.js.map +1 -0
  438. package/dist/flows/composition/actual-menu.d.ts +30 -0
  439. package/dist/flows/composition/actual-menu.d.ts.map +1 -0
  440. package/dist/flows/composition/actual-menu.js +131 -0
  441. package/dist/flows/composition/actual-menu.js.map +1 -0
  442. package/dist/flows/composition/composer.d.ts +73 -0
  443. package/dist/flows/composition/composer.d.ts.map +1 -0
  444. package/dist/flows/composition/composer.js +1339 -0
  445. package/dist/flows/composition/composer.js.map +1 -0
  446. package/dist/flows/composition/equipment-profiles.d.ts +21 -0
  447. package/dist/flows/composition/equipment-profiles.d.ts.map +1 -0
  448. package/dist/flows/composition/equipment-profiles.js +82 -0
  449. package/dist/flows/composition/equipment-profiles.js.map +1 -0
  450. package/dist/flows/composition/evaluate.d.ts +76 -0
  451. package/dist/flows/composition/evaluate.d.ts.map +1 -0
  452. package/dist/flows/composition/evaluate.js +373 -0
  453. package/dist/flows/composition/evaluate.js.map +1 -0
  454. package/dist/flows/composition/index.d.ts +8 -0
  455. package/dist/flows/composition/index.d.ts.map +1 -0
  456. package/dist/flows/composition/index.js +16 -0
  457. package/dist/flows/composition/index.js.map +1 -0
  458. package/dist/flows/composition/intent.d.ts +10 -0
  459. package/dist/flows/composition/intent.d.ts.map +1 -0
  460. package/dist/flows/composition/intent.js +125 -0
  461. package/dist/flows/composition/intent.js.map +1 -0
  462. package/dist/flows/composition/propose-prompts.d.ts +3 -0
  463. package/dist/flows/composition/propose-prompts.d.ts.map +1 -0
  464. package/dist/flows/composition/propose-prompts.js +196 -0
  465. package/dist/flows/composition/propose-prompts.js.map +1 -0
  466. package/dist/flows/composition/propose.d.ts +36 -0
  467. package/dist/flows/composition/propose.d.ts.map +1 -0
  468. package/dist/flows/composition/propose.js +275 -0
  469. package/dist/flows/composition/propose.js.map +1 -0
  470. package/dist/flows/contract-body-signature.d.ts +4 -0
  471. package/dist/flows/contract-body-signature.d.ts.map +1 -0
  472. package/dist/flows/contract-body-signature.js +166 -0
  473. package/dist/flows/contract-body-signature.js.map +1 -0
  474. package/dist/flows/converge-proof/assembly-spec.d.ts +5 -0
  475. package/dist/flows/converge-proof/assembly-spec.d.ts.map +1 -0
  476. package/dist/flows/converge-proof/assembly-spec.js +115 -0
  477. package/dist/flows/converge-proof/assembly-spec.js.map +1 -0
  478. package/dist/flows/converge-proof/data.d.ts +412 -0
  479. package/dist/flows/converge-proof/data.d.ts.map +1 -0
  480. package/dist/flows/converge-proof/data.js +23 -0
  481. package/dist/flows/converge-proof/data.js.map +1 -0
  482. package/dist/flows/converge-proof/flow.d.ts +2 -0
  483. package/dist/flows/converge-proof/flow.d.ts.map +1 -0
  484. package/dist/flows/converge-proof/flow.js +4 -0
  485. package/dist/flows/converge-proof/flow.js.map +1 -0
  486. package/dist/flows/cross-tool-build/assembly-spec.d.ts +5 -0
  487. package/dist/flows/cross-tool-build/assembly-spec.d.ts.map +1 -0
  488. package/dist/flows/cross-tool-build/assembly-spec.js +183 -0
  489. package/dist/flows/cross-tool-build/assembly-spec.js.map +1 -0
  490. package/dist/flows/cross-tool-build/data.d.ts +570 -0
  491. package/dist/flows/cross-tool-build/data.d.ts.map +1 -0
  492. package/dist/flows/cross-tool-build/data.js +94 -0
  493. package/dist/flows/cross-tool-build/data.js.map +1 -0
  494. package/dist/flows/cross-tool-build/flow.d.ts +2 -0
  495. package/dist/flows/cross-tool-build/flow.d.ts.map +1 -0
  496. package/dist/flows/cross-tool-build/flow.js +4 -0
  497. package/dist/flows/cross-tool-build/flow.js.map +1 -0
  498. package/dist/flows/cross-tool-build/relay-hints.d.ts +7 -0
  499. package/dist/flows/cross-tool-build/relay-hints.d.ts.map +1 -0
  500. package/dist/flows/cross-tool-build/relay-hints.js +76 -0
  501. package/dist/flows/cross-tool-build/relay-hints.js.map +1 -0
  502. package/dist/flows/cross-tool-build/reports.d.ts +161 -0
  503. package/dist/flows/cross-tool-build/reports.d.ts.map +1 -0
  504. package/dist/flows/cross-tool-build/reports.js +196 -0
  505. package/dist/flows/cross-tool-build/reports.js.map +1 -0
  506. package/dist/flows/cross-tool-build/writers/close.d.ts +3 -0
  507. package/dist/flows/cross-tool-build/writers/close.d.ts.map +1 -0
  508. package/dist/flows/cross-tool-build/writers/close.js +49 -0
  509. package/dist/flows/cross-tool-build/writers/close.js.map +1 -0
  510. package/dist/flows/cross-tool-build/writers/plan.d.ts +3 -0
  511. package/dist/flows/cross-tool-build/writers/plan.d.ts.map +1 -0
  512. package/dist/flows/cross-tool-build/writers/plan.js +27 -0
  513. package/dist/flows/cross-tool-build/writers/plan.js.map +1 -0
  514. package/dist/flows/cross-tool-build/writers/verification.d.ts +3 -0
  515. package/dist/flows/cross-tool-build/writers/verification.d.ts.map +1 -0
  516. package/dist/flows/cross-tool-build/writers/verification.js +46 -0
  517. package/dist/flows/cross-tool-build/writers/verification.js.map +1 -0
  518. package/dist/flows/equipment-reshape.d.ts +18 -0
  519. package/dist/flows/equipment-reshape.d.ts.map +1 -0
  520. package/dist/flows/equipment-reshape.js +119 -0
  521. package/dist/flows/equipment-reshape.js.map +1 -0
  522. package/dist/flows/explainer/data.d.ts +1032 -0
  523. package/dist/flows/explainer/data.d.ts.map +1 -0
  524. package/dist/flows/explainer/data.js +712 -0
  525. package/dist/flows/explainer/data.js.map +1 -0
  526. package/dist/flows/explainer/flow.d.ts +2 -0
  527. package/dist/flows/explainer/flow.d.ts.map +1 -0
  528. package/dist/flows/explainer/flow.js +4 -0
  529. package/dist/flows/explainer/flow.js.map +1 -0
  530. package/dist/flows/explainer/relay-hints.d.ts +4 -0
  531. package/dist/flows/explainer/relay-hints.d.ts.map +1 -0
  532. package/dist/flows/explainer/relay-hints.js +28 -0
  533. package/dist/flows/explainer/relay-hints.js.map +1 -0
  534. package/dist/flows/explainer/reports.d.ts +394 -0
  535. package/dist/flows/explainer/reports.d.ts.map +1 -0
  536. package/dist/flows/explainer/reports.js +296 -0
  537. package/dist/flows/explainer/reports.js.map +1 -0
  538. package/dist/flows/explainer/writers/close.d.ts +3 -0
  539. package/dist/flows/explainer/writers/close.d.ts.map +1 -0
  540. package/dist/flows/explainer/writers/close.js +67 -0
  541. package/dist/flows/explainer/writers/close.js.map +1 -0
  542. package/dist/flows/explainer/writers/digest.d.ts +3 -0
  543. package/dist/flows/explainer/writers/digest.d.ts.map +1 -0
  544. package/dist/flows/explainer/writers/digest.js +47 -0
  545. package/dist/flows/explainer/writers/digest.js.map +1 -0
  546. package/dist/flows/explainer/writers/ideas.d.ts +3 -0
  547. package/dist/flows/explainer/writers/ideas.d.ts.map +1 -0
  548. package/dist/flows/explainer/writers/ideas.js +65 -0
  549. package/dist/flows/explainer/writers/ideas.js.map +1 -0
  550. package/dist/flows/explainer/writers/intake.d.ts +3 -0
  551. package/dist/flows/explainer/writers/intake.d.ts.map +1 -0
  552. package/dist/flows/explainer/writers/intake.js +33 -0
  553. package/dist/flows/explainer/writers/intake.js.map +1 -0
  554. package/dist/flows/explainer/writers/spec.d.ts +3 -0
  555. package/dist/flows/explainer/writers/spec.d.ts.map +1 -0
  556. package/dist/flows/explainer/writers/spec.js +77 -0
  557. package/dist/flows/explainer/writers/spec.js.map +1 -0
  558. package/dist/flows/explainer/writers/verification.d.ts +3 -0
  559. package/dist/flows/explainer/writers/verification.d.ts.map +1 -0
  560. package/dist/flows/explainer/writers/verification.js +43 -0
  561. package/dist/flows/explainer/writers/verification.js.map +1 -0
  562. package/dist/flows/explore/assembly-spec.d.ts +5 -0
  563. package/dist/flows/explore/assembly-spec.d.ts.map +1 -0
  564. package/dist/flows/explore/assembly-spec.js +344 -0
  565. package/dist/flows/explore/assembly-spec.js.map +1 -0
  566. package/dist/flows/explore/data.d.ts +734 -0
  567. package/dist/flows/explore/data.d.ts.map +1 -0
  568. package/dist/flows/explore/data.js +174 -0
  569. package/dist/flows/explore/data.js.map +1 -0
  570. package/dist/flows/explore/flow.d.ts +2 -0
  571. package/dist/flows/explore/flow.d.ts.map +1 -0
  572. package/dist/flows/explore/flow.js +4 -0
  573. package/dist/flows/explore/flow.js.map +1 -0
  574. package/dist/flows/explore/index.d.ts +4 -0
  575. package/dist/flows/explore/index.d.ts.map +1 -0
  576. package/dist/flows/explore/index.js +8 -0
  577. package/dist/flows/explore/index.js.map +1 -0
  578. package/dist/flows/explore/relay-hints.d.ts +6 -0
  579. package/dist/flows/explore/relay-hints.d.ts.map +1 -0
  580. package/dist/flows/explore/relay-hints.js +53 -0
  581. package/dist/flows/explore/relay-hints.js.map +1 -0
  582. package/dist/flows/explore/reports.d.ts +483 -0
  583. package/dist/flows/explore/reports.d.ts.map +1 -0
  584. package/dist/flows/explore/reports.js +359 -0
  585. package/dist/flows/explore/reports.js.map +1 -0
  586. package/dist/flows/explore/writers/analysis.d.ts +3 -0
  587. package/dist/flows/explore/writers/analysis.d.ts.map +1 -0
  588. package/dist/flows/explore/writers/analysis.js +55 -0
  589. package/dist/flows/explore/writers/analysis.js.map +1 -0
  590. package/dist/flows/explore/writers/brief.d.ts +3 -0
  591. package/dist/flows/explore/writers/brief.d.ts.map +1 -0
  592. package/dist/flows/explore/writers/brief.js +24 -0
  593. package/dist/flows/explore/writers/brief.js.map +1 -0
  594. package/dist/flows/explore/writers/close.d.ts +3 -0
  595. package/dist/flows/explore/writers/close.d.ts.map +1 -0
  596. package/dist/flows/explore/writers/close.js +86 -0
  597. package/dist/flows/explore/writers/close.js.map +1 -0
  598. package/dist/flows/explore/writers/decision-options-projection.d.ts +10 -0
  599. package/dist/flows/explore/writers/decision-options-projection.d.ts.map +1 -0
  600. package/dist/flows/explore/writers/decision-options-projection.js +108 -0
  601. package/dist/flows/explore/writers/decision-options-projection.js.map +1 -0
  602. package/dist/flows/explore/writers/decision-options.d.ts +3 -0
  603. package/dist/flows/explore/writers/decision-options.d.ts.map +1 -0
  604. package/dist/flows/explore/writers/decision-options.js +25 -0
  605. package/dist/flows/explore/writers/decision-options.js.map +1 -0
  606. package/dist/flows/explore/writers/decision.d.ts +3 -0
  607. package/dist/flows/explore/writers/decision.d.ts.map +1 -0
  608. package/dist/flows/explore/writers/decision.js +80 -0
  609. package/dist/flows/explore/writers/decision.js.map +1 -0
  610. package/dist/flows/explore/writers/result-projection.d.ts +17 -0
  611. package/dist/flows/explore/writers/result-projection.d.ts.map +1 -0
  612. package/dist/flows/explore/writers/result-projection.js +41 -0
  613. package/dist/flows/explore/writers/result-projection.js.map +1 -0
  614. package/dist/flows/explore/writers/tournament-html.d.ts +3 -0
  615. package/dist/flows/explore/writers/tournament-html.d.ts.map +1 -0
  616. package/dist/flows/explore/writers/tournament-html.js +119 -0
  617. package/dist/flows/explore/writers/tournament-html.js.map +1 -0
  618. package/dist/flows/fix/assembly-spec.d.ts +5 -0
  619. package/dist/flows/fix/assembly-spec.d.ts.map +1 -0
  620. package/dist/flows/fix/assembly-spec.js +405 -0
  621. package/dist/flows/fix/assembly-spec.js.map +1 -0
  622. package/dist/flows/fix/data.d.ts +921 -0
  623. package/dist/flows/fix/data.d.ts.map +1 -0
  624. package/dist/flows/fix/data.js +207 -0
  625. package/dist/flows/fix/data.js.map +1 -0
  626. package/dist/flows/fix/flow.d.ts +2 -0
  627. package/dist/flows/fix/flow.d.ts.map +1 -0
  628. package/dist/flows/fix/flow.js +4 -0
  629. package/dist/flows/fix/flow.js.map +1 -0
  630. package/dist/flows/fix/index.d.ts +3 -0
  631. package/dist/flows/fix/index.d.ts.map +1 -0
  632. package/dist/flows/fix/index.js +5 -0
  633. package/dist/flows/fix/index.js.map +1 -0
  634. package/dist/flows/fix/relay-hints.d.ts +6 -0
  635. package/dist/flows/fix/relay-hints.d.ts.map +1 -0
  636. package/dist/flows/fix/relay-hints.js +52 -0
  637. package/dist/flows/fix/relay-hints.js.map +1 -0
  638. package/dist/flows/fix/reports.d.ts +562 -0
  639. package/dist/flows/fix/reports.d.ts.map +1 -0
  640. package/dist/flows/fix/reports.js +822 -0
  641. package/dist/flows/fix/reports.js.map +1 -0
  642. package/dist/flows/fix/writers/baseline-snapshot.d.ts +3 -0
  643. package/dist/flows/fix/writers/baseline-snapshot.d.ts.map +1 -0
  644. package/dist/flows/fix/writers/baseline-snapshot.js +45 -0
  645. package/dist/flows/fix/writers/baseline-snapshot.js.map +1 -0
  646. package/dist/flows/fix/writers/brief-projection.d.ts +8 -0
  647. package/dist/flows/fix/writers/brief-projection.d.ts.map +1 -0
  648. package/dist/flows/fix/writers/brief-projection.js +149 -0
  649. package/dist/flows/fix/writers/brief-projection.js.map +1 -0
  650. package/dist/flows/fix/writers/brief.d.ts +3 -0
  651. package/dist/flows/fix/writers/brief.d.ts.map +1 -0
  652. package/dist/flows/fix/writers/brief.js +29 -0
  653. package/dist/flows/fix/writers/brief.js.map +1 -0
  654. package/dist/flows/fix/writers/change-set-projection.d.ts +10 -0
  655. package/dist/flows/fix/writers/change-set-projection.d.ts.map +1 -0
  656. package/dist/flows/fix/writers/change-set-projection.js +62 -0
  657. package/dist/flows/fix/writers/change-set-projection.js.map +1 -0
  658. package/dist/flows/fix/writers/change-set.d.ts +3 -0
  659. package/dist/flows/fix/writers/change-set.d.ts.map +1 -0
  660. package/dist/flows/fix/writers/change-set.js +93 -0
  661. package/dist/flows/fix/writers/change-set.js.map +1 -0
  662. package/dist/flows/fix/writers/close.d.ts +3 -0
  663. package/dist/flows/fix/writers/close.d.ts.map +1 -0
  664. package/dist/flows/fix/writers/close.js +86 -0
  665. package/dist/flows/fix/writers/close.js.map +1 -0
  666. package/dist/flows/fix/writers/regression-baseline.d.ts +3 -0
  667. package/dist/flows/fix/writers/regression-baseline.d.ts.map +1 -0
  668. package/dist/flows/fix/writers/regression-baseline.js +39 -0
  669. package/dist/flows/fix/writers/regression-baseline.js.map +1 -0
  670. package/dist/flows/fix/writers/regression-projection.d.ts +5 -0
  671. package/dist/flows/fix/writers/regression-projection.d.ts.map +1 -0
  672. package/dist/flows/fix/writers/regression-projection.js +71 -0
  673. package/dist/flows/fix/writers/regression-projection.js.map +1 -0
  674. package/dist/flows/fix/writers/regression-rerun.d.ts +3 -0
  675. package/dist/flows/fix/writers/regression-rerun.d.ts.map +1 -0
  676. package/dist/flows/fix/writers/regression-rerun.js +51 -0
  677. package/dist/flows/fix/writers/regression-rerun.js.map +1 -0
  678. package/dist/flows/fix/writers/result-projection.d.ts +15 -0
  679. package/dist/flows/fix/writers/result-projection.d.ts.map +1 -0
  680. package/dist/flows/fix/writers/result-projection.js +58 -0
  681. package/dist/flows/fix/writers/result-projection.js.map +1 -0
  682. package/dist/flows/fix/writers/verification-projection.d.ts +4 -0
  683. package/dist/flows/fix/writers/verification-projection.d.ts.map +1 -0
  684. package/dist/flows/fix/writers/verification-projection.js +24 -0
  685. package/dist/flows/fix/writers/verification-projection.js.map +1 -0
  686. package/dist/flows/fix/writers/verification.d.ts +3 -0
  687. package/dist/flows/fix/writers/verification.d.ts.map +1 -0
  688. package/dist/flows/fix/writers/verification.js +32 -0
  689. package/dist/flows/fix/writers/verification.js.map +1 -0
  690. package/dist/flows/fix-until-green/assembly-spec.d.ts +5 -0
  691. package/dist/flows/fix-until-green/assembly-spec.d.ts.map +1 -0
  692. package/dist/flows/fix-until-green/assembly-spec.js +141 -0
  693. package/dist/flows/fix-until-green/assembly-spec.js.map +1 -0
  694. package/dist/flows/fix-until-green/data.d.ts +462 -0
  695. package/dist/flows/fix-until-green/data.d.ts.map +1 -0
  696. package/dist/flows/fix-until-green/data.js +49 -0
  697. package/dist/flows/fix-until-green/data.js.map +1 -0
  698. package/dist/flows/fix-until-green/flow.d.ts +2 -0
  699. package/dist/flows/fix-until-green/flow.d.ts.map +1 -0
  700. package/dist/flows/fix-until-green/flow.js +4 -0
  701. package/dist/flows/fix-until-green/flow.js.map +1 -0
  702. package/dist/flows/fix-until-green/relay-hints.d.ts +3 -0
  703. package/dist/flows/fix-until-green/relay-hints.d.ts.map +1 -0
  704. package/dist/flows/fix-until-green/relay-hints.js +37 -0
  705. package/dist/flows/fix-until-green/relay-hints.js.map +1 -0
  706. package/dist/flows/fix-until-green/reports.d.ts +38 -0
  707. package/dist/flows/fix-until-green/reports.d.ts.map +1 -0
  708. package/dist/flows/fix-until-green/reports.js +28 -0
  709. package/dist/flows/fix-until-green/reports.js.map +1 -0
  710. package/dist/flows/fix-until-green/writers/plan.d.ts +3 -0
  711. package/dist/flows/fix-until-green/writers/plan.d.ts.map +1 -0
  712. package/dist/flows/fix-until-green/writers/plan.js +27 -0
  713. package/dist/flows/fix-until-green/writers/plan.js.map +1 -0
  714. package/dist/flows/fix-until-green/writers/verification.d.ts +3 -0
  715. package/dist/flows/fix-until-green/writers/verification.d.ts.map +1 -0
  716. package/dist/flows/fix-until-green/writers/verification.js +46 -0
  717. package/dist/flows/fix-until-green/writers/verification.js.map +1 -0
  718. package/dist/flows/flow-definition.d.ts +81 -0
  719. package/dist/flows/flow-definition.d.ts.map +1 -0
  720. package/dist/flows/flow-definition.js +258 -0
  721. package/dist/flows/flow-definition.js.map +1 -0
  722. package/dist/flows/goal/assembly-spec.d.ts +5 -0
  723. package/dist/flows/goal/assembly-spec.d.ts.map +1 -0
  724. package/dist/flows/goal/assembly-spec.js +352 -0
  725. package/dist/flows/goal/assembly-spec.js.map +1 -0
  726. package/dist/flows/goal/data.d.ts +795 -0
  727. package/dist/flows/goal/data.d.ts.map +1 -0
  728. package/dist/flows/goal/data.js +181 -0
  729. package/dist/flows/goal/data.js.map +1 -0
  730. package/dist/flows/goal/flow.d.ts +2 -0
  731. package/dist/flows/goal/flow.d.ts.map +1 -0
  732. package/dist/flows/goal/flow.js +4 -0
  733. package/dist/flows/goal/flow.js.map +1 -0
  734. package/dist/flows/goal/relay-hints.d.ts +5 -0
  735. package/dist/flows/goal/relay-hints.d.ts.map +1 -0
  736. package/dist/flows/goal/relay-hints.js +48 -0
  737. package/dist/flows/goal/relay-hints.js.map +1 -0
  738. package/dist/flows/goal/reports.d.ts +442 -0
  739. package/dist/flows/goal/reports.d.ts.map +1 -0
  740. package/dist/flows/goal/reports.js +510 -0
  741. package/dist/flows/goal/reports.js.map +1 -0
  742. package/dist/flows/goal/writers/attempt.d.ts +3 -0
  743. package/dist/flows/goal/writers/attempt.d.ts.map +1 -0
  744. package/dist/flows/goal/writers/attempt.js +52 -0
  745. package/dist/flows/goal/writers/attempt.js.map +1 -0
  746. package/dist/flows/goal/writers/close.d.ts +3 -0
  747. package/dist/flows/goal/writers/close.d.ts.map +1 -0
  748. package/dist/flows/goal/writers/close.js +80 -0
  749. package/dist/flows/goal/writers/close.js.map +1 -0
  750. package/dist/flows/goal/writers/contract.d.ts +3 -0
  751. package/dist/flows/goal/writers/contract.d.ts.map +1 -0
  752. package/dist/flows/goal/writers/contract.js +137 -0
  753. package/dist/flows/goal/writers/contract.js.map +1 -0
  754. package/dist/flows/goal/writers/evidence-evaluation.d.ts +3 -0
  755. package/dist/flows/goal/writers/evidence-evaluation.d.ts.map +1 -0
  756. package/dist/flows/goal/writers/evidence-evaluation.js +91 -0
  757. package/dist/flows/goal/writers/evidence-evaluation.js.map +1 -0
  758. package/dist/flows/goal/writers/recovery.d.ts +3 -0
  759. package/dist/flows/goal/writers/recovery.d.ts.map +1 -0
  760. package/dist/flows/goal/writers/recovery.js +67 -0
  761. package/dist/flows/goal/writers/recovery.js.map +1 -0
  762. package/dist/flows/prototype/assembly-spec.d.ts +5 -0
  763. package/dist/flows/prototype/assembly-spec.d.ts.map +1 -0
  764. package/dist/flows/prototype/assembly-spec.js +408 -0
  765. package/dist/flows/prototype/assembly-spec.js.map +1 -0
  766. package/dist/flows/prototype/data.d.ts +947 -0
  767. package/dist/flows/prototype/data.d.ts.map +1 -0
  768. package/dist/flows/prototype/data.js +212 -0
  769. package/dist/flows/prototype/data.js.map +1 -0
  770. package/dist/flows/prototype/flow.d.ts +2 -0
  771. package/dist/flows/prototype/flow.d.ts.map +1 -0
  772. package/dist/flows/prototype/flow.js +4 -0
  773. package/dist/flows/prototype/flow.js.map +1 -0
  774. package/dist/flows/prototype/index.d.ts +4 -0
  775. package/dist/flows/prototype/index.d.ts.map +1 -0
  776. package/dist/flows/prototype/index.js +8 -0
  777. package/dist/flows/prototype/index.js.map +1 -0
  778. package/dist/flows/prototype/relay-hints.d.ts +5 -0
  779. package/dist/flows/prototype/relay-hints.d.ts.map +1 -0
  780. package/dist/flows/prototype/relay-hints.js +46 -0
  781. package/dist/flows/prototype/relay-hints.js.map +1 -0
  782. package/dist/flows/prototype/reports.d.ts +909 -0
  783. package/dist/flows/prototype/reports.d.ts.map +1 -0
  784. package/dist/flows/prototype/reports.js +721 -0
  785. package/dist/flows/prototype/reports.js.map +1 -0
  786. package/dist/flows/prototype/writers/brief.d.ts +3 -0
  787. package/dist/flows/prototype/writers/brief.d.ts.map +1 -0
  788. package/dist/flows/prototype/writers/brief.js +51 -0
  789. package/dist/flows/prototype/writers/brief.js.map +1 -0
  790. package/dist/flows/prototype/writers/checkpoint-html.d.ts +3 -0
  791. package/dist/flows/prototype/writers/checkpoint-html.d.ts.map +1 -0
  792. package/dist/flows/prototype/writers/checkpoint-html.js +247 -0
  793. package/dist/flows/prototype/writers/checkpoint-html.js.map +1 -0
  794. package/dist/flows/prototype/writers/close.d.ts +3 -0
  795. package/dist/flows/prototype/writers/close.d.ts.map +1 -0
  796. package/dist/flows/prototype/writers/close.js +358 -0
  797. package/dist/flows/prototype/writers/close.js.map +1 -0
  798. package/dist/flows/prototype/writers/plan.d.ts +3 -0
  799. package/dist/flows/prototype/writers/plan.d.ts.map +1 -0
  800. package/dist/flows/prototype/writers/plan.js +31 -0
  801. package/dist/flows/prototype/writers/plan.js.map +1 -0
  802. package/dist/flows/prototype/writers/variant-choice-options.d.ts +3 -0
  803. package/dist/flows/prototype/writers/variant-choice-options.d.ts.map +1 -0
  804. package/dist/flows/prototype/writers/variant-choice-options.js +58 -0
  805. package/dist/flows/prototype/writers/variant-choice-options.js.map +1 -0
  806. package/dist/flows/prototype/writers/variant-options.d.ts +3 -0
  807. package/dist/flows/prototype/writers/variant-options.d.ts.map +1 -0
  808. package/dist/flows/prototype/writers/variant-options.js +74 -0
  809. package/dist/flows/prototype/writers/variant-options.js.map +1 -0
  810. package/dist/flows/prototype/writers/variant-provider-evidence.d.ts +3 -0
  811. package/dist/flows/prototype/writers/variant-provider-evidence.d.ts.map +1 -0
  812. package/dist/flows/prototype/writers/variant-provider-evidence.js +79 -0
  813. package/dist/flows/prototype/writers/variant-provider-evidence.js.map +1 -0
  814. package/dist/flows/prototype/writers/variant-verification.d.ts +3 -0
  815. package/dist/flows/prototype/writers/variant-verification.d.ts.map +1 -0
  816. package/dist/flows/prototype/writers/variant-verification.js +149 -0
  817. package/dist/flows/prototype/writers/variant-verification.js.map +1 -0
  818. package/dist/flows/prototype/writers/verification.d.ts +3 -0
  819. package/dist/flows/prototype/writers/verification.d.ts.map +1 -0
  820. package/dist/flows/prototype/writers/verification.js +105 -0
  821. package/dist/flows/prototype/writers/verification.js.map +1 -0
  822. package/dist/flows/pursue/assembly-spec.d.ts +6 -0
  823. package/dist/flows/pursue/assembly-spec.d.ts.map +1 -0
  824. package/dist/flows/pursue/assembly-spec.js +181 -0
  825. package/dist/flows/pursue/assembly-spec.js.map +1 -0
  826. package/dist/flows/pursue/data.d.ts +740 -0
  827. package/dist/flows/pursue/data.d.ts.map +1 -0
  828. package/dist/flows/pursue/data.js +125 -0
  829. package/dist/flows/pursue/data.js.map +1 -0
  830. package/dist/flows/pursue/flow.d.ts +2 -0
  831. package/dist/flows/pursue/flow.d.ts.map +1 -0
  832. package/dist/flows/pursue/flow.js +4 -0
  833. package/dist/flows/pursue/flow.js.map +1 -0
  834. package/dist/flows/pursue/relay-hints.d.ts +4 -0
  835. package/dist/flows/pursue/relay-hints.d.ts.map +1 -0
  836. package/dist/flows/pursue/relay-hints.js +34 -0
  837. package/dist/flows/pursue/relay-hints.js.map +1 -0
  838. package/dist/flows/pursue/reports.d.ts +383 -0
  839. package/dist/flows/pursue/reports.d.ts.map +1 -0
  840. package/dist/flows/pursue/reports.js +404 -0
  841. package/dist/flows/pursue/reports.js.map +1 -0
  842. package/dist/flows/pursue/writers/close.d.ts +3 -0
  843. package/dist/flows/pursue/writers/close.d.ts.map +1 -0
  844. package/dist/flows/pursue/writers/close.js +41 -0
  845. package/dist/flows/pursue/writers/close.js.map +1 -0
  846. package/dist/flows/pursue/writers/contract-projection.d.ts +7 -0
  847. package/dist/flows/pursue/writers/contract-projection.d.ts.map +1 -0
  848. package/dist/flows/pursue/writers/contract-projection.js +125 -0
  849. package/dist/flows/pursue/writers/contract-projection.js.map +1 -0
  850. package/dist/flows/pursue/writers/contract.d.ts +3 -0
  851. package/dist/flows/pursue/writers/contract.d.ts.map +1 -0
  852. package/dist/flows/pursue/writers/contract.js +17 -0
  853. package/dist/flows/pursue/writers/contract.js.map +1 -0
  854. package/dist/flows/pursue/writers/graph.d.ts +3 -0
  855. package/dist/flows/pursue/writers/graph.d.ts.map +1 -0
  856. package/dist/flows/pursue/writers/graph.js +76 -0
  857. package/dist/flows/pursue/writers/graph.js.map +1 -0
  858. package/dist/flows/pursue/writers/result-projection.d.ts +11 -0
  859. package/dist/flows/pursue/writers/result-projection.d.ts.map +1 -0
  860. package/dist/flows/pursue/writers/result-projection.js +85 -0
  861. package/dist/flows/pursue/writers/result-projection.js.map +1 -0
  862. package/dist/flows/pursue/writers/verification-projection.d.ts +4 -0
  863. package/dist/flows/pursue/writers/verification-projection.d.ts.map +1 -0
  864. package/dist/flows/pursue/writers/verification-projection.js +20 -0
  865. package/dist/flows/pursue/writers/verification-projection.js.map +1 -0
  866. package/dist/flows/pursue/writers/verification.d.ts +3 -0
  867. package/dist/flows/pursue/writers/verification.d.ts.map +1 -0
  868. package/dist/flows/pursue/writers/verification.js +24 -0
  869. package/dist/flows/pursue/writers/verification.js.map +1 -0
  870. package/dist/flows/pursue/writers/wave-plan.d.ts +3 -0
  871. package/dist/flows/pursue/writers/wave-plan.d.ts.map +1 -0
  872. package/dist/flows/pursue/writers/wave-plan.js +36 -0
  873. package/dist/flows/pursue/writers/wave-plan.js.map +1 -0
  874. package/dist/flows/registries/checkpoint-writers/registry.d.ts +3 -0
  875. package/dist/flows/registries/checkpoint-writers/registry.d.ts.map +1 -0
  876. package/dist/flows/registries/checkpoint-writers/registry.js +12 -0
  877. package/dist/flows/registries/checkpoint-writers/registry.js.map +1 -0
  878. package/dist/flows/registries/checkpoint-writers/types.d.ts +22 -0
  879. package/dist/flows/registries/checkpoint-writers/types.d.ts.map +1 -0
  880. package/dist/flows/registries/checkpoint-writers/types.js +24 -0
  881. package/dist/flows/registries/checkpoint-writers/types.js.map +1 -0
  882. package/dist/flows/registries/close-writers/generic-close-builder.d.ts +3 -0
  883. package/dist/flows/registries/close-writers/generic-close-builder.d.ts.map +1 -0
  884. package/dist/flows/registries/close-writers/generic-close-builder.js +45 -0
  885. package/dist/flows/registries/close-writers/generic-close-builder.js.map +1 -0
  886. package/dist/flows/registries/close-writers/registry.d.ts +5 -0
  887. package/dist/flows/registries/close-writers/registry.d.ts.map +1 -0
  888. package/dist/flows/registries/close-writers/registry.js +48 -0
  889. package/dist/flows/registries/close-writers/registry.js.map +1 -0
  890. package/dist/flows/registries/close-writers/types.d.ts +19 -0
  891. package/dist/flows/registries/close-writers/types.d.ts.map +1 -0
  892. package/dist/flows/registries/close-writers/types.js +19 -0
  893. package/dist/flows/registries/close-writers/types.js.map +1 -0
  894. package/dist/flows/registries/compose-writers/registry.d.ts +6 -0
  895. package/dist/flows/registries/compose-writers/registry.d.ts.map +1 -0
  896. package/dist/flows/registries/compose-writers/registry.js +46 -0
  897. package/dist/flows/registries/compose-writers/registry.js.map +1 -0
  898. package/dist/flows/registries/compose-writers/types.d.ts +30 -0
  899. package/dist/flows/registries/compose-writers/types.d.ts.map +1 -0
  900. package/dist/flows/registries/compose-writers/types.js +22 -0
  901. package/dist/flows/registries/compose-writers/types.js.map +1 -0
  902. package/dist/flows/registries/cross-report-validators.d.ts +10 -0
  903. package/dist/flows/registries/cross-report-validators.d.ts.map +1 -0
  904. package/dist/flows/registries/cross-report-validators.js +31 -0
  905. package/dist/flows/registries/cross-report-validators.js.map +1 -0
  906. package/dist/flows/registries/report-schemas.d.ts +10 -0
  907. package/dist/flows/registries/report-schemas.d.ts.map +1 -0
  908. package/dist/flows/registries/report-schemas.js +77 -0
  909. package/dist/flows/registries/report-schemas.js.map +1 -0
  910. package/dist/flows/registries/runtime-index.d.ts +100 -0
  911. package/dist/flows/registries/runtime-index.d.ts.map +1 -0
  912. package/dist/flows/registries/runtime-index.js +27 -0
  913. package/dist/flows/registries/runtime-index.js.map +1 -0
  914. package/dist/flows/registries/shape-hints/from-zod.d.ts +6 -0
  915. package/dist/flows/registries/shape-hints/from-zod.d.ts.map +1 -0
  916. package/dist/flows/registries/shape-hints/from-zod.js +354 -0
  917. package/dist/flows/registries/shape-hints/from-zod.js.map +1 -0
  918. package/dist/flows/registries/shape-hints/instruction-helpers.d.ts +3 -0
  919. package/dist/flows/registries/shape-hints/instruction-helpers.d.ts.map +1 -0
  920. package/dist/flows/registries/shape-hints/instruction-helpers.js +28 -0
  921. package/dist/flows/registries/shape-hints/instruction-helpers.js.map +1 -0
  922. package/dist/flows/registries/shape-hints/registry.d.ts +5 -0
  923. package/dist/flows/registries/shape-hints/registry.d.ts.map +1 -0
  924. package/dist/flows/registries/shape-hints/registry.js +33 -0
  925. package/dist/flows/registries/shape-hints/registry.js.map +1 -0
  926. package/dist/flows/registries/shape-hints/types.d.ts +14 -0
  927. package/dist/flows/registries/shape-hints/types.d.ts.map +1 -0
  928. package/dist/flows/registries/shape-hints/types.js +25 -0
  929. package/dist/flows/registries/shape-hints/types.js.map +1 -0
  930. package/dist/flows/registries/verification-writers/registry.d.ts +6 -0
  931. package/dist/flows/registries/verification-writers/registry.d.ts.map +1 -0
  932. package/dist/flows/registries/verification-writers/registry.js +37 -0
  933. package/dist/flows/registries/verification-writers/registry.js.map +1 -0
  934. package/dist/flows/registries/verification-writers/types.d.ts +37 -0
  935. package/dist/flows/registries/verification-writers/types.d.ts.map +1 -0
  936. package/dist/flows/registries/verification-writers/types.js +22 -0
  937. package/dist/flows/registries/verification-writers/types.js.map +1 -0
  938. package/dist/flows/report-declarations.d.ts +23 -0
  939. package/dist/flows/report-declarations.d.ts.map +1 -0
  940. package/dist/flows/report-declarations.js +46 -0
  941. package/dist/flows/report-declarations.js.map +1 -0
  942. package/dist/flows/report-schema-kit.d.ts +22 -0
  943. package/dist/flows/report-schema-kit.d.ts.map +1 -0
  944. package/dist/flows/report-schema-kit.js +59 -0
  945. package/dist/flows/report-schema-kit.js.map +1 -0
  946. package/dist/flows/resolvers/archetype.d.ts +14 -0
  947. package/dist/flows/resolvers/archetype.d.ts.map +1 -0
  948. package/dist/flows/resolvers/archetype.js +125 -0
  949. package/dist/flows/resolvers/archetype.js.map +1 -0
  950. package/dist/flows/resolvers/equipment.d.ts +32 -0
  951. package/dist/flows/resolvers/equipment.d.ts.map +1 -0
  952. package/dist/flows/resolvers/equipment.js +101 -0
  953. package/dist/flows/resolvers/equipment.js.map +1 -0
  954. package/dist/flows/resolvers/signals.d.ts +27 -0
  955. package/dist/flows/resolvers/signals.d.ts.map +1 -0
  956. package/dist/flows/resolvers/signals.js +273 -0
  957. package/dist/flows/resolvers/signals.js.map +1 -0
  958. package/dist/flows/resolvers/structure.d.ts +23 -0
  959. package/dist/flows/resolvers/structure.d.ts.map +1 -0
  960. package/dist/flows/resolvers/structure.js +112 -0
  961. package/dist/flows/resolvers/structure.js.map +1 -0
  962. package/dist/flows/review/assembly-spec.d.ts +5 -0
  963. package/dist/flows/review/assembly-spec.d.ts.map +1 -0
  964. package/dist/flows/review/assembly-spec.js +90 -0
  965. package/dist/flows/review/assembly-spec.js.map +1 -0
  966. package/dist/flows/review/data.d.ts +555 -0
  967. package/dist/flows/review/data.d.ts.map +1 -0
  968. package/dist/flows/review/data.js +75 -0
  969. package/dist/flows/review/data.js.map +1 -0
  970. package/dist/flows/review/flow.d.ts +2 -0
  971. package/dist/flows/review/flow.d.ts.map +1 -0
  972. package/dist/flows/review/flow.js +4 -0
  973. package/dist/flows/review/flow.js.map +1 -0
  974. package/dist/flows/review/index.d.ts +4 -0
  975. package/dist/flows/review/index.d.ts.map +1 -0
  976. package/dist/flows/review/index.js +8 -0
  977. package/dist/flows/review/index.js.map +1 -0
  978. package/dist/flows/review/relay-hints.d.ts +3 -0
  979. package/dist/flows/review/relay-hints.d.ts.map +1 -0
  980. package/dist/flows/review/relay-hints.js +31 -0
  981. package/dist/flows/review/relay-hints.js.map +1 -0
  982. package/dist/flows/review/reports.d.ts +247 -0
  983. package/dist/flows/review/reports.d.ts.map +1 -0
  984. package/dist/flows/review/reports.js +176 -0
  985. package/dist/flows/review/reports.js.map +1 -0
  986. package/dist/flows/review/writers/intake-projection.d.ts +13 -0
  987. package/dist/flows/review/writers/intake-projection.d.ts.map +1 -0
  988. package/dist/flows/review/writers/intake-projection.js +90 -0
  989. package/dist/flows/review/writers/intake-projection.js.map +1 -0
  990. package/dist/flows/review/writers/intake.d.ts +3 -0
  991. package/dist/flows/review/writers/intake.d.ts.map +1 -0
  992. package/dist/flows/review/writers/intake.js +186 -0
  993. package/dist/flows/review/writers/intake.js.map +1 -0
  994. package/dist/flows/review/writers/result-html.d.ts +3 -0
  995. package/dist/flows/review/writers/result-html.d.ts.map +1 -0
  996. package/dist/flows/review/writers/result-html.js +78 -0
  997. package/dist/flows/review/writers/result-html.js.map +1 -0
  998. package/dist/flows/review/writers/result-projection.d.ts +6 -0
  999. package/dist/flows/review/writers/result-projection.d.ts.map +1 -0
  1000. package/dist/flows/review/writers/result-projection.js +29 -0
  1001. package/dist/flows/review/writers/result-projection.js.map +1 -0
  1002. package/dist/flows/review/writers/result.d.ts +3 -0
  1003. package/dist/flows/review/writers/result.d.ts.map +1 -0
  1004. package/dist/flows/review/writers/result.js +50 -0
  1005. package/dist/flows/review/writers/result.js.map +1 -0
  1006. package/dist/flows/runtime-proof/assembly-spec.d.ts +5 -0
  1007. package/dist/flows/runtime-proof/assembly-spec.d.ts.map +1 -0
  1008. package/dist/flows/runtime-proof/assembly-spec.js +54 -0
  1009. package/dist/flows/runtime-proof/assembly-spec.js.map +1 -0
  1010. package/dist/flows/runtime-proof/data.d.ts +423 -0
  1011. package/dist/flows/runtime-proof/data.d.ts.map +1 -0
  1012. package/dist/flows/runtime-proof/data.js +36 -0
  1013. package/dist/flows/runtime-proof/data.js.map +1 -0
  1014. package/dist/flows/runtime-proof/flow.d.ts +2 -0
  1015. package/dist/flows/runtime-proof/flow.d.ts.map +1 -0
  1016. package/dist/flows/runtime-proof/flow.js +4 -0
  1017. package/dist/flows/runtime-proof/flow.js.map +1 -0
  1018. package/dist/flows/runtime-proof/reports.d.ts +6 -0
  1019. package/dist/flows/runtime-proof/reports.d.ts.map +1 -0
  1020. package/dist/flows/runtime-proof/reports.js +7 -0
  1021. package/dist/flows/runtime-proof/reports.js.map +1 -0
  1022. package/dist/flows/runtime-proof/writers/compose.d.ts +3 -0
  1023. package/dist/flows/runtime-proof/writers/compose.d.ts.map +1 -0
  1024. package/dist/flows/runtime-proof/writers/compose.js +10 -0
  1025. package/dist/flows/runtime-proof/writers/compose.js.map +1 -0
  1026. package/dist/flows/schematic-catalog-check.d.ts +3 -0
  1027. package/dist/flows/schematic-catalog-check.d.ts.map +1 -0
  1028. package/dist/flows/schematic-catalog-check.js +73 -0
  1029. package/dist/flows/schematic-catalog-check.js.map +1 -0
  1030. package/dist/flows/stage-policy.d.ts +22 -0
  1031. package/dist/flows/stage-policy.d.ts.map +1 -0
  1032. package/dist/flows/stage-policy.js +27 -0
  1033. package/dist/flows/stage-policy.js.map +1 -0
  1034. package/dist/flows/sweep/assembly-spec.d.ts +5 -0
  1035. package/dist/flows/sweep/assembly-spec.d.ts.map +1 -0
  1036. package/dist/flows/sweep/assembly-spec.js +170 -0
  1037. package/dist/flows/sweep/assembly-spec.js.map +1 -0
  1038. package/dist/flows/sweep/data.d.ts +552 -0
  1039. package/dist/flows/sweep/data.d.ts.map +1 -0
  1040. package/dist/flows/sweep/data.js +70 -0
  1041. package/dist/flows/sweep/data.js.map +1 -0
  1042. package/dist/flows/sweep/flow.d.ts +2 -0
  1043. package/dist/flows/sweep/flow.d.ts.map +1 -0
  1044. package/dist/flows/sweep/flow.js +4 -0
  1045. package/dist/flows/sweep/flow.js.map +1 -0
  1046. package/dist/flows/sweep/paths.d.ts +11 -0
  1047. package/dist/flows/sweep/paths.d.ts.map +1 -0
  1048. package/dist/flows/sweep/paths.js +18 -0
  1049. package/dist/flows/sweep/paths.js.map +1 -0
  1050. package/dist/flows/sweep/relay-hints.d.ts +3 -0
  1051. package/dist/flows/sweep/relay-hints.d.ts.map +1 -0
  1052. package/dist/flows/sweep/relay-hints.js +27 -0
  1053. package/dist/flows/sweep/relay-hints.js.map +1 -0
  1054. package/dist/flows/sweep/reports.d.ts +172 -0
  1055. package/dist/flows/sweep/reports.d.ts.map +1 -0
  1056. package/dist/flows/sweep/reports.js +179 -0
  1057. package/dist/flows/sweep/reports.js.map +1 -0
  1058. package/dist/flows/sweep/writers/census.d.ts +3 -0
  1059. package/dist/flows/sweep/writers/census.d.ts.map +1 -0
  1060. package/dist/flows/sweep/writers/census.js +67 -0
  1061. package/dist/flows/sweep/writers/census.js.map +1 -0
  1062. package/dist/flows/sweep/writers/partition.d.ts +3 -0
  1063. package/dist/flows/sweep/writers/partition.d.ts.map +1 -0
  1064. package/dist/flows/sweep/writers/partition.js +130 -0
  1065. package/dist/flows/sweep/writers/partition.js.map +1 -0
  1066. package/dist/flows/sweep/writers/scan.d.ts +5 -0
  1067. package/dist/flows/sweep/writers/scan.d.ts.map +1 -0
  1068. package/dist/flows/sweep/writers/scan.js +89 -0
  1069. package/dist/flows/sweep/writers/scan.js.map +1 -0
  1070. package/dist/flows/sweep/writers/verification.d.ts +3 -0
  1071. package/dist/flows/sweep/writers/verification.d.ts.map +1 -0
  1072. package/dist/flows/sweep/writers/verification.js +55 -0
  1073. package/dist/flows/sweep/writers/verification.js.map +1 -0
  1074. package/dist/flows/types.d.ts +111 -0
  1075. package/dist/flows/types.d.ts.map +1 -0
  1076. package/dist/flows/types.js +14 -0
  1077. package/dist/flows/types.js.map +1 -0
  1078. package/dist/history/run-corpus.d.ts +16 -0
  1079. package/dist/history/run-corpus.d.ts.map +1 -0
  1080. package/dist/history/run-corpus.js +55 -0
  1081. package/dist/history/run-corpus.js.map +1 -0
  1082. package/dist/index.d.ts +2 -0
  1083. package/dist/index.d.ts.map +1 -0
  1084. package/dist/index.js +2 -0
  1085. package/dist/index.js.map +1 -0
  1086. package/dist/memory/project-distill.d.ts +18 -0
  1087. package/dist/memory/project-distill.d.ts.map +1 -0
  1088. package/dist/memory/project-distill.js +244 -0
  1089. package/dist/memory/project-distill.js.map +1 -0
  1090. package/dist/memory/project-identity.d.ts +25 -0
  1091. package/dist/memory/project-identity.d.ts.map +1 -0
  1092. package/dist/memory/project-identity.js +125 -0
  1093. package/dist/memory/project-identity.js.map +1 -0
  1094. package/dist/memory/project-injection.d.ts +12 -0
  1095. package/dist/memory/project-injection.d.ts.map +1 -0
  1096. package/dist/memory/project-injection.js +56 -0
  1097. package/dist/memory/project-injection.js.map +1 -0
  1098. package/dist/memory/project-store.d.ts +35 -0
  1099. package/dist/memory/project-store.d.ts.map +1 -0
  1100. package/dist/memory/project-store.js +150 -0
  1101. package/dist/memory/project-store.js.map +1 -0
  1102. package/dist/policy/fanout-join-policy.d.ts +26 -0
  1103. package/dist/policy/fanout-join-policy.d.ts.map +1 -0
  1104. package/dist/policy/fanout-join-policy.js +87 -0
  1105. package/dist/policy/fanout-join-policy.js.map +1 -0
  1106. package/dist/policy/flow-kind-policy-core.d.ts +50 -0
  1107. package/dist/policy/flow-kind-policy-core.d.ts.map +1 -0
  1108. package/dist/policy/flow-kind-policy-core.js +250 -0
  1109. package/dist/policy/flow-kind-policy-core.js.map +1 -0
  1110. package/dist/policy/flow-kind-policy.d.ts +19 -0
  1111. package/dist/policy/flow-kind-policy.d.ts.map +1 -0
  1112. package/dist/policy/flow-kind-policy.js +41 -0
  1113. package/dist/policy/flow-kind-policy.js.map +1 -0
  1114. package/dist/policy/policy-envelope.d.ts +28 -0
  1115. package/dist/policy/policy-envelope.d.ts.map +1 -0
  1116. package/dist/policy/policy-envelope.js +317 -0
  1117. package/dist/policy/policy-envelope.js.map +1 -0
  1118. package/dist/policy/recovery-route-policy.d.ts +165 -0
  1119. package/dist/policy/recovery-route-policy.d.ts.map +1 -0
  1120. package/dist/policy/recovery-route-policy.js +112 -0
  1121. package/dist/policy/recovery-route-policy.js.map +1 -0
  1122. package/dist/policy/rubric.d.ts +28 -0
  1123. package/dist/policy/rubric.d.ts.map +1 -0
  1124. package/dist/policy/rubric.js +139 -0
  1125. package/dist/policy/rubric.js.map +1 -0
  1126. package/dist/release/checks.d.ts +45 -0
  1127. package/dist/release/checks.d.ts.map +1 -0
  1128. package/dist/release/checks.js +382 -0
  1129. package/dist/release/checks.js.map +1 -0
  1130. package/dist/release/schemas.d.ts +590 -0
  1131. package/dist/release/schemas.d.ts.map +1 -0
  1132. package/dist/release/schemas.js +369 -0
  1133. package/dist/release/schemas.js.map +1 -0
  1134. package/dist/runtime/acceptance-criteria.d.ts +41 -0
  1135. package/dist/runtime/acceptance-criteria.d.ts.map +1 -0
  1136. package/dist/runtime/acceptance-criteria.js +282 -0
  1137. package/dist/runtime/acceptance-criteria.js.map +1 -0
  1138. package/dist/runtime/domain/flow.d.ts +11 -0
  1139. package/dist/runtime/domain/flow.d.ts.map +1 -0
  1140. package/dist/runtime/domain/flow.js +2 -0
  1141. package/dist/runtime/domain/flow.js.map +1 -0
  1142. package/dist/runtime/domain/route.d.ts +13 -0
  1143. package/dist/runtime/domain/route.d.ts.map +1 -0
  1144. package/dist/runtime/domain/route.js +7 -0
  1145. package/dist/runtime/domain/route.js.map +1 -0
  1146. package/dist/runtime/domain/run-file.d.ts +5 -0
  1147. package/dist/runtime/domain/run-file.d.ts.map +1 -0
  1148. package/dist/runtime/domain/run-file.js +2 -0
  1149. package/dist/runtime/domain/run-file.js.map +1 -0
  1150. package/dist/runtime/domain/run.d.ts +4 -0
  1151. package/dist/runtime/domain/run.d.ts.map +1 -0
  1152. package/dist/runtime/domain/run.js +2 -0
  1153. package/dist/runtime/domain/run.js.map +1 -0
  1154. package/dist/runtime/domain/selection.d.ts +11 -0
  1155. package/dist/runtime/domain/selection.d.ts.map +1 -0
  1156. package/dist/runtime/domain/selection.js +2 -0
  1157. package/dist/runtime/domain/selection.js.map +1 -0
  1158. package/dist/runtime/domain/step.d.ts +19 -0
  1159. package/dist/runtime/domain/step.d.ts.map +1 -0
  1160. package/dist/runtime/domain/step.js +4 -0
  1161. package/dist/runtime/domain/step.js.map +1 -0
  1162. package/dist/runtime/domain/trace.d.ts +21 -0
  1163. package/dist/runtime/domain/trace.d.ts.map +1 -0
  1164. package/dist/runtime/domain/trace.js +2 -0
  1165. package/dist/runtime/domain/trace.js.map +1 -0
  1166. package/dist/runtime/executors/checkpoint.d.ts +18 -0
  1167. package/dist/runtime/executors/checkpoint.d.ts.map +1 -0
  1168. package/dist/runtime/executors/checkpoint.js +463 -0
  1169. package/dist/runtime/executors/checkpoint.js.map +1 -0
  1170. package/dist/runtime/executors/compose.d.ts +11 -0
  1171. package/dist/runtime/executors/compose.d.ts.map +1 -0
  1172. package/dist/runtime/executors/compose.js +124 -0
  1173. package/dist/runtime/executors/compose.js.map +1 -0
  1174. package/dist/runtime/executors/fanout.d.ts +8 -0
  1175. package/dist/runtime/executors/fanout.d.ts.map +1 -0
  1176. package/dist/runtime/executors/fanout.js +312 -0
  1177. package/dist/runtime/executors/fanout.js.map +1 -0
  1178. package/dist/runtime/executors/index.d.ts +11 -0
  1179. package/dist/runtime/executors/index.d.ts.map +1 -0
  1180. package/dist/runtime/executors/index.js +32 -0
  1181. package/dist/runtime/executors/index.js.map +1 -0
  1182. package/dist/runtime/executors/relay.d.ts +73 -0
  1183. package/dist/runtime/executors/relay.d.ts.map +1 -0
  1184. package/dist/runtime/executors/relay.js +788 -0
  1185. package/dist/runtime/executors/relay.js.map +1 -0
  1186. package/dist/runtime/executors/result.d.ts +14 -0
  1187. package/dist/runtime/executors/result.d.ts.map +1 -0
  1188. package/dist/runtime/executors/result.js +19 -0
  1189. package/dist/runtime/executors/result.js.map +1 -0
  1190. package/dist/runtime/executors/shared.d.ts +17 -0
  1191. package/dist/runtime/executors/shared.d.ts.map +1 -0
  1192. package/dist/runtime/executors/shared.js +49 -0
  1193. package/dist/runtime/executors/shared.js.map +1 -0
  1194. package/dist/runtime/executors/sub-run.d.ts +8 -0
  1195. package/dist/runtime/executors/sub-run.d.ts.map +1 -0
  1196. package/dist/runtime/executors/sub-run.js +275 -0
  1197. package/dist/runtime/executors/sub-run.js.map +1 -0
  1198. package/dist/runtime/executors/verification.d.ts +7 -0
  1199. package/dist/runtime/executors/verification.d.ts.map +1 -0
  1200. package/dist/runtime/executors/verification.js +374 -0
  1201. package/dist/runtime/executors/verification.js.map +1 -0
  1202. package/dist/runtime/fanout/branch-execution.d.ts +17 -0
  1203. package/dist/runtime/fanout/branch-execution.d.ts.map +1 -0
  1204. package/dist/runtime/fanout/branch-execution.js +576 -0
  1205. package/dist/runtime/fanout/branch-execution.js.map +1 -0
  1206. package/dist/runtime/fanout/branch-expansion.d.ts +6 -0
  1207. package/dist/runtime/fanout/branch-expansion.d.ts.map +1 -0
  1208. package/dist/runtime/fanout/branch-expansion.js +64 -0
  1209. package/dist/runtime/fanout/branch-expansion.js.map +1 -0
  1210. package/dist/runtime/fanout/run-owner-lock.d.ts +28 -0
  1211. package/dist/runtime/fanout/run-owner-lock.d.ts.map +1 -0
  1212. package/dist/runtime/fanout/run-owner-lock.js +98 -0
  1213. package/dist/runtime/fanout/run-owner-lock.js.map +1 -0
  1214. package/dist/runtime/fanout/types.d.ts +38 -0
  1215. package/dist/runtime/fanout/types.d.ts.map +1 -0
  1216. package/dist/runtime/fanout/types.js +2 -0
  1217. package/dist/runtime/fanout/types.js.map +1 -0
  1218. package/dist/runtime/fanout/worktree-reaper.d.ts +108 -0
  1219. package/dist/runtime/fanout/worktree-reaper.d.ts.map +1 -0
  1220. package/dist/runtime/fanout/worktree-reaper.js +195 -0
  1221. package/dist/runtime/fanout/worktree-reaper.js.map +1 -0
  1222. package/dist/runtime/fanout/worktree.d.ts +3 -0
  1223. package/dist/runtime/fanout/worktree.d.ts.map +1 -0
  1224. package/dist/runtime/fanout/worktree.js +35 -0
  1225. package/dist/runtime/fanout/worktree.js.map +1 -0
  1226. package/dist/runtime/manifest/executable-flow.d.ts +100 -0
  1227. package/dist/runtime/manifest/executable-flow.d.ts.map +1 -0
  1228. package/dist/runtime/manifest/executable-flow.js +2 -0
  1229. package/dist/runtime/manifest/executable-flow.js.map +1 -0
  1230. package/dist/runtime/manifest/from-compiled-flow.d.ts +4 -0
  1231. package/dist/runtime/manifest/from-compiled-flow.d.ts.map +1 -0
  1232. package/dist/runtime/manifest/from-compiled-flow.js +169 -0
  1233. package/dist/runtime/manifest/from-compiled-flow.js.map +1 -0
  1234. package/dist/runtime/manifest/runtime-package-index.d.ts +4 -0
  1235. package/dist/runtime/manifest/runtime-package-index.d.ts.map +1 -0
  1236. package/dist/runtime/manifest/runtime-package-index.js +98 -0
  1237. package/dist/runtime/manifest/runtime-package-index.js.map +1 -0
  1238. package/dist/runtime/manifest/validate-executable-flow.d.ts +8 -0
  1239. package/dist/runtime/manifest/validate-executable-flow.d.ts.map +1 -0
  1240. package/dist/runtime/manifest/validate-executable-flow.js +143 -0
  1241. package/dist/runtime/manifest/validate-executable-flow.js.map +1 -0
  1242. package/dist/runtime/projections/progress.d.ts +16 -0
  1243. package/dist/runtime/projections/progress.d.ts.map +1 -0
  1244. package/dist/runtime/projections/progress.js +679 -0
  1245. package/dist/runtime/projections/progress.js.map +1 -0
  1246. package/dist/runtime/projections/status.d.ts +4 -0
  1247. package/dist/runtime/projections/status.d.ts.map +1 -0
  1248. package/dist/runtime/projections/status.js +14 -0
  1249. package/dist/runtime/projections/status.js.map +1 -0
  1250. package/dist/runtime/projections/tournament-checkpoint-context.d.ts +18 -0
  1251. package/dist/runtime/projections/tournament-checkpoint-context.d.ts.map +1 -0
  1252. package/dist/runtime/projections/tournament-checkpoint-context.js +106 -0
  1253. package/dist/runtime/projections/tournament-checkpoint-context.js.map +1 -0
  1254. package/dist/runtime/run/binding-legibility.d.ts +71 -0
  1255. package/dist/runtime/run/binding-legibility.d.ts.map +1 -0
  1256. package/dist/runtime/run/binding-legibility.js +61 -0
  1257. package/dist/runtime/run/binding-legibility.js.map +1 -0
  1258. package/dist/runtime/run/capabilities.d.ts +34 -0
  1259. package/dist/runtime/run/capabilities.d.ts.map +1 -0
  1260. package/dist/runtime/run/capabilities.js +22 -0
  1261. package/dist/runtime/run/capabilities.js.map +1 -0
  1262. package/dist/runtime/run/carried-notes.d.ts +13 -0
  1263. package/dist/runtime/run/carried-notes.d.ts.map +1 -0
  1264. package/dist/runtime/run/carried-notes.js +53 -0
  1265. package/dist/runtime/run/carried-notes.js.map +1 -0
  1266. package/dist/runtime/run/checkpoint-resume.d.ts +44 -0
  1267. package/dist/runtime/run/checkpoint-resume.d.ts.map +1 -0
  1268. package/dist/runtime/run/checkpoint-resume.js +549 -0
  1269. package/dist/runtime/run/checkpoint-resume.js.map +1 -0
  1270. package/dist/runtime/run/child-runner.d.ts +57 -0
  1271. package/dist/runtime/run/child-runner.d.ts.map +1 -0
  1272. package/dist/runtime/run/child-runner.js +2 -0
  1273. package/dist/runtime/run/child-runner.js.map +1 -0
  1274. package/dist/runtime/run/commit-containment.d.ts +11 -0
  1275. package/dist/runtime/run/commit-containment.d.ts.map +1 -0
  1276. package/dist/runtime/run/commit-containment.js +46 -0
  1277. package/dist/runtime/run/commit-containment.js.map +1 -0
  1278. package/dist/runtime/run/compiled-flow-runner.d.ts +26 -0
  1279. package/dist/runtime/run/compiled-flow-runner.d.ts.map +1 -0
  1280. package/dist/runtime/run/compiled-flow-runner.js +137 -0
  1281. package/dist/runtime/run/compiled-flow-runner.js.map +1 -0
  1282. package/dist/runtime/run/connector-planning.d.ts +3 -0
  1283. package/dist/runtime/run/connector-planning.d.ts.map +1 -0
  1284. package/dist/runtime/run/connector-planning.js +29 -0
  1285. package/dist/runtime/run/connector-planning.js.map +1 -0
  1286. package/dist/runtime/run/context-delivery.d.ts +24 -0
  1287. package/dist/runtime/run/context-delivery.d.ts.map +1 -0
  1288. package/dist/runtime/run/context-delivery.js +92 -0
  1289. package/dist/runtime/run/context-delivery.js.map +1 -0
  1290. package/dist/runtime/run/context-pull.d.ts +22 -0
  1291. package/dist/runtime/run/context-pull.d.ts.map +1 -0
  1292. package/dist/runtime/run/context-pull.js +112 -0
  1293. package/dist/runtime/run/context-pull.js.map +1 -0
  1294. package/dist/runtime/run/engine-flags.d.ts +7 -0
  1295. package/dist/runtime/run/engine-flags.d.ts.map +1 -0
  1296. package/dist/runtime/run/engine-flags.js +89 -0
  1297. package/dist/runtime/run/engine-flags.js.map +1 -0
  1298. package/dist/runtime/run/equipment-reshape.d.ts +24 -0
  1299. package/dist/runtime/run/equipment-reshape.d.ts.map +1 -0
  1300. package/dist/runtime/run/equipment-reshape.js +156 -0
  1301. package/dist/runtime/run/equipment-reshape.js.map +1 -0
  1302. package/dist/runtime/run/external-files.d.ts +5 -0
  1303. package/dist/runtime/run/external-files.d.ts.map +1 -0
  1304. package/dist/runtime/run/external-files.js +7 -0
  1305. package/dist/runtime/run/external-files.js.map +1 -0
  1306. package/dist/runtime/run/frozen-eval.d.ts +8 -0
  1307. package/dist/runtime/run/frozen-eval.d.ts.map +1 -0
  1308. package/dist/runtime/run/frozen-eval.js +60 -0
  1309. package/dist/runtime/run/frozen-eval.js.map +1 -0
  1310. package/dist/runtime/run/graph-runner.d.ts +67 -0
  1311. package/dist/runtime/run/graph-runner.d.ts.map +1 -0
  1312. package/dist/runtime/run/graph-runner.js +1755 -0
  1313. package/dist/runtime/run/graph-runner.js.map +1 -0
  1314. package/dist/runtime/run/guidance.d.ts +49 -0
  1315. package/dist/runtime/run/guidance.d.ts.map +1 -0
  1316. package/dist/runtime/run/guidance.js +227 -0
  1317. package/dist/runtime/run/guidance.js.map +1 -0
  1318. package/dist/runtime/run/honesty-ledger.d.ts +21 -0
  1319. package/dist/runtime/run/honesty-ledger.d.ts.map +1 -0
  1320. package/dist/runtime/run/honesty-ledger.js +75 -0
  1321. package/dist/runtime/run/honesty-ledger.js.map +1 -0
  1322. package/dist/runtime/run/iteration-ledger.d.ts +15 -0
  1323. package/dist/runtime/run/iteration-ledger.d.ts.map +1 -0
  1324. package/dist/runtime/run/iteration-ledger.js +91 -0
  1325. package/dist/runtime/run/iteration-ledger.js.map +1 -0
  1326. package/dist/runtime/run/manifest-snapshot.d.ts +27 -0
  1327. package/dist/runtime/run/manifest-snapshot.d.ts.map +1 -0
  1328. package/dist/runtime/run/manifest-snapshot.js +58 -0
  1329. package/dist/runtime/run/manifest-snapshot.js.map +1 -0
  1330. package/dist/runtime/run/oracle-command-pin.d.ts +20 -0
  1331. package/dist/runtime/run/oracle-command-pin.d.ts.map +1 -0
  1332. package/dist/runtime/run/oracle-command-pin.js +94 -0
  1333. package/dist/runtime/run/oracle-command-pin.js.map +1 -0
  1334. package/dist/runtime/run/recovery-binding-verdict.d.ts +40 -0
  1335. package/dist/runtime/run/recovery-binding-verdict.d.ts.map +1 -0
  1336. package/dist/runtime/run/recovery-binding-verdict.js +70 -0
  1337. package/dist/runtime/run/recovery-binding-verdict.js.map +1 -0
  1338. package/dist/runtime/run/recovery-corridor.d.ts +103 -0
  1339. package/dist/runtime/run/recovery-corridor.d.ts.map +1 -0
  1340. package/dist/runtime/run/recovery-corridor.js +178 -0
  1341. package/dist/runtime/run/recovery-corridor.js.map +1 -0
  1342. package/dist/runtime/run/recovery-selection.d.ts +18 -0
  1343. package/dist/runtime/run/recovery-selection.d.ts.map +1 -0
  1344. package/dist/runtime/run/recovery-selection.js +43 -0
  1345. package/dist/runtime/run/recovery-selection.js.map +1 -0
  1346. package/dist/runtime/run/relay-guidance.d.ts +40 -0
  1347. package/dist/runtime/run/relay-guidance.d.ts.map +1 -0
  1348. package/dist/runtime/run/relay-guidance.js +306 -0
  1349. package/dist/runtime/run/relay-guidance.js.map +1 -0
  1350. package/dist/runtime/run/relay-support.d.ts +29 -0
  1351. package/dist/runtime/run/relay-support.d.ts.map +1 -0
  1352. package/dist/runtime/run/relay-support.js +436 -0
  1353. package/dist/runtime/run/relay-support.js.map +1 -0
  1354. package/dist/runtime/run/result-recovery.d.ts +16 -0
  1355. package/dist/runtime/run/result-recovery.d.ts.map +1 -0
  1356. package/dist/runtime/run/result-recovery.js +73 -0
  1357. package/dist/runtime/run/result-recovery.js.map +1 -0
  1358. package/dist/runtime/run/result-writer.d.ts +17 -0
  1359. package/dist/runtime/run/result-writer.d.ts.map +1 -0
  1360. package/dist/runtime/run/result-writer.js +5 -0
  1361. package/dist/runtime/run/result-writer.js.map +1 -0
  1362. package/dist/runtime/run/resume-lock.d.ts +29 -0
  1363. package/dist/runtime/run/resume-lock.d.ts.map +1 -0
  1364. package/dist/runtime/run/resume-lock.js +166 -0
  1365. package/dist/runtime/run/resume-lock.js.map +1 -0
  1366. package/dist/runtime/run/reuse-children.d.ts +24 -0
  1367. package/dist/runtime/run/reuse-children.d.ts.map +1 -0
  1368. package/dist/runtime/run/reuse-children.js +107 -0
  1369. package/dist/runtime/run/reuse-children.js.map +1 -0
  1370. package/dist/runtime/run/run-boundary.d.ts +30 -0
  1371. package/dist/runtime/run/run-boundary.d.ts.map +1 -0
  1372. package/dist/runtime/run/run-boundary.js +110 -0
  1373. package/dist/runtime/run/run-boundary.js.map +1 -0
  1374. package/dist/runtime/run/run-close.d.ts +22 -0
  1375. package/dist/runtime/run/run-close.d.ts.map +1 -0
  1376. package/dist/runtime/run/run-close.js +228 -0
  1377. package/dist/runtime/run/run-close.js.map +1 -0
  1378. package/dist/runtime/run/run-context.d.ts +59 -0
  1379. package/dist/runtime/run/run-context.d.ts.map +1 -0
  1380. package/dist/runtime/run/run-context.js +2 -0
  1381. package/dist/runtime/run/run-context.js.map +1 -0
  1382. package/dist/runtime/run/run-transition.d.ts +43 -0
  1383. package/dist/runtime/run/run-transition.d.ts.map +1 -0
  1384. package/dist/runtime/run/run-transition.js +52 -0
  1385. package/dist/runtime/run/run-transition.js.map +1 -0
  1386. package/dist/runtime/run/run-values.d.ts +80 -0
  1387. package/dist/runtime/run/run-values.d.ts.map +1 -0
  1388. package/dist/runtime/run/run-values.js +85 -0
  1389. package/dist/runtime/run/run-values.js.map +1 -0
  1390. package/dist/runtime/run/slice-corridor.d.ts +27 -0
  1391. package/dist/runtime/run/slice-corridor.d.ts.map +1 -0
  1392. package/dist/runtime/run/slice-corridor.js +99 -0
  1393. package/dist/runtime/run/slice-corridor.js.map +1 -0
  1394. package/dist/runtime/run/trace-evidence.d.ts +34 -0
  1395. package/dist/runtime/run/trace-evidence.d.ts.map +1 -0
  1396. package/dist/runtime/run/trace-evidence.js +148 -0
  1397. package/dist/runtime/run/trace-evidence.js.map +1 -0
  1398. package/dist/runtime/run/until-budget.d.ts +12 -0
  1399. package/dist/runtime/run/until-budget.d.ts.map +1 -0
  1400. package/dist/runtime/run/until-budget.js +102 -0
  1401. package/dist/runtime/run/until-budget.js.map +1 -0
  1402. package/dist/runtime/run/until-corridor.d.ts +32 -0
  1403. package/dist/runtime/run/until-corridor.d.ts.map +1 -0
  1404. package/dist/runtime/run/until-corridor.js +161 -0
  1405. package/dist/runtime/run/until-corridor.js.map +1 -0
  1406. package/dist/runtime/run-files/report-validator.d.ts +3 -0
  1407. package/dist/runtime/run-files/report-validator.d.ts.map +1 -0
  1408. package/dist/runtime/run-files/report-validator.js +29 -0
  1409. package/dist/runtime/run-files/report-validator.js.map +1 -0
  1410. package/dist/runtime/run-files/run-file-store.d.ts +13 -0
  1411. package/dist/runtime/run-files/run-file-store.d.ts.map +1 -0
  1412. package/dist/runtime/run-files/run-file-store.js +42 -0
  1413. package/dist/runtime/run-files/run-file-store.js.map +1 -0
  1414. package/dist/runtime/trace/trace-fields.d.ts +97 -0
  1415. package/dist/runtime/trace/trace-fields.d.ts.map +1 -0
  1416. package/dist/runtime/trace/trace-fields.js +181 -0
  1417. package/dist/runtime/trace/trace-fields.js.map +1 -0
  1418. package/dist/runtime/trace/trace-store.d.ts +20 -0
  1419. package/dist/runtime/trace/trace-store.d.ts.map +1 -0
  1420. package/dist/runtime/trace/trace-store.js +157 -0
  1421. package/dist/runtime/trace/trace-store.js.map +1 -0
  1422. package/dist/schemas/acceptance-criteria.d.ts +94 -0
  1423. package/dist/schemas/acceptance-criteria.d.ts.map +1 -0
  1424. package/dist/schemas/acceptance-criteria.js +42 -0
  1425. package/dist/schemas/acceptance-criteria.js.map +1 -0
  1426. package/dist/schemas/axes.d.ts +45 -0
  1427. package/dist/schemas/axes.d.ts.map +1 -0
  1428. package/dist/schemas/axes.js +79 -0
  1429. package/dist/schemas/axes.js.map +1 -0
  1430. package/dist/schemas/axis-config-requirement.d.ts +20 -0
  1431. package/dist/schemas/axis-config-requirement.d.ts.map +1 -0
  1432. package/dist/schemas/axis-config-requirement.js +24 -0
  1433. package/dist/schemas/axis-config-requirement.js.map +1 -0
  1434. package/dist/schemas/builtin-report-schemas.d.ts +6 -0
  1435. package/dist/schemas/builtin-report-schemas.d.ts.map +1 -0
  1436. package/dist/schemas/builtin-report-schemas.js +155 -0
  1437. package/dist/schemas/builtin-report-schemas.js.map +1 -0
  1438. package/dist/schemas/change-kind.d.ts +75 -0
  1439. package/dist/schemas/change-kind.d.ts.map +1 -0
  1440. package/dist/schemas/change-kind.js +35 -0
  1441. package/dist/schemas/change-kind.js.map +1 -0
  1442. package/dist/schemas/change-packet.d.ts +42 -0
  1443. package/dist/schemas/change-packet.d.ts.map +1 -0
  1444. package/dist/schemas/change-packet.js +26 -0
  1445. package/dist/schemas/change-packet.js.map +1 -0
  1446. package/dist/schemas/check.d.ts +174 -0
  1447. package/dist/schemas/check.d.ts.map +1 -0
  1448. package/dist/schemas/check.js +162 -0
  1449. package/dist/schemas/check.js.map +1 -0
  1450. package/dist/schemas/checkpoint-boundary.d.ts +605 -0
  1451. package/dist/schemas/checkpoint-boundary.d.ts.map +1 -0
  1452. package/dist/schemas/checkpoint-boundary.js +243 -0
  1453. package/dist/schemas/checkpoint-boundary.js.map +1 -0
  1454. package/dist/schemas/compiled-flow.d.ts +1065 -0
  1455. package/dist/schemas/compiled-flow.d.ts.map +1 -0
  1456. package/dist/schemas/compiled-flow.js +331 -0
  1457. package/dist/schemas/compiled-flow.js.map +1 -0
  1458. package/dist/schemas/config.d.ts +905 -0
  1459. package/dist/schemas/config.d.ts.map +1 -0
  1460. package/dist/schemas/config.js +240 -0
  1461. package/dist/schemas/config.js.map +1 -0
  1462. package/dist/schemas/connector.d.ts +216 -0
  1463. package/dist/schemas/connector.d.ts.map +1 -0
  1464. package/dist/schemas/connector.js +150 -0
  1465. package/dist/schemas/connector.js.map +1 -0
  1466. package/dist/schemas/context-request.d.ts +14 -0
  1467. package/dist/schemas/context-request.d.ts.map +1 -0
  1468. package/dist/schemas/context-request.js +33 -0
  1469. package/dist/schemas/context-request.js.map +1 -0
  1470. package/dist/schemas/continuity.d.ts +362 -0
  1471. package/dist/schemas/continuity.d.ts.map +1 -0
  1472. package/dist/schemas/continuity.js +232 -0
  1473. package/dist/schemas/continuity.js.map +1 -0
  1474. package/dist/schemas/custom-flow-descriptor.d.ts +10 -0
  1475. package/dist/schemas/custom-flow-descriptor.d.ts.map +1 -0
  1476. package/dist/schemas/custom-flow-descriptor.js +12 -0
  1477. package/dist/schemas/custom-flow-descriptor.js.map +1 -0
  1478. package/dist/schemas/depth.d.ts +16 -0
  1479. package/dist/schemas/depth.d.ts.map +1 -0
  1480. package/dist/schemas/depth.js +7 -0
  1481. package/dist/schemas/depth.js.map +1 -0
  1482. package/dist/schemas/engine-flags.d.ts +44 -0
  1483. package/dist/schemas/engine-flags.d.ts.map +1 -0
  1484. package/dist/schemas/engine-flags.js +104 -0
  1485. package/dist/schemas/engine-flags.js.map +1 -0
  1486. package/dist/schemas/equipment-discovery.d.ts +8 -0
  1487. package/dist/schemas/equipment-discovery.d.ts.map +1 -0
  1488. package/dist/schemas/equipment-discovery.js +36 -0
  1489. package/dist/schemas/equipment-discovery.js.map +1 -0
  1490. package/dist/schemas/equipment-scope.d.ts +42 -0
  1491. package/dist/schemas/equipment-scope.d.ts.map +1 -0
  1492. package/dist/schemas/equipment-scope.js +84 -0
  1493. package/dist/schemas/equipment-scope.js.map +1 -0
  1494. package/dist/schemas/flow-block-definitions.d.ts +59 -0
  1495. package/dist/schemas/flow-block-definitions.d.ts.map +1 -0
  1496. package/dist/schemas/flow-block-definitions.js +867 -0
  1497. package/dist/schemas/flow-block-definitions.js.map +1 -0
  1498. package/dist/schemas/flow-blocks.d.ts +301 -0
  1499. package/dist/schemas/flow-blocks.d.ts.map +1 -0
  1500. package/dist/schemas/flow-blocks.js +223 -0
  1501. package/dist/schemas/flow-blocks.js.map +1 -0
  1502. package/dist/schemas/flow-schematic-policy.d.ts +6 -0
  1503. package/dist/schemas/flow-schematic-policy.d.ts.map +1 -0
  1504. package/dist/schemas/flow-schematic-policy.js +8 -0
  1505. package/dist/schemas/flow-schematic-policy.js.map +1 -0
  1506. package/dist/schemas/flow-schematic.d.ts +1407 -0
  1507. package/dist/schemas/flow-schematic.d.ts.map +1 -0
  1508. package/dist/schemas/flow-schematic.js +944 -0
  1509. package/dist/schemas/flow-schematic.js.map +1 -0
  1510. package/dist/schemas/guidance-decision.d.ts +728 -0
  1511. package/dist/schemas/guidance-decision.d.ts.map +1 -0
  1512. package/dist/schemas/guidance-decision.js +527 -0
  1513. package/dist/schemas/guidance-decision.js.map +1 -0
  1514. package/dist/schemas/hashing.d.ts +6 -0
  1515. package/dist/schemas/hashing.d.ts.map +1 -0
  1516. package/dist/schemas/hashing.js +27 -0
  1517. package/dist/schemas/hashing.js.map +1 -0
  1518. package/dist/schemas/history.d.ts +1735 -0
  1519. package/dist/schemas/history.d.ts.map +1 -0
  1520. package/dist/schemas/history.js +662 -0
  1521. package/dist/schemas/history.js.map +1 -0
  1522. package/dist/schemas/host.d.ts +16 -0
  1523. package/dist/schemas/host.d.ts.map +1 -0
  1524. package/dist/schemas/host.js +8 -0
  1525. package/dist/schemas/host.js.map +1 -0
  1526. package/dist/schemas/ids.d.ts +18 -0
  1527. package/dist/schemas/ids.d.ts.map +1 -0
  1528. package/dist/schemas/ids.js +17 -0
  1529. package/dist/schemas/ids.js.map +1 -0
  1530. package/dist/schemas/index.d.ts +60 -0
  1531. package/dist/schemas/index.d.ts.map +1 -0
  1532. package/dist/schemas/index.js +60 -0
  1533. package/dist/schemas/index.js.map +1 -0
  1534. package/dist/schemas/json.d.ts +10 -0
  1535. package/dist/schemas/json.d.ts.map +1 -0
  1536. package/dist/schemas/json.js +12 -0
  1537. package/dist/schemas/json.js.map +1 -0
  1538. package/dist/schemas/manifest.d.ts +15 -0
  1539. package/dist/schemas/manifest.d.ts.map +1 -0
  1540. package/dist/schemas/manifest.js +61 -0
  1541. package/dist/schemas/manifest.js.map +1 -0
  1542. package/dist/schemas/memory-input.d.ts +94 -0
  1543. package/dist/schemas/memory-input.d.ts.map +1 -0
  1544. package/dist/schemas/memory-input.js +119 -0
  1545. package/dist/schemas/memory-input.js.map +1 -0
  1546. package/dist/schemas/operator-summary.d.ts +369 -0
  1547. package/dist/schemas/operator-summary.d.ts.map +1 -0
  1548. package/dist/schemas/operator-summary.js +207 -0
  1549. package/dist/schemas/operator-summary.js.map +1 -0
  1550. package/dist/schemas/policy-envelope.d.ts +1655 -0
  1551. package/dist/schemas/policy-envelope.d.ts.map +1 -0
  1552. package/dist/schemas/policy-envelope.js +330 -0
  1553. package/dist/schemas/policy-envelope.js.map +1 -0
  1554. package/dist/schemas/power.d.ts +26 -0
  1555. package/dist/schemas/power.d.ts.map +1 -0
  1556. package/dist/schemas/power.js +38 -0
  1557. package/dist/schemas/power.js.map +1 -0
  1558. package/dist/schemas/process-evidence.d.ts +156 -0
  1559. package/dist/schemas/process-evidence.d.ts.map +1 -0
  1560. package/dist/schemas/process-evidence.js +142 -0
  1561. package/dist/schemas/process-evidence.js.map +1 -0
  1562. package/dist/schemas/process.d.ts +16 -0
  1563. package/dist/schemas/process.d.ts.map +1 -0
  1564. package/dist/schemas/process.js +7 -0
  1565. package/dist/schemas/process.js.map +1 -0
  1566. package/dist/schemas/progress-event.d.ts +1505 -0
  1567. package/dist/schemas/progress-event.d.ts.map +1 -0
  1568. package/dist/schemas/progress-event.js +246 -0
  1569. package/dist/schemas/progress-event.js.map +1 -0
  1570. package/dist/schemas/proof-assessment.d.ts +542 -0
  1571. package/dist/schemas/proof-assessment.d.ts.map +1 -0
  1572. package/dist/schemas/proof-assessment.js +336 -0
  1573. package/dist/schemas/proof-assessment.js.map +1 -0
  1574. package/dist/schemas/recovery-route-kind.d.ts +229 -0
  1575. package/dist/schemas/recovery-route-kind.d.ts.map +1 -0
  1576. package/dist/schemas/recovery-route-kind.js +242 -0
  1577. package/dist/schemas/recovery-route-kind.js.map +1 -0
  1578. package/dist/schemas/ref.d.ts +51 -0
  1579. package/dist/schemas/ref.d.ts.map +1 -0
  1580. package/dist/schemas/ref.js +96 -0
  1581. package/dist/schemas/ref.js.map +1 -0
  1582. package/dist/schemas/report-file-surface.d.ts +44 -0
  1583. package/dist/schemas/report-file-surface.d.ts.map +1 -0
  1584. package/dist/schemas/report-file-surface.js +22 -0
  1585. package/dist/schemas/report-file-surface.js.map +1 -0
  1586. package/dist/schemas/result.d.ts +23 -0
  1587. package/dist/schemas/result.d.ts.map +1 -0
  1588. package/dist/schemas/result.js +55 -0
  1589. package/dist/schemas/result.js.map +1 -0
  1590. package/dist/schemas/role.d.ts +8 -0
  1591. package/dist/schemas/role.d.ts.map +1 -0
  1592. package/dist/schemas/role.js +5 -0
  1593. package/dist/schemas/role.js.map +1 -0
  1594. package/dist/schemas/route-policy.d.ts +5 -0
  1595. package/dist/schemas/route-policy.d.ts.map +1 -0
  1596. package/dist/schemas/route-policy.js +9 -0
  1597. package/dist/schemas/route-policy.js.map +1 -0
  1598. package/dist/schemas/routing-contract-schemas.d.ts +11 -0
  1599. package/dist/schemas/routing-contract-schemas.d.ts.map +1 -0
  1600. package/dist/schemas/routing-contract-schemas.js +72 -0
  1601. package/dist/schemas/routing-contract-schemas.js.map +1 -0
  1602. package/dist/schemas/rubric.d.ts +74 -0
  1603. package/dist/schemas/rubric.d.ts.map +1 -0
  1604. package/dist/schemas/rubric.js +125 -0
  1605. package/dist/schemas/rubric.js.map +1 -0
  1606. package/dist/schemas/run-envelope.d.ts +1333 -0
  1607. package/dist/schemas/run-envelope.d.ts.map +1 -0
  1608. package/dist/schemas/run-envelope.js +578 -0
  1609. package/dist/schemas/run-envelope.js.map +1 -0
  1610. package/dist/schemas/run-status.d.ts +216 -0
  1611. package/dist/schemas/run-status.d.ts.map +1 -0
  1612. package/dist/schemas/run-status.js +146 -0
  1613. package/dist/schemas/run-status.js.map +1 -0
  1614. package/dist/schemas/run.d.ts +2866 -0
  1615. package/dist/schemas/run.d.ts.map +1 -0
  1616. package/dist/schemas/run.js +647 -0
  1617. package/dist/schemas/run.js.map +1 -0
  1618. package/dist/schemas/runtime-evidence.d.ts +152 -0
  1619. package/dist/schemas/runtime-evidence.d.ts.map +1 -0
  1620. package/dist/schemas/runtime-evidence.js +127 -0
  1621. package/dist/schemas/runtime-evidence.js.map +1 -0
  1622. package/dist/schemas/runtime-source.d.ts +55 -0
  1623. package/dist/schemas/runtime-source.d.ts.map +1 -0
  1624. package/dist/schemas/runtime-source.js +40 -0
  1625. package/dist/schemas/runtime-source.js.map +1 -0
  1626. package/dist/schemas/scalars.d.ts +21 -0
  1627. package/dist/schemas/scalars.d.ts.map +1 -0
  1628. package/dist/schemas/scalars.js +51 -0
  1629. package/dist/schemas/scalars.js.map +1 -0
  1630. package/dist/schemas/selection-policy.d.ts +764 -0
  1631. package/dist/schemas/selection-policy.d.ts.map +1 -0
  1632. package/dist/schemas/selection-policy.js +209 -0
  1633. package/dist/schemas/selection-policy.js.map +1 -0
  1634. package/dist/schemas/skill-hook.d.ts +214 -0
  1635. package/dist/schemas/skill-hook.d.ts.map +1 -0
  1636. package/dist/schemas/skill-hook.js +279 -0
  1637. package/dist/schemas/skill-hook.js.map +1 -0
  1638. package/dist/schemas/skill.d.ts +59 -0
  1639. package/dist/schemas/skill.d.ts.map +1 -0
  1640. package/dist/schemas/skill.js +82 -0
  1641. package/dist/schemas/skill.js.map +1 -0
  1642. package/dist/schemas/snapshot.d.ts +108 -0
  1643. package/dist/schemas/snapshot.d.ts.map +1 -0
  1644. package/dist/schemas/snapshot.js +40 -0
  1645. package/dist/schemas/snapshot.js.map +1 -0
  1646. package/dist/schemas/stage.d.ts +85 -0
  1647. package/dist/schemas/stage.d.ts.map +1 -0
  1648. package/dist/schemas/stage.js +58 -0
  1649. package/dist/schemas/stage.js.map +1 -0
  1650. package/dist/schemas/step.d.ts +2455 -0
  1651. package/dist/schemas/step.d.ts.map +1 -0
  1652. package/dist/schemas/step.js +567 -0
  1653. package/dist/schemas/step.js.map +1 -0
  1654. package/dist/schemas/trace-entry.d.ts +2573 -0
  1655. package/dist/schemas/trace-entry.d.ts.map +1 -0
  1656. package/dist/schemas/trace-entry.js +973 -0
  1657. package/dist/schemas/trace-entry.js.map +1 -0
  1658. package/dist/schemas/verification.d.ts +47 -0
  1659. package/dist/schemas/verification.d.ts.map +1 -0
  1660. package/dist/schemas/verification.js +122 -0
  1661. package/dist/schemas/verification.js.map +1 -0
  1662. package/dist/schemas/work-contract-projection.d.ts +473 -0
  1663. package/dist/schemas/work-contract-projection.d.ts.map +1 -0
  1664. package/dist/schemas/work-contract-projection.js +232 -0
  1665. package/dist/schemas/work-contract-projection.js.map +1 -0
  1666. package/dist/selection/connector-planning.d.ts +23 -0
  1667. package/dist/selection/connector-planning.d.ts.map +1 -0
  1668. package/dist/selection/connector-planning.js +31 -0
  1669. package/dist/selection/connector-planning.js.map +1 -0
  1670. package/dist/selection/power-inference.d.ts +20 -0
  1671. package/dist/selection/power-inference.d.ts.map +1 -0
  1672. package/dist/selection/power-inference.js +74 -0
  1673. package/dist/selection/power-inference.js.map +1 -0
  1674. package/dist/selection/power-tiers.d.ts +24 -0
  1675. package/dist/selection/power-tiers.d.ts.map +1 -0
  1676. package/dist/selection/power-tiers.js +115 -0
  1677. package/dist/selection/power-tiers.js.map +1 -0
  1678. package/dist/selection/relay-selection.d.ts +11 -0
  1679. package/dist/selection/relay-selection.d.ts.map +1 -0
  1680. package/dist/selection/relay-selection.js +57 -0
  1681. package/dist/selection/relay-selection.js.map +1 -0
  1682. package/dist/selection/selection-resolver.d.ts +23 -0
  1683. package/dist/selection/selection-resolver.d.ts.map +1 -0
  1684. package/dist/selection/selection-resolver.js +153 -0
  1685. package/dist/selection/selection-resolver.js.map +1 -0
  1686. package/dist/shared/atomic-io.d.ts +11 -0
  1687. package/dist/shared/atomic-io.d.ts.map +1 -0
  1688. package/dist/shared/atomic-io.js +29 -0
  1689. package/dist/shared/atomic-io.js.map +1 -0
  1690. package/dist/shared/checkpoint-auto-resolution.d.ts +17 -0
  1691. package/dist/shared/checkpoint-auto-resolution.d.ts.map +1 -0
  1692. package/dist/shared/checkpoint-auto-resolution.js +72 -0
  1693. package/dist/shared/checkpoint-auto-resolution.js.map +1 -0
  1694. package/dist/shared/checkpoint-boundary.d.ts +15 -0
  1695. package/dist/shared/checkpoint-boundary.d.ts.map +1 -0
  1696. package/dist/shared/checkpoint-boundary.js +125 -0
  1697. package/dist/shared/checkpoint-boundary.js.map +1 -0
  1698. package/dist/shared/config-loader.d.ts +20 -0
  1699. package/dist/shared/config-loader.d.ts.map +1 -0
  1700. package/dist/shared/config-loader.js +140 -0
  1701. package/dist/shared/config-loader.js.map +1 -0
  1702. package/dist/shared/connector-relay.d.ts +39 -0
  1703. package/dist/shared/connector-relay.d.ts.map +1 -0
  1704. package/dist/shared/connector-relay.js +2 -0
  1705. package/dist/shared/connector-relay.js.map +1 -0
  1706. package/dist/shared/control-plane-gitignore.d.ts +10 -0
  1707. package/dist/shared/control-plane-gitignore.d.ts.map +1 -0
  1708. package/dist/shared/control-plane-gitignore.js +46 -0
  1709. package/dist/shared/control-plane-gitignore.js.map +1 -0
  1710. package/dist/shared/control-plane-paths.d.ts +36 -0
  1711. package/dist/shared/control-plane-paths.d.ts.map +1 -0
  1712. package/dist/shared/control-plane-paths.js +71 -0
  1713. package/dist/shared/control-plane-paths.js.map +1 -0
  1714. package/dist/shared/equipment-enforcement.d.ts +11 -0
  1715. package/dist/shared/equipment-enforcement.d.ts.map +1 -0
  1716. package/dist/shared/equipment-enforcement.js +37 -0
  1717. package/dist/shared/equipment-enforcement.js.map +1 -0
  1718. package/dist/shared/fanout-aggregate-report.d.ts +32 -0
  1719. package/dist/shared/fanout-aggregate-report.d.ts.map +1 -0
  1720. package/dist/shared/fanout-aggregate-report.js +73 -0
  1721. package/dist/shared/fanout-aggregate-report.js.map +1 -0
  1722. package/dist/shared/fanout-branch-template.d.ts +4 -0
  1723. package/dist/shared/fanout-branch-template.d.ts.map +1 -0
  1724. package/dist/shared/fanout-branch-template.js +55 -0
  1725. package/dist/shared/fanout-branch-template.js.map +1 -0
  1726. package/dist/shared/git-state-command.d.ts +19 -0
  1727. package/dist/shared/git-state-command.d.ts.map +1 -0
  1728. package/dist/shared/git-state-command.js +52 -0
  1729. package/dist/shared/git-state-command.js.map +1 -0
  1730. package/dist/shared/git-state.d.ts +3 -0
  1731. package/dist/shared/git-state.d.ts.map +1 -0
  1732. package/dist/shared/git-state.js +163 -0
  1733. package/dist/shared/git-state.js.map +1 -0
  1734. package/dist/shared/git-state.ts +175 -0
  1735. package/dist/shared/html/checkpoint-page.d.ts +41 -0
  1736. package/dist/shared/html/checkpoint-page.d.ts.map +1 -0
  1737. package/dist/shared/html/checkpoint-page.js +108 -0
  1738. package/dist/shared/html/checkpoint-page.js.map +1 -0
  1739. package/dist/shared/html/index.d.ts +6 -0
  1740. package/dist/shared/html/index.d.ts.map +1 -0
  1741. package/dist/shared/html/index.js +16 -0
  1742. package/dist/shared/html/index.js.map +1 -0
  1743. package/dist/shared/html/multi-variant.d.ts +56 -0
  1744. package/dist/shared/html/multi-variant.d.ts.map +1 -0
  1745. package/dist/shared/html/multi-variant.js +183 -0
  1746. package/dist/shared/html/multi-variant.js.map +1 -0
  1747. package/dist/shared/html/page.d.ts +5 -0
  1748. package/dist/shared/html/page.d.ts.map +1 -0
  1749. package/dist/shared/html/page.js +42 -0
  1750. package/dist/shared/html/page.js.map +1 -0
  1751. package/dist/shared/html/projector.d.ts +38 -0
  1752. package/dist/shared/html/projector.d.ts.map +1 -0
  1753. package/dist/shared/html/projector.js +7 -0
  1754. package/dist/shared/html/projector.js.map +1 -0
  1755. package/dist/shared/html/react-page.d.ts +10 -0
  1756. package/dist/shared/html/react-page.d.ts.map +1 -0
  1757. package/dist/shared/html/react-page.js +31 -0
  1758. package/dist/shared/html/react-page.js.map +1 -0
  1759. package/dist/shared/html/report-components.d.ts +57 -0
  1760. package/dist/shared/html/report-components.d.ts.map +1 -0
  1761. package/dist/shared/html/report-components.js +69 -0
  1762. package/dist/shared/html/report-components.js.map +1 -0
  1763. package/dist/shared/html/ui/alert.d.ts +10 -0
  1764. package/dist/shared/html/ui/alert.d.ts.map +1 -0
  1765. package/dist/shared/html/ui/alert.js +28 -0
  1766. package/dist/shared/html/ui/alert.js.map +1 -0
  1767. package/dist/shared/html/ui/badge.d.ts +11 -0
  1768. package/dist/shared/html/ui/badge.d.ts.map +1 -0
  1769. package/dist/shared/html/ui/badge.js +32 -0
  1770. package/dist/shared/html/ui/badge.js.map +1 -0
  1771. package/dist/shared/html/ui/button.d.ts +13 -0
  1772. package/dist/shared/html/ui/button.d.ts.map +1 -0
  1773. package/dist/shared/html/ui/button.js +36 -0
  1774. package/dist/shared/html/ui/button.js.map +1 -0
  1775. package/dist/shared/html/ui/card.d.ts +10 -0
  1776. package/dist/shared/html/ui/card.d.ts.map +1 -0
  1777. package/dist/shared/html/ui/card.js +25 -0
  1778. package/dist/shared/html/ui/card.js.map +1 -0
  1779. package/dist/shared/html/ui/checkbox.d.ts +4 -0
  1780. package/dist/shared/html/ui/checkbox.d.ts.map +1 -0
  1781. package/dist/shared/html/ui/checkbox.js +7 -0
  1782. package/dist/shared/html/ui/checkbox.js.map +1 -0
  1783. package/dist/shared/html/ui/collapsible.d.ts +6 -0
  1784. package/dist/shared/html/ui/collapsible.d.ts.map +1 -0
  1785. package/dist/shared/html/ui/collapsible.js +13 -0
  1786. package/dist/shared/html/ui/collapsible.js.map +1 -0
  1787. package/dist/shared/html/ui/css.generated.d.ts +2 -0
  1788. package/dist/shared/html/ui/css.generated.d.ts.map +1 -0
  1789. package/dist/shared/html/ui/css.generated.js +5 -0
  1790. package/dist/shared/html/ui/css.generated.js.map +1 -0
  1791. package/dist/shared/html/ui/field.d.ts +26 -0
  1792. package/dist/shared/html/ui/field.d.ts.map +1 -0
  1793. package/dist/shared/html/ui/field.js +79 -0
  1794. package/dist/shared/html/ui/field.js.map +1 -0
  1795. package/dist/shared/html/ui/index.d.ts +16 -0
  1796. package/dist/shared/html/ui/index.d.ts.map +1 -0
  1797. package/dist/shared/html/ui/index.js +20 -0
  1798. package/dist/shared/html/ui/index.js.map +1 -0
  1799. package/dist/shared/html/ui/input.d.ts +5 -0
  1800. package/dist/shared/html/ui/input.d.ts.map +1 -0
  1801. package/dist/shared/html/ui/input.js +11 -0
  1802. package/dist/shared/html/ui/input.js.map +1 -0
  1803. package/dist/shared/html/ui/kbd.d.ts +5 -0
  1804. package/dist/shared/html/ui/kbd.d.ts.map +1 -0
  1805. package/dist/shared/html/ui/kbd.js +10 -0
  1806. package/dist/shared/html/ui/kbd.js.map +1 -0
  1807. package/dist/shared/html/ui/label.d.ts +4 -0
  1808. package/dist/shared/html/ui/label.d.ts.map +1 -0
  1809. package/dist/shared/html/ui/label.js +9 -0
  1810. package/dist/shared/html/ui/label.js.map +1 -0
  1811. package/dist/shared/html/ui/radio-group.d.ts +5 -0
  1812. package/dist/shared/html/ui/radio-group.d.ts.map +1 -0
  1813. package/dist/shared/html/ui/radio-group.js +10 -0
  1814. package/dist/shared/html/ui/radio-group.js.map +1 -0
  1815. package/dist/shared/html/ui/separator.d.ts +4 -0
  1816. package/dist/shared/html/ui/separator.d.ts.map +1 -0
  1817. package/dist/shared/html/ui/separator.js +11 -0
  1818. package/dist/shared/html/ui/separator.js.map +1 -0
  1819. package/dist/shared/html/ui/table.d.ts +11 -0
  1820. package/dist/shared/html/ui/table.d.ts.map +1 -0
  1821. package/dist/shared/html/ui/table.js +28 -0
  1822. package/dist/shared/html/ui/table.js.map +1 -0
  1823. package/dist/shared/html/ui/textarea.d.ts +4 -0
  1824. package/dist/shared/html/ui/textarea.d.ts.map +1 -0
  1825. package/dist/shared/html/ui/textarea.js +7 -0
  1826. package/dist/shared/html/ui/textarea.js.map +1 -0
  1827. package/dist/shared/html/ui/utils.d.ts +3 -0
  1828. package/dist/shared/html/ui/utils.d.ts.map +1 -0
  1829. package/dist/shared/html/ui/utils.js +11 -0
  1830. package/dist/shared/html/ui/utils.js.map +1 -0
  1831. package/dist/shared/json-extraction.d.ts +2 -0
  1832. package/dist/shared/json-extraction.d.ts.map +1 -0
  1833. package/dist/shared/json-extraction.js +68 -0
  1834. package/dist/shared/json-extraction.js.map +1 -0
  1835. package/dist/shared/manifest-snapshot.d.ts +13 -0
  1836. package/dist/shared/manifest-snapshot.d.ts.map +1 -0
  1837. package/dist/shared/manifest-snapshot.js +48 -0
  1838. package/dist/shared/manifest-snapshot.js.map +1 -0
  1839. package/dist/shared/operator-summary/explore.d.ts +3 -0
  1840. package/dist/shared/operator-summary/explore.d.ts.map +1 -0
  1841. package/dist/shared/operator-summary/explore.js +208 -0
  1842. package/dist/shared/operator-summary/explore.js.map +1 -0
  1843. package/dist/shared/operator-summary/index.d.ts +6 -0
  1844. package/dist/shared/operator-summary/index.d.ts.map +1 -0
  1845. package/dist/shared/operator-summary/index.js +10 -0
  1846. package/dist/shared/operator-summary/index.js.map +1 -0
  1847. package/dist/shared/operator-summary/json.d.ts +10 -0
  1848. package/dist/shared/operator-summary/json.d.ts.map +1 -0
  1849. package/dist/shared/operator-summary/json.js +63 -0
  1850. package/dist/shared/operator-summary/json.js.map +1 -0
  1851. package/dist/shared/operator-summary/projections.d.ts +4 -0
  1852. package/dist/shared/operator-summary/projections.d.ts.map +1 -0
  1853. package/dist/shared/operator-summary/projections.js +452 -0
  1854. package/dist/shared/operator-summary/projections.js.map +1 -0
  1855. package/dist/shared/operator-summary/projector.d.ts +14 -0
  1856. package/dist/shared/operator-summary/projector.d.ts.map +1 -0
  1857. package/dist/shared/operator-summary/projector.js +12 -0
  1858. package/dist/shared/operator-summary/projector.js.map +1 -0
  1859. package/dist/shared/operator-summary/text.d.ts +11 -0
  1860. package/dist/shared/operator-summary/text.d.ts.map +1 -0
  1861. package/dist/shared/operator-summary/text.js +92 -0
  1862. package/dist/shared/operator-summary/text.js.map +1 -0
  1863. package/dist/shared/outcome.d.ts +13 -0
  1864. package/dist/shared/outcome.d.ts.map +1 -0
  1865. package/dist/shared/outcome.js +76 -0
  1866. package/dist/shared/outcome.js.map +1 -0
  1867. package/dist/shared/progress-output.d.ts +12 -0
  1868. package/dist/shared/progress-output.d.ts.map +1 -0
  1869. package/dist/shared/progress-output.js +50 -0
  1870. package/dist/shared/progress-output.js.map +1 -0
  1871. package/dist/shared/proof-assessment.d.ts +7 -0
  1872. package/dist/shared/proof-assessment.d.ts.map +1 -0
  1873. package/dist/shared/proof-assessment.js +67 -0
  1874. package/dist/shared/proof-assessment.js.map +1 -0
  1875. package/dist/shared/proof-plan.d.ts +26 -0
  1876. package/dist/shared/proof-plan.d.ts.map +1 -0
  1877. package/dist/shared/proof-plan.js +164 -0
  1878. package/dist/shared/proof-plan.js.map +1 -0
  1879. package/dist/shared/relay-runtime-types.d.ts +30 -0
  1880. package/dist/shared/relay-runtime-types.d.ts.map +1 -0
  1881. package/dist/shared/relay-runtime-types.js +2 -0
  1882. package/dist/shared/relay-runtime-types.js.map +1 -0
  1883. package/dist/shared/result-path.d.ts +3 -0
  1884. package/dist/shared/result-path.d.ts.map +1 -0
  1885. package/dist/shared/result-path.js +6 -0
  1886. package/dist/shared/result-path.js.map +1 -0
  1887. package/dist/shared/run-artifact-io.d.ts +3 -0
  1888. package/dist/shared/run-artifact-io.d.ts.map +1 -0
  1889. package/dist/shared/run-artifact-io.js +17 -0
  1890. package/dist/shared/run-artifact-io.js.map +1 -0
  1891. package/dist/shared/run-file-paths.d.ts +3 -0
  1892. package/dist/shared/run-file-paths.d.ts.map +1 -0
  1893. package/dist/shared/run-file-paths.js +72 -0
  1894. package/dist/shared/run-file-paths.js.map +1 -0
  1895. package/dist/shared/run-relative-path.d.ts +2 -0
  1896. package/dist/shared/run-relative-path.d.ts.map +1 -0
  1897. package/dist/shared/run-relative-path.js +43 -0
  1898. package/dist/shared/run-relative-path.js.map +1 -0
  1899. package/dist/shared/runtime-source.d.ts +24 -0
  1900. package/dist/shared/runtime-source.d.ts.map +1 -0
  1901. package/dist/shared/runtime-source.js +75 -0
  1902. package/dist/shared/runtime-source.js.map +1 -0
  1903. package/dist/shared/runtime-touched-files.d.ts +12 -0
  1904. package/dist/shared/runtime-touched-files.d.ts.map +1 -0
  1905. package/dist/shared/runtime-touched-files.js +106 -0
  1906. package/dist/shared/runtime-touched-files.js.map +1 -0
  1907. package/dist/shared/skill-loading.d.ts +22 -0
  1908. package/dist/shared/skill-loading.d.ts.map +1 -0
  1909. package/dist/shared/skill-loading.js +75 -0
  1910. package/dist/shared/skill-loading.js.map +1 -0
  1911. package/dist/shared/status-block-renderer.d.ts +16 -0
  1912. package/dist/shared/status-block-renderer.d.ts.map +1 -0
  1913. package/dist/shared/status-block-renderer.js +67 -0
  1914. package/dist/shared/status-block-renderer.js.map +1 -0
  1915. package/dist/shared/user-skill-registry.d.ts +18 -0
  1916. package/dist/shared/user-skill-registry.d.ts.map +1 -0
  1917. package/dist/shared/user-skill-registry.js +130 -0
  1918. package/dist/shared/user-skill-registry.js.map +1 -0
  1919. package/dist/shared/verification-resolver.d.ts +23 -0
  1920. package/dist/shared/verification-resolver.d.ts.map +1 -0
  1921. package/dist/shared/verification-resolver.js +162 -0
  1922. package/dist/shared/verification-resolver.js.map +1 -0
  1923. package/dist/shared/work-contract-projection.d.ts +15 -0
  1924. package/dist/shared/work-contract-projection.d.ts.map +1 -0
  1925. package/dist/shared/work-contract-projection.js +498 -0
  1926. package/dist/shared/work-contract-projection.js.map +1 -0
  1927. package/dist/shared/working-tree-changes.d.ts +18 -0
  1928. package/dist/shared/working-tree-changes.d.ts.map +1 -0
  1929. package/dist/shared/working-tree-changes.js +94 -0
  1930. package/dist/shared/working-tree-changes.js.map +1 -0
  1931. package/dist/shared/write-capable-worker-disclosure.d.ts +3 -0
  1932. package/dist/shared/write-capable-worker-disclosure.d.ts.map +1 -0
  1933. package/dist/shared/write-capable-worker-disclosure.js +6 -0
  1934. package/dist/shared/write-capable-worker-disclosure.js.map +1 -0
  1935. package/dist/shared/zod-to-response-schema.d.ts +4 -0
  1936. package/dist/shared/zod-to-response-schema.d.ts.map +1 -0
  1937. package/dist/shared/zod-to-response-schema.js +88 -0
  1938. package/dist/shared/zod-to-response-schema.js.map +1 -0
  1939. package/dist/skill-hooks/decision-packet.d.ts +10 -0
  1940. package/dist/skill-hooks/decision-packet.d.ts.map +1 -0
  1941. package/dist/skill-hooks/decision-packet.js +42 -0
  1942. package/dist/skill-hooks/decision-packet.js.map +1 -0
  1943. package/dist/skill-hooks/dispatch.d.ts +27 -0
  1944. package/dist/skill-hooks/dispatch.d.ts.map +1 -0
  1945. package/dist/skill-hooks/dispatch.js +167 -0
  1946. package/dist/skill-hooks/dispatch.js.map +1 -0
  1947. package/dist/skill-hooks/injection.d.ts +7 -0
  1948. package/dist/skill-hooks/injection.d.ts.map +1 -0
  1949. package/dist/skill-hooks/injection.js +50 -0
  1950. package/dist/skill-hooks/injection.js.map +1 -0
  1951. package/dist/skill-hooks/policy.d.ts +32 -0
  1952. package/dist/skill-hooks/policy.d.ts.map +1 -0
  1953. package/dist/skill-hooks/policy.js +104 -0
  1954. package/dist/skill-hooks/policy.js.map +1 -0
  1955. package/dist/skill-hooks/surface-sources.d.ts +8 -0
  1956. package/dist/skill-hooks/surface-sources.d.ts.map +1 -0
  1957. package/dist/skill-hooks/surface-sources.js +55 -0
  1958. package/dist/skill-hooks/surface-sources.js.map +1 -0
  1959. package/generated/flows/build/circuit.json +439 -0
  1960. package/generated/flows/build/circuit.work-contract.v0.json +1283 -0
  1961. package/generated/flows/catalog.json +29 -0
  1962. package/generated/flows/converge-proof/circuit.json +145 -0
  1963. package/generated/flows/converge-proof/circuit.work-contract.v0.json +275 -0
  1964. package/generated/flows/cross-tool-build/circuit.json +321 -0
  1965. package/generated/flows/cross-tool-build/circuit.work-contract.v0.json +1157 -0
  1966. package/generated/flows/explainer/circuit.json +610 -0
  1967. package/generated/flows/explainer/circuit.work-contract.v0.json +1552 -0
  1968. package/generated/flows/explore/circuit.json +217 -0
  1969. package/generated/flows/explore/circuit.work-contract.v0.json +717 -0
  1970. package/generated/flows/explore/tournament.json +412 -0
  1971. package/generated/flows/explore/tournament.work-contract.v0.json +983 -0
  1972. package/generated/flows/fix/circuit.json +563 -0
  1973. package/generated/flows/fix/circuit.work-contract.v0.json +2175 -0
  1974. package/generated/flows/fix/low.json +511 -0
  1975. package/generated/flows/fix/low.work-contract.v0.json +1921 -0
  1976. package/generated/flows/fix-until-green/circuit.json +183 -0
  1977. package/generated/flows/fix-until-green/circuit.work-contract.v0.json +438 -0
  1978. package/generated/flows/goal/circuit.json +638 -0
  1979. package/generated/flows/goal/circuit.work-contract.v0.json +2133 -0
  1980. package/generated/flows/prototype/circuit.json +278 -0
  1981. package/generated/flows/prototype/circuit.work-contract.v0.json +690 -0
  1982. package/generated/flows/prototype/tournament.json +505 -0
  1983. package/generated/flows/prototype/tournament.work-contract.v0.json +1122 -0
  1984. package/generated/flows/pursue/circuit.json +298 -0
  1985. package/generated/flows/pursue/circuit.work-contract.v0.json +944 -0
  1986. package/generated/flows/review/circuit.json +142 -0
  1987. package/generated/flows/review/circuit.work-contract.v0.json +392 -0
  1988. package/generated/flows/runtime-proof/circuit.json +91 -0
  1989. package/generated/flows/runtime-proof/circuit.work-contract.v0.json +183 -0
  1990. package/generated/flows/sweep/circuit.json +239 -0
  1991. package/generated/flows/sweep/circuit.work-contract.v0.json +590 -0
  1992. package/package.json +102 -0
  1993. package/plugins/version.json +3 -0
@@ -0,0 +1,1339 @@
1
+ // Flow-shape composition (experimental, default-OFF): the composer.
2
+ //
3
+ // Given a ROLE SET — the ordered set of (stage, block, executionKind) a task
4
+ // needs — the composer INVENTS a flow: it selects a registered actual for each
5
+ // block's output, synthesizes the contract wiring between steps, and emits a
6
+ // FlowSchematicAssemblySpec. It never authors a contract body; every actual it
7
+ // binds is one an existing flow already registered (see actual-menu.ts), bound
8
+ // through `contract_aliases` exactly as a hand-authored family would. The emitted
9
+ // spec is then handed to the SAME fail-closed path the engine runs
10
+ // (assembleFlowSchematic → compile → catalog gate); the composer adds no gate of
11
+ // its own.
12
+ //
13
+ // This is the "research problem" the Phase 2 spike named, rebuilt as the
14
+ // FEATURE path: the spike read the stripped block-catalog.json and wired block
15
+ // generics raw, so it tripped the typing gate on six unregistered generics. The
16
+ // composer reads the real catalog + registries and binds typed actuals, so the
17
+ // same gate passes. Whether that is enough to produce novel, valid, SENSIBLE
18
+ // flows across a task set is what the eval measures.
19
+ import { CONVERGE_JUDGMENT_CONTRACT, FANOUT_AGGREGATE_CONTRACT, FLOW_RESULT_CONTRACT, } from '../../schemas/builtin-report-schemas.js';
20
+ import { FLOW_BLOCK_DEFINITIONS, } from '../../schemas/flow-block-definitions.js';
21
+ import { CANONICAL_STAGES } from '../../schemas/stage.js';
22
+ import { findCloseBuilder } from '../registries/close-writers/registry.js';
23
+ import { findComposeBuilder } from '../registries/compose-writers/registry.js';
24
+ import { findVerificationWriter } from '../registries/verification-writers/registry.js';
25
+ import { deriveActualMenu, entryIsRegisteredFor, } from './actual-menu.js';
26
+ import { EQUIPMENT_PROFILE_IDS, isEquipmentProfileId, profileToScope, toEnforcedScope, } from './equipment-profiles.js';
27
+ import { evaluateRunnability, outputIsReadableContract } from './evaluate.js';
28
+ // Engine-supplied contracts: a block may consume one without an upstream
29
+ // producer because the runtime injects it. The set is DERIVED from the catalog —
30
+ // the union of every flow definition's declared initial_contracts — never
31
+ // hand-kept. This keeps the composer riding catalog data: a contract no flow
32
+ // declares initial cannot be routed through a composed flow's initial_contracts
33
+ // to dodge the unregistered-body gate. (flow.evidence@v1, for one, is never an
34
+ // initial — every flow that needs it aliases a registered body to it — so a
35
+ // topology that reads it with no producer walls, exactly as a hand-authored flow
36
+ // would be forced to alias it.)
37
+ function deriveAmbientGenerics(definitions) {
38
+ const ambient = new Set();
39
+ for (const definition of definitions) {
40
+ for (const contract of definition.schematic.initial_contracts) {
41
+ ambient.add(asString(contract));
42
+ }
43
+ }
44
+ return ambient;
45
+ }
46
+ // Canonical, operator-readable input key per contract. The key names how a step
47
+ // reads a contract; the gates ignore key names (they match on contracts), but a
48
+ // stable, conventional key keeps composed steps legible and aligns with the keys
49
+ // the runtime writers already read.
50
+ const KEY_BY_CONTRACT = {
51
+ 'task.intake@v1': 'task',
52
+ 'route.decision@v1': 'route',
53
+ 'context.request@v1': 'request',
54
+ 'context.packet@v1': 'context',
55
+ 'flow.brief@v1': 'brief',
56
+ 'plan.strategy@v1': 'plan',
57
+ 'diagnosis.result@v1': 'diagnosis',
58
+ 'change.evidence@v1': 'change',
59
+ 'verification.plan@v1': 'proof',
60
+ 'verification.result@v1': 'verification',
61
+ 'review.verdict@v1': 'review',
62
+ 'flow.question@v1': 'question',
63
+ 'flow.evidence@v1': 'evidence',
64
+ 'flow.state@v1': 'state',
65
+ 'decision.answer@v1': 'decision',
66
+ 'flow.result@v1': 'result',
67
+ };
68
+ // The changed-files honesty gate. The built-in fix/build flows hand-author this
69
+ // criterion onto their implementer `act` step so an overclaiming worker — one that
70
+ // lists a file in `changed_files` that it never actually touched — is caught and
71
+ // retried with feedback. A genuinely composed flow had no such hand-wiring, so its
72
+ // act step ran unguarded. These constants let the composer attach the SAME gate,
73
+ // closing the reach gap so the honesty guarantee covers generated flows too.
74
+ //
75
+ // The gate is only meaningful when the act binds a contract that asks the worker to
76
+ // self-report changed files. Both fix.change@v1 and build.implementation@v1 declare
77
+ // `changed_files` and `evidence`, so the full three-check criterion applies to each.
78
+ const CHANGED_FILES_CONTRACTS = new Set([
79
+ 'fix.change@v1',
80
+ 'build.implementation@v1',
81
+ ]);
82
+ const CHANGED_FILES_ACCEPTANCE_CRITERIA = {
83
+ checks: [
84
+ {
85
+ kind: 'report_field',
86
+ id: 'changed-files-present',
87
+ path: ['changed_files'],
88
+ predicate: 'present',
89
+ },
90
+ {
91
+ kind: 'report_field',
92
+ id: 'changed-files-on-disk',
93
+ path: ['changed_files'],
94
+ predicate: 'changed_on_disk',
95
+ },
96
+ { kind: 'report_field', id: 'evidence-non-empty', path: ['evidence'], predicate: 'non_empty' },
97
+ ],
98
+ on_failure: { mode: 'retry-with-feedback' },
99
+ };
100
+ function asString(value) {
101
+ return value;
102
+ }
103
+ // Exported for the compose-reads collision guard: the intermediate compose-reads
104
+ // wiring pass keys a wired read by its `read.name`, and the step's declared inputs
105
+ // are keyed by `keyFor(contract)`. The guard uses this exact function to prove no
106
+ // compose-writer read name collides with a different-schema declared input key.
107
+ export function keyFor(contract) {
108
+ const known = KEY_BY_CONTRACT[contract];
109
+ if (known !== undefined)
110
+ return known;
111
+ // Fall back to the contract's local name, sanitized to a valid input key.
112
+ const local = contract.split('@')[0]?.split('.').pop() ?? contract;
113
+ return local.replace(/[^a-z0-9_]/g, '_');
114
+ }
115
+ function titleCase(stage) {
116
+ return stage.charAt(0).toUpperCase() + stage.slice(1);
117
+ }
118
+ const BLOCK_BY_ID = new Map(FLOW_BLOCK_DEFINITIONS.map((block) => [block.id, block]));
119
+ // Rank families by how many of the role set's roles each family can serve
120
+ // (registered actual for that block+kind+generic). Selecting from the
121
+ // highest-coverage family first keeps a composed flow as coherent as the catalog
122
+ // allows (e.g. a research-then-build flow lands fix.* for six roles and reaches
123
+ // into build.* only for the plan step fix lacks), which both reads better and
124
+ // gives the live writers the family inputs they expect.
125
+ function rankFamilies(roles, menu, nonRawCells) {
126
+ const coverage = new Map();
127
+ roles.forEach((role, index) => {
128
+ const block = BLOCK_BY_ID.get(role.block);
129
+ if (block === undefined)
130
+ return;
131
+ const outputGeneric = asString(block.output_contract);
132
+ for (const entry of menu) {
133
+ if (!candidateMatchesRole(entry, role, outputGeneric, nonRawCells))
134
+ continue;
135
+ const set = coverage.get(entry.family) ?? new Set();
136
+ set.add(index);
137
+ coverage.set(entry.family, set);
138
+ }
139
+ });
140
+ const ranked = new Map();
141
+ for (const [family, indices] of coverage)
142
+ ranked.set(family, indices.size);
143
+ return ranked;
144
+ }
145
+ // A "cell" is one (block, executionKind, generic) the composer may fill. Two
146
+ // actuals in the same cell type-check for the same role; the selector picks
147
+ // between them. The key ignores relay role: the raw-generic question is about
148
+ // the output contract, not the worker seat.
149
+ function cellKey(block, executionKind, generic) {
150
+ return `${block}|${executionKind}|${generic}`;
151
+ }
152
+ // The cells that have at least one SPECIALIZED actual (actual !== its block's
153
+ // generic). For these the raw generic is excluded (a specialized override is
154
+ // available). A handful of blocks — the goal family, the pursuit family —
155
+ // register ONLY their raw generic: their output IS the specialized contract,
156
+ // with no generic-vs-specialized split, so the raw generic is the one way to use
157
+ // the block. Those cells are absent here, so the filter admits the raw generic.
158
+ function computeNonRawCells(menu) {
159
+ const cells = new Set();
160
+ for (const entry of menu) {
161
+ if (entry.actual !== entry.generic) {
162
+ cells.add(cellKey(entry.block, entry.executionKind, entry.generic));
163
+ }
164
+ }
165
+ return cells;
166
+ }
167
+ function candidateMatchesRole(entry, role, outputGeneric, nonRawCells) {
168
+ if (entry.block !== role.block)
169
+ return false;
170
+ if (entry.executionKind !== role.executionKind)
171
+ return false;
172
+ if (role.executionKind === 'relay' && entry.relayRole !== role.relayRole)
173
+ return false;
174
+ if (entry.generic !== outputGeneric)
175
+ return false;
176
+ // A raw generic output (actual === generic) restates the block default and
177
+ // carries no specialized body, so it is excluded WHEN the cell also has a
178
+ // specialized actual. When the raw generic is the cell's ONLY actual (the goal
179
+ // and pursuit families), excluding it would make the block uncomposable, so it
180
+ // is admitted as the sole way to use the block.
181
+ if (entry.actual === outputGeneric &&
182
+ nonRawCells.has(cellKey(role.block, role.executionKind, outputGeneric))) {
183
+ return false;
184
+ }
185
+ // A sub-run role names the child flow it runs; only the donor actual that ran
186
+ // that child is eligible, so the synthesized flow_ref matches the bound actual.
187
+ if (role.executionKind === 'sub-run' &&
188
+ role.flowId !== undefined &&
189
+ entry.subRunFlowRef !== role.flowId) {
190
+ return false;
191
+ }
192
+ if (!entryIsRegisteredFor(entry, role.executionKind))
193
+ return false;
194
+ if (role.terminal && !entry.hasCloseWriter)
195
+ return false;
196
+ return true;
197
+ }
198
+ // The family's OWN representative actual for a role: its donorPrimary-then-name
199
+ // pick, the same deterministic order selectActual uses minus the family-rank key
200
+ // (we are already inside one family). Undefined where the family cannot serve
201
+ // the role. Reused by the whole-line coherence score below.
202
+ function representativeActualForFamily(family, role, menu, nonRawCells) {
203
+ const block = BLOCK_BY_ID.get(role.block);
204
+ if (block === undefined)
205
+ return undefined;
206
+ const outputGeneric = asString(block.output_contract);
207
+ return menu
208
+ .filter((entry) => entry.family === family && candidateMatchesRole(entry, role, outputGeneric, nonRawCells))
209
+ .sort((a, b) => {
210
+ if (a.donorPrimaryForBlock !== b.donorPrimaryForBlock) {
211
+ return a.donorPrimaryForBlock ? -1 : 1;
212
+ }
213
+ return a.actual < b.actual ? -1 : a.actual > b.actual ? 1 : 0;
214
+ })[0];
215
+ }
216
+ // Whole-line family coherence (opt-in look-ahead, used only under
217
+ // enforceRunnability). selectActual picks each role's actual INDEPENDENTLY,
218
+ // breaking a family-rank TIE on actual name. That can land a tie-top family
219
+ // whose writer needs an upstream read the topology never produces — explainer's
220
+ // `plan` writer reads a diagnose-stage digest no compose-only line emits — even
221
+ // though a SIBLING tie-top family binds the identical role set runnably
222
+ // (prototype: brief -> plan reads brief -> result). The per-role greedy pick
223
+ // cannot see this: at the FRAME step every family's opener is read-free, so the
224
+ // incoherence only surfaces two steps later. The fix is a whole-line score: if
225
+ // the ENTIRE role set committed to family F, how many of F's writers' REQUIRED
226
+ // reads would be STARVED (no upstream producer within F)? Lower is more
227
+ // coherent. selectActual uses it as a tie-break AFTER familyRank, so it only
228
+ // reorders equally-top-ranked families and pulls the whole line onto the
229
+ // runnable one — turning the opt-in runnability gate from detect-only into
230
+ // repair-then-wall.
231
+ function computeFamilyCoherence(roles, menu, nonRawCells) {
232
+ const starvedByFamily = new Map();
233
+ for (const family of new Set(menu.map((entry) => entry.family))) {
234
+ // Hypothetically bind family F across the whole line.
235
+ const bound = roles.map((role) => representativeActualForFamily(family, role, menu, nonRawCells));
236
+ let starved = 0;
237
+ bound.forEach((entry, index) => {
238
+ if (entry === undefined)
239
+ return;
240
+ // A terminal close never ABORTS on an unproduced required read: the
241
+ // bind-time terminal-close rebind below falls it back to the reads-agnostic
242
+ // generic flow.result@v1. Counting its reads here would wrongly penalize a
243
+ // family whose ONLY deficit is at the close and pass over a genuinely
244
+ // runnable binding (a missed repair). Skip it so the score matches what the
245
+ // binder actually does. (A fanout act step is never terminal; the close is.)
246
+ const role = roles[index];
247
+ const isTerminalRole = role?.terminal === true || index === roles.length - 1;
248
+ if (isTerminalRole && role?.executionKind !== 'fanout')
249
+ return;
250
+ const writer = findComposeBuilder(entry.actual) ??
251
+ findCloseBuilder(entry.actual) ??
252
+ findVerificationWriter(entry.actual);
253
+ for (const read of writer?.reads ?? []) {
254
+ if (!read.required)
255
+ continue;
256
+ // Producible iff some UPSTREAM role's F-representative produces it. The
257
+ // read schema names a specific upstream ACTUAL (e.g. prototype.brief@v1),
258
+ // matched directly against the bound actuals — the same actual-keyed
259
+ // matching the verification-reads wall uses. INVARIANT: every required
260
+ // read declared across compose/close/verification writers names a
261
+ // family-namespaced actual, never an ambient/initial contract
262
+ // (task.intake@v1, route.decision@v1), so an actual-only match is
263
+ // complete; a future writer with an ambient required read would need an
264
+ // ambient check added here and in the verification-reads wall both.
265
+ const producedUpstream = bound
266
+ .slice(0, index)
267
+ .some((up) => up !== undefined && up.actual === read.schema);
268
+ if (!producedUpstream)
269
+ starved += 1;
270
+ }
271
+ });
272
+ starvedByFamily.set(family, starved);
273
+ }
274
+ return starvedByFamily;
275
+ }
276
+ // Deterministic pick: highest family coverage first (coherence), then — under
277
+ // the opt-in runnability gate — the family whose whole-line writer reads are
278
+ // least starved, then the donor flow's primary use of the block (so a reused
279
+ // block lands its canonical post-change output, not an auxiliary pre-change
280
+ // variant), then actual name ascending. Family rank stays the top key so this
281
+ // never grafts a foreign family's actual into a role the chosen family already
282
+ // serves; the coherence key only reorders families ALREADY tied on rank.
283
+ function selectActual(role, outputGeneric, menu, familyRank, nonRawCells, familyCoherence) {
284
+ const candidates = menu
285
+ .filter((entry) => candidateMatchesRole(entry, role, outputGeneric, nonRawCells))
286
+ .sort((a, b) => {
287
+ const rankA = familyRank.get(a.family) ?? 0;
288
+ const rankB = familyRank.get(b.family) ?? 0;
289
+ if (rankA !== rankB)
290
+ return rankB - rankA;
291
+ if (familyCoherence !== undefined) {
292
+ const starvedA = familyCoherence.get(a.family) ?? Number.POSITIVE_INFINITY;
293
+ const starvedB = familyCoherence.get(b.family) ?? Number.POSITIVE_INFINITY;
294
+ if (starvedA !== starvedB)
295
+ return starvedA - starvedB;
296
+ }
297
+ if (a.donorPrimaryForBlock !== b.donorPrimaryForBlock) {
298
+ return a.donorPrimaryForBlock ? -1 : 1;
299
+ }
300
+ return a.actual < b.actual ? -1 : a.actual > b.actual ? 1 : 0;
301
+ });
302
+ return candidates[0];
303
+ }
304
+ // Choose the block input set (its required input_contracts or an alternative)
305
+ // that is fully satisfiable from the contracts available so far AND consumes the
306
+ // most upstream-produced evidence. Maximizing produced-contract consumption is
307
+ // what keeps a composed flow free of orphans: a step that takes the leanest
308
+ // satisfiable set would leave an upstream producer's output unread. Tie-break:
309
+ // larger total set, then declaration order (the primary set is richest by
310
+ // design).
311
+ function chooseInputSet(block, available, ambient) {
312
+ const sets = [
313
+ block.input_contracts.map(asString),
314
+ ...(block.alternative_input_contracts ?? []).map((set) => set.map(asString)),
315
+ ];
316
+ const satisfiable = sets
317
+ .map((set, order) => ({ set, order }))
318
+ .filter(({ set }) => set.every((contract) => available.has(contract) || ambient.has(contract)));
319
+ if (satisfiable.length === 0)
320
+ return undefined;
321
+ const producedCount = (set) => set.filter((contract) => available.has(contract)).length;
322
+ satisfiable.sort((a, b) => {
323
+ const consumedDelta = producedCount(b.set) - producedCount(a.set);
324
+ if (consumedDelta !== 0)
325
+ return consumedDelta;
326
+ if (b.set.length !== a.set.length)
327
+ return b.set.length - a.set.length;
328
+ return a.order - b.order;
329
+ });
330
+ return satisfiable[0]?.set;
331
+ }
332
+ function stepWrites(flowId, stepId, executionKind, checkpointWritesReport) {
333
+ const reportPath = `reports/${flowId}/${stepId}.json`;
334
+ if (executionKind === 'relay') {
335
+ return {
336
+ report_path: reportPath,
337
+ request_path: `reports/relay/${stepId}.request.json`,
338
+ receipt_path: `reports/relay/${stepId}.receipt.txt`,
339
+ result_path: `reports/relay/${stepId}.result.json`,
340
+ };
341
+ }
342
+ if (executionKind === 'checkpoint') {
343
+ // A checkpoint always carries its request/response routing paths. A CONTENT
344
+ // checkpoint — one whose donor wrote a typed report (the build family's frame
345
+ // produces build.brief@v1, which `plan` reads) — ALSO writes a report_path so
346
+ // the brief it produces has a read path; without it the compile walls
347
+ // ("produces build.brief@v1 but has no writes.report_path"). The schema allows
348
+ // report_path on a checkpoint (required only for compose/verification/fanout),
349
+ // and the real build frame-step writes reports/build/brief.json the same way.
350
+ // A ROUTING-only checkpoint (no donor report) writes no report_path, exactly as
351
+ // before. The report_path rides with policy.report_template (see the call site):
352
+ // a checkpoint that writes a report requires the template, so the two are kept
353
+ // in lockstep — a checkpoint never half-writes a report it cannot populate.
354
+ return {
355
+ ...(checkpointWritesReport ? { report_path: reportPath } : {}),
356
+ checkpoint_request_path: `reports/checkpoints/${stepId}-request.json`,
357
+ checkpoint_response_path: `reports/checkpoints/${stepId}-response.json`,
358
+ };
359
+ }
360
+ if (executionKind === 'sub-run') {
361
+ // The child's RunResult is copied into this slot; the schema forbids a
362
+ // report_path for sub-run (the result IS the readable output).
363
+ return { result_path: `reports/${flowId}/${stepId}.result.json` };
364
+ }
365
+ if (executionKind === 'fanout') {
366
+ // A fanout writes the joined aggregate report AND a per-branch directory the
367
+ // runtime fills with each child's result; the schema requires both.
368
+ return {
369
+ report_path: reportPath,
370
+ branches_dir_path: `reports/${stepId}-branches`,
371
+ };
372
+ }
373
+ // compose + verification
374
+ return { report_path: reportPath };
375
+ }
376
+ // Construct the typed execution descriptor for a block. The composer supports
377
+ // compose, relay, verification, checkpoint, sub-run, and fanout. The sub-run
378
+ // descriptor's flow_ref/entry_mode come from the bound donor actual (`pick`) so
379
+ // the child it runs matches the actual it produces; goal/depth come from the role
380
+ // (the per-task params). The goalText invariant is enforced upstream by the
381
+ // sub-run wall, so `role.goalText` is present here. A fanout's execution is the
382
+ // bare `{ kind: 'fanout' }` marker; its branch/join metadata rides in the sibling
383
+ // `fanout` field the caller attaches from `buildFanoutMetadata`.
384
+ function buildExecution(role, pick) {
385
+ switch (role.executionKind) {
386
+ case 'relay':
387
+ return { kind: 'relay', role: role.relayRole };
388
+ case 'compose':
389
+ return { kind: 'compose' };
390
+ case 'verification':
391
+ return { kind: 'verification' };
392
+ case 'checkpoint':
393
+ return { kind: 'checkpoint' };
394
+ case 'sub-run':
395
+ return {
396
+ kind: 'sub-run',
397
+ flow_ref: {
398
+ flow_id: (pick.subRunFlowRef ?? role.flowId),
399
+ entry_mode: pick.subRunEntryMode ?? 'default',
400
+ },
401
+ goal: role.goalText,
402
+ depth: role.subRunDepth ?? 'medium',
403
+ };
404
+ case 'fanout':
405
+ return { kind: 'fanout' };
406
+ default:
407
+ throw new Error(`composer does not synthesize execution kind '${role.executionKind}'`);
408
+ }
409
+ }
410
+ // Build the SchematicFanout metadata for a fanout role: a STATIC set of sub-run
411
+ // branches run in parallel and joined as aggregate-survivors. The composer emits
412
+ // no rubric (the join does not consult one) and uses continue-others so one
413
+ // branch failing does not abort the others — the join then keeps the survivors.
414
+ // The branch invariants (at least two branches, each with a goalText) are enforced
415
+ // upstream by the fanout wall, so `role.fanoutBranches` is present and valid here.
416
+ function buildFanoutMetadata(role) {
417
+ const branches = (role.fanoutBranches ?? []).map((branch) => ({
418
+ branch_id: branch.branchId,
419
+ flow_ref: { flow_id: branch.flowId, entry_mode: 'default' },
420
+ goal: branch.goalText,
421
+ depth: branch.depth ?? 'medium',
422
+ }));
423
+ return {
424
+ branches: { kind: 'static', branches },
425
+ concurrency: { kind: 'bounded', max: 2 },
426
+ on_child_failure: 'continue-others',
427
+ join: { policy: 'aggregate-survivors' },
428
+ };
429
+ }
430
+ // Whether a block's execution kind is unambiguous (one allowed kind). The block
431
+ // step expander rejects a restated default execution, so single-kind blocks must
432
+ // OMIT execution and multi-kind blocks must declare it.
433
+ function blockHasSingleKind(block) {
434
+ return block.schematicPolicy.executionKinds.length === 1;
435
+ }
436
+ export function composeFlow(roleSet, options) {
437
+ const menu = deriveActualMenu(options.definitions);
438
+ const ambient = deriveAmbientGenerics(options.definitions);
439
+ const nonRawCells = computeNonRawCells(menu);
440
+ const familyRank = rankFamilies(roleSet.roles, menu, nonRawCells);
441
+ // Producibility-aware selection look-ahead: only computed (and only consulted
442
+ // by selectActual) under the opt-in runnability gate, so the default path is
443
+ // byte-identical. See computeFamilyCoherence.
444
+ const familyCoherence = options.enforceRunnability === true
445
+ ? computeFamilyCoherence(roleSet.roles, menu, nonRawCells)
446
+ : undefined;
447
+ const walls = [];
448
+ const aliasByGeneric = new Map();
449
+ const producedGenerics = new Set();
450
+ const usedAmbient = new Set();
451
+ const items = [];
452
+ const selections = [];
453
+ // Pre-assign step ids so a step can route to its successor by id.
454
+ const stepIds = assignStepIds(roleSet.roles);
455
+ // Converge gate (the fail-closed, thesis-bearing check). When the role set asks
456
+ // for a Converge, it must contain three roles in canonical order: an act-stage
457
+ // implementer relay (the loop head), a run-verification step (the evidence floor
458
+ // — the thing that makes the generated loop inherit a real check instead of
459
+ // spinning forever on a claim the judge cannot verify), and a review-stage
460
+ // reviewer relay (the loop tail / stop-judge). Resolve them up front; if any is
461
+ // missing, wall with a plain-English reason and emit no loop, because a Converge
462
+ // with no floor is exactly the unbounded loop the whole shape exists to prevent.
463
+ const convergePlan = roleSet.convergeUntil === undefined ? undefined : resolveConvergePlan(roleSet, stepIds, walls);
464
+ // A walled Converge resolution short-circuits the whole compose: emitting a
465
+ // partial flow with no loop would silently demote the operator's Converge
466
+ // request to a plain line. Return the wall now.
467
+ if (roleSet.convergeUntil !== undefined && convergePlan === undefined) {
468
+ return { ok: false, walls };
469
+ }
470
+ roleSet.roles.forEach((role, index) => {
471
+ const block = BLOCK_BY_ID.get(role.block);
472
+ if (block === undefined) {
473
+ walls.push({ roleIndex: index, block: role.block, reason: 'unknown block id' });
474
+ return;
475
+ }
476
+ // Equipment is a closed menu: a profile name outside it is a vocabulary
477
+ // error (the proposer's JSON.parse would accept any string). Wall with a
478
+ // stable reason that names the bad value and the allowed set, so the repair
479
+ // pass can self-correct — the same shape as the (block, kind) menu wall.
480
+ if (role.equipment !== undefined && !isEquipmentProfileId(role.equipment)) {
481
+ walls.push({
482
+ roleIndex: index,
483
+ block: role.block,
484
+ reason: `equipment profile '${role.equipment}' is not in the allowed set [${EQUIPMENT_PROFILE_IDS.join(', ')}]`,
485
+ });
486
+ return;
487
+ }
488
+ // 'full' is the default surface, so it collapses to omission: attaching
489
+ // nothing keeps the schematic — not just the compiled step — byte-identical
490
+ // to a flow that never declared equipment. Only a tightening profile
491
+ // (read-only | editor | tester) attaches a scope.
492
+ const baseScope = role.equipment === undefined || role.equipment === 'full'
493
+ ? undefined
494
+ : profileToScope(role.equipment);
495
+ // Opt-in hard enforcement (default off). Enforcement is a write-tier
496
+ // boundary, so the schematic parse gate accepts enforcement:'enforced' ONLY
497
+ // on an implementer relay step; we upgrade only that step, and only when it
498
+ // already carries a tightening allow-list. Every other step keeps its trusted
499
+ // scope, so the gate never trips and the un-opted path stays byte-identical.
500
+ const isImplementerRelay = role.executionKind === 'relay' && role.relayRole === 'implementer';
501
+ const equipmentScope = options.enforceImplementerTools === true && isImplementerRelay && baseScope !== undefined
502
+ ? toEnforcedScope(baseScope)
503
+ : baseScope;
504
+ const outputGeneric = asString(block.output_contract);
505
+ // A sub-run leaf runs a whole child flow; a child with no objective is
506
+ // meaningless, so a sub-run role without goalText walls honestly rather than
507
+ // emit an execution whose `goal` would be empty (and fail the schema's
508
+ // min(1)). This is the sub-run analog of the loop's dangling-back-edge wall.
509
+ if (role.executionKind === 'sub-run' &&
510
+ (role.goalText === undefined || role.goalText.trim().length === 0)) {
511
+ walls.push({
512
+ roleIndex: index,
513
+ block: role.block,
514
+ reason: `sub-run role for '${role.block}' requires goalText (the child run's objective)`,
515
+ });
516
+ return;
517
+ }
518
+ // A fanout joins its survivors with `aggregate-survivors`, which needs at
519
+ // least TWO branches to survive, so a fanout role with fewer than two branches
520
+ // walls honestly rather than emit a join that can never succeed. Each branch
521
+ // is a sub-run leaf, so each carries the same goalText invariant.
522
+ if (role.executionKind === 'fanout') {
523
+ const fanoutBranches = role.fanoutBranches ?? [];
524
+ if (fanoutBranches.length < 2) {
525
+ walls.push({
526
+ roleIndex: index,
527
+ block: role.block,
528
+ reason: `fanout role for '${role.block}' requires at least two branches (aggregate-survivors needs two survivors)`,
529
+ });
530
+ return;
531
+ }
532
+ const branchMissingGoal = fanoutBranches.find((branch) => branch.goalText === undefined || branch.goalText.trim().length === 0);
533
+ if (branchMissingGoal !== undefined) {
534
+ walls.push({
535
+ roleIndex: index,
536
+ block: role.block,
537
+ reason: `fanout branch '${branchMissingGoal.branchId}' requires goalText (the child run's objective)`,
538
+ });
539
+ return;
540
+ }
541
+ }
542
+ const pick = selectActual(role, outputGeneric, menu, familyRank, nonRawCells, familyCoherence);
543
+ if (pick === undefined) {
544
+ walls.push({
545
+ roleIndex: index,
546
+ block: role.block,
547
+ reason: `no registered actual for ${role.block}/${role.executionKind} producing ${outputGeneric}${role.executionKind === 'sub-run' && role.flowId !== undefined
548
+ ? ` running child flow '${role.flowId}'`
549
+ : ''}${role.terminal ? ' with a close writer' : ''}`,
550
+ });
551
+ return;
552
+ }
553
+ const available = new Set(producedGenerics);
554
+ const inputSet = chooseInputSet(block, available, ambient);
555
+ if (inputSet === undefined) {
556
+ walls.push({
557
+ roleIndex: index,
558
+ block: role.block,
559
+ reason: `no input set satisfiable; needs one of ${describeInputSets(block)}, have produced [${[
560
+ ...producedGenerics,
561
+ ].join(', ')}] + ambient`,
562
+ });
563
+ return;
564
+ }
565
+ const input = {};
566
+ for (const contract of inputSet) {
567
+ const key = keyFor(contract);
568
+ if (producedGenerics.has(contract)) {
569
+ const actual = aliasByGeneric.get(contract);
570
+ // Invariant: a produced generic always has an alias entry.
571
+ input[key] = actual ?? contract;
572
+ }
573
+ else {
574
+ // Ambient: engine-supplied. Route through initial_contracts.
575
+ usedAmbient.add(contract);
576
+ input[key] = contract;
577
+ }
578
+ }
579
+ // Evidence-soak at the terminal: a composed flow must not silently drop an
580
+ // upstream step's output. Short-tail topologies (triage that closes after
581
+ // diagnose, gather-then-verify) leave the terminal close reading only its
582
+ // smallest satisfiable input set, orphaning the very evidence the flow
583
+ // exists to produce. Fold every otherwise-unconsumed upstream actual into
584
+ // the terminal step's input — exactly what the hand-authored families do
585
+ // (fix's close reads brief, context, diagnosis, change, verification). The
586
+ // added reads are all of produced contracts, so the catalog gate accepts
587
+ // them; the terminal already satisfies a full declared input set, so the
588
+ // extra reads only carry evidence forward.
589
+ const isTerminal = role.terminal === true || index === roleSet.roles.length - 1;
590
+ if (isTerminal) {
591
+ const consumed = new Set();
592
+ for (const prior of items)
593
+ for (const value of Object.values(prior.input ?? {}))
594
+ consumed.add(value);
595
+ for (const value of Object.values(input))
596
+ consumed.add(value);
597
+ const genericOfActual = new Map(selections.map((sel) => [sel.actual, sel.generic]));
598
+ for (const prior of selections) {
599
+ // Only a readable output can be soaked: a step that wrote a report_path
600
+ // or result_path produces a contract a downstream step can read. A
601
+ // routing-only checkpoint (request/response paths, no report) produces no
602
+ // readable contract, so there is nothing to soak — a step that read it
603
+ // would fail the compiler's read-path resolution. (A checkpoint CAN write
604
+ // a report_path; build's frame-step does, and such an output IS soakable.
605
+ // We key on the readable write, not the execution kind.) The
606
+ // hand-authored fix family confirms the routing case: its close reads
607
+ // brief/context/diagnosis/change/verification but never the
608
+ // human-decision's decision record.
609
+ if (!prior.producesReadableContract)
610
+ continue;
611
+ const orphan = prior.actual;
612
+ if (consumed.has(orphan))
613
+ continue;
614
+ const key = keyFor(genericOfActual.get(orphan) ?? orphan);
615
+ if (input[key] === undefined) {
616
+ input[key] = orphan;
617
+ consumed.add(orphan);
618
+ }
619
+ }
620
+ }
621
+ const stepId = stepIds[index];
622
+ const nextId = stepIds[index + 1];
623
+ let routes = role.terminal
624
+ ? { complete: '@complete', stop: '@stop' }
625
+ : nextId === undefined
626
+ ? { complete: '@complete', stop: '@stop' }
627
+ : { continue: nextId, stop: '@stop' };
628
+ // Bounded back-edge — the one non-linear shape the composer proposes. The
629
+ // role asks to loop back to an upstream block on a `retry` outcome; resolve
630
+ // the nearest earlier step using that block and wire `retry -> <stepId>`.
631
+ // A verify step's required-style check does not constrain route keys, so the
632
+ // added route compiles exactly as the hand-authored fix-verify retry does.
633
+ // No upstream match means a dangling edge: wall rather than emit it.
634
+ if (role.loopBackTo !== undefined) {
635
+ let targetIndex = -1;
636
+ for (let j = index - 1; j >= 0; j--) {
637
+ if (roleSet.roles[j]?.block === role.loopBackTo) {
638
+ targetIndex = j;
639
+ break;
640
+ }
641
+ }
642
+ if (targetIndex === -1) {
643
+ walls.push({
644
+ roleIndex: index,
645
+ block: role.block,
646
+ reason: `loopBackTo '${role.loopBackTo}' has no upstream step to loop back to`,
647
+ });
648
+ return;
649
+ }
650
+ routes.retry = stepIds[targetIndex];
651
+ }
652
+ // Converge tail wiring. When this step is the resolved loop tail (the reviewer
653
+ // / stop-judge), add the two loop edges the until-loop needs alongside the
654
+ // forward route the linear pass already wired:
655
+ // - continue: the clean-stop forward route, kept as-is (it carries on to the
656
+ // close step, which soaks the evidence and binds the primary result). This
657
+ // is the ONE route that maps to the runtime success edge.
658
+ // - advance: the re-enter edge back to the loop head. The engine swaps the
659
+ // forward route for this one each iteration until the judge clean-stops or
660
+ // the cap is hit. It is NOT a success route, so it does not collide with
661
+ // continue.
662
+ // - close: the exhausted exit to the non-complete @stop terminal — a NORMAL
663
+ // route (not a recovery route), so an exhausted clean pass does not trip the
664
+ // no-failure-evidence guard. This is the until flag's needs_attention_route.
665
+ // This mirrors fix-until-green's hand-authored judge-step routes exactly. The
666
+ // verify step gets its own loop edge (the red-verify `revise` route) in the block
667
+ // right below — without it the tail judge is never reached on a red verify, so
668
+ // these tail edges would never fire.
669
+ if (convergePlan !== undefined && index === convergePlan.tailIndex) {
670
+ routes.advance = convergePlan.headStepId;
671
+ routes.close = '@stop';
672
+ }
673
+ // Converge verify-step red-verify route. A run-verification step on a FAILED
674
+ // command does NOT take its forward `continue` route: the executor calls
675
+ // recoveryRouteForFailure(cause: failed_check) and routes to a bound RECOVERY
676
+ // route. The linear pass gave this step only { continue, stop }, so the one
677
+ // recovery-eligible route a red verify could take was `stop` -> @stop — the run
678
+ // STOPPED at the verify step on the first red command and never reached the tail
679
+ // judge, so the until corridor (which re-enters only at the tail seam) never
680
+ // re-entered. Add `revise` -> the tail judge: `revise` binds as narrow_scope
681
+ // recovery (allowed for cause failed_check), so a red verify routes FORWARD to
682
+ // the judge WITH failure evidence present. The judge reflects, the evidence floor
683
+ // blocks its goal_met claim on the open proof gap, and the loop re-enters with
684
+ // the lesson carried. A green verify still takes the forward `continue` route.
685
+ //
686
+ // Order matters. BOTH `revise` (narrow_scope) and `stop` (stop_unsafe) accept
687
+ // cause failed_check, so the work-contract projection derives a recovery binding
688
+ // for each. recoveryBindingForFailure returns the FIRST matching binding in
689
+ // route-iteration order, so `revise` must precede `stop` for a red verify to take
690
+ // it — otherwise `stop` wins and the loop never re-enters. The linear pass left
691
+ // `stop` last in the routes object; rebuild the step's routes with `revise`
692
+ // inserted before `stop`, mirroring fix-until-green's hand-authored verify-step
693
+ // route order (continue, revise, stop — see fix-until-green/assembly-spec.ts).
694
+ if (convergePlan !== undefined && index === convergePlan.verifyIndex) {
695
+ const reordered = {};
696
+ for (const [routeId, target] of Object.entries(routes)) {
697
+ // Insert `revise` immediately before `stop` so its narrow_scope binding is
698
+ // the first failed_check match the work-contract projection derives.
699
+ if (routeId === 'stop')
700
+ reordered.revise = convergePlan.tailStepId;
701
+ reordered[routeId] = target;
702
+ }
703
+ // No `stop` route to anchor against (defensive): append `revise` at the end.
704
+ if (reordered.revise === undefined)
705
+ reordered.revise = convergePlan.tailStepId;
706
+ routes = reordered;
707
+ }
708
+ // A CONTENT checkpoint writes a typed report (the build frame produces
709
+ // build.brief@v1); its donor carries the policy.report_template the checkpoint
710
+ // writer reads to populate that report. report_path and report_template are
711
+ // emitted together — a checkpoint that writes a report it cannot populate would
712
+ // fail the compiler ("checkpoint report writing requires policy.report_template")
713
+ // — so this one flag gates BOTH the writes.report_path below and the policy's
714
+ // report_template. A routing-only checkpoint (no donor template) keeps the old
715
+ // request/response-only shape. The non-terminal guard mirrors the policy guard:
716
+ // a checkpoint only writes a report when it also gets a synthesized go/no-go
717
+ // policy to hang the template on.
718
+ const checkpointWritesReport = role.executionKind === 'checkpoint' &&
719
+ routes.continue !== undefined &&
720
+ pick.checkpointReportTemplate !== undefined;
721
+ // A checkpoint step must carry a checkpoint_policy and a check whose allowed
722
+ // route matches a real route. The composer synthesizes a minimal go/no-go:
723
+ // one 'continue' choice (the route a non-terminal checkpoint advances on),
724
+ // safe-defaulting to continue so an unattended run proceeds. This replaces
725
+ // the donor's flow-specific policy/check, which would reference routes this
726
+ // composed step does not have. A content checkpoint additionally carries the
727
+ // donor's report_template (reused verbatim, drift-free), the only donor-policy
728
+ // field that is route-independent and that the report writer needs.
729
+ const checkpointPolicy = role.executionKind === 'checkpoint' && routes.continue !== undefined
730
+ ? {
731
+ prompt: `${block.title}: operator go/no-go before continuing.`,
732
+ choices: [{ id: 'continue', label: 'Continue' }],
733
+ safe_default_choice: 'continue',
734
+ ...(checkpointWritesReport ? { report_template: pick.checkpointReportTemplate } : {}),
735
+ }
736
+ : undefined;
737
+ let check = role.executionKind === 'checkpoint' ? { allow: ['continue'] } : pick.check;
738
+ // A composed fanout always launches a STATIC sub-run set joined as
739
+ // aggregate-survivors. selectActual hands back a flow-specific STRICT aggregate
740
+ // (e.g. prototype.variant-aggregate@v1) — proof a real donor shape exists — but
741
+ // that donor types each branch's result_body as the donor flow's report. A
742
+ // sub-run survivor is a RunResult, not that shape, so binding the donor would
743
+ // wall the aggregate write at runtime (the write validates the aggregate body
744
+ // before the join verdict). Bind the generic fanout aggregate contract instead:
745
+ // a typed envelope that leaves each branch's result_body open, so the aggregate
746
+ // validates AND the aggregate-survivors join admits any complete child. The
747
+ // generic carries a registered body, so the anti-widening gate still passes.
748
+ // Non-fanout roles bind the selected actual unchanged.
749
+ let boundOutput = role.executionKind === 'fanout' ? FANOUT_AGGREGATE_CONTRACT : pick.actual;
750
+ // Converge stop-judge rebind. The Converge tail is a reviewer relay; selectActual
751
+ // binds it to the family's typed `build.review@v1`, which is `.strict()` and
752
+ // REJECTS the goal_met/lesson fields the until-loop's stop-judge writes — so the
753
+ // tail downgrades to failed_check the instant it carries the judgment and the loop
754
+ // can never read goal_met (the run aborts on the unbound advance recovery route).
755
+ // Rebind ONLY the tail step to the dedicated `converge.judgment@v1` contract: a
756
+ // strict schema that INCLUDES verdict/goal_met/lesson/summary, so the body
757
+ // validates and the loop reads the judgment from the validated body. A registered
758
+ // shape-hint for the same contract also tells a real worker exactly what to emit.
759
+ // The tail's check.pass is rebound with it, to the contract's FULL verdict enum:
760
+ // the family reviewer's ['accept', 'accept-with-fixes'] treats 'reject' as a
761
+ // failed check, but on a stop-judge an honest "reject, not done" is a VALID
762
+ // judgment the loop must dispose (re-enter and carry the lesson) — under the
763
+ // family vocabulary it threw at the relay seam and crashed the run instead of
764
+ // looping (the F13 finding from the live surface test). The verdict says "the
765
+ // judge did its job"; goal_met, disposed against the evidence floor, decides
766
+ // stop-clean / reenter / needs-attention. Tail-only and Converge-only: a
767
+ // non-Converge path never sets convergePlan, so boundOutput and check are
768
+ // untouched and the spec stays byte-identical.
769
+ if (convergePlan !== undefined && index === convergePlan.tailIndex) {
770
+ boundOutput = CONVERGE_JUDGMENT_CONTRACT;
771
+ check = { pass: ['accept', 'accept-with-fixes', 'reject'] };
772
+ }
773
+ // Terminal close rebind (genuine-linear-LIVE). selectActual binds the close
774
+ // to a FAMILY result (e.g. fix.result@v1) — the close block's generic
775
+ // flow.result@v1 default aliased to a registered family actual. But every
776
+ // family close builder declares REQUIRED upstream reads: fix.result@v1 needs
777
+ // change/verification/regression evidence, build.result@v1 needs
778
+ // plan/implementation/verification. A novel short-tail topology (a triage
779
+ // that closes after diagnose) cannot produce those, so binding the family
780
+ // result emits a flow that ABORTS at close time — the runtime close-read
781
+ // resolver throws on the first unproduced required read. When the bound
782
+ // family's required reads are not all produced by an upstream selection,
783
+ // leave the terminal at the close block's own generic flow.result@v1 (a
784
+ // registered schema with a reads-agnostic engine close builder) instead. The
785
+ // flow then runs to @complete and reports the evidence it DID produce. A full
786
+ // fix/build-shaped composition still binds its family result unchanged,
787
+ // because its required reads ARE produced upstream. This rebinds the OUTPUT
788
+ // only; the evidence-soak above still folds every upstream actual into the
789
+ // close's INPUT, so the generic close reports them all.
790
+ if (isTerminal && role.executionKind !== 'fanout' && boundOutput !== outputGeneric) {
791
+ const familyClose = findCloseBuilder(boundOutput);
792
+ if (familyClose !== undefined) {
793
+ // Check the close's RESOLVED INPUT, not global upstream production. The
794
+ // runtime close-read resolver throws on a required read whose path is not
795
+ // in the close step's reads, and the step's reads are derived from this
796
+ // `input` map (the close block's declared reads plus the evidence-soak
797
+ // above). A read can be PRODUCED upstream yet absent from `input` because an
798
+ // intermediate step CONSUMED it — the soak folds only unconsumed orphans, so
799
+ // a consumed actual never reaches the terminal's input. The earlier
800
+ // production-based check (`producedActuals.has`) missed exactly that case:
801
+ // the composed fanout's plan output is consumed by the fanout step, so the
802
+ // family close (which requires reading it) aborts at runtime even though the
803
+ // plan WAS produced. Keying on the close's input values matches the runtime
804
+ // success condition precisely: preserve the family bind iff every required
805
+ // read is one the terminal will actually read; otherwise fall back to the
806
+ // reads-agnostic generic flow.result@v1.
807
+ const closeReadSchemas = new Set(Object.values(input));
808
+ const missingRequiredRead = familyClose.reads.some((read) => read.required && !closeReadSchemas.has(read.schema));
809
+ if (missingRequiredRead)
810
+ boundOutput = FLOW_RESULT_CONTRACT;
811
+ }
812
+ }
813
+ // Verification source reads (genuine-composition verification wiring). A
814
+ // verification writer sources its command list from an upstream typed report
815
+ // (fix.verification reads fix.brief@v1; build.verification reads build.plan@v1),
816
+ // a coupling the runtime enforces imperatively inside loadCommands. The block's
817
+ // declared input_contracts do NOT capture it — run-verification declares the
818
+ // ambient verification.plan@v1, never the brief — so a composed verification
819
+ // step would omit the read and ABORT the instant the writer runs (the failure
820
+ // the live composed-arm run hit). Wire each required read here: it is a produced
821
+ // upstream ACTUAL, so add it to the step input under its conventional key.
822
+ // Unlike the terminal close, a verification writer has NO reads-agnostic generic
823
+ // to rebind to — its commands ARE that source — so an unproduced required read
824
+ // walls honestly rather than emitting a flow that aborts at verify time.
825
+ if (role.executionKind === 'verification') {
826
+ const verifier = findVerificationWriter(boundOutput);
827
+ if (verifier?.reads !== undefined) {
828
+ const genericOfActual = new Map(selections.map((sel) => [sel.actual, sel.generic]));
829
+ let walled = false;
830
+ for (const read of verifier.reads) {
831
+ if (!read.required)
832
+ continue;
833
+ const generic = genericOfActual.get(read.schema);
834
+ if (generic === undefined) {
835
+ walls.push({
836
+ roleIndex: index,
837
+ block: role.block,
838
+ reason: `${role.block} verification writer '${boundOutput}' requires reading '${read.schema}', produced by no upstream step`,
839
+ });
840
+ walled = true;
841
+ break;
842
+ }
843
+ const key = keyFor(generic);
844
+ if (input[key] === undefined)
845
+ input[key] = read.schema;
846
+ }
847
+ if (walled)
848
+ return;
849
+ }
850
+ }
851
+ // Intermediate compose-writer source reads (genuine-composition compose
852
+ // wiring). A compose writer can source REQUIRED evidence from an upstream typed
853
+ // report the same way a verification writer sources its command list: the goal
854
+ // contract writer (goal.contract@v1) requires reading goal.clarified-task@v1 —
855
+ // the precise task an upstream `clarify` relay produces — yet the `goal` block's
856
+ // declared input_contracts capture only task.intake@v1 / route.decision@v1. A
857
+ // composed goal step therefore omits the read and ABORTS the instant the
858
+ // contract writer runs (resolveComposeReadPaths throws "requires step 'goal' to
859
+ // read .../clarify.json"). Wire each required read that an upstream selection
860
+ // PRODUCES into the step input.
861
+ //
862
+ // Two choices make this safe. First, KEY by the writer's own read name, not
863
+ // keyFor(generic) the way the verification pass does: the clarified task's
864
+ // generic is clarified.task@v1, which keyFor reduces to 'task' — clashing with
865
+ // the declared intake key 'task'. The alreadyRead guard would then treat the
866
+ // read as already wired and drop it, and the goal step would still abort. The
867
+ // read name 'clarified' has no such clash; composition-compose-reads.test.ts
868
+ // locks that no compose-writer read name shadows a different-schema declared
869
+ // input key. Second, SKIP an unproduced required read silently rather than
870
+ // walling: a non-terminal compose opener whose read no upstream step produces
871
+ // (research-then-build's build.brief plan opener) stays composable, and the
872
+ // runnability gate — not a compose-time wall — reports its abort, preserving
873
+ // that flow's default-ok behavior. The terminal close is handled by its own
874
+ // rebind above, so this skips it; a verification role is handled by the pass
875
+ // above.
876
+ if (role.executionKind === 'compose' && !isTerminal) {
877
+ const composeWriter = findComposeBuilder(boundOutput);
878
+ if (composeWriter?.reads !== undefined) {
879
+ const producedActuals = new Set(selections.map((sel) => sel.actual));
880
+ const alreadyRead = new Set(Object.values(input));
881
+ for (const read of composeWriter.reads) {
882
+ if (!read.required)
883
+ continue;
884
+ if (!producedActuals.has(read.schema))
885
+ continue; // unproduced: skip, do not wall
886
+ if (alreadyRead.has(read.schema))
887
+ continue; // already wired via the declared input set
888
+ input[read.name] = read.schema;
889
+ alreadyRead.add(read.schema);
890
+ }
891
+ }
892
+ }
893
+ const writes = stepWrites(roleSet.id, stepId, role.executionKind, checkpointWritesReport);
894
+ const use = {
895
+ id: stepId,
896
+ title: `${titleCase(role.stage)} — ${block.title}`,
897
+ stage: role.stage,
898
+ block: role.block,
899
+ input,
900
+ // A raw-generic pick (actual === the block's default output) must OMIT
901
+ // output: restating the default is rejected by the expander. The step
902
+ // defaults to the same generic, so the binding is unchanged. A specialized
903
+ // actual (or the fanout aggregate override above) is kept as an override.
904
+ ...(boundOutput === outputGeneric ? {} : { output: boundOutput }),
905
+ protocol: `${roleSet.id}-${stepId}@v1`,
906
+ writes,
907
+ // Per-block equipment: a non-default profile attaches its tool scope here;
908
+ // an omitted/'full' choice attaches nothing, so the compiled step is
909
+ // byte-identical to a flow that never declared equipment.
910
+ ...(equipmentScope === undefined ? {} : { equipmentScope }),
911
+ ...(check === undefined ? {} : { check }),
912
+ ...(checkpointPolicy === undefined ? {} : { checkpointPolicy }),
913
+ // Single-kind blocks must omit execution (restating the bare default is
914
+ // rejected); multi-kind blocks must declare it. Two execution kinds are
915
+ // exceptions even when they are a block's ONLY kind, because their
916
+ // descriptor carries a required field that is NOT the bare default, so the
917
+ // expander accepts it (it only rejects a single-key `{kind}`):
918
+ // - sub-run carries flow_ref/goal/depth (goal-child-run);
919
+ // - relay carries a required `role` (researcher | implementer | reviewer).
920
+ // A single-kind relay block (clarify, goal-gate-review) whose execution was
921
+ // omitted lost its role, and assemble then threw on the missing role enum.
922
+ // Multi-kind relay blocks (gather-context, diagnose, review) were already
923
+ // covered by the multi-kind branch below.
924
+ ...(role.executionKind === 'sub-run' ||
925
+ role.executionKind === 'relay' ||
926
+ !blockHasSingleKind(block)
927
+ ? { execution: buildExecution(role, pick) }
928
+ : {}),
929
+ // A fanout step carries a sibling `fanout` descriptor (the bare `{kind:'fanout'}`
930
+ // execution above only marks the step; the branch set, concurrency, failure
931
+ // policy, and join live here). The fanout wall upstream guaranteed at least
932
+ // two goal-bearing branches, so the descriptor is well-formed.
933
+ ...(role.executionKind === 'fanout' ? { fanout: buildFanoutMetadata(role) } : {}),
934
+ // Changed-files honesty gate. Attach the same acceptance criterion the
935
+ // built-in fix/build act steps carry, but ONLY to an implementer `act` relay
936
+ // whose bound output asks the worker to self-report changed files. Gating on
937
+ // implementer + a changed-files-bearing contract keeps the gate off researcher
938
+ // relays (which report findings, not edits) and off any step the criterion
939
+ // would vacuously or wrongly fire on. The runtime relay executor fires it for
940
+ // any relay step carrying the field, so emitting it here is the whole bridge.
941
+ ...(role.executionKind === 'relay' &&
942
+ role.relayRole === 'implementer' &&
943
+ CHANGED_FILES_CONTRACTS.has(boundOutput)
944
+ ? { acceptanceCriteria: CHANGED_FILES_ACCEPTANCE_CRITERIA }
945
+ : {}),
946
+ routes,
947
+ };
948
+ items.push(use);
949
+ selections.push({
950
+ stepId,
951
+ block: role.block,
952
+ executionKind: role.executionKind,
953
+ actual: boundOutput,
954
+ generic: outputGeneric,
955
+ inputs: input,
956
+ producesReadableContract: outputIsReadableContract(writes),
957
+ });
958
+ aliasByGeneric.set(outputGeneric, boundOutput);
959
+ producedGenerics.add(outputGeneric);
960
+ });
961
+ if (walls.length > 0)
962
+ return { ok: false, walls };
963
+ const contractAliases = [...aliasByGeneric.entries()]
964
+ // A raw-generic pick binds a contract to itself (actual === generic); that
965
+ // is an identity alias the assembler would reject as a restated default.
966
+ // Skip it — the contract already flows under its own name.
967
+ .filter(([generic, actual]) => generic !== actual)
968
+ .map(([generic, actual]) => ({ generic, actual }))
969
+ .sort((a, b) => (a.generic < b.generic ? -1 : a.generic > b.generic ? 1 : 0));
970
+ const stageLabels = {};
971
+ for (const role of roleSet.roles) {
972
+ stageLabels[role.stage] = { id: `${role.stage}-stage`, title: titleCase(role.stage) };
973
+ }
974
+ // A composed topology that does not touch every canonical stage must explain
975
+ // the gap: the engine's partial-spine policy refuses an empty canonical stage
976
+ // without a rationale. The omission is intentional and legible from the role
977
+ // set, so the composer states it rather than forcing the author to.
978
+ const presentStages = new Set(roleSet.roles.map((role) => role.stage));
979
+ const omittedStages = CANONICAL_STAGES.filter((stage) => !presentStages.has(stage));
980
+ const stagePathRationale = omittedStages.length === 0
981
+ ? undefined
982
+ : `Composed topology '${roleSet.id}' intentionally omits the ${omittedStages
983
+ .map((stage) => `'${stage}'`)
984
+ .join(', ')} stage(s): this task's shape does no work there. ${roleSet.purpose}`;
985
+ // Converge flag emission. When the role set asked for a Converge and the gate
986
+ // passed, map the resolved plan onto the fix-until-green engine-flag shape. The
987
+ // tail (reviewer) relay's result report is where the engine reads the stop-judge's
988
+ // goal_met proposal and the lesson it carries forward; that path is the relay
989
+ // result path stepWrites assigns (reports/relay/<tail>.result.json). Default off:
990
+ // an un-opted role set leaves engineFlags undefined, so engine_flags is omitted
991
+ // and the spec is byte-identical to today.
992
+ const engineFlags = convergePlan === undefined
993
+ ? undefined
994
+ : {
995
+ iterates_until_condition: {
996
+ head_step: convergePlan.headStepId,
997
+ tail_step: convergePlan.tailStepId,
998
+ body_steps: [...convergePlan.bodyStepIds],
999
+ reenter_route: 'advance',
1000
+ max_iterations: convergePlan.maxIterations,
1001
+ stop_judge: {
1002
+ report: `reports/relay/${convergePlan.tailStepId}.result.json`,
1003
+ goal_met_path: 'goal_met',
1004
+ lesson_path: 'lesson',
1005
+ },
1006
+ needs_attention_route: 'close',
1007
+ activate_when_depth_at_least: 'autonomous',
1008
+ // The frozen eval surface, when the directive declared one. Emitted only
1009
+ // for a non-empty list so a Converge that froze nothing stays byte-identical
1010
+ // (no frozen_paths key, no guard). The runtime maps frozen_paths -> the
1011
+ // FrozenEvalGuard's baseline (engine-flags.ts, graph-runner.ts).
1012
+ ...(roleSet.convergeUntil?.frozenPaths !== undefined &&
1013
+ roleSet.convergeUntil.frozenPaths.length > 0
1014
+ ? { frozen_paths: [...roleSet.convergeUntil.frozenPaths] }
1015
+ : {}),
1016
+ },
1017
+ };
1018
+ const spec = {
1019
+ id: roleSet.id,
1020
+ title: roleSet.title,
1021
+ purpose: roleSet.purpose,
1022
+ status: 'active',
1023
+ version: '0.1.0',
1024
+ initial_contracts: [...usedAmbient].sort(),
1025
+ contract_aliases: contractAliases,
1026
+ axes: {
1027
+ allowed_depths: ['medium'],
1028
+ supports_tournament: false,
1029
+ supports_autonomous: true,
1030
+ default: { depth: 'medium', tournament: false, tournament_n: 3, autonomous: false },
1031
+ },
1032
+ items,
1033
+ stageLabels,
1034
+ ...(stagePathRationale === undefined ? {} : { stagePathRationale }),
1035
+ ...(engineFlags === undefined ? {} : { engine_flags: engineFlags }),
1036
+ };
1037
+ // Producibility wall (opt-in). The spec is structurally sound, but a compose or
1038
+ // close writer can still declare a REQUIRED upstream read with no producer — a
1039
+ // family mismatch the offline floor does not model (e.g. a build-family `plan`
1040
+ // writer that needs build.brief@v1 welded onto a frame that can only produce
1041
+ // fix.brief@v1, because build.brief@v1 is checkpoint-only). Such a flow aborts
1042
+ // the instant that writer runs. Unlike the terminal close, an intermediate
1043
+ // writer has no generic fallback to rebind to, so the honest move is to reject.
1044
+ if (options.enforceRunnability === true) {
1045
+ const runnability = evaluateRunnability(spec);
1046
+ if (!runnability.runnable) {
1047
+ // Self-heal: if the abort is about build.brief@v1 missing and there's a
1048
+ // compose frame that could be promoted to checkpoint, try that before
1049
+ // walling. This closes a producibility gap: a composed build arc that opens
1050
+ // with a compose frame needs the checkpoint-blessed brief to be runnable.
1051
+ const buildBriefAbort = runnability.aborts.find((abort) => abort.reason.includes("expected exactly one report writer for schema 'build.brief@v1'"));
1052
+ const frameRole = roleSet.roles.find((role) => role.block === 'frame' && role.executionKind === 'compose');
1053
+ if (buildBriefAbort !== undefined && frameRole !== undefined) {
1054
+ // Promote the frame to checkpoint and re-compose. The checkpoint frame
1055
+ // produces build.brief@v1, which downstream build readers need.
1056
+ const promotedRoles = roleSet.roles.map((role) => role === frameRole ? { ...role, executionKind: 'checkpoint' } : role);
1057
+ const promotedOutcome = composeFlow({ ...roleSet, roles: promotedRoles }, options);
1058
+ if (promotedOutcome.ok) {
1059
+ return promotedOutcome;
1060
+ }
1061
+ // If the promoted arc still fails, fall through to wall the original abort.
1062
+ }
1063
+ // A wall names a block, not a free step id; map the aborting step back to
1064
+ // its block so the wall stays typed and legible. The step id rides in the
1065
+ // reason so the operator sees exactly where the run would have stopped.
1066
+ const blockByStepId = new Map(items.map((item) => [item.id, item.block]));
1067
+ const fallbackBlock = items[0]?.block ?? roleSet.roles[0]?.block;
1068
+ const runnabilityWalls = runnability.aborts.map((abort) => ({
1069
+ roleIndex: -1,
1070
+ block: blockByStepId.get(abort.stepId) ?? fallbackBlock,
1071
+ reason: `step '${abort.stepId}' (${abort.schema}) is not runnable: ${abort.reason}`,
1072
+ }));
1073
+ if (runnabilityWalls.length === 0) {
1074
+ runnabilityWalls.push({
1075
+ roleIndex: -1,
1076
+ block: fallbackBlock,
1077
+ reason: runnability.error ?? 'composed flow is not runnable',
1078
+ });
1079
+ }
1080
+ return { ok: false, walls: runnabilityWalls };
1081
+ }
1082
+ }
1083
+ return { ok: true, spec, selections };
1084
+ }
1085
+ function describeInputSets(block) {
1086
+ const sets = [
1087
+ block.input_contracts.map(asString),
1088
+ ...(block.alternative_input_contracts ?? []).map((set) => set.map(asString)),
1089
+ ];
1090
+ return sets.map((set) => `[${set.join(', ')}]`).join(' OR ');
1091
+ }
1092
+ // Deterministic, unique, route-target-legal step ids: the block id, with an
1093
+ // occurrence suffix when a block appears more than once.
1094
+ function assignStepIds(roles) {
1095
+ const counts = new Map();
1096
+ const total = new Map();
1097
+ for (const role of roles)
1098
+ total.set(role.block, (total.get(role.block) ?? 0) + 1);
1099
+ return roles.map((role) => {
1100
+ const seen = (counts.get(role.block) ?? 0) + 1;
1101
+ counts.set(role.block, seen);
1102
+ return (total.get(role.block) ?? 1) > 1 ? `${role.block}-${seen}` : role.block;
1103
+ });
1104
+ }
1105
+ // The default Converge iteration cap, matching fix-until-green's max_iterations.
1106
+ const DEFAULT_CONVERGE_MAX_ITERATIONS = 3;
1107
+ // Resolve (and gate) a Converge request. Returns the wiring plan when the role set
1108
+ // has the three roles a Converge needs, in canonical order: an act-stage
1109
+ // implementer relay (head), a run-verification step (the evidence floor), and a
1110
+ // review-stage reviewer relay (tail), with the floor sitting between head and
1111
+ // tail. A missing role pushes a plain-English wall and returns undefined, so the
1112
+ // composer fails closed rather than emitting a loop with no floor to check the
1113
+ // judge against. The wall reason names what to add, so a repair pass can act.
1114
+ function resolveConvergePlan(roleSet, stepIds, walls) {
1115
+ const roles = roleSet.roles;
1116
+ const headIndex = roles.findIndex((role) => role.stage === 'act' && role.executionKind === 'relay' && role.relayRole === 'implementer');
1117
+ const verifyIndex = roles.findIndex((role) => role.block === 'run-verification');
1118
+ const tailIndex = roles.findIndex((role) => role.stage === 'review' && role.executionKind === 'relay' && role.relayRole === 'reviewer');
1119
+ // The load-bearing wall: no run-verification step means the judge's goal-met
1120
+ // claim is checked against nothing. Refuse to build a loop with no evidence floor.
1121
+ if (verifyIndex === -1) {
1122
+ walls.push({
1123
+ roleIndex: -1,
1124
+ block: 'run-verification',
1125
+ reason: 'a Converge loop needs a run-verification step in its body so the stop-judge’s goal-met claim is checked against a real evidence floor; this role set has none. Add a run-verification step between the act and review steps.',
1126
+ });
1127
+ return undefined;
1128
+ }
1129
+ if (headIndex === -1) {
1130
+ walls.push({
1131
+ roleIndex: -1,
1132
+ block: 'act',
1133
+ reason: 'a Converge loop needs an act-stage implementer step as its loop head (the work the loop re-attempts each pass); this role set has none. Add an act step with an implementer relay.',
1134
+ });
1135
+ return undefined;
1136
+ }
1137
+ if (tailIndex === -1) {
1138
+ walls.push({
1139
+ roleIndex: -1,
1140
+ block: 'review',
1141
+ reason: 'a Converge loop needs a review-stage reviewer step as its loop tail (the stop-judge that proposes whether the goal is met); this role set has none. Add a review step with a reviewer relay.',
1142
+ });
1143
+ return undefined;
1144
+ }
1145
+ // Canonical order: head, then the floor, then the tail. A floor outside the
1146
+ // [head..tail] span would not run inside the loop, so its verdict could never
1147
+ // gate the judge — wall rather than emit a loop whose floor sits outside it.
1148
+ if (!(headIndex < verifyIndex && verifyIndex < tailIndex)) {
1149
+ walls.push({
1150
+ roleIndex: -1,
1151
+ block: 'run-verification',
1152
+ reason: 'a Converge loop must run its act, run-verification, and review steps in that order so each pass re-attempts, re-checks, then re-judges; this role set orders them differently. Put the run-verification step between the act and review steps.',
1153
+ });
1154
+ return undefined;
1155
+ }
1156
+ const headStepId = stepIds[headIndex];
1157
+ const tailStepId = stepIds[tailIndex];
1158
+ const bodyStepIds = stepIds.slice(headIndex, tailIndex + 1);
1159
+ const maxIterations = roleSet.convergeUntil?.maxIterations ?? DEFAULT_CONVERGE_MAX_ITERATIONS;
1160
+ return { headIndex, headStepId, verifyIndex, tailIndex, tailStepId, bodyStepIds, maxIterations };
1161
+ }
1162
+ // ----------------------------------------------------------------------------
1163
+ // Phase 0 milestone target: research-then-build.
1164
+ //
1165
+ // "Research X, then build the chosen option and verify it." A research front
1166
+ // (frame → gather context → plan) welded to a build back (act → verify → review
1167
+ // → close). This sequence is none of the eight built-in families, and it is the
1168
+ // spike's attempt #3 that scored 0/3. It is the make-or-break Phase 0 target.
1169
+ export const RESEARCH_THEN_BUILD = {
1170
+ id: 'research-then-build',
1171
+ title: 'Research then Build',
1172
+ purpose: 'Research the options for a task, form a plan, build the chosen option, verify it, review it, and close with evidence. A composed research-front welded to a build-back; no single built-in family covers this shape.',
1173
+ roles: [
1174
+ { stage: 'frame', block: 'frame', executionKind: 'compose' },
1175
+ { stage: 'analyze', block: 'gather-context', executionKind: 'relay', relayRole: 'researcher' },
1176
+ { stage: 'plan', block: 'plan', executionKind: 'compose' },
1177
+ { stage: 'act', block: 'act', executionKind: 'relay', relayRole: 'implementer' },
1178
+ { stage: 'verify', block: 'run-verification', executionKind: 'verification' },
1179
+ { stage: 'review', block: 'review', executionKind: 'relay', relayRole: 'reviewer' },
1180
+ {
1181
+ stage: 'close',
1182
+ block: 'close-with-evidence',
1183
+ executionKind: 'compose',
1184
+ terminal: true,
1185
+ },
1186
+ ],
1187
+ };
1188
+ // ----------------------------------------------------------------------------
1189
+ // Rung 1 milestone target: frame-a-contract, then DELEGATE to a child flow.
1190
+ //
1191
+ // "Frame the task into a goal contract, then run the Fix flow to satisfy it, and
1192
+ // close with the child's evidence." The middle step is a SUB-RUN: a whole child
1193
+ // flow executed as one step, admitted back only through its RunResult verdict —
1194
+ // the first non-linear shape that crosses a flow boundary (the loop stayed inline).
1195
+ // The leaf binds the donor goal-child-run actual for `fix`; the close soaks the
1196
+ // child result forward. None of the eight built-ins is this two-line shape: goal
1197
+ // wraps the same delegation in a five-step attempt/evaluate/recover loop.
1198
+ export const GOAL_THEN_FIX = {
1199
+ id: 'goal-then-fix',
1200
+ title: 'Frame a contract then delegate to Fix',
1201
+ purpose: 'Frame the task into a goal contract, delegate the work to the Fix child flow as a sub-run, and close with the child run’s evidence. A composed frame-then-delegate shape; the sub-run runs a whole flow as one step, gated on its result verdict.',
1202
+ roles: [
1203
+ { stage: 'frame', block: 'goal', executionKind: 'compose' },
1204
+ {
1205
+ stage: 'act',
1206
+ block: 'goal-child-run',
1207
+ executionKind: 'sub-run',
1208
+ flowId: 'fix',
1209
+ goalText: 'Satisfy the framed goal contract: diagnose the failure, make the change, and prove it with a report-backed verification packet.',
1210
+ subRunDepth: 'medium',
1211
+ },
1212
+ {
1213
+ stage: 'close',
1214
+ block: 'close-with-evidence',
1215
+ executionKind: 'compose',
1216
+ terminal: true,
1217
+ },
1218
+ ],
1219
+ };
1220
+ // ----------------------------------------------------------------------------
1221
+ // Goal-family REACHABILITY target: the runnable goal arc, end to end.
1222
+ //
1223
+ // GOAL_THEN_FIX above opens on the `goal` block, which composes a goal CONTRACT —
1224
+ // and the goal-contract writer REQUIRES reading the clarified task (the precise
1225
+ // task statement an upstream `clarify` relay produces in the real goal flow).
1226
+ // Open on `goal` with nothing upstream and that read has no producer, so the flow
1227
+ // is VALID offline but ABORTS the instant the contract writer runs. The real goal
1228
+ // family solves this by clarifying first; this role set does the same. `clarify`
1229
+ // turns the raw operator intake into a precise task (binding the goal family's own
1230
+ // goal.clarified-task@v1 actual), then `goal` frames the contract FROM it, then the
1231
+ // Fix child runs as a sub-run, and the close soaks the child evidence. This is the
1232
+ // goal analog of CLARIFY_OPENS (a clarify-opened fix arc): a composed flow the
1233
+ // composer can run end to end, not merely validate.
1234
+ export const GOAL_CLARIFY_THEN_FIX = {
1235
+ id: 'goal-clarify-then-fix',
1236
+ title: 'Clarify the task, frame a contract, then delegate to Fix',
1237
+ purpose: 'Clarify the raw request into a precise task, frame that task into a goal contract, delegate the work to the Fix child flow as a sub-run, and close with the child run’s evidence. A composed clarify-frame-then-delegate shape that runs end to end.',
1238
+ roles: [
1239
+ { stage: 'frame', block: 'clarify', executionKind: 'relay', relayRole: 'researcher' },
1240
+ { stage: 'frame', block: 'goal', executionKind: 'compose' },
1241
+ {
1242
+ stage: 'act',
1243
+ block: 'goal-child-run',
1244
+ executionKind: 'sub-run',
1245
+ flowId: 'fix',
1246
+ goalText: 'Satisfy the framed goal contract: diagnose the failure, make the change, and prove it with a report-backed verification packet.',
1247
+ subRunDepth: 'medium',
1248
+ },
1249
+ {
1250
+ stage: 'close',
1251
+ block: 'close-with-evidence',
1252
+ executionKind: 'compose',
1253
+ terminal: true,
1254
+ },
1255
+ ],
1256
+ };
1257
+ // ----------------------------------------------------------------------------
1258
+ // Rung 2 milestone target: frame, plan, then FAN OUT parallel child runs.
1259
+ //
1260
+ // "Frame the task, form a plan, then run two child flows IN PARALLEL and close
1261
+ // with whichever survives." The act step is a STATIC FANOUT: a fixed set of
1262
+ // sub-run branches launched concurrently, joined as `aggregate-survivors` — the
1263
+ // first composed shape that is BOTH non-linear AND multi-child. Each branch is a
1264
+ // sub-run leaf, so the recursion cap bounds every branch exactly as it bounds a
1265
+ // lone sub-run; with the cap reached, all branches refuse, the join collapses,
1266
+ // and the step aborts (no child runner ever spawns). Static branches list their
1267
+ // children upfront, so there is no upstream `source_report` to place and the
1268
+ // shape is provable offline with stub children. None of the eight built-ins is
1269
+ // this shape: the dynamic fanouts (prototype, explore, explainer) read their
1270
+ // branch set from an upstream report and run relay children, not parallel sub-runs.
1271
+ export const FANOUT_PARALLEL_BUILD = {
1272
+ id: 'fanout-parallel-build',
1273
+ title: 'Frame, plan, then fan out parallel child runs',
1274
+ purpose: 'Frame the task into a brief, form a plan, then fan out two child flows as parallel sub-runs and close with the surviving evidence. A composed frame-plan-fanout shape; the fanout runs whole flows in parallel and admits the survivors through an aggregate-survivors join.',
1275
+ roles: [
1276
+ { stage: 'frame', block: 'frame', executionKind: 'compose' },
1277
+ { stage: 'plan', block: 'plan', executionKind: 'compose' },
1278
+ {
1279
+ stage: 'act',
1280
+ block: 'act',
1281
+ executionKind: 'fanout',
1282
+ fanoutBranches: [
1283
+ {
1284
+ branchId: 'fix-path',
1285
+ flowId: 'fix',
1286
+ goalText: 'Satisfy the plan by repairing the existing implementation: diagnose, change, and prove it with a verification packet.',
1287
+ depth: 'medium',
1288
+ },
1289
+ {
1290
+ branchId: 'build-path',
1291
+ flowId: 'build',
1292
+ goalText: 'Satisfy the plan by building the change from the plan: implement, verify, and prove it with a report-backed packet.',
1293
+ depth: 'medium',
1294
+ },
1295
+ ],
1296
+ },
1297
+ {
1298
+ stage: 'close',
1299
+ block: 'close-with-evidence',
1300
+ executionKind: 'compose',
1301
+ terminal: true,
1302
+ },
1303
+ ],
1304
+ };
1305
+ // ----------------------------------------------------------------------------
1306
+ // Build-family REACHABILITY target: the full build arc, composed end to end.
1307
+ //
1308
+ // The build family opens on a CHECKPOINT frame — the `frame` block run as a
1309
+ // checkpoint produces build.brief@v1, the brief the operator blesses before any
1310
+ // work begins. Every downstream step needs that brief: `plan` reads it directly
1311
+ // (its compose writer requires build.brief@v1), and the close soaks it forward as
1312
+ // evidence. A composed checkpoint, though, historically wrote only its
1313
+ // request/response routing paths — never a report_path — so the brief it produced
1314
+ // had no read path and the compile WALLED ("frame produces build.brief@v1 but has
1315
+ // no writes.report_path"). The real build flow's frame-step writes
1316
+ // reports/build/brief.json alongside its checkpoint paths; this role set is the
1317
+ // composed analog, and it runs only once stepWrites gives a checkpoint the same
1318
+ // readable report_path. None of the other composed shapes opens on a content
1319
+ // checkpoint (RESEARCH_THEN_BUILD frames with a plain compose), so this is the
1320
+ // shape that exercises the readable-checkpoint path.
1321
+ export const BUILD_LINEAR_FULL = {
1322
+ id: 'build-linear-full',
1323
+ title: 'Frame a build brief, plan, build, verify, review, close',
1324
+ purpose: 'Checkpoint-frame the task into a build brief the operator blesses, form a plan from it, implement the change, verify it, review it, and close with evidence. A composed full build arc; the frame is a content checkpoint whose brief every later step reads.',
1325
+ roles: [
1326
+ { stage: 'frame', block: 'frame', executionKind: 'checkpoint' },
1327
+ { stage: 'plan', block: 'plan', executionKind: 'compose' },
1328
+ { stage: 'act', block: 'act', executionKind: 'relay', relayRole: 'implementer' },
1329
+ { stage: 'verify', block: 'run-verification', executionKind: 'verification' },
1330
+ { stage: 'review', block: 'review', executionKind: 'relay', relayRole: 'reviewer' },
1331
+ {
1332
+ stage: 'close',
1333
+ block: 'close-with-evidence',
1334
+ executionKind: 'compose',
1335
+ terminal: true,
1336
+ },
1337
+ ],
1338
+ };
1339
+ //# sourceMappingURL=composer.js.map