@intentius/chant 0.124.28 → 0.124.30

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 (449) hide show
  1. package/dist/build-params.d.ts +34 -1
  2. package/dist/build-params.d.ts.map +1 -1
  3. package/dist/build-params.js +31 -1
  4. package/dist/change-set-graph.d.ts +8 -1
  5. package/dist/change-set-graph.d.ts.map +1 -1
  6. package/dist/change-set-graph.js +4 -2
  7. package/dist/change-set.d.ts +10 -0
  8. package/dist/change-set.d.ts.map +1 -1
  9. package/dist/change-set.js +4 -3
  10. package/dist/cli/build-params-cli.d.ts +7 -1
  11. package/dist/cli/build-params-cli.d.ts.map +1 -1
  12. package/dist/cli/build-params-cli.js +17 -8
  13. package/dist/cli/commands/build.d.ts.map +1 -1
  14. package/dist/cli/commands/build.js +6 -3
  15. package/dist/cli/handlers/approve.d.ts.map +1 -1
  16. package/dist/cli/handlers/approve.js +45 -0
  17. package/dist/cli/handlers/build.d.ts.map +1 -1
  18. package/dist/cli/handlers/build.js +18 -4
  19. package/dist/cli/handlers/fan-out.d.ts +9 -0
  20. package/dist/cli/handlers/fan-out.d.ts.map +1 -1
  21. package/dist/cli/handlers/fan-out.js +67 -8
  22. package/dist/cli/handlers/lifecycle-gc.d.ts +19 -0
  23. package/dist/cli/handlers/lifecycle-gc.d.ts.map +1 -0
  24. package/dist/cli/handlers/lifecycle-gc.js +143 -0
  25. package/dist/cli/handlers/pr.d.ts +11 -3
  26. package/dist/cli/handlers/pr.d.ts.map +1 -1
  27. package/dist/cli/handlers/pr.js +134 -26
  28. package/dist/cli/handlers/promote.d.ts +7 -0
  29. package/dist/cli/handlers/promote.d.ts.map +1 -1
  30. package/dist/cli/handlers/promote.js +210 -33
  31. package/dist/cli/handlers/release.d.ts +62 -5
  32. package/dist/cli/handlers/release.d.ts.map +1 -1
  33. package/dist/cli/handlers/release.js +414 -28
  34. package/dist/cli/handlers/run.d.ts +11 -1
  35. package/dist/cli/handlers/run.d.ts.map +1 -1
  36. package/dist/cli/handlers/run.js +67 -6
  37. package/dist/cli/main.d.ts.map +1 -1
  38. package/dist/cli/main.js +91 -10
  39. package/dist/cli/parse-args.d.ts.map +1 -1
  40. package/dist/cli/parse-args.js +73 -2
  41. package/dist/cli/registry.d.ts +32 -4
  42. package/dist/cli/registry.d.ts.map +1 -1
  43. package/dist/cli/run-events.d.ts +3 -2
  44. package/dist/cli/run-events.d.ts.map +1 -1
  45. package/dist/cli/run-events.js +5 -3
  46. package/dist/components/auto-release.d.ts +2 -0
  47. package/dist/components/auto-release.d.ts.map +1 -1
  48. package/dist/components/auto-release.js +1 -0
  49. package/dist/components/capability.d.ts +9 -0
  50. package/dist/components/capability.d.ts.map +1 -1
  51. package/dist/components/driver.d.ts +8 -0
  52. package/dist/components/driver.d.ts.map +1 -1
  53. package/dist/components/driver.js +35 -0
  54. package/dist/components/fan-out-inputs.d.ts +69 -0
  55. package/dist/components/fan-out-inputs.d.ts.map +1 -0
  56. package/dist/components/fan-out-inputs.js +169 -0
  57. package/dist/components/fan-out-record.d.ts +13 -0
  58. package/dist/components/fan-out-record.d.ts.map +1 -1
  59. package/dist/components/fan-out-record.js +16 -0
  60. package/dist/components/fan-out-run.d.ts.map +1 -1
  61. package/dist/components/fan-out-run.js +50 -0
  62. package/dist/components/fan-out.d.ts +4 -0
  63. package/dist/components/fan-out.d.ts.map +1 -1
  64. package/dist/components/pr-pipeline.d.ts +49 -0
  65. package/dist/components/pr-pipeline.d.ts.map +1 -1
  66. package/dist/components/pr-pipeline.js +38 -4
  67. package/dist/components/pr-run.d.ts +20 -2
  68. package/dist/components/pr-run.d.ts.map +1 -1
  69. package/dist/components/pr-run.js +26 -13
  70. package/dist/components/promote.d.ts +23 -0
  71. package/dist/components/promote.d.ts.map +1 -1
  72. package/dist/components/promote.js +60 -2
  73. package/dist/components/release-compile.d.ts +9 -0
  74. package/dist/components/release-compile.d.ts.map +1 -1
  75. package/dist/components/release-compile.js +9 -3
  76. package/dist/components/release-gate.d.ts +11 -1
  77. package/dist/components/release-gate.d.ts.map +1 -1
  78. package/dist/components/release-gate.js +10 -4
  79. package/dist/components/wave-plan.d.ts +16 -0
  80. package/dist/components/wave-plan.d.ts.map +1 -1
  81. package/dist/components/wave-plan.js +36 -2
  82. package/dist/config.d.ts +38 -0
  83. package/dist/config.d.ts.map +1 -1
  84. package/dist/config.js +2 -0
  85. package/dist/flag-params.d.ts +54 -0
  86. package/dist/flag-params.d.ts.map +1 -0
  87. package/dist/flag-params.js +130 -0
  88. package/dist/lifecycle/__fixtures__/publish-fakes.d.ts +120 -0
  89. package/dist/lifecycle/__fixtures__/publish-fakes.d.ts.map +1 -0
  90. package/dist/lifecycle/__fixtures__/publish-fakes.js +304 -0
  91. package/dist/lifecycle/change-set-store.d.ts +2 -1
  92. package/dist/lifecycle/change-set-store.d.ts.map +1 -1
  93. package/dist/lifecycle/change-set-store.js +2 -1
  94. package/dist/lifecycle/delivery-metrics.d.ts +139 -0
  95. package/dist/lifecycle/delivery-metrics.d.ts.map +1 -0
  96. package/dist/lifecycle/delivery-metrics.js +145 -0
  97. package/dist/lifecycle/deploy-outcome.d.ts +81 -0
  98. package/dist/lifecycle/deploy-outcome.d.ts.map +1 -0
  99. package/dist/lifecycle/deploy-outcome.js +101 -0
  100. package/dist/lifecycle/gate-change-set.d.ts +10 -1
  101. package/dist/lifecycle/gate-change-set.d.ts.map +1 -1
  102. package/dist/lifecycle/gate-change-set.js +35 -3
  103. package/dist/lifecycle/gate-ledger.d.ts +2 -3
  104. package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
  105. package/dist/lifecycle/git.d.ts +30 -1
  106. package/dist/lifecycle/git.d.ts.map +1 -1
  107. package/dist/lifecycle/git.js +31 -5
  108. package/dist/lifecycle/index.d.ts +4 -0
  109. package/dist/lifecycle/index.d.ts.map +1 -1
  110. package/dist/lifecycle/index.js +4 -0
  111. package/dist/lifecycle/mixed-environment.d.ts +95 -0
  112. package/dist/lifecycle/mixed-environment.d.ts.map +1 -0
  113. package/dist/lifecycle/mixed-environment.js +154 -0
  114. package/dist/lifecycle/publish-attachments.d.ts +79 -0
  115. package/dist/lifecycle/publish-attachments.d.ts.map +1 -0
  116. package/dist/lifecycle/publish-attachments.js +179 -0
  117. package/dist/lifecycle/publish-credentials.d.ts +37 -0
  118. package/dist/lifecycle/publish-credentials.d.ts.map +1 -0
  119. package/dist/lifecycle/publish-credentials.js +69 -0
  120. package/dist/lifecycle/publish-declaration.d.ts +97 -0
  121. package/dist/lifecycle/publish-declaration.d.ts.map +1 -0
  122. package/dist/lifecycle/publish-declaration.js +83 -0
  123. package/dist/lifecycle/publish-forge.d.ts +53 -0
  124. package/dist/lifecycle/publish-forge.d.ts.map +1 -0
  125. package/dist/lifecycle/publish-forge.js +298 -0
  126. package/dist/lifecycle/publish-npm.d.ts +61 -0
  127. package/dist/lifecycle/publish-npm.d.ts.map +1 -0
  128. package/dist/lifecycle/publish-npm.js +242 -0
  129. package/dist/lifecycle/publish-oci.d.ts +64 -0
  130. package/dist/lifecycle/publish-oci.d.ts.map +1 -0
  131. package/dist/lifecycle/publish-oci.js +383 -0
  132. package/dist/lifecycle/publish-record.d.ts +66 -0
  133. package/dist/lifecycle/publish-record.d.ts.map +1 -0
  134. package/dist/lifecycle/publish-record.js +84 -0
  135. package/dist/lifecycle/publish-targets.d.ts +45 -0
  136. package/dist/lifecycle/publish-targets.d.ts.map +1 -0
  137. package/dist/lifecycle/publish-targets.js +85 -0
  138. package/dist/lifecycle/release-cut.d.ts +48 -1
  139. package/dist/lifecycle/release-cut.d.ts.map +1 -1
  140. package/dist/lifecycle/release-cut.js +116 -23
  141. package/dist/lifecycle/release-join.d.ts +95 -0
  142. package/dist/lifecycle/release-join.d.ts.map +1 -0
  143. package/dist/lifecycle/release-join.js +139 -0
  144. package/dist/lifecycle/release-ledger.d.ts +8 -3
  145. package/dist/lifecycle/release-ledger.d.ts.map +1 -1
  146. package/dist/lifecycle/release-ledger.js +2 -0
  147. package/dist/lifecycle/release-publish.d.ts +312 -0
  148. package/dist/lifecycle/release-publish.d.ts.map +1 -0
  149. package/dist/lifecycle/release-publish.js +335 -0
  150. package/dist/lifecycle/release-revocation.d.ts +80 -0
  151. package/dist/lifecycle/release-revocation.d.ts.map +1 -0
  152. package/dist/lifecycle/release-revocation.js +123 -0
  153. package/dist/lifecycle/release-store.d.ts +12 -2
  154. package/dist/lifecycle/release-store.d.ts.map +1 -1
  155. package/dist/lifecycle/release-store.js +4 -2
  156. package/dist/lifecycle/release-verify.d.ts +61 -0
  157. package/dist/lifecycle/release-verify.d.ts.map +1 -0
  158. package/dist/lifecycle/release-verify.js +92 -0
  159. package/dist/lifecycle/release-workstation.d.ts +91 -0
  160. package/dist/lifecycle/release-workstation.d.ts.map +1 -0
  161. package/dist/lifecycle/release-workstation.js +180 -0
  162. package/dist/lifecycle/retention-policy.d.ts +45 -0
  163. package/dist/lifecycle/retention-policy.d.ts.map +1 -0
  164. package/dist/lifecycle/retention-policy.js +43 -0
  165. package/dist/lifecycle/retention.d.ts +185 -0
  166. package/dist/lifecycle/retention.d.ts.map +1 -0
  167. package/dist/lifecycle/retention.js +400 -0
  168. package/dist/lifecycle/run-ledger.d.ts +1 -1
  169. package/dist/lifecycle/run-ledger.d.ts.map +1 -1
  170. package/dist/lifecycle/run-ledger.js +9 -0
  171. package/dist/op/activities/activity-contracts.d.ts +1 -0
  172. package/dist/op/activities/activity-contracts.d.ts.map +1 -1
  173. package/dist/op/activities/activity-contracts.js +1 -0
  174. package/dist/op/activities/shell.d.ts +6 -0
  175. package/dist/op/activities/shell.d.ts.map +1 -1
  176. package/dist/op/activities/shell.js +1 -1
  177. package/dist/op/local-executor.d.ts +23 -1
  178. package/dist/op/local-executor.d.ts.map +1 -1
  179. package/dist/op/local-executor.js +9 -3
  180. package/dist/op/runtime.d.ts +27 -0
  181. package/dist/op/runtime.d.ts.map +1 -1
  182. package/dist/op/runtime.js +20 -0
  183. package/dist/plan-summary.d.ts.map +1 -1
  184. package/dist/plan-summary.js +8 -2
  185. package/dist/pr-forge.d.ts +23 -0
  186. package/dist/pr-forge.d.ts.map +1 -1
  187. package/dist/pr-forge.js +44 -0
  188. package/dist/pr-loop.d.ts +17 -0
  189. package/dist/pr-loop.d.ts.map +1 -1
  190. package/dist/pr-loop.js +30 -4
  191. package/dist/pr-report-url.d.ts +82 -0
  192. package/dist/pr-report-url.d.ts.map +1 -0
  193. package/dist/pr-report-url.js +174 -0
  194. package/dist/provenance.d.ts +2 -2
  195. package/dist/provenance.d.ts.map +1 -1
  196. package/dist/run-event-store.d.ts +29 -2
  197. package/dist/run-event-store.d.ts.map +1 -1
  198. package/dist/run-event-store.js +50 -3
  199. package/dist/run-event-stream.d.ts +4 -3
  200. package/dist/run-event-stream.d.ts.map +1 -1
  201. package/dist/run-event-stream.js +7 -3
  202. package/dist/run-event.d.ts +34 -1
  203. package/dist/run-event.d.ts.map +1 -1
  204. package/dist/run-event.js +4 -0
  205. package/dist/wave-runtime.mjs +260 -229
  206. package/dist/workspace/__fixtures__/flag-workspace.d.ts +31 -0
  207. package/dist/workspace/__fixtures__/flag-workspace.d.ts.map +1 -0
  208. package/dist/workspace/__fixtures__/flag-workspace.js +114 -0
  209. package/dist/workspace/change-set.schema.json +5 -1
  210. package/dist/workspace/check.schema.json +4 -2
  211. package/dist/workspace/checks/records.d.ts +9 -1
  212. package/dist/workspace/checks/records.d.ts.map +1 -1
  213. package/dist/workspace/checks/records.js +35 -1
  214. package/dist/workspace/checks.d.ts +1 -0
  215. package/dist/workspace/checks.d.ts.map +1 -1
  216. package/dist/workspace/checks.js +2 -1
  217. package/dist/workspace/ci-green-forge.d.ts +2 -0
  218. package/dist/workspace/ci-green-forge.d.ts.map +1 -1
  219. package/dist/workspace/ci-green.d.ts +10 -0
  220. package/dist/workspace/ci-green.d.ts.map +1 -1
  221. package/dist/workspace/ci-green.js +14 -5
  222. package/dist/workspace/ci-run.d.ts +222 -0
  223. package/dist/workspace/ci-run.d.ts.map +1 -0
  224. package/dist/workspace/ci-run.js +464 -0
  225. package/dist/workspace/ci-serve.d.ts +214 -0
  226. package/dist/workspace/ci-serve.d.ts.map +1 -0
  227. package/dist/workspace/ci-serve.js +412 -0
  228. package/dist/workspace/declaration.d.ts +16 -0
  229. package/dist/workspace/declaration.d.ts.map +1 -1
  230. package/dist/workspace/declaration.js +26 -0
  231. package/dist/workspace/declaration.schema.json +64 -0
  232. package/dist/workspace/declared-kinds.d.ts +16 -0
  233. package/dist/workspace/declared-kinds.d.ts.map +1 -1
  234. package/dist/workspace/declared-kinds.js +25 -0
  235. package/dist/workspace/delivery-metrics.d.ts +91 -0
  236. package/dist/workspace/delivery-metrics.d.ts.map +1 -0
  237. package/dist/workspace/delivery-metrics.js +217 -0
  238. package/dist/workspace/delivery-metrics.schema.json +519 -0
  239. package/dist/workspace/flags-read.d.ts +37 -0
  240. package/dist/workspace/flags-read.d.ts.map +1 -0
  241. package/dist/workspace/flags-read.js +103 -0
  242. package/dist/workspace/flags.d.ts +100 -0
  243. package/dist/workspace/flags.d.ts.map +1 -0
  244. package/dist/workspace/flags.js +98 -0
  245. package/dist/workspace/graph-cli.js +1 -1
  246. package/dist/workspace/intent-cli.d.ts +11 -2
  247. package/dist/workspace/intent-cli.d.ts.map +1 -1
  248. package/dist/workspace/intent-cli.js +54 -5
  249. package/dist/workspace/intent-trace.d.ts +219 -0
  250. package/dist/workspace/intent-trace.d.ts.map +1 -0
  251. package/dist/workspace/intent-trace.js +314 -0
  252. package/dist/workspace/intent.d.ts +30 -6
  253. package/dist/workspace/intent.d.ts.map +1 -1
  254. package/dist/workspace/intent.js +141 -21
  255. package/dist/workspace/intent.schema.json +702 -6
  256. package/dist/workspace/overlap.d.ts +146 -0
  257. package/dist/workspace/overlap.d.ts.map +1 -0
  258. package/dist/workspace/overlap.js +276 -0
  259. package/dist/workspace/pr-report.schema.json +5 -0
  260. package/dist/workspace/reason-codes.d.ts +2 -0
  261. package/dist/workspace/reason-codes.d.ts.map +1 -1
  262. package/dist/workspace/reason-codes.js +3 -0
  263. package/dist/workspace/records.d.ts +15 -2
  264. package/dist/workspace/records.d.ts.map +1 -1
  265. package/dist/workspace/records.js +32 -0
  266. package/dist/workspace/records.schema.json +21 -2
  267. package/dist/workspace/reference-kinds/flag/flag.kind.mjs +32 -0
  268. package/dist/workspace/reference-kinds/flag/flag.schema.json +53 -0
  269. package/dist/workspace/releases.d.ts +9 -0
  270. package/dist/workspace/releases.d.ts.map +1 -1
  271. package/dist/workspace/releases.js +9 -0
  272. package/dist/workspace/releases.schema.json +123 -1
  273. package/dist/workspace/run-event.schema.json +24 -6
  274. package/dist/workspace/status-gates.d.ts +8 -0
  275. package/dist/workspace/status-gates.d.ts.map +1 -1
  276. package/dist/workspace/status-stewards.d.ts +2 -0
  277. package/dist/workspace/status-stewards.d.ts.map +1 -1
  278. package/dist/workspace/status-stewards.js +1 -0
  279. package/dist/workspace/status.d.ts +78 -0
  280. package/dist/workspace/status.d.ts.map +1 -1
  281. package/dist/workspace/status.js +170 -3
  282. package/dist/workspace/status.schema.json +210 -2
  283. package/dist/workspace/wip.d.ts.map +1 -1
  284. package/dist/workspace/wip.js +11 -3
  285. package/package.json +1 -1
  286. package/src/build-params.test.ts +46 -0
  287. package/src/build-params.ts +55 -1
  288. package/src/change-set-graph.ts +10 -2
  289. package/src/change-set.ts +14 -3
  290. package/src/cli/build-params-cli.ts +22 -9
  291. package/src/cli/commands/build.ts +6 -3
  292. package/src/cli/handlers/approve-release.test.ts +5 -1
  293. package/src/cli/handlers/approve-revoked.test.ts +155 -0
  294. package/src/cli/handlers/approve.ts +47 -0
  295. package/src/cli/handlers/build.test.ts +30 -0
  296. package/src/cli/handlers/build.ts +20 -4
  297. package/src/cli/handlers/fan-out.test.ts +262 -1
  298. package/src/cli/handlers/fan-out.ts +72 -8
  299. package/src/cli/handlers/intent-trace.e2e.test.ts +201 -0
  300. package/src/cli/handlers/lifecycle-gc.test.ts +126 -0
  301. package/src/cli/handlers/lifecycle-gc.ts +146 -0
  302. package/src/cli/handlers/pr.test.ts +148 -1
  303. package/src/cli/handlers/pr.ts +144 -28
  304. package/src/cli/handlers/promote.test.ts +280 -2
  305. package/src/cli/handlers/promote.ts +210 -34
  306. package/src/cli/handlers/release-implicit.e2e.test.ts +12 -4
  307. package/src/cli/handlers/release-join.e2e.test.ts +185 -0
  308. package/src/cli/handlers/release-publish-targets.e2e.test.ts +295 -0
  309. package/src/cli/handlers/release-verify.e2e.test.ts +117 -0
  310. package/src/cli/handlers/release-workstation-ci.e2e.test.ts +135 -0
  311. package/src/cli/handlers/release.e2e.test.ts +146 -32
  312. package/src/cli/handlers/release.ts +415 -28
  313. package/src/cli/handlers/run-auto-release.test.ts +9 -0
  314. package/src/cli/handlers/run-release.test.ts +55 -0
  315. package/src/cli/handlers/run.ts +69 -5
  316. package/src/cli/main.test.ts +1 -0
  317. package/src/cli/main.ts +91 -10
  318. package/src/cli/parse-args.ts +54 -2
  319. package/src/cli/registry.ts +32 -4
  320. package/src/cli/run-events.ts +5 -2
  321. package/src/components/auto-release.test.ts +9 -0
  322. package/src/components/auto-release.ts +3 -0
  323. package/src/components/capability.ts +9 -0
  324. package/src/components/driver.test.ts +24 -0
  325. package/src/components/driver.ts +36 -0
  326. package/src/components/fan-out-inputs.test.ts +85 -0
  327. package/src/components/fan-out-inputs.ts +192 -0
  328. package/src/components/fan-out-record.test.ts +10 -0
  329. package/src/components/fan-out-record.ts +19 -0
  330. package/src/components/fan-out-run.ts +48 -0
  331. package/src/components/fan-out.ts +4 -0
  332. package/src/components/pr-pipeline.ts +67 -4
  333. package/src/components/pr-run.test.ts +127 -0
  334. package/src/components/pr-run.ts +32 -12
  335. package/src/components/promote.ts +68 -2
  336. package/src/components/release-compile.ts +17 -3
  337. package/src/components/release-gate.ts +18 -4
  338. package/src/components/wave-plan.ts +45 -2
  339. package/src/config.ts +8 -0
  340. package/src/flag-params.test.ts +144 -0
  341. package/src/flag-params.ts +134 -0
  342. package/src/lifecycle/__fixtures__/publish-fakes.ts +351 -0
  343. package/src/lifecycle/change-set-store.ts +2 -1
  344. package/src/lifecycle/delivery-metrics.ts +263 -0
  345. package/src/lifecycle/deploy-outcome.ts +147 -0
  346. package/src/lifecycle/gate-change-set.ts +37 -6
  347. package/src/lifecycle/gate-ledger.ts +2 -2
  348. package/src/lifecycle/git.ts +61 -8
  349. package/src/lifecycle/index.ts +4 -0
  350. package/src/lifecycle/mixed-environment.test.ts +97 -0
  351. package/src/lifecycle/mixed-environment.ts +204 -0
  352. package/src/lifecycle/publish-attachments.ts +196 -0
  353. package/src/lifecycle/publish-credentials.ts +84 -0
  354. package/src/lifecycle/publish-declaration.ts +95 -0
  355. package/src/lifecycle/publish-forge.ts +325 -0
  356. package/src/lifecycle/publish-npm.ts +259 -0
  357. package/src/lifecycle/publish-oci.ts +396 -0
  358. package/src/lifecycle/publish-record.ts +113 -0
  359. package/src/lifecycle/publish-resume.test.ts +168 -0
  360. package/src/lifecycle/publish-targets.test.ts +494 -0
  361. package/src/lifecycle/publish-targets.ts +100 -0
  362. package/src/lifecycle/release-cut.test.ts +74 -2
  363. package/src/lifecycle/release-cut.ts +158 -22
  364. package/src/lifecycle/release-flag.test.ts +112 -0
  365. package/src/lifecycle/release-join.test.ts +68 -0
  366. package/src/lifecycle/release-join.ts +182 -0
  367. package/src/lifecycle/release-ledger.ts +9 -3
  368. package/src/lifecycle/release-publish.test.ts +225 -0
  369. package/src/lifecycle/release-publish.ts +568 -0
  370. package/src/lifecycle/release-revocation.ts +147 -0
  371. package/src/lifecycle/release-store.ts +15 -4
  372. package/src/lifecycle/release-verify.test.ts +110 -0
  373. package/src/lifecycle/release-verify.ts +120 -0
  374. package/src/lifecycle/release-workstation.test.ts +204 -0
  375. package/src/lifecycle/release-workstation.ts +216 -0
  376. package/src/lifecycle/retention-growth.e2e.test.ts +279 -0
  377. package/src/lifecycle/retention-policy.ts +63 -0
  378. package/src/lifecycle/retention.test.ts +363 -0
  379. package/src/lifecycle/retention.ts +508 -0
  380. package/src/lifecycle/run-ledger.ts +7 -1
  381. package/src/op/activities/activity-contracts.ts +1 -0
  382. package/src/op/activities/shell.ts +7 -1
  383. package/src/op/local-executor.ts +27 -4
  384. package/src/op/runtime.ts +42 -0
  385. package/src/plan-summary.test.ts +20 -0
  386. package/src/plan-summary.ts +8 -1
  387. package/src/pr-forge.test.ts +25 -0
  388. package/src/pr-forge.ts +62 -0
  389. package/src/pr-loop.test.ts +13 -1
  390. package/src/pr-loop.ts +41 -4
  391. package/src/pr-report-url.test.ts +131 -0
  392. package/src/pr-report-url.ts +209 -0
  393. package/src/provenance.ts +2 -2
  394. package/src/run-event-store.ts +63 -3
  395. package/src/run-event-stream.ts +8 -4
  396. package/src/run-event.ts +38 -1
  397. package/src/workspace/__fixtures__/flag-workspace.ts +132 -0
  398. package/src/workspace/__fixtures__/older-records/change-set-984534ea9.json +100 -0
  399. package/src/workspace/__fixtures__/older-records/older-records.json +326 -0
  400. package/src/workspace/change-set.schema.json +5 -1
  401. package/src/workspace/check.schema.json +4 -2
  402. package/src/workspace/checks/records.ts +35 -1
  403. package/src/workspace/checks.ts +2 -1
  404. package/src/workspace/ci-green-forge.ts +2 -0
  405. package/src/workspace/ci-green.ts +20 -5
  406. package/src/workspace/ci-run.test.ts +416 -0
  407. package/src/workspace/ci-run.ts +571 -0
  408. package/src/workspace/ci-serve.test.ts +268 -0
  409. package/src/workspace/ci-serve.ts +521 -0
  410. package/src/workspace/declaration.schema.json +64 -0
  411. package/src/workspace/declaration.test.ts +28 -0
  412. package/src/workspace/declaration.ts +38 -0
  413. package/src/workspace/declared-kinds.ts +40 -1
  414. package/src/workspace/delivery-metrics.schema.json +519 -0
  415. package/src/workspace/delivery-metrics.test.ts +236 -0
  416. package/src/workspace/delivery-metrics.ts +286 -0
  417. package/src/workspace/flags-read.ts +121 -0
  418. package/src/workspace/flags.test.ts +141 -0
  419. package/src/workspace/flags.ts +157 -0
  420. package/src/workspace/graph-cli.ts +1 -1
  421. package/src/workspace/intent-cli.ts +46 -5
  422. package/src/workspace/intent-trace.test.ts +173 -0
  423. package/src/workspace/intent-trace.ts +484 -0
  424. package/src/workspace/intent.schema.json +702 -6
  425. package/src/workspace/intent.ts +148 -25
  426. package/src/workspace/older-records.test.ts +412 -0
  427. package/src/workspace/overlap.test.ts +165 -0
  428. package/src/workspace/overlap.ts +340 -0
  429. package/src/workspace/pr-report.schema.json +5 -0
  430. package/src/workspace/read-contract.e2e.test.ts +2 -1
  431. package/src/workspace/reason-codes.test.ts +5 -0
  432. package/src/workspace/reason-codes.ts +3 -0
  433. package/src/workspace/record-assets.test.ts +2 -1
  434. package/src/workspace/records-contract.e2e.test.ts +2 -1
  435. package/src/workspace/records.schema.json +21 -2
  436. package/src/workspace/records.ts +36 -2
  437. package/src/workspace/reference-kinds/flag/flag.kind.mjs +32 -0
  438. package/src/workspace/reference-kinds/flag/flag.schema.json +53 -0
  439. package/src/workspace/releases.schema.json +123 -1
  440. package/src/workspace/releases.ts +11 -0
  441. package/src/workspace/run-event.schema.json +24 -6
  442. package/src/workspace/status-contract.test.ts +29 -0
  443. package/src/workspace/status-gates.ts +8 -0
  444. package/src/workspace/status-mixed.test.ts +152 -0
  445. package/src/workspace/status-revoked.test.ts +153 -0
  446. package/src/workspace/status-stewards.ts +3 -0
  447. package/src/workspace/status.schema.json +210 -2
  448. package/src/workspace/status.ts +254 -3
  449. package/src/workspace/wip.ts +11 -2
@@ -33,7 +33,15 @@
33
33
  * one `run-event.schema.json` line each: the planning as a `plan` phase with
34
34
  * a step per component, the gate's decision as a `gate` phase, and on
35
35
  * pr-apply the apply's waves and components as `chant run --components`
36
- * streams them.
36
+ * streams them. A component the apply does not start settles too, `blocked`
37
+ * behind a failed dependency or `already-applied` on a resumed apply.
38
+ * With or without it, pr-apply prints a line on stderr as each wave starts
39
+ * and as each component settles, so a job log shows the waves in order.
40
+ *
41
+ * `--report-url <s3 or file URL>` (#4007) copies `pr-<stage>.json`,
42
+ * `change-set.json` and, with `--events-json`, the events to
43
+ * `<url>/<pr>/<commit>/`, the events again as each wave and component
44
+ * settles (`../../pr-report-url.ts`).
37
45
  *
38
46
  * `--member <name>` (#3465) runs a workspace member's loop: the member's
39
47
  * generated pipeline passes it from the member's directory. The gate is
@@ -59,11 +67,13 @@ import {
59
67
  type PrPlanSet,
60
68
  } from "../../components/pr-run";
61
69
  import { readFanOutAttempt, writeFanOutAttempt, type FanOutAttempt, type PrApplyRecord } from "../../components/fan-out-record";
70
+ import { componentInputDigests, progressThatCarries } from "../../components/fan-out-inputs";
62
71
  import { samePlanDigest } from "../../lifecycle/plan-digest";
63
72
  import { gitGateLedgerPort, type GateCheck } from "../../op/gate";
64
73
  import { emitGateStep, gateEventsOf, GATE_PHASE, type RunEventSink, type RunEventStream } from "../../run-event-stream";
65
- import type { RunEventSettleStatus } from "../../run-event";
74
+ import type { RunEventBody, RunEventComponentSettle, RunEventSettleStatus } from "../../run-event";
66
75
  import { openCliRunEvents, refusesEventsWithJson } from "../run-events";
76
+ import { openPrReportUpload, parseReportUrl, reportKey, type PrReportUpload, type ReportTarget } from "../../pr-report-url";
67
77
  import {
68
78
  describePlanChanged,
69
79
  PR_APPLY_GATE,
@@ -102,6 +112,11 @@ interface Prepared {
102
112
  head: string;
103
113
  gate: string;
104
114
  forge?: PrForge;
115
+ /**
116
+ * Every component in the project, not the selection (`deriveFanOut`), so
117
+ * the plan reads the deployed outputs of a dependency the change did not
118
+ * select (#4104).
119
+ */
105
120
  components: DriverComponent[];
106
121
  plan: FanOutPlan;
107
122
  signal: ComponentChangeSignal;
@@ -262,12 +277,18 @@ function settleOf(status: PrReport["status"]): RunEventSettleStatus {
262
277
  }
263
278
  }
264
279
 
265
- /** Write the report, the change set and the note; print the note's path. */
266
- function writeOutputs(ctx: CommandContext, report: PrReport, note: string): void {
280
+ /** Write the report, the change set and the note, and hand the first two to `--report-url`'s upload. */
281
+ function writeOutputs(ctx: CommandContext, report: PrReport, note: string, upload?: PrReportUpload): void {
267
282
  const dir = resolve(ctx.args.output ?? PR_REPORT_DIR);
268
283
  mkdirSync(dir, { recursive: true });
269
- writeFileSync(join(dir, `pr-${report.stage}.json`), JSON.stringify(report, null, 2) + "\n");
270
- writeFileSync(join(dir, "change-set.json"), JSON.stringify(report.changeSet, null, 2) + "\n");
284
+ const files: Array<[string, string]> = [
285
+ [`pr-${report.stage}.json`, JSON.stringify(report, null, 2) + "\n"],
286
+ ["change-set.json", JSON.stringify(report.changeSet, null, 2) + "\n"],
287
+ ];
288
+ for (const [name, body] of files) {
289
+ writeFileSync(join(dir, name), body);
290
+ upload?.file(name, body);
291
+ }
271
292
  writeFileSync(join(dir, "pr-note.md"), note);
272
293
  }
273
294
 
@@ -310,21 +331,32 @@ function printMembers(report: PrReport): void {
310
331
  }
311
332
  }
312
333
 
313
- async function finish(ctx: CommandContext, p: Prepared, report: PrReport): Promise<void> {
334
+ async function finish(ctx: CommandContext, p: Prepared, report: PrReport, upload?: PrReportUpload): Promise<void> {
314
335
  const note = noteFor(report, p.forge);
315
- writeOutputs(ctx, report, note);
336
+ writeOutputs(ctx, report, note, upload);
316
337
  await publish(p.forge, report, note);
317
338
  if (ctx.args.json) console.log(JSON.stringify(report, null, 2));
318
339
  }
319
340
 
320
- /** A stage's stream, held so that a stage that returns or throws before it settles still ends it. */
341
+ /**
342
+ * A stage's stream and its `--report-url` upload, held so that a stage that
343
+ * returns or throws before it settles still ends the stream and uploads.
344
+ */
321
345
  interface StageEvents {
322
346
  stream?: RunEventStream;
347
+ /** Where `--report-url` points, read before the stage starts. */
348
+ target?: ReportTarget;
349
+ upload?: PrReportUpload;
323
350
  }
324
351
 
325
- /** Run a stage, and end its stream as `failed` when the stage did not settle it. */
326
- async function withStageEvents(stage: string, run: (events: StageEvents) => Promise<number>): Promise<number> {
352
+ /** Run a stage, end its stream as `failed` when the stage did not settle it, and finish its upload. */
353
+ async function withStageEvents(stage: string, ctx: CommandContext, run: (events: StageEvents) => Promise<number>): Promise<number> {
327
354
  const events: StageEvents = {};
355
+ if (ctx.args.reportUrl !== undefined) {
356
+ const target = parseReportUrl(ctx.args.reportUrl);
357
+ if ("error" in target) return fail(target.error);
358
+ events.target = target;
359
+ }
328
360
  try {
329
361
  return await run(events);
330
362
  } catch (err) {
@@ -332,13 +364,32 @@ async function withStageEvents(stage: string, run: (events: StageEvents) => Prom
332
364
  throw err;
333
365
  } finally {
334
366
  events.stream?.settle("failed", `${stage} stopped before it finished`);
367
+ if (events.upload) {
368
+ await events.upload.close();
369
+ console.error(formatInfo(`report : ${events.upload.where}/`));
370
+ }
335
371
  }
336
372
  }
337
373
 
338
- /** chant components pr-plan --base <ref> --pr <n> [--env <env>] [--gate <name>] [--forge <kind>] [--output <dir>] [--json] [--events-json] */
374
+ /**
375
+ * Open the stage's `--report-url` upload under its pull request and commit,
376
+ * when the flag was given. Its events are the lines `openCliRunEvents` writes.
377
+ */
378
+ function openUpload(events: StageEvents, stage: "plan" | "apply", pr: number | null, p: Prepared): PrReportUpload | undefined {
379
+ if (!events.target) return undefined;
380
+ events.upload = openPrReportUpload({
381
+ target: events.target,
382
+ key: reportKey(pr, p.head, p.member),
383
+ stage,
384
+ warn: (message) => console.error(formatWarning({ message })),
385
+ });
386
+ return events.upload;
387
+ }
388
+
389
+ /** chant components pr-plan --base <ref> --pr <n> [--env <env>] [--gate <name>] [--forge <kind>] [--output <dir>] [--json] [--events-json] [--report-url <url>] */
339
390
  export function runComponentsPrPlan(ctx: CommandContext): Promise<number> {
340
391
  if (refusesEventsWithJson(ctx.args, "the stage's report")) return Promise.resolve(1);
341
- return withStageEvents("pr-plan", (events) => prPlan(ctx, events));
392
+ return withStageEvents("pr-plan", ctx, (events) => prPlan(ctx, events));
342
393
  }
343
394
 
344
395
  async function prPlan(ctx: CommandContext, stage: StageEvents): Promise<number> {
@@ -348,8 +399,9 @@ async function prPlan(ctx: CommandContext, stage: StageEvents): Promise<number>
348
399
  const p = await prepare(ctx, "plan");
349
400
  if (typeof p === "number") return p;
350
401
  const op = prOp(ctx.args.pr, p.member);
402
+ const upload = openUpload(stage, "plan", ctx.args.pr, p);
351
403
  // `--events-json` (#4041): planning, then where the approval stands.
352
- const events = await openCliRunEvents(ctx.args, { kind: "component", name: `pr-plan ${op}`, cwd: resolve(".") });
404
+ const events = await openCliRunEvents(ctx.args, { kind: "component", name: `pr-plan ${op}`, cwd: resolve(".") }, upload?.line);
353
405
  stage.stream = events;
354
406
  events?.emit({ type: "run-start", waves: p.plan.waves });
355
407
  const set = await planAll(p, events?.emit);
@@ -381,7 +433,7 @@ async function prPlan(ctx: CommandContext, stage: StageEvents): Promise<number>
381
433
  approval,
382
434
  status,
383
435
  });
384
- await finish(ctx, p, report);
436
+ await finish(ctx, p, report, upload);
385
437
  // The plan stage settles on its planning: an approval still to come is what it reports, not a stop.
386
438
  events?.settle(settleOf(status), status === "plan-failed" ? "a member failed to plan" : undefined);
387
439
 
@@ -394,10 +446,10 @@ async function prPlan(ctx: CommandContext, stage: StageEvents): Promise<number>
394
446
  return status === "plan-failed" ? 1 : 0;
395
447
  }
396
448
 
397
- /** chant components pr-apply --base <ref> [--pr <n>] [--env <env>] [--gate <name>] [--forge <kind>] [--require-review] [--output <dir>] [--json] [--events-json] */
449
+ /** chant components pr-apply --base <ref> [--pr <n>] [--env <env>] [--gate <name>] [--forge <kind>] [--require-review] [--output <dir>] [--json] [--events-json] [--report-url <url>] */
398
450
  export function runComponentsPrApply(ctx: CommandContext): Promise<number> {
399
451
  if (refusesEventsWithJson(ctx.args, "the stage's report")) return Promise.resolve(1);
400
- return withStageEvents("pr-apply", (events) => prApply(ctx, events));
452
+ return withStageEvents("pr-apply", ctx, (events) => prApply(ctx, events));
401
453
  }
402
454
 
403
455
  async function prApply(ctx: CommandContext, stage: StageEvents): Promise<number> {
@@ -418,7 +470,8 @@ async function prApply(ctx: CommandContext, stage: StageEvents): Promise<number>
418
470
  // The run id the release records carry, chosen before the run so that
419
471
  // `--events-json` (#4041, #4007) names the run by it too.
420
472
  const release = autoReleaseRun(`${op}-${Date.now()}`);
421
- const events = await openCliRunEvents(args, { kind: "component", name: `pr-apply ${op}`, runId: release.runId, cwd: resolve(".") });
473
+ const upload = openUpload(stage, "apply", pr, p);
474
+ const events = await openCliRunEvents(args, { kind: "component", name: `pr-apply ${op}`, runId: release.runId, cwd: resolve(".") }, upload?.line);
422
475
  stage.stream = events;
423
476
  events?.emit({ type: "run-start", waves: p.plan.waves });
424
477
 
@@ -434,15 +487,28 @@ async function prApply(ctx: CommandContext, stage: StageEvents): Promise<number>
434
487
  return fail(`--resume: could not read "${args.resume}": ${err instanceof Error ? err.message : String(err)}`);
435
488
  }
436
489
  }
437
- const resumed = pr !== null && p.plan.order.length > 0 && attempt ? await tryResume(p, attempt, args.resume!, op) : undefined;
490
+ // What each component would apply now (#4081): progress carries only where it is unchanged.
491
+ const inputsNow = resumePath ? componentInputDigests(p.components, { projectRoot: resolve("."), env: p.env }) : {};
492
+ const resumed = pr !== null && p.plan.order.length > 0 && attempt ? await tryResume(p, attempt, args.resume!, op, inputsNow) : undefined;
438
493
 
439
- if (resumed) emitResumedGate(events, op, p.gate, resumed.check);
494
+ // The components an earlier attempt applied settle first (#4007), each in
495
+ // the wave the derivation gave it, which is the run-start's.
496
+ const log = applyLog();
497
+ if (resumed) {
498
+ const waveOf = new Map(p.plan.waves.flatMap((wave, i) => wave.map((name) => [name, i + 1] as const)));
499
+ for (const component of p.plan.order.filter((name) => resumed.completed.includes(name))) {
500
+ const body: RunEventComponentSettle = { type: "component-settle", wave: waveOf.get(component)!, component, status: "already-applied" };
501
+ events?.emit(body);
502
+ log(body);
503
+ }
504
+ emitResumedGate(events, op, p.gate, resumed.check);
505
+ }
440
506
  const set = resumed?.set ?? (await planAll(p, events?.emit));
441
507
  const base = { stage: "apply" as const, pr, env: p.env, ...(p.member ? { member: p.member } : {}), base: p.base, head: p.head, op, gate: p.gate, plan: p.plan, signal: p.signal, set };
442
508
 
443
509
  const stop = async (report: PrReport, code: number, settle?: RunEventSettleStatus): Promise<number> => {
444
510
  events?.settle(settle ?? settleOf(report.status), report.status === "plan-failed" || report.status === "failed" ? report.message ?? `pr-apply ${report.status}` : undefined);
445
- await finish(ctx, p, report);
511
+ await finish(ctx, p, report, upload);
446
512
  console.error((code === 0 ? formatInfo : (m: string) => formatWarning({ message: m }))(`pr-apply: ${report.status}${report.refusal ? ` (${report.refusal})` : ""}`));
447
513
  if (report.message) console.error(report.message);
448
514
  printMembers(report);
@@ -538,6 +604,9 @@ async function prApply(ctx: CommandContext, stage: StageEvents): Promise<number>
538
604
  // one settles, so a run killed partway still knows what applied.
539
605
  const prior = resumed ? { completed: resumed.completed, outputs: resumed.outputs } : { completed: [], outputs: {} };
540
606
  const completedSoFar = new Set<string>(prior.completed);
607
+ const inputsSoFar: Record<string, string> = Object.fromEntries(
608
+ prior.completed.filter((name) => inputsNow[name] !== undefined).map((name) => [name, inputsNow[name]!]),
609
+ );
541
610
  const failedSoFar: string[] = [];
542
611
  const outputsSoFar: Record<string, Record<string, unknown>> = { ...prior.outputs };
543
612
  const record: PrApplyRecord = {
@@ -557,6 +626,7 @@ async function prApply(ctx: CommandContext, stage: StageEvents): Promise<number>
557
626
  completed: [...completedSoFar].sort(),
558
627
  failed: [...failedSoFar].sort(),
559
628
  outputs: outputsSoFar,
629
+ inputs: Object.fromEntries(Object.entries(inputsSoFar).sort(([a], [b]) => a.localeCompare(b))),
560
630
  prApply: record,
561
631
  });
562
632
  };
@@ -569,13 +639,18 @@ async function prApply(ctx: CommandContext, stage: StageEvents): Promise<number>
569
639
  env: p.env,
570
640
  set,
571
641
  ...(resumed ? { resumed: prior } : {}),
572
- // The apply is this run's waves, so the fan-out's own run framing is dropped.
573
- ...(events ? { onRunEvent: events.nested } : {}),
642
+ // The apply is this run's waves, so the fan-out's own run framing is
643
+ // dropped. The log's lines go to stderr with or without --events-json.
644
+ onRunEvent: (body: RunEventBody) => {
645
+ events?.nested(body);
646
+ log(body);
647
+ },
574
648
  ...(resumePath
575
649
  ? {
576
650
  onComponentSettled: (settled, outputs) => {
577
651
  if (settled.status === "ok") {
578
652
  completedSoFar.add(settled.component);
653
+ if (inputsNow[settled.component] !== undefined) inputsSoFar[settled.component] = inputsNow[settled.component]!;
579
654
  if (outputs) outputsSoFar[settled.component] = outputs;
580
655
  } else if (settled.status === "fail") {
581
656
  failedSoFar.push(settled.component);
@@ -600,6 +675,37 @@ async function prApply(ctx: CommandContext, stage: StageEvents): Promise<number>
600
675
  return code;
601
676
  }
602
677
 
678
+ /** What a component's settle says in the job log. */
679
+ function settleWords(body: RunEventComponentSettle): string {
680
+ switch (body.status) {
681
+ case "ok":
682
+ return "applied";
683
+ case "failed":
684
+ return "failed";
685
+ case "gated":
686
+ return "stopped at its own gate";
687
+ case "waiting":
688
+ return "waiting on a decision";
689
+ case "blocked":
690
+ return `blocked by ${body.blockedBy ?? "a dependency"}, not run`;
691
+ case "already-applied":
692
+ return "already applied in an earlier attempt";
693
+ }
694
+ }
695
+
696
+ /**
697
+ * pr-apply's job log (#4007): a line on stderr as each wave starts and as
698
+ * each component settles, so the log shows the waves in order while they run.
699
+ */
700
+ function applyLog(): (body: RunEventBody) => void {
701
+ let waves = 0;
702
+ return (body) => {
703
+ if (body.type === "run-start") waves = body.waves?.length ?? 0;
704
+ else if (body.type === "wave-start") console.error(formatInfo(`wave ${body.wave}${waves ? `/${waves}` : ""}: ${body.components.join(", ")}`));
705
+ else if (body.type === "component-settle") console.error(formatInfo(` ${body.component}: ${settleWords(body)}`));
706
+ };
707
+ }
708
+
603
709
  /** A resumed apply's gate (#3464), decided against the approved digest, as the run's `gate` phase. */
604
710
  function emitResumedGate(events: RunEventStream | undefined, op: string, gate: string, check: GateCheck): void {
605
711
  if (!events) return;
@@ -658,8 +764,13 @@ interface Resumed {
658
764
  * derivation; when its approval still stands; and when every member left is
659
765
  * covered by the approved set. Otherwise it says why on stderr and the apply
660
766
  * runs as it would with no record.
767
+ *
768
+ * Of the components it applied, only those whose input digest is the same
769
+ * now carry (#4081), as in `components fan-out --resume`. One that changed
770
+ * runs again, under the same approval when the approved set covers its new
771
+ * plan. A record without input digests carries nothing.
661
772
  */
662
- async function tryResume(p: Prepared, attempt: FanOutAttempt, file: string, op: string): Promise<Resumed | undefined> {
773
+ async function tryResume(p: Prepared, attempt: FanOutAttempt, file: string, op: string, inputsNow: Record<string, string>): Promise<Resumed | undefined> {
663
774
  const skip = (why: string): undefined => {
664
775
  console.error(formatWarning({ message: `--resume: "${file}" does not carry: ${why}`, hint: "Every member is planned again, and the plan needs an approval of its own." }));
665
776
  return undefined;
@@ -670,6 +781,11 @@ async function tryResume(p: Prepared, attempt: FanOutAttempt, file: string, op:
670
781
  if (record.head !== p.head) return skip(`it records an apply of ${record.head.slice(0, 12)}, not ${p.head.slice(0, 12)}`);
671
782
  if (!samePlanDigest(attempt.digest, p.plan.digest)) return skip("the change selects other components than it did");
672
783
  if (attempt.completed.length === 0) return undefined;
784
+ const split = progressThatCarries(attempt, inputsNow);
785
+ if (split.unrecorded) return skip("it does not record what each component applied, since it was written before chant recorded component inputs");
786
+ for (const name of split.changed) console.error(formatInfo(`${name}: changed since the earlier attempt, so it runs again`));
787
+ if (split.carried.length === 0) return undefined;
788
+ const completed = split.carried;
673
789
 
674
790
  let check;
675
791
  try {
@@ -679,7 +795,7 @@ async function tryResume(p: Prepared, attempt: FanOutAttempt, file: string, op:
679
795
  }
680
796
  if (!check.satisfied) return skip(`no approval stands for the plan it applied (${record.digest}) any more`);
681
797
 
682
- const outputs = Object.fromEntries(Object.entries(attempt.outputs).filter(([name]) => attempt.completed.includes(name)));
798
+ const outputs = Object.fromEntries(Object.entries(attempt.outputs).filter(([name]) => completed.includes(name)));
683
799
  const resumed = await resumePrSet({
684
800
  components: p.components,
685
801
  plan: p.plan,
@@ -687,9 +803,9 @@ async function tryResume(p: Prepared, attempt: FanOutAttempt, file: string, op:
687
803
  env: p.env,
688
804
  seededOutputs: p.seededOutputs,
689
805
  record,
690
- completed: attempt.completed,
806
+ completed,
691
807
  });
692
808
  if (!resumed.ok) return skip(`what is left is not what was approved. ${resumed.reasons.join("; ")}`);
693
- console.error(formatInfo(`resume : ${attempt.completed.join(", ")} applied in an earlier attempt; applying ${resumed.plan.order.join(", ") || "nothing more"} under the approval of ${record.digest}`));
694
- return { plan: resumed.plan, set: resumed.set, check, approval: approvalOf(check), completed: attempt.completed, outputs };
809
+ console.error(formatInfo(`resume : ${completed.join(", ")} applied in an earlier attempt; applying ${resumed.plan.order.join(", ") || "nothing more"} under the approval of ${record.digest}`));
810
+ return { plan: resumed.plan, set: resumed.set, check, approval: approvalOf(check), completed, outputs };
695
811
  }