@intentius/chant 0.124.27 → 0.124.29

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 (681) hide show
  1. package/README.md +1 -1
  2. package/dist/__golden__/wave-loop/fan-out-gated.json +8 -0
  3. package/dist/__golden__/wave-loop/fan-out-no-members.json +4 -0
  4. package/dist/__golden__/wave-loop/fan-out-only.json +6 -0
  5. package/dist/__golden__/wave-loop/op-by-apply-hold.json +2 -0
  6. package/dist/__golden__/wave-loop/op-cost-member.json +3 -0
  7. package/dist/__golden__/wave-loop/op-held-on-before-apply.json +1 -0
  8. package/dist/__golden__/wave-loop/op-held-on.json +2 -0
  9. package/dist/__golden__/wave-loop/op-hooks-held.json +2 -0
  10. package/dist/__golden__/wave-loop/op-hooks-hold-before-apply.json +2 -0
  11. package/dist/__golden__/wave-loop/op-hooks-refused-at-base.json +3 -0
  12. package/dist/__golden__/wave-loop/op-hooks-share.json +3 -0
  13. package/dist/__golden__/wave-loop/op-per-run.json +7 -0
  14. package/dist/__golden__/wave-loop/op-pr-review.json +7 -0
  15. package/dist/__golden__/wave-loop/op-sealed.json +3 -0
  16. package/dist/__golden__/wave-loop/op-spend.json +3 -0
  17. package/dist/__golden__/wave-loop/op-wave-commands.json +7 -0
  18. package/dist/__golden__/wave-loop/op-wide-waiting.json +4 -0
  19. package/dist/build-params.d.ts +34 -1
  20. package/dist/build-params.d.ts.map +1 -1
  21. package/dist/build-params.js +31 -1
  22. package/dist/change-set-graph.d.ts +63 -0
  23. package/dist/change-set-graph.d.ts.map +1 -0
  24. package/dist/change-set-graph.js +130 -0
  25. package/dist/change-set.d.ts +62 -3
  26. package/dist/change-set.d.ts.map +1 -1
  27. package/dist/change-set.js +36 -4
  28. package/dist/chant-version.d.ts +9 -0
  29. package/dist/chant-version.d.ts.map +1 -0
  30. package/dist/chant-version.js +16 -0
  31. package/dist/cli/build-params-cli.d.ts +7 -1
  32. package/dist/cli/build-params-cli.d.ts.map +1 -1
  33. package/dist/cli/build-params-cli.js +17 -8
  34. package/dist/cli/commands/build.d.ts +8 -0
  35. package/dist/cli/commands/build.d.ts.map +1 -1
  36. package/dist/cli/commands/build.js +15 -11
  37. package/dist/cli/commands/check-lexicon-docs.d.ts.map +1 -1
  38. package/dist/cli/commands/check-lexicon-docs.js +30 -2
  39. package/dist/cli/commands/check-lexicon.d.ts.map +1 -1
  40. package/dist/cli/commands/check-lexicon.js +13 -2
  41. package/dist/cli/commands/init-lexicon/templates/docs.d.ts +4 -1
  42. package/dist/cli/commands/init-lexicon/templates/docs.d.ts.map +1 -1
  43. package/dist/cli/commands/init-lexicon/templates/docs.js +6 -6
  44. package/dist/cli/commands/init-lexicon.d.ts.map +1 -1
  45. package/dist/cli/commands/init-lexicon.js +17 -8
  46. package/dist/cli/handlers/approve.d.ts.map +1 -1
  47. package/dist/cli/handlers/approve.js +64 -4
  48. package/dist/cli/handlers/build.d.ts.map +1 -1
  49. package/dist/cli/handlers/build.js +43 -4
  50. package/dist/cli/handlers/change-set.d.ts +10 -0
  51. package/dist/cli/handlers/change-set.d.ts.map +1 -1
  52. package/dist/cli/handlers/change-set.js +51 -1
  53. package/dist/cli/handlers/fan-out.d.ts +10 -1
  54. package/dist/cli/handlers/fan-out.d.ts.map +1 -1
  55. package/dist/cli/handlers/fan-out.js +54 -6
  56. package/dist/cli/handlers/lifecycle-gc.d.ts +19 -0
  57. package/dist/cli/handlers/lifecycle-gc.d.ts.map +1 -0
  58. package/dist/cli/handlers/lifecycle-gc.js +143 -0
  59. package/dist/cli/handlers/pr.d.ts +16 -2
  60. package/dist/cli/handlers/pr.d.ts.map +1 -1
  61. package/dist/cli/handlers/pr.js +269 -37
  62. package/dist/cli/handlers/promote.d.ts +7 -0
  63. package/dist/cli/handlers/promote.d.ts.map +1 -1
  64. package/dist/cli/handlers/promote.js +440 -28
  65. package/dist/cli/handlers/release.d.ts +91 -0
  66. package/dist/cli/handlers/release.d.ts.map +1 -0
  67. package/dist/cli/handlers/release.js +589 -0
  68. package/dist/cli/handlers/run.d.ts +38 -2
  69. package/dist/cli/handlers/run.d.ts.map +1 -1
  70. package/dist/cli/handlers/run.js +234 -16
  71. package/dist/cli/main.d.ts.map +1 -1
  72. package/dist/cli/main.js +143 -17
  73. package/dist/cli/mcp/workspace-tools.js +1 -1
  74. package/dist/cli/parse-args.d.ts.map +1 -1
  75. package/dist/cli/parse-args.js +73 -5
  76. package/dist/cli/registry.d.ts +43 -5
  77. package/dist/cli/registry.d.ts.map +1 -1
  78. package/dist/cli/run-events.d.ts +30 -0
  79. package/dist/cli/run-events.d.ts.map +1 -0
  80. package/dist/cli/run-events.js +49 -0
  81. package/dist/cli/version.d.ts +3 -5
  82. package/dist/cli/version.d.ts.map +1 -1
  83. package/dist/cli/version.js +3 -13
  84. package/dist/codegen/docs-in-site.d.ts +71 -0
  85. package/dist/codegen/docs-in-site.d.ts.map +1 -0
  86. package/dist/codegen/docs-in-site.js +177 -0
  87. package/dist/codegen/docs-types.d.ts +14 -1
  88. package/dist/codegen/docs-types.d.ts.map +1 -1
  89. package/dist/codegen/docs.d.ts +18 -1
  90. package/dist/codegen/docs.d.ts.map +1 -1
  91. package/dist/codegen/docs.js +40 -7
  92. package/dist/codegen/rehype-base-url.mjs +15 -9
  93. package/dist/components/auto-release.d.ts +6 -1
  94. package/dist/components/auto-release.d.ts.map +1 -1
  95. package/dist/components/auto-release.js +3 -0
  96. package/dist/components/capability.d.ts +9 -0
  97. package/dist/components/capability.d.ts.map +1 -1
  98. package/dist/components/cli-support.d.ts +6 -0
  99. package/dist/components/cli-support.d.ts.map +1 -1
  100. package/dist/components/cli-support.js +10 -9
  101. package/dist/components/driver.d.ts +50 -9
  102. package/dist/components/driver.d.ts.map +1 -1
  103. package/dist/components/driver.js +116 -54
  104. package/dist/components/fan-out-inputs.d.ts +69 -0
  105. package/dist/components/fan-out-inputs.d.ts.map +1 -0
  106. package/dist/components/fan-out-inputs.js +169 -0
  107. package/dist/components/fan-out-record.d.ts +13 -0
  108. package/dist/components/fan-out-record.d.ts.map +1 -1
  109. package/dist/components/fan-out-record.js +16 -0
  110. package/dist/components/fan-out-run.d.ts +7 -0
  111. package/dist/components/fan-out-run.d.ts.map +1 -1
  112. package/dist/components/fan-out-run.js +85 -26
  113. package/dist/components/fan-out.d.ts +4 -0
  114. package/dist/components/fan-out.d.ts.map +1 -1
  115. package/dist/components/pr-pipeline.d.ts +25 -0
  116. package/dist/components/pr-pipeline.d.ts.map +1 -1
  117. package/dist/components/pr-pipeline.js +22 -4
  118. package/dist/components/pr-run.d.ts +11 -0
  119. package/dist/components/pr-run.d.ts.map +1 -1
  120. package/dist/components/pr-run.js +20 -1
  121. package/dist/components/promote-order.d.ts +38 -0
  122. package/dist/components/promote-order.d.ts.map +1 -0
  123. package/dist/components/promote-order.js +62 -0
  124. package/dist/components/promote.d.ts +38 -2
  125. package/dist/components/promote.d.ts.map +1 -1
  126. package/dist/components/promote.js +77 -2
  127. package/dist/components/release-compile.d.ts +142 -0
  128. package/dist/components/release-compile.d.ts.map +1 -0
  129. package/dist/components/release-compile.js +382 -0
  130. package/dist/components/release-gate.d.ts +135 -0
  131. package/dist/components/release-gate.d.ts.map +1 -0
  132. package/dist/components/release-gate.js +288 -0
  133. package/dist/components/release-promote.d.ts +96 -0
  134. package/dist/components/release-promote.d.ts.map +1 -0
  135. package/dist/components/release-promote.js +204 -0
  136. package/dist/components/run-progress.d.ts +7 -0
  137. package/dist/components/run-progress.d.ts.map +1 -1
  138. package/dist/components/wave-plan.d.ts +8 -1
  139. package/dist/components/wave-plan.d.ts.map +1 -1
  140. package/dist/components/wave-plan.js +11 -3
  141. package/dist/config.d.ts +45 -0
  142. package/dist/config.d.ts.map +1 -1
  143. package/dist/config.js +3 -0
  144. package/dist/flag-params.d.ts +54 -0
  145. package/dist/flag-params.d.ts.map +1 -0
  146. package/dist/flag-params.js +130 -0
  147. package/dist/index.d.ts +1 -0
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +2 -0
  150. package/dist/lifecycle/__fixtures__/publish-fakes.d.ts +120 -0
  151. package/dist/lifecycle/__fixtures__/publish-fakes.d.ts.map +1 -0
  152. package/dist/lifecycle/__fixtures__/publish-fakes.js +304 -0
  153. package/dist/lifecycle/change-set-store.d.ts +68 -0
  154. package/dist/lifecycle/change-set-store.d.ts.map +1 -0
  155. package/dist/lifecycle/change-set-store.js +97 -0
  156. package/dist/lifecycle/commit-sha.d.ts +13 -0
  157. package/dist/lifecycle/commit-sha.d.ts.map +1 -0
  158. package/dist/lifecycle/commit-sha.js +21 -0
  159. package/dist/lifecycle/delivery-metrics.d.ts +139 -0
  160. package/dist/lifecycle/delivery-metrics.d.ts.map +1 -0
  161. package/dist/lifecycle/delivery-metrics.js +145 -0
  162. package/dist/lifecycle/deploy-outcome.d.ts +81 -0
  163. package/dist/lifecycle/deploy-outcome.d.ts.map +1 -0
  164. package/dist/lifecycle/deploy-outcome.js +101 -0
  165. package/dist/lifecycle/gate-change-set.d.ts +78 -0
  166. package/dist/lifecycle/gate-change-set.d.ts.map +1 -0
  167. package/dist/lifecycle/gate-change-set.js +138 -0
  168. package/dist/lifecycle/gate-ledger.d.ts +51 -4
  169. package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
  170. package/dist/lifecycle/gate-ledger.js +18 -0
  171. package/dist/lifecycle/git.d.ts +30 -1
  172. package/dist/lifecycle/git.d.ts.map +1 -1
  173. package/dist/lifecycle/git.js +31 -5
  174. package/dist/lifecycle/index.d.ts +4 -0
  175. package/dist/lifecycle/index.d.ts.map +1 -1
  176. package/dist/lifecycle/index.js +4 -0
  177. package/dist/lifecycle/mixed-environment.d.ts +95 -0
  178. package/dist/lifecycle/mixed-environment.d.ts.map +1 -0
  179. package/dist/lifecycle/mixed-environment.js +154 -0
  180. package/dist/lifecycle/publish-attachments.d.ts +79 -0
  181. package/dist/lifecycle/publish-attachments.d.ts.map +1 -0
  182. package/dist/lifecycle/publish-attachments.js +179 -0
  183. package/dist/lifecycle/publish-credentials.d.ts +37 -0
  184. package/dist/lifecycle/publish-credentials.d.ts.map +1 -0
  185. package/dist/lifecycle/publish-credentials.js +69 -0
  186. package/dist/lifecycle/publish-declaration.d.ts +97 -0
  187. package/dist/lifecycle/publish-declaration.d.ts.map +1 -0
  188. package/dist/lifecycle/publish-declaration.js +83 -0
  189. package/dist/lifecycle/publish-forge.d.ts +53 -0
  190. package/dist/lifecycle/publish-forge.d.ts.map +1 -0
  191. package/dist/lifecycle/publish-forge.js +298 -0
  192. package/dist/lifecycle/publish-npm.d.ts +61 -0
  193. package/dist/lifecycle/publish-npm.d.ts.map +1 -0
  194. package/dist/lifecycle/publish-npm.js +242 -0
  195. package/dist/lifecycle/publish-oci.d.ts +64 -0
  196. package/dist/lifecycle/publish-oci.d.ts.map +1 -0
  197. package/dist/lifecycle/publish-oci.js +383 -0
  198. package/dist/lifecycle/publish-record.d.ts +66 -0
  199. package/dist/lifecycle/publish-record.d.ts.map +1 -0
  200. package/dist/lifecycle/publish-record.js +84 -0
  201. package/dist/lifecycle/publish-targets.d.ts +45 -0
  202. package/dist/lifecycle/publish-targets.d.ts.map +1 -0
  203. package/dist/lifecycle/publish-targets.js +85 -0
  204. package/dist/lifecycle/release-cut.d.ts +154 -0
  205. package/dist/lifecycle/release-cut.d.ts.map +1 -0
  206. package/dist/lifecycle/release-cut.js +366 -0
  207. package/dist/lifecycle/release-join.d.ts +95 -0
  208. package/dist/lifecycle/release-join.d.ts.map +1 -0
  209. package/dist/lifecycle/release-join.js +139 -0
  210. package/dist/lifecycle/release-ledger.d.ts +54 -0
  211. package/dist/lifecycle/release-ledger.d.ts.map +1 -1
  212. package/dist/lifecycle/release-ledger.js +53 -20
  213. package/dist/lifecycle/release-publish.d.ts +312 -0
  214. package/dist/lifecycle/release-publish.d.ts.map +1 -0
  215. package/dist/lifecycle/release-publish.js +335 -0
  216. package/dist/lifecycle/release-revocation.d.ts +80 -0
  217. package/dist/lifecycle/release-revocation.d.ts.map +1 -0
  218. package/dist/lifecycle/release-revocation.js +123 -0
  219. package/dist/lifecycle/release-store.d.ts +200 -0
  220. package/dist/lifecycle/release-store.d.ts.map +1 -0
  221. package/dist/lifecycle/release-store.js +320 -0
  222. package/dist/lifecycle/release-verify.d.ts +61 -0
  223. package/dist/lifecycle/release-verify.d.ts.map +1 -0
  224. package/dist/lifecycle/release-verify.js +92 -0
  225. package/dist/lifecycle/release-workstation.d.ts +91 -0
  226. package/dist/lifecycle/release-workstation.d.ts.map +1 -0
  227. package/dist/lifecycle/release-workstation.js +180 -0
  228. package/dist/lifecycle/retention-policy.d.ts +45 -0
  229. package/dist/lifecycle/retention-policy.d.ts.map +1 -0
  230. package/dist/lifecycle/retention-policy.js +43 -0
  231. package/dist/lifecycle/retention.d.ts +185 -0
  232. package/dist/lifecycle/retention.d.ts.map +1 -0
  233. package/dist/lifecycle/retention.js +400 -0
  234. package/dist/lifecycle/run-ledger.d.ts +4 -0
  235. package/dist/lifecycle/run-ledger.d.ts.map +1 -1
  236. package/dist/lifecycle/run-ledger.js +2 -0
  237. package/dist/op/activities/change-coverage.d.ts.map +1 -1
  238. package/dist/op/activities/change-coverage.js +4 -2
  239. package/dist/op/activities/source-release.d.ts.map +1 -1
  240. package/dist/op/activities/source-release.js +7 -3
  241. package/dist/op/activities/source-rollback.d.ts.map +1 -1
  242. package/dist/op/activities/source-rollback.js +7 -3
  243. package/dist/op/gate-name.d.ts +11 -2
  244. package/dist/op/gate-name.d.ts.map +1 -1
  245. package/dist/op/gate-name.js +12 -3
  246. package/dist/op/gate-run-locator.d.ts +22 -0
  247. package/dist/op/gate-run-locator.d.ts.map +1 -1
  248. package/dist/op/gate-run-locator.js +31 -0
  249. package/dist/op/gate.d.ts +27 -3
  250. package/dist/op/gate.d.ts.map +1 -1
  251. package/dist/op/gate.js +57 -3
  252. package/dist/op/local-executor.d.ts +36 -1
  253. package/dist/op/local-executor.d.ts.map +1 -1
  254. package/dist/op/local-executor.js +158 -52
  255. package/dist/op/op-waves-run.d.ts.map +1 -1
  256. package/dist/op/op-waves-run.js +4 -0
  257. package/dist/op/run-live.d.ts +2 -0
  258. package/dist/op/run-live.d.ts.map +1 -1
  259. package/dist/op/run-live.js +1 -1
  260. package/dist/op/runtime.d.ts +46 -0
  261. package/dist/op/runtime.d.ts.map +1 -1
  262. package/dist/op/runtimes/local.d.ts.map +1 -1
  263. package/dist/op/runtimes/local.js +8 -0
  264. package/dist/plan-summary.d.ts.map +1 -1
  265. package/dist/plan-summary.js +8 -2
  266. package/dist/point-decision.d.ts +2 -0
  267. package/dist/point-decision.d.ts.map +1 -1
  268. package/dist/point-decision.js +9 -2
  269. package/dist/pr-loop.d.ts +7 -0
  270. package/dist/pr-loop.d.ts.map +1 -1
  271. package/dist/pr-loop.js +23 -4
  272. package/dist/pr-report-url.d.ts +82 -0
  273. package/dist/pr-report-url.d.ts.map +1 -0
  274. package/dist/pr-report-url.js +174 -0
  275. package/dist/provenance.d.ts +2 -2
  276. package/dist/provenance.d.ts.map +1 -1
  277. package/dist/run-event-store.d.ts +104 -0
  278. package/dist/run-event-store.d.ts.map +1 -0
  279. package/dist/run-event-store.js +251 -0
  280. package/dist/run-event-stream.d.ts +133 -0
  281. package/dist/run-event-stream.d.ts.map +1 -0
  282. package/dist/run-event-stream.js +242 -0
  283. package/dist/run-event.d.ts +285 -0
  284. package/dist/run-event.d.ts.map +1 -0
  285. package/dist/run-event.js +209 -0
  286. package/dist/wave-runtime.mjs +262 -226
  287. package/dist/workspace/__fixtures__/flag-workspace.d.ts +31 -0
  288. package/dist/workspace/__fixtures__/flag-workspace.d.ts.map +1 -0
  289. package/dist/workspace/__fixtures__/flag-workspace.js +114 -0
  290. package/dist/workspace/__fixtures__/run-event-check.d.ts +19 -0
  291. package/dist/workspace/__fixtures__/run-event-check.d.ts.map +1 -0
  292. package/dist/workspace/__fixtures__/run-event-check.js +59 -0
  293. package/dist/workspace/change-set-show.d.ts +56 -0
  294. package/dist/workspace/change-set-show.d.ts.map +1 -0
  295. package/dist/workspace/change-set-show.js +54 -0
  296. package/dist/workspace/change-set-show.schema.json +102 -0
  297. package/dist/workspace/change-set.schema.json +32 -1
  298. package/dist/workspace/changes-cli.d.ts.map +1 -1
  299. package/dist/workspace/changes-cli.js +10 -1
  300. package/dist/workspace/changes.d.ts +37 -0
  301. package/dist/workspace/changes.d.ts.map +1 -1
  302. package/dist/workspace/changes.js +49 -2
  303. package/dist/workspace/changes.schema.json +135 -0
  304. package/dist/workspace/check.schema.json +4 -2
  305. package/dist/workspace/checks/records.d.ts +9 -1
  306. package/dist/workspace/checks/records.d.ts.map +1 -1
  307. package/dist/workspace/checks/records.js +35 -1
  308. package/dist/workspace/checks.d.ts +1 -0
  309. package/dist/workspace/checks.d.ts.map +1 -1
  310. package/dist/workspace/checks.js +2 -1
  311. package/dist/workspace/ci-green-cli.d.ts +19 -4
  312. package/dist/workspace/ci-green-cli.d.ts.map +1 -1
  313. package/dist/workspace/ci-green-cli.js +75 -12
  314. package/dist/workspace/ci-green-forge.d.ts +20 -3
  315. package/dist/workspace/ci-green-forge.d.ts.map +1 -1
  316. package/dist/workspace/ci-green-forge.js +6 -4
  317. package/dist/workspace/ci-green-workflow.d.ts +11 -0
  318. package/dist/workspace/ci-green-workflow.d.ts.map +1 -1
  319. package/dist/workspace/ci-green-workflow.js +6 -0
  320. package/dist/workspace/ci-green.d.ts +281 -13
  321. package/dist/workspace/ci-green.d.ts.map +1 -1
  322. package/dist/workspace/ci-green.js +456 -38
  323. package/dist/workspace/ci-last-green.schema.json +32 -2
  324. package/dist/workspace/ci-list.schema.json +525 -0
  325. package/dist/workspace/commit-links.d.ts +85 -0
  326. package/dist/workspace/commit-links.d.ts.map +1 -0
  327. package/dist/workspace/commit-links.js +163 -0
  328. package/dist/workspace/declaration.d.ts +35 -0
  329. package/dist/workspace/declaration.d.ts.map +1 -1
  330. package/dist/workspace/declaration.js +27 -1
  331. package/dist/workspace/declaration.schema.json +76 -0
  332. package/dist/workspace/declared-kinds.d.ts +16 -0
  333. package/dist/workspace/declared-kinds.d.ts.map +1 -1
  334. package/dist/workspace/declared-kinds.js +25 -0
  335. package/dist/workspace/delivery-metrics.d.ts +91 -0
  336. package/dist/workspace/delivery-metrics.d.ts.map +1 -0
  337. package/dist/workspace/delivery-metrics.js +217 -0
  338. package/dist/workspace/delivery-metrics.schema.json +519 -0
  339. package/dist/workspace/flags-read.d.ts +37 -0
  340. package/dist/workspace/flags-read.d.ts.map +1 -0
  341. package/dist/workspace/flags-read.js +103 -0
  342. package/dist/workspace/flags.d.ts +100 -0
  343. package/dist/workspace/flags.d.ts.map +1 -0
  344. package/dist/workspace/flags.js +98 -0
  345. package/dist/workspace/graph-cli.js +1 -1
  346. package/dist/workspace/identity-gate-rule.d.ts +37 -0
  347. package/dist/workspace/identity-gate-rule.d.ts.map +1 -1
  348. package/dist/workspace/identity-gate-rule.js +72 -7
  349. package/dist/workspace/identity.d.ts +12 -0
  350. package/dist/workspace/identity.d.ts.map +1 -1
  351. package/dist/workspace/identity.js +13 -1
  352. package/dist/workspace/intent-cli.d.ts +11 -2
  353. package/dist/workspace/intent-cli.d.ts.map +1 -1
  354. package/dist/workspace/intent-cli.js +54 -5
  355. package/dist/workspace/intent-trace.d.ts +219 -0
  356. package/dist/workspace/intent-trace.d.ts.map +1 -0
  357. package/dist/workspace/intent-trace.js +314 -0
  358. package/dist/workspace/intent.d.ts +36 -7
  359. package/dist/workspace/intent.d.ts.map +1 -1
  360. package/dist/workspace/intent.js +192 -22
  361. package/dist/workspace/intent.schema.json +702 -6
  362. package/dist/workspace/ls.d.ts +4 -0
  363. package/dist/workspace/ls.d.ts.map +1 -1
  364. package/dist/workspace/ls.js +2 -0
  365. package/dist/workspace/ls.schema.json +3 -1
  366. package/dist/workspace/member-pipeline.d.ts +6 -0
  367. package/dist/workspace/member-pipeline.d.ts.map +1 -1
  368. package/dist/workspace/member-pipeline.js +6 -0
  369. package/dist/workspace/overlap.d.ts +146 -0
  370. package/dist/workspace/overlap.d.ts.map +1 -0
  371. package/dist/workspace/overlap.js +276 -0
  372. package/dist/workspace/promotion-order.d.ts +41 -0
  373. package/dist/workspace/promotion-order.d.ts.map +1 -0
  374. package/dist/workspace/promotion-order.js +95 -0
  375. package/dist/workspace/reason-codes.d.ts +4 -0
  376. package/dist/workspace/reason-codes.d.ts.map +1 -1
  377. package/dist/workspace/reason-codes.js +7 -1
  378. package/dist/workspace/records.d.ts +15 -2
  379. package/dist/workspace/records.d.ts.map +1 -1
  380. package/dist/workspace/records.js +32 -0
  381. package/dist/workspace/records.schema.json +21 -2
  382. package/dist/workspace/reference-kinds/flag/flag.kind.mjs +32 -0
  383. package/dist/workspace/reference-kinds/flag/flag.schema.json +53 -0
  384. package/dist/workspace/releases.d.ts +81 -0
  385. package/dist/workspace/releases.d.ts.map +1 -0
  386. package/dist/workspace/releases.js +103 -0
  387. package/dist/workspace/releases.schema.json +513 -0
  388. package/dist/workspace/run-event.schema.json +295 -0
  389. package/dist/workspace/status-gates.d.ts +34 -1
  390. package/dist/workspace/status-gates.d.ts.map +1 -1
  391. package/dist/workspace/status-gates.js +31 -2
  392. package/dist/workspace/status-stewards.d.ts +4 -0
  393. package/dist/workspace/status-stewards.d.ts.map +1 -1
  394. package/dist/workspace/status-stewards.js +2 -0
  395. package/dist/workspace/status.d.ts +117 -0
  396. package/dist/workspace/status.d.ts.map +1 -1
  397. package/dist/workspace/status.js +218 -4
  398. package/dist/workspace/status.schema.json +268 -2
  399. package/dist/workspace/trust/ci-tag-statement.d.ts +102 -0
  400. package/dist/workspace/trust/ci-tag-statement.d.ts.map +1 -0
  401. package/dist/workspace/trust/ci-tag-statement.js +123 -0
  402. package/dist/workspace/trust/op-run-statement.d.ts +91 -0
  403. package/dist/workspace/trust/op-run-statement.d.ts.map +1 -0
  404. package/dist/workspace/trust/op-run-statement.js +143 -0
  405. package/dist/workspace/trust/rotation.d.ts +18 -2
  406. package/dist/workspace/trust/rotation.d.ts.map +1 -1
  407. package/dist/workspace/trust/rotation.js +65 -16
  408. package/dist/workspace/trust/seal.d.ts +11 -0
  409. package/dist/workspace/trust/seal.d.ts.map +1 -1
  410. package/dist/workspace/trust/seal.js +9 -0
  411. package/dist/workspace/trust/ssh-commit.d.ts.map +1 -1
  412. package/dist/workspace/trust/ssh-commit.js +10 -10
  413. package/dist/workspace/wip.d.ts.map +1 -1
  414. package/dist/workspace/wip.js +11 -3
  415. package/package.json +1 -1
  416. package/src/__golden__/wave-loop/fan-out-gated.json +8 -0
  417. package/src/__golden__/wave-loop/fan-out-no-members.json +4 -0
  418. package/src/__golden__/wave-loop/fan-out-only.json +6 -0
  419. package/src/__golden__/wave-loop/op-by-apply-hold.json +2 -0
  420. package/src/__golden__/wave-loop/op-cost-member.json +3 -0
  421. package/src/__golden__/wave-loop/op-held-on-before-apply.json +1 -0
  422. package/src/__golden__/wave-loop/op-held-on.json +2 -0
  423. package/src/__golden__/wave-loop/op-hooks-held.json +2 -0
  424. package/src/__golden__/wave-loop/op-hooks-hold-before-apply.json +2 -0
  425. package/src/__golden__/wave-loop/op-hooks-refused-at-base.json +3 -0
  426. package/src/__golden__/wave-loop/op-hooks-share.json +3 -0
  427. package/src/__golden__/wave-loop/op-per-run.json +7 -0
  428. package/src/__golden__/wave-loop/op-pr-review.json +7 -0
  429. package/src/__golden__/wave-loop/op-sealed.json +3 -0
  430. package/src/__golden__/wave-loop/op-spend.json +3 -0
  431. package/src/__golden__/wave-loop/op-wave-commands.json +7 -0
  432. package/src/__golden__/wave-loop/op-wide-waiting.json +4 -0
  433. package/src/build-params.test.ts +46 -0
  434. package/src/build-params.ts +55 -1
  435. package/src/change-set-graph.test.ts +72 -0
  436. package/src/change-set-graph.ts +141 -0
  437. package/src/change-set.ts +87 -6
  438. package/src/chant-version.ts +16 -0
  439. package/src/cli/build-params-cli.ts +22 -9
  440. package/src/cli/commands/build.ts +25 -11
  441. package/src/cli/commands/check-lexicon-docs.test.ts +51 -0
  442. package/src/cli/commands/check-lexicon-docs.ts +39 -2
  443. package/src/cli/commands/check-lexicon.ts +14 -2
  444. package/src/cli/commands/init-lexicon/templates/docs.ts +7 -6
  445. package/src/cli/commands/init-lexicon.test.ts +25 -0
  446. package/src/cli/commands/init-lexicon.ts +18 -8
  447. package/src/cli/handlers/approve-release.test.ts +84 -0
  448. package/src/cli/handlers/approve-revoked.test.ts +155 -0
  449. package/src/cli/handlers/approve.ts +65 -2
  450. package/src/cli/handlers/build.test.ts +67 -0
  451. package/src/cli/handlers/build.ts +46 -4
  452. package/src/cli/handlers/change-set.ts +49 -1
  453. package/src/cli/handlers/fan-out.test.ts +228 -1
  454. package/src/cli/handlers/fan-out.ts +53 -6
  455. package/src/cli/handlers/intent-trace.e2e.test.ts +201 -0
  456. package/src/cli/handlers/lifecycle-gc.test.ts +126 -0
  457. package/src/cli/handlers/lifecycle-gc.ts +146 -0
  458. package/src/cli/handlers/operator.test.ts +37 -0
  459. package/src/cli/handlers/pr.test.ts +341 -0
  460. package/src/cli/handlers/pr.ts +292 -47
  461. package/src/cli/handlers/promote.test.ts +669 -7
  462. package/src/cli/handlers/promote.ts +464 -29
  463. package/src/cli/handlers/release-implicit.e2e.test.ts +161 -0
  464. package/src/cli/handlers/release-join.e2e.test.ts +185 -0
  465. package/src/cli/handlers/release-publish-targets.e2e.test.ts +295 -0
  466. package/src/cli/handlers/release-verify.e2e.test.ts +117 -0
  467. package/src/cli/handlers/release-workstation-ci.e2e.test.ts +135 -0
  468. package/src/cli/handlers/release.e2e.test.ts +199 -0
  469. package/src/cli/handlers/release.ts +593 -0
  470. package/src/cli/handlers/run-auto-release.test.ts +80 -0
  471. package/src/cli/handlers/run-events-cmd.test.ts +92 -0
  472. package/src/cli/handlers/run-release.test.ts +55 -0
  473. package/src/cli/handlers/run.test.ts +30 -0
  474. package/src/cli/handlers/run.ts +243 -18
  475. package/src/cli/main.test.ts +8 -0
  476. package/src/cli/main.ts +143 -17
  477. package/src/cli/mcp/never-over-mcp.test.ts +2 -0
  478. package/src/cli/mcp/workspace-tools.ts +1 -1
  479. package/src/cli/parse-args.ts +56 -5
  480. package/src/cli/registry.ts +43 -5
  481. package/src/cli/run-events.ts +57 -0
  482. package/src/cli/version.ts +3 -13
  483. package/src/codegen/docs-in-site.test.ts +166 -0
  484. package/src/codegen/docs-in-site.ts +182 -0
  485. package/src/codegen/docs-site/AgentPrompt.astro +26 -1
  486. package/src/codegen/docs-types.ts +14 -1
  487. package/src/codegen/docs.ts +60 -7
  488. package/src/codegen/rehype-base-url.d.mts +3 -1
  489. package/src/codegen/rehype-base-url.mjs +15 -9
  490. package/src/codegen/rehype-base-url.test.ts +34 -0
  491. package/src/components/auto-release.test.ts +30 -0
  492. package/src/components/auto-release.ts +9 -1
  493. package/src/components/capability.ts +9 -0
  494. package/src/components/cli-support.test.ts +82 -0
  495. package/src/components/cli-support.ts +16 -9
  496. package/src/components/driver.test.ts +24 -0
  497. package/src/components/driver.ts +165 -56
  498. package/src/components/fan-out-inputs.test.ts +85 -0
  499. package/src/components/fan-out-inputs.ts +192 -0
  500. package/src/components/fan-out-record.test.ts +10 -0
  501. package/src/components/fan-out-record.ts +19 -0
  502. package/src/components/fan-out-run.ts +104 -35
  503. package/src/components/fan-out.ts +4 -0
  504. package/src/components/pr-pipeline.ts +35 -4
  505. package/src/components/pr-run.ts +30 -1
  506. package/src/components/promote-order.test.ts +90 -0
  507. package/src/components/promote-order.ts +75 -0
  508. package/src/components/promote.test.ts +10 -1
  509. package/src/components/promote.ts +94 -3
  510. package/src/components/release-compile.test.ts +147 -0
  511. package/src/components/release-compile.ts +459 -0
  512. package/src/components/release-gate.test.ts +215 -0
  513. package/src/components/release-gate.ts +355 -0
  514. package/src/components/release-promote.test.ts +159 -0
  515. package/src/components/release-promote.ts +232 -0
  516. package/src/components/run-progress.ts +7 -0
  517. package/src/components/wave-plan.ts +16 -3
  518. package/src/config.ts +15 -1
  519. package/src/flag-params.test.ts +144 -0
  520. package/src/flag-params.ts +134 -0
  521. package/src/index.ts +2 -0
  522. package/src/lifecycle/__fixtures__/publish-fakes.ts +351 -0
  523. package/src/lifecycle/change-set-store.test.ts +217 -0
  524. package/src/lifecycle/change-set-store.ts +113 -0
  525. package/src/lifecycle/commit-sha.ts +23 -0
  526. package/src/lifecycle/delivery-metrics.ts +263 -0
  527. package/src/lifecycle/deploy-outcome.ts +147 -0
  528. package/src/lifecycle/gate-change-set.e2e.test.ts +122 -0
  529. package/src/lifecycle/gate-change-set.ts +164 -0
  530. package/src/lifecycle/gate-ledger.test.ts +33 -0
  531. package/src/lifecycle/gate-ledger.ts +68 -3
  532. package/src/lifecycle/git.ts +61 -8
  533. package/src/lifecycle/index.ts +4 -0
  534. package/src/lifecycle/mixed-environment.test.ts +97 -0
  535. package/src/lifecycle/mixed-environment.ts +204 -0
  536. package/src/lifecycle/publish-attachments.ts +196 -0
  537. package/src/lifecycle/publish-credentials.ts +84 -0
  538. package/src/lifecycle/publish-declaration.ts +95 -0
  539. package/src/lifecycle/publish-forge.ts +325 -0
  540. package/src/lifecycle/publish-npm.ts +259 -0
  541. package/src/lifecycle/publish-oci.ts +396 -0
  542. package/src/lifecycle/publish-record.ts +113 -0
  543. package/src/lifecycle/publish-resume.test.ts +168 -0
  544. package/src/lifecycle/publish-targets.test.ts +494 -0
  545. package/src/lifecycle/publish-targets.ts +100 -0
  546. package/src/lifecycle/release-cut-signed.test.ts +180 -0
  547. package/src/lifecycle/release-cut.test.ts +483 -0
  548. package/src/lifecycle/release-cut.ts +503 -0
  549. package/src/lifecycle/release-flag.test.ts +112 -0
  550. package/src/lifecycle/release-join.test.ts +68 -0
  551. package/src/lifecycle/release-join.ts +182 -0
  552. package/src/lifecycle/release-ledger.test.ts +14 -0
  553. package/src/lifecycle/release-ledger.ts +85 -17
  554. package/src/lifecycle/release-publish.test.ts +225 -0
  555. package/src/lifecycle/release-publish.ts +568 -0
  556. package/src/lifecycle/release-revocation.ts +147 -0
  557. package/src/lifecycle/release-store.ts +434 -0
  558. package/src/lifecycle/release-verify.test.ts +110 -0
  559. package/src/lifecycle/release-verify.ts +120 -0
  560. package/src/lifecycle/release-workstation.test.ts +204 -0
  561. package/src/lifecycle/release-workstation.ts +216 -0
  562. package/src/lifecycle/retention-growth.e2e.test.ts +279 -0
  563. package/src/lifecycle/retention-policy.ts +63 -0
  564. package/src/lifecycle/retention.test.ts +363 -0
  565. package/src/lifecycle/retention.ts +508 -0
  566. package/src/lifecycle/run-ledger.test.ts +10 -0
  567. package/src/lifecycle/run-ledger.ts +6 -0
  568. package/src/op/activities/change-coverage.ts +4 -1
  569. package/src/op/activities/source-release.ts +8 -3
  570. package/src/op/activities/source-rollback.ts +8 -4
  571. package/src/op/commit-run-gate-deploy-join.test.ts +117 -0
  572. package/src/op/gate-name.ts +13 -3
  573. package/src/op/gate-release.test.ts +126 -0
  574. package/src/op/gate-run-locator.test.ts +110 -0
  575. package/src/op/gate-run-locator.ts +35 -0
  576. package/src/op/gate.ts +88 -6
  577. package/src/op/local-executor.ts +207 -52
  578. package/src/op/op-waves-run.ts +4 -0
  579. package/src/op/run-events.test.ts +166 -0
  580. package/src/op/run-live.ts +1 -1
  581. package/src/op/runtime.ts +39 -0
  582. package/src/op/runtimes/local.test.ts +16 -0
  583. package/src/op/runtimes/local.ts +9 -0
  584. package/src/plan-summary.test.ts +20 -0
  585. package/src/plan-summary.ts +8 -1
  586. package/src/point-decision.ts +12 -2
  587. package/src/pr-loop.ts +25 -4
  588. package/src/pr-report-url.test.ts +131 -0
  589. package/src/pr-report-url.ts +209 -0
  590. package/src/provenance.ts +2 -2
  591. package/src/run-event-store.test.ts +144 -0
  592. package/src/run-event-store.ts +273 -0
  593. package/src/run-event-stream.test.ts +175 -0
  594. package/src/run-event-stream.ts +309 -0
  595. package/src/run-event.test.ts +277 -0
  596. package/src/run-event.ts +471 -0
  597. package/src/wave-loop-golden.test.ts +9 -0
  598. package/src/workspace/__fixtures__/flag-workspace.ts +132 -0
  599. package/src/workspace/__fixtures__/older-records/change-set-984534ea9.json +100 -0
  600. package/src/workspace/__fixtures__/older-records/older-records.json +326 -0
  601. package/src/workspace/__fixtures__/run-event-check.ts +58 -0
  602. package/src/workspace/ancestry-index.test.ts +93 -0
  603. package/src/workspace/change-set-show.schema.json +102 -0
  604. package/src/workspace/change-set-show.ts +72 -0
  605. package/src/workspace/change-set.schema.json +32 -1
  606. package/src/workspace/changes-cli.ts +10 -1
  607. package/src/workspace/changes.schema.json +135 -0
  608. package/src/workspace/changes.test.ts +1 -1
  609. package/src/workspace/changes.ts +84 -2
  610. package/src/workspace/check.schema.json +4 -2
  611. package/src/workspace/checks/records.ts +35 -1
  612. package/src/workspace/checks.ts +2 -1
  613. package/src/workspace/ci-green-cli.ts +75 -13
  614. package/src/workspace/ci-green-forge.ts +24 -4
  615. package/src/workspace/ci-green-runs.test.ts +242 -0
  616. package/src/workspace/ci-green-signed.test.ts +302 -0
  617. package/src/workspace/ci-green-workflow.test.ts +16 -0
  618. package/src/workspace/ci-green-workflow.ts +12 -0
  619. package/src/workspace/ci-green.test.ts +131 -2
  620. package/src/workspace/ci-green.ts +635 -42
  621. package/src/workspace/ci-last-green.schema.json +32 -2
  622. package/src/workspace/ci-list.schema.json +525 -0
  623. package/src/workspace/commit-links.test.ts +279 -0
  624. package/src/workspace/commit-links.ts +183 -0
  625. package/src/workspace/declaration.schema.json +76 -0
  626. package/src/workspace/declaration.test.ts +28 -0
  627. package/src/workspace/declaration.ts +60 -2
  628. package/src/workspace/declared-kinds.ts +40 -1
  629. package/src/workspace/delivery-metrics.schema.json +519 -0
  630. package/src/workspace/delivery-metrics.test.ts +236 -0
  631. package/src/workspace/delivery-metrics.ts +286 -0
  632. package/src/workspace/flags-read.ts +121 -0
  633. package/src/workspace/flags.test.ts +141 -0
  634. package/src/workspace/flags.ts +157 -0
  635. package/src/workspace/graph-cli.ts +1 -1
  636. package/src/workspace/identity-gate-rule.ts +91 -7
  637. package/src/workspace/identity.ts +14 -1
  638. package/src/workspace/intent-cli.ts +46 -5
  639. package/src/workspace/intent-trace.test.ts +173 -0
  640. package/src/workspace/intent-trace.ts +484 -0
  641. package/src/workspace/intent.schema.json +702 -6
  642. package/src/workspace/intent.ts +196 -26
  643. package/src/workspace/ls.schema.json +3 -1
  644. package/src/workspace/ls.ts +6 -0
  645. package/src/workspace/member-pipeline.test.ts +17 -0
  646. package/src/workspace/member-pipeline.ts +9 -0
  647. package/src/workspace/older-records.test.ts +412 -0
  648. package/src/workspace/overlap.test.ts +165 -0
  649. package/src/workspace/overlap.ts +340 -0
  650. package/src/workspace/promotion-order.ts +97 -0
  651. package/src/workspace/read-contract.e2e.test.ts +5 -1
  652. package/src/workspace/reason-codes.test.ts +7 -1
  653. package/src/workspace/reason-codes.ts +7 -1
  654. package/src/workspace/record-assets.test.ts +2 -1
  655. package/src/workspace/records-contract.e2e.test.ts +2 -1
  656. package/src/workspace/records.schema.json +21 -2
  657. package/src/workspace/records.ts +36 -2
  658. package/src/workspace/reference-kinds/flag/flag.kind.mjs +32 -0
  659. package/src/workspace/reference-kinds/flag/flag.schema.json +53 -0
  660. package/src/workspace/releases.schema.json +513 -0
  661. package/src/workspace/releases.test.ts +108 -0
  662. package/src/workspace/releases.ts +133 -0
  663. package/src/workspace/run-event.schema.json +295 -0
  664. package/src/workspace/status-contract.test.ts +81 -1
  665. package/src/workspace/status-gates.ts +64 -1
  666. package/src/workspace/status-mixed.test.ts +152 -0
  667. package/src/workspace/status-revoked.test.ts +153 -0
  668. package/src/workspace/status-stewards.ts +6 -0
  669. package/src/workspace/status.schema.json +268 -2
  670. package/src/workspace/status.ts +334 -4
  671. package/src/workspace/trust/ci-tag-statement.ts +151 -0
  672. package/src/workspace/trust/op-run-statement.ts +148 -0
  673. package/src/workspace/trust/rotation.ts +61 -14
  674. package/src/workspace/trust/seal.ts +10 -0
  675. package/src/workspace/trust/ssh-commit.ts +10 -9
  676. package/src/workspace/wip.ts +11 -2
  677. package/src/cli/commands/__fixtures__/init-lexicon-output/docs/astro.config.mjs +0 -14
  678. package/src/cli/commands/__fixtures__/init-lexicon-output/docs/package.json +0 -16
  679. package/src/cli/commands/__fixtures__/init-lexicon-output/docs/src/content/docs/index.mdx +0 -8
  680. package/src/cli/commands/__fixtures__/init-lexicon-output/docs/src/content.config.ts +0 -15
  681. package/src/cli/commands/__fixtures__/init-lexicon-output/docs/tsconfig.json +0 -10
package/dist/cli/main.js CHANGED
@@ -104,6 +104,7 @@ const runOpApprove = lazyHandler(runHandlers, (m) => m.runOpApprove);
104
104
  const runOpSignalRenamed = lazyHandler(runHandlers, (m) => m.runOpSignalRenamed);
105
105
  const runOpCancel = lazyHandler(runHandlers, (m) => m.runOpCancel);
106
106
  const runOpLog = lazyHandler(runHandlers, (m) => m.runOpLog);
107
+ const runOpEvents = lazyHandler(runHandlers, (m) => m.runOpEvents);
107
108
  const runWaveHandlers = () => import("./handlers/run-wave.js");
108
109
  const runOpWaveCommand = lazyHandler(runWaveHandlers, (m) => m.runOpWaveCommand);
109
110
  const operatorHandlers = () => import("./handlers/operator.js");
@@ -214,22 +215,82 @@ Commands:
214
215
  applied) and path. Read-only.
215
216
 
216
217
  CI:
217
- ci last-green [--json] The newest first-parent commit of ci.green's branch
218
- with a ci/green tag and no ci/revoked tag. Reads local
219
- tags only; fetch them first.
220
- ci tick [--dry-run] [--forge github] Tag each commit within ci.green's
221
- window whose required phases all passed ci/green/<sha>,
222
- and revoke a green one that now fails ci/revoked/<sha>.
223
- Reads check runs from the forge, pushes the tags.
218
+ ci last-green [--json] [--from <rev>] The newest first-parent commit of
219
+ ci.green's branch, or of --from, with a ci/green tag
220
+ and no ci/revoked tag. Reads local tags only; fetch
221
+ them first. With ci.green.signedSince, a tag without a
222
+ valid runner statement is ignored and reported.
223
+ ci list [--json] [--limit <n>] [--since <rev>] [--forge github] [--source checks|runs]
224
+ The first-parent commits of ci.green's branch within
225
+ its window, newest first, each green, revoked or
226
+ undecided with its required phases' results. Reads
227
+ local tags; --forge reads check runs for undecided
228
+ commits, and source runs reads the signed Op runs on
229
+ the local chant/lifecycle. --since replaces the window.
230
+ ci tick [--dry-run] [--forge github] [--source checks|runs] [--key <runner key.pem>]
231
+ Tag each commit within ci.green's window whose
232
+ required phases all passed ci/green/<sha>, and revoke
233
+ a green one that now fails ci/revoked/<sha>. Reads
234
+ check runs from the forge, or with source runs
235
+ (ci.green.source or --source) the Op runs on
236
+ chant/lifecycle that a runner key signed. Pushes the
237
+ tags. --key, or the PEM in CHANT_RUNNER_KEY, signs
238
+ each tag with a runner key.
224
239
  ci workflow [--workflow <name>]... [--output <file>] Write
225
240
  [--chant <command>] [--install <command>]
226
241
  [--token-secret <NAME> | --app-id-var <VAR> --app-key-secret <NAME>]
242
+ [--runner-key-secret <NAME>]
227
243
  .github/workflows/chant-ci-green.yml, which runs the
228
244
  tick when a required workflow completes and every 15m.
229
245
  --chant replaces the npx @intentius/chant pin the tick
230
246
  runs; --install adds a step before it. --token-secret,
231
247
  or a GitHub App's id and key, pushes the tags with a
232
248
  token that may tag commits changing workflow files.
249
+ --runner-key-secret hands the tick the runner key it
250
+ signs its tags with.
251
+
252
+ Releases:
253
+ release cut [<label>] [--yes] [--build <command>] [--param <k=v>]
254
+ [--params-file <file>] [--src <dir>] [-o <file>] [--lexicon <name>]
255
+ [--actor <name>] [--sign [<key file>]] [--json]
256
+ A dry run of a cut of this member from HEAD, which
257
+ must be clean, on trunk and pushed, and carry a
258
+ ci/green tag: compile every environment in the
259
+ config's environments and print what the cut would
260
+ build, record and tag, and what publishes where.
261
+ --yes cuts: builds the artifacts once, stores the
262
+ release on chant/lifecycle under its digest, records
263
+ the actor and run id, tags the commit release/<label>
264
+ here, and prints the next command.
265
+ --build runs before each environment's templates are
266
+ read, with CHANT_ENV set; {env} in --params-file is
267
+ replaced by the environment. --sign signs the cut with
268
+ the actor's ssh key; an identity.gates release entry
269
+ requires it. A project with no components releases
270
+ what chant build --env <env> writes: --src <dir> is
271
+ the build root, -o <file> the output (dist/build.yaml),
272
+ --lexicon narrows it.
273
+ release publish <label|digest> [--yes] [--allow-unsigned]
274
+ [--require-provenance] [--json]
275
+ Publish a cut release to the targets release.publish
276
+ in chant.config.ts declares (npm, OCI registries,
277
+ forge release assets), each with an SBOM and the
278
+ release's provenance. A dry run without --yes.
279
+ Refuses a revoked release, one whose signature does
280
+ not verify against .chant/allowed_signers unless
281
+ --allow-unsigned, and with a target a checkout that
282
+ is not the release's commit. Warns first when the run
283
+ has no OIDC token, so what it publishes carries no
284
+ OIDC provenance; --require-provenance refuses instead.
285
+ release verify <label|digest> [--json]
286
+ Check, offline, that the release was signed by a key
287
+ .chant/allowed_signers lists at the release's commit.
288
+ release list [--json] Every release of this member with its targets, its
289
+ cuts and the environments that run it.
290
+ release export <label|digest> --env <env> [-o <dir>] [--json]
291
+ Write the files the release recorded for <env>, each
292
+ checked against its digest, at their recorded paths
293
+ under <dir> (default: here), for a deploy to read.
233
294
 
234
295
  Change sets:
235
296
  change-set summary <file> The grouped plan summary of a change-set
@@ -238,6 +299,10 @@ Change sets:
238
299
  replacement, failure and hole named.
239
300
  markdown fits an MR/PR note of --limit
240
301
  characters (default 65536). Read-only.
302
+ change-set show <digest> The change set a pull-request or release gate
303
+ [--member <name>] [--json] bound, stored on
304
+ chant/lifecycle under its digest, each
305
+ entry with its graph node. Read-only.
241
306
 
242
307
  Ops:
243
308
  run <name> Run an Op on the resolved runtime (--on; local by default)
@@ -247,11 +312,18 @@ Ops:
247
312
  its Drift outcome is true (WatchOp failOn: "drift")
248
313
  --no-record: a test run that records nothing on
249
314
  chant/lifecycle and pushes nothing (local runtime)
315
+ --key <runner key.pem>, or the PEM in
316
+ CHANT_RUNNER_KEY: sign the run's record with a runner
317
+ key, so ci tick from runs counts it (#4044)
250
318
  run list List all Ops with the runtime's state for each
251
319
  run status <name> Show the runtime's state for one Op's latest run
252
320
  run approve <op> <gate> Record a gate's resolution and wake the runtime
253
321
  run cancel <name> Cancel the active run (requires --force)
254
322
  run log <name> Show run history for an Op
323
+ run events <run> Replay a run's events kept on this host (a run id, or
324
+ an Op or component name for its newest run). --json
325
+ prints the run-event lines; --follow streams a run in
326
+ progress until run-settle (#4042)
255
327
  run wave --spec <file> --wave <k> Plan, gate and apply wave k of an Op
256
328
  waves spec (#3679): the job a generated waves
257
329
  pipeline runs. --decide plans and decides only;
@@ -280,12 +352,19 @@ Ops:
280
352
  run, and prints that order first (#3950).
281
353
  On success, auto-emits a release-ledger record per
282
354
  component that published a digest (default: on;
283
- --no-release-record to opt out; #597)
355
+ --no-release-record to opt out; #597).
356
+ --release <label|digest>: the run is of that release,
357
+ cut from this checkout's commit; the records name it (#4043)
284
358
  --progress-json: stream one NDJSON RunProgressEvent
285
359
  per line to stdout while the run executes, for a
286
360
  consumer to render live wave/component/phase/step
287
361
  progress instead of tailing raw logs (additive; run
288
362
  semantics/exit code unchanged)
363
+ --events-json: stream the run's events instead, one
364
+ run-event.schema.json line each, with the run id,
365
+ commit and runtime on every line (#4041). Also on
366
+ run <op>, components promote|rollback|redeploy,
367
+ fan-out, pr-plan and pr-apply
289
368
  operator Run scheduled ticks for discovered ConvergeOps
290
369
  locally (#1485): acquire/renew a per-op
291
370
  lease (git ref CAS), tick on --interval, record every
@@ -374,6 +453,13 @@ Workspace (level 1, #2524):
374
453
  beside it and marks the members whose digests differ.
375
454
  Read only; never fetches. --json prints the
376
455
  read-contract document
456
+ workspace metrics [dir] [--env <env>] [--member <name>] [--since <date>] [--json]
457
+ The four DORA metrics per member and environment
458
+ (#4039): deployment frequency, lead time from commit
459
+ to running release, change failure rate and time to
460
+ restore, from the deploy records, releases and ci
461
+ revoked tags. Eight weeks back by default. Read only;
462
+ never fetches. --json prints the read-contract document
377
463
  workspace records [--kind <kind file>] [--current] [--uncommitted | --at <rev>] [--base <rev>] [--require attested] [--json]
378
464
  Without --kind, every record kind the declaration
379
465
  names. Read the records a record kind locates, validated
@@ -651,7 +737,13 @@ Workspace (level 1, #2524):
651
737
  the severity (warn by default) and ignore globs. When
652
738
  the declaration at base has writeScope or agents, each
653
739
  commit that writes outside its writer's scope fails
654
- the check (write-scope-member, write-scope-kind)
740
+ the check (write-scope-member, write-scope-kind). Each
741
+ first-parent commit of the range should name its work
742
+ item in a Chant-Record: <work kind>:<id> or a
743
+ Chant-Lease trailer. commit-unlinked is a commit that
744
+ names none, commit-wrongly-linked one whose trailers
745
+ name no work item that exists; both follow the
746
+ severity
655
747
  workspace patch <base>..<head>|<base>...<head>|<commit> [--path <p>...] [--max-bytes <n>] [--json]
656
748
  workspace patch [<commit>] --worktree [--path <p>...] [--max-bytes <n>] [--json]
657
749
  The hunks of a diff, file by file: a range, a work
@@ -682,7 +774,7 @@ Workspace (level 1, #2524):
682
774
  Each composite instance the members declare, with the
683
775
  components whose contract can deploy it; an instance
684
776
  with none lists an empty set
685
- workspace graph --intent <path[:start-end]|path#symbol> [--at <rev>] [--kind <kind file>...] [--follow-squash] [--json]
777
+ workspace graph --intent <path[:start-end]|path#symbol|member/node|sha> [--at <rev>] [--kind <kind file>...] [--follow-squash] [--json]
686
778
  The intent graph over one region: the commits that
687
779
  touched it, the decisions whose constrains cover it,
688
780
  the artifacts they pin, and findings with closed codes.
@@ -721,6 +813,13 @@ Lifecycle (alias: lc):
721
813
  executes the plan (production-like names also need
722
814
  --confirm-prod, or an interactive confirmation)
723
815
  lifecycle log [env] History of lifecycle snapshots
816
+ lifecycle gc [--yes] [--push] [--json]
817
+ Prune stored change sets, releases and run event
818
+ files by the retention policy (#4036). A dry run
819
+ without --yes; --yes writes one commit removing
820
+ them on the local chant/lifecycle and deletes the
821
+ run event files; --push pushes it. History is
822
+ never rewritten, and the ledgers are never pruned
724
823
 
725
824
  Plan scenarios (#1292):
726
825
  scenario check Evaluate every declared Scenario's expect clause
@@ -759,7 +858,11 @@ Component release ledger + status:
759
858
  --member <name>, both commands: a workspace
760
859
  member's loop, gate op pr-<n>-<member>;
761
860
  --resume <file> finishes an apply that failed
762
- partway under the same approval)
861
+ partway under the same approval;
862
+ --events-json, both commands: the run-event
863
+ stream on stdout; --report-url <s3 or file URL>,
864
+ both commands: copy the report, the change set
865
+ and the events to <url>/<pr>/<commit>/)
763
866
  components release <env> Append one immutable release record
764
867
  (--component <name> --digest <sha256:...>
765
868
  [--git-sha <sha>] [--run-id <id>] [--actor <name>]);
@@ -774,13 +877,18 @@ Component release ledger + status:
774
877
  byte-for-byte plus a self-describing manifest.json
775
878
  components promote Deploy the digests one environment's release
776
879
  ledger records to another, without a build
777
- (--from <env> --to <env> [--component <name>
778
- [--digest <sha256:...>]]; --dry-run prints the
779
- plan; the target's gates still apply)
880
+ (--to <env> [--from <env>] [--allow-skip]
881
+ [--release <label|digest>]
882
+ [--component <name> [--digest <sha256:...>]];
883
+ --from defaults to the environment before --to
884
+ in the config's environments; --dry-run prints
885
+ the plan; the target's gates still apply)
780
886
  components rollback <env> Redeploy an earlier release of an environment
781
887
  from its recorded digest (--component <name>
782
888
  [--digest <sha256:...>]; defaults to the release
783
- before the current one; --dry-run prints the plan)
889
+ before the current one; --dry-run prints the plan).
890
+ --release <label|digest> restores every component
891
+ of that release through the release gate (#4035)
784
892
  components redeploy <env> Redeploy the release an environment's ledger
785
893
  records as current, after a deploy that failed
786
894
  partway (--component <name> [--digest <sha256:...>];
@@ -921,7 +1029,7 @@ Options:
921
1029
  chant.config.ts's build.sandbox: true; #1045)
922
1030
  --param <name=value> (build, graph, run --components, components fan-out,
923
1031
  components promote, components rollback,
924
- components redeploy) Bind a
1032
+ components redeploy, release cut) Bind a
925
1033
  declared build-time parameter (chant.config.ts's buildParams)
926
1034
  to a value, for source to read as params.<name>
927
1035
  (#1064) instead of process.env — repeatable.
@@ -933,7 +1041,7 @@ Options:
933
1041
  chant.template.json declares instead (#2627).
934
1042
  --params-file <path> (build, graph, run --components, components fan-out,
935
1043
  components promote, components rollback,
936
- components redeploy) JSON file
1044
+ components redeploy, release cut) JSON file
937
1045
  of { "name": value } build-time parameter values
938
1046
  (#1064). Second precedence, after --param.
939
1047
  init --from refuses it: pass --param instead.
@@ -1178,10 +1286,22 @@ export const commandRegistry = [
1178
1286
  { name: "carve status", handler: runCarveStatus },
1179
1287
  // #3573 — which commits passed CI, kept as ci/green and ci/revoked tags (ws-103). Imported on first use.
1180
1288
  { name: "ci last-green", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/ci-green-cli.js")).runCiLastGreen(ctx) },
1289
+ { name: "ci list", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/ci-green-cli.js")).runCiList(ctx) },
1181
1290
  { name: "ci tick", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/ci-green-cli.js")).runCiTick(ctx) },
1182
1291
  { name: "ci workflow", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/ci-green-cli.js")).runCiWorkflow(ctx) },
1292
+ // #4026: the release cut from a green commit (ws-104). Imported on first use.
1293
+ { name: "release cut", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/release.js")).runReleaseCut(ctx) },
1294
+ // #4027: publish a cut release, to the targets #4047 declares.
1295
+ { name: "release publish", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/release.js")).runReleasePublish(ctx) },
1296
+ // #4049: check a release's signature offline.
1297
+ { name: "release verify", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/release.js")).runReleaseVerify(ctx) },
1298
+ { name: "release list", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/release.js")).runReleaseList(ctx) },
1299
+ { name: "release export", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/release.js")).runReleaseExport(ctx) },
1300
+ { name: "release compile", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/release.js")).runReleaseCompile(ctx) },
1183
1301
  // #3188 — the grouped plan summary of a change-set document. Reads one file; imported on first use.
1184
1302
  { name: "change-set summary", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/change-set.js")).runChangeSetSummary(ctx) },
1303
+ // #4022: the change set a gate bound, read from chant/lifecycle by its digest.
1304
+ { name: "change-set show", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/change-set.js")).runChangeSetShow(ctx) },
1185
1305
  { name: "init", handler: runInit, runsNoConfig: true },
1186
1306
  { name: "init lexicon", handler: runInitLexicon },
1187
1307
  { name: "update", handler: runUpdate },
@@ -1201,6 +1321,7 @@ export const commandRegistry = [
1201
1321
  { name: "run signal", handler: runOpSignalRenamed },
1202
1322
  { name: "run cancel", handler: runOpCancel },
1203
1323
  { name: "run log", handler: runOpLog },
1324
+ { name: "run events", handler: runOpEvents },
1204
1325
  { name: "run wave", handler: runOpWaveCommand },
1205
1326
  // #3683 — start the CI jobs that wait at gates whose approval arrived. Imported on first use.
1206
1327
  { name: "run resume", handler: async (ctx) => (await import("./handlers/gate-resume.js")).runResumeCommand(ctx) },
@@ -1227,6 +1348,8 @@ export const commandRegistry = [
1227
1348
  { name: "workspace work", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/work-cli.js")).runWorkspaceWork(ctx) },
1228
1349
  // #3033 — the agent run record: what each run cost and which commits it made. chant records runs and never starts one.
1229
1350
  { name: "workspace runs", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/runs-cli.js")).runWorkspaceRuns(ctx) },
1351
+ // #4039 — DORA metrics from the deploy, release and revocation records.
1352
+ { name: "workspace metrics", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/delivery-metrics.js")).runWorkspaceMetrics(ctx) },
1230
1353
  { name: "workspace status", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/status.js")).runWorkspaceStatus(ctx) },
1231
1354
  { name: "workspace lineage", handler: async (ctx) => (await import("../workspace/lineage-cli.js")).runWorkspaceLineage(ctx) },
1232
1355
  { name: "workspace upgrade", handler: async (ctx) => (await import("../workspace/lineage-upgrade-cli.js")).runWorkspaceUpgrade(ctx) },
@@ -1276,6 +1399,8 @@ export const commandRegistry = [
1276
1399
  { name: "lifecycle whoami", requiresPlugins: true, handler: runLifecycleWhoami },
1277
1400
  { name: "lifecycle teardown", requiresPlugins: true, handler: runLifecycleTeardown },
1278
1401
  { name: "lifecycle log", handler: runLifecycleLog },
1402
+ // #4036 — retention's garbage collection. Imported on first use.
1403
+ { name: "lifecycle gc", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/lifecycle-gc.js")).runLifecycleGc(ctx) },
1279
1404
  // Plan scenarios (#1292) — fully offline, no plugin network calls, but
1280
1405
  // requiresPlugins:true so the build step has serializers to partition
1281
1406
  // against, same as every other build-then-something verb.
@@ -1307,6 +1432,7 @@ export const commandRegistry = [
1307
1432
  { name: "dev", handler: runDevUnknown },
1308
1433
  { name: "serve", handler: runServeUnknown },
1309
1434
  { name: "components", handler: runComponentsUnknown },
1435
+ { name: "release", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/release.js")).runReleaseUnknown(ctx) },
1310
1436
  { name: "workspace", handler: async (ctx) => (await import("../workspace/records-cli.js")).runWorkspaceUnknown(ctx) },
1311
1437
  ];
1312
1438
  /**
@@ -100,7 +100,7 @@ export const workspaceReadTools = [
100
100
  },
101
101
  {
102
102
  name: "workspace-changes",
103
- description: "The forward coverage check over a diff: chant workspace check --changes <range> --json (changes.schema.json, #2773). Each changed path with the current records whose constrains cover it, and a change-uncovered or change-out-of-scope finding for each gap, at the severity the declaration's changes block sets. Returns the document unchanged.",
103
+ description: "The forward coverage check over a diff: chant workspace check --changes <range> --json (changes.schema.json, #2773). Each changed path with the current records whose constrains cover it, and a change-uncovered or change-out-of-scope finding for each gap, at the severity the declaration's changes block sets. links says whether each trunk commit of the range names its work item, with commit-unlinked and commit-wrongly-linked findings at the same severity. Returns the document unchanged.",
104
104
  inputSchema: {
105
105
  type: "object",
106
106
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"parse-args.d.ts","sourceRoot":"","sources":["../../src/cli/parse-args.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA0E7C;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAitBpD"}
1
+ {"version":3,"file":"parse-args.d.ts","sourceRoot":"","sources":["../../src/cli/parse-args.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAiF7C;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA6vBpD"}
@@ -46,6 +46,8 @@ const BOOLEAN_FLAGS = new Set([
46
46
  "--local",
47
47
  "--json",
48
48
  "--progress-json",
49
+ "--events-json",
50
+ "--follow",
49
51
  "--update-snapshot",
50
52
  "--update-baseline",
51
53
  "--run-examples",
@@ -69,11 +71,16 @@ const BOOLEAN_FLAGS = new Set([
69
71
  "--current",
70
72
  "--uncommitted",
71
73
  "--allow-code",
74
+ "--allow-skip",
75
+ "--allow-unsigned",
76
+ "--require-provenance",
72
77
  "--root-only",
73
78
  "--generated",
74
79
  "--decide",
75
80
  "--record-plans",
76
81
  "--loopback",
82
+ "--artifacts",
83
+ "--push",
77
84
  ]);
78
85
  /**
79
86
  * Parse command line arguments
@@ -205,8 +212,9 @@ export function parseArgs(args) {
205
212
  }
206
213
  else if (arg === "--from") {
207
214
  // Shared by `migrate --from <lexicon>`, `import --from <env>`,
208
- // `components promote --from <env>` and `init --from <repo>@<ref>`;
209
- // the commands never run together, so one field carries all four.
215
+ // `components promote --from <env>`, `init --from <repo>@<ref>` and
216
+ // `ci last-green --from <rev>` (#4031); the commands never run
217
+ // together, so one field carries all five.
210
218
  result.migrateFrom = args[++i];
211
219
  }
212
220
  else if (arg === "--kustomize") {
@@ -279,6 +287,10 @@ export function parseArgs(args) {
279
287
  else if (arg === "--yes") {
280
288
  result.yes = true;
281
289
  }
290
+ else if (arg === "--push") {
291
+ // `chant lifecycle gc --yes --push` (#4036): push the prune commit.
292
+ result.push = true;
293
+ }
282
294
  else if (arg === "--confirm-prod") {
283
295
  result.confirmProd = true;
284
296
  }
@@ -470,9 +482,30 @@ export function parseArgs(args) {
470
482
  else if (arg === "--require-review") {
471
483
  result.requireReview = true;
472
484
  }
485
+ else if (arg === "--report-url") {
486
+ // `chant components pr-plan|pr-apply --report-url <url>` (#4007).
487
+ const url = args[++i];
488
+ if (!url || url.startsWith("-"))
489
+ throw new Error("--report-url needs a URL: --report-url s3://<bucket>/<prefix> or file://<directory>");
490
+ result.reportUrl = url;
491
+ }
492
+ else if (arg === "--allow-unsigned") {
493
+ // `chant release publish --allow-unsigned` (#4049).
494
+ result.allowUnsigned = true;
495
+ }
496
+ else if (arg === "--require-provenance") {
497
+ // `chant release publish --require-provenance` (#4049).
498
+ result.requireProvenance = true;
499
+ }
473
500
  else if (arg === "--pr-loop") {
474
501
  result.prLoop = true;
475
502
  }
503
+ else if (arg === "--before-script") {
504
+ const line = args[++i];
505
+ if (line === undefined || line === "")
506
+ throw new Error("--before-script needs a shell line: --before-script '<line>'");
507
+ (result.beforeScript ?? (result.beforeScript = [])).push(line);
508
+ }
476
509
  else if (arg === "--resume") {
477
510
  // `chant approve <op> <gate> --resume` (#3683) takes no value; the
478
511
  // fan-out and pull-request apply take the attempt file they resume.
@@ -491,6 +524,13 @@ export function parseArgs(args) {
491
524
  else if (arg === "--progress-json") {
492
525
  result.progressJson = true;
493
526
  }
527
+ else if (arg === "--events-json") {
528
+ result.eventsJson = true;
529
+ }
530
+ else if (arg === "--follow") {
531
+ // `chant run events <run> --follow` (#4042): tail a run in progress on this host.
532
+ result.follow = true;
533
+ }
494
534
  else if (arg === "--gated-exit") {
495
535
  // `chant run <op> --gated-exit <code>` (#2243) — remap only the gated
496
536
  // outcome's exit code. Parsed as a number here and range-checked in the
@@ -529,14 +569,14 @@ export function parseArgs(args) {
529
569
  result.composites = true;
530
570
  }
531
571
  else if (arg === "--intent") {
532
- // `chant workspace graph --intent <path[:start-end]|path#symbol>` (#2651), or `--intent --record <id>` with no region.
572
+ // `chant workspace graph --intent <path[:start-end]|path#symbol|member/node|sha>` (#2651), or `--intent --record <id>` with no region.
533
573
  const value = args[i + 1];
534
574
  if (value !== undefined && !value.startsWith("-"))
535
575
  result.intent = args[++i];
536
576
  else if (args.includes("--record"))
537
577
  result.intent = "";
538
578
  else
539
- throw new Error("--intent needs a region: --intent <path[:start-end]|path#symbol>, or --intent --record <id>");
579
+ throw new Error("--intent needs a region: --intent <path[:start-end]|path#symbol|member/node|sha>, or --intent --record <id>");
540
580
  }
541
581
  else if (arg === "--follow-squash") {
542
582
  // `chant workspace graph --intent ... --follow-squash` and `chant workspace runs --follow-squash` (#3035)
@@ -661,6 +701,12 @@ export function parseArgs(args) {
661
701
  if (!result.ciAppKeySecret || result.ciAppKeySecret.startsWith("-"))
662
702
  throw new Error("--app-key-secret needs the secret holding the App's private key: --app-key-secret <NAME>");
663
703
  }
704
+ else if (arg === "--runner-key-secret") {
705
+ // `chant ci workflow --runner-key-secret <NAME>` (#4031): the secret holding the runner key the tick signs its tags with.
706
+ result.ciRunnerKeySecret = args[++i];
707
+ if (!result.ciRunnerKeySecret || result.ciRunnerKeySecret.startsWith("-"))
708
+ throw new Error("--runner-key-secret needs the repository secret holding the runner key, such as CHANT_RUNNER_KEY: --runner-key-secret <NAME>");
709
+ }
664
710
  else if (arg === "--verdict") {
665
711
  // `chant workspace records review <id> --verdict agree|dissent|abstain` (#2670)
666
712
  result.verdict = args[++i];
@@ -785,6 +831,22 @@ export function parseArgs(args) {
785
831
  else if (arg === "--release-plan") {
786
832
  result.releasePlanFile = args[++i];
787
833
  }
834
+ else if (arg === "--release") {
835
+ // `chant components promote --release <label|digest>` (#4026)
836
+ result.release = args[++i];
837
+ if (!result.release || result.release.startsWith("-"))
838
+ throw new Error("--release needs a release's label or digest: --release <label|digest>");
839
+ }
840
+ else if (arg === "--build") {
841
+ // `chant release cut --build <command>` (#4026)
842
+ result.buildCommand = args[++i];
843
+ if (!result.buildCommand)
844
+ throw new Error("--build needs a shell command: --build '<command>'");
845
+ }
846
+ else if (arg === "--artifacts") {
847
+ // `chant release compile --artifacts` (#4026, internal)
848
+ result.artifacts = true;
849
+ }
788
850
  else if (arg === "--git-sha") {
789
851
  result.gitSha = args[++i];
790
852
  }
@@ -952,11 +1014,17 @@ export function parseArgs(args) {
952
1014
  // only when asked to.
953
1015
  result.allowCode = true;
954
1016
  }
1017
+ else if (arg === "--allow-skip") {
1018
+ // #4030 — `chant components promote` skips a step of the member's
1019
+ // declared promotion order only when asked to.
1020
+ result.allowSkip = true;
1021
+ }
955
1022
  else if (arg === "--source") {
956
1023
  // #2551 — `chant workspace upgrade --source <repo>[#<member>]`.
957
1024
  result.source = args[++i];
1025
+ // #4044: also `chant ci tick|list --source checks|runs`.
958
1026
  if (!result.source || result.source.startsWith("-"))
959
- throw new Error("--source needs a template: --source <repo>[#<member>]");
1027
+ throw new Error("--source needs a template: --source <repo>[#<member>] for workspace upgrade, or a source for ci tick and ci list: --source checks|runs");
960
1028
  }
961
1029
  else if (arg === "--tags") {
962
1030
  // #2551 — `chant workspace adopt-lineage --tags <glob>`, also hash-index and versions.
@@ -71,6 +71,16 @@ export interface ParsedArgs {
71
71
  * unchanged; omitted (undefined, not false) when the flag isn't passed.
72
72
  */
73
73
  progressJson?: boolean;
74
+ /**
75
+ * `--events-json` (#4041) — stream the run's events to stdout, one
76
+ * `run-event.schema.json` line each (`../../run-event.ts`), on `chant run
77
+ * <op>`, `chant run --components`, `components promote|rollback|redeploy`,
78
+ * `components fan-out` and `components pr-plan|pr-apply`. Refused beside
79
+ * `--progress-json`, which prints the older shapes to the same stdout.
80
+ */
81
+ eventsJson?: boolean;
82
+ /** `chant run events <run> --follow` (#4042) — stream the run's events as they happen, until `run-settle`. */
83
+ follow?: boolean;
74
84
  live: boolean;
75
85
  /** `chant migrate --from <name>` (default "github") */
76
86
  migrateFrom?: string;
@@ -136,6 +146,12 @@ export interface ParsedArgs {
136
146
  namespace?: string;
137
147
  /** `chant workspace upgrade --allow-code` (#2550) — run migrations whose body is the template's own code. */
138
148
  allowCode?: boolean;
149
+ /** `chant components promote --allow-skip` (#4030): promote past a step of the member's declared promotion order. */
150
+ allowSkip?: boolean;
151
+ /** `chant release publish --allow-unsigned` (#4049): publish a release with no signature that verifies, with a warning. Never overrides identity.gates.release. */
152
+ allowUnsigned?: boolean;
153
+ /** `chant release publish --require-provenance` (#4049): refuse a run with no OIDC token, where it warns. */
154
+ requireProvenance?: boolean;
139
155
  /** `chant workspace upgrade --source <repo>[#<member>]` (#2551): move the scope to another template. */
140
156
  source?: string;
141
157
  /** `chant workspace adopt-lineage --tags <glob>` and `hash-index --tags` (#2551): the tags to compare. */
@@ -151,6 +167,8 @@ export interface ParsedArgs {
151
167
  /** `chant lifecycle teardown <env> --yes` — execute the planned deletion
152
168
  * (#1222). Without it the command plans and stops. */
153
169
  yes?: boolean;
170
+ /** `chant lifecycle gc --yes --push` (#4036): push the commit the prune wrote to chant/lifecycle. Without it the prune stays local. */
171
+ push?: boolean;
154
172
  /** `chant lifecycle teardown <env> --yes --confirm-prod` — the non-interactive
155
173
  * form of the extra confirmation a production-like environment name demands
156
174
  * (#1222). Meaningless without `--yes`. */
@@ -159,15 +177,21 @@ export interface ParsedArgs {
159
177
  verbatim?: boolean;
160
178
  /** `chant import --skip-undeclarable` — import what can be declared and warn about the live objects that cannot, instead of failing */
161
179
  skipUndeclarable?: boolean;
162
- /** `chant lifecycle … --src <dir>` — build root override for lifecycle commands */
180
+ /** `chant lifecycle … --src <dir>` — build root override for lifecycle commands. Also `chant release cut --src <dir>` (#4046): the build root of a project with no components. */
163
181
  src?: string;
164
182
  /** `--env <name>` — active environment: sets CHANT_ENV so env-aware source
165
183
  * re-evaluates for that environment (`build` + `graph`), and drives policy. */
166
184
  env?: string;
167
185
  /** `chant emulator up --port <container-port>=<host-port>`, repeatable (#3673); a bare `<host-port>` when one emulator is selected. */
168
186
  port?: string[];
169
- /** `chant emulator up --image <ref>` (#3952): the image to start, when one emulator is selected. */
187
+ /**
188
+ * `chant emulator up --image <ref>` (#3952): the image to start, when one
189
+ * emulator is selected. `chant build --components --generate --image <ref>`
190
+ * (#4002): the image every generated job runs in.
191
+ */
170
192
  image?: string;
193
+ /** `chant build --components --generate --before-script <line>`, repeatable (#4002): shell lines every generated job runs before its command. */
194
+ beforeScript?: string[];
171
195
  /** `chant emulator up --network <name>` (#3952): the Docker network each started container joins. */
172
196
  network?: string;
173
197
  /** `chant emulator up --setting <KEY>=<VALUE>`, repeatable (#3952): an emulator setting such as `FLOCI_<NAME>`, passed as `-e`. */
@@ -289,6 +313,12 @@ export interface ParsedArgs {
289
313
  * request. Needs `--forge`.
290
314
  */
291
315
  requireReview?: boolean;
316
+ /**
317
+ * `chant components pr-plan|pr-apply --report-url <url>` (#4007) — copy
318
+ * the stage's report, change set and run events to `<url>/<pr>/<commit>/`,
319
+ * an `s3://` or `file://` URL, the events as each wave and component settles.
320
+ */
321
+ reportUrl?: string;
292
322
  /**
293
323
  * `chant build --components --generate <lexicon> --pr-loop` (#3183) —
294
324
  * generate the pull-request pipeline: plan on the pull request, apply on
@@ -385,7 +415,7 @@ export interface ParsedArgs {
385
415
  noCache?: boolean;
386
416
  /** `chant workspace graph --composites` (#2662): print each composite instance with the components that can deploy it. */
387
417
  composites?: boolean;
388
- /** `chant workspace graph --intent <path[:start-end]|path#symbol>` (#2651): the region the intent graph is over. Empty with `--record`. */
418
+ /** `chant workspace graph --intent <path[:start-end]|path#symbol|member/node|sha>` (#2651): the region the intent graph is over. Empty with `--record`. */
389
419
  intent?: string;
390
420
  /** `chant workspace graph --intent` and `chant workspace runs` (#3035): follow squash merges to their pull requests' original commits, fetching missing pull request refs. */
391
421
  followSquash?: boolean;
@@ -433,6 +463,8 @@ export interface ParsedArgs {
433
463
  ciAppIdVar?: string;
434
464
  /** `chant ci workflow --app-key-secret <NAME>` (#3573): the secret holding that App's private key. */
435
465
  ciAppKeySecret?: string;
466
+ /** `chant ci workflow --runner-key-secret <NAME>` (#4031): the secret holding the runner key the tick signs its tags with. */
467
+ ciRunnerKeySecret?: string;
436
468
  /**
437
469
  * `chant workspace records review <id> --by <principal>` (#2670): the
438
470
  * reviewer, as the caller names them. Also `chant workspace records new
@@ -459,7 +491,7 @@ export interface ParsedArgs {
459
491
  prefix?: string;
460
492
  /** `chant workspace records|verify --require attested` (#2547): the provenance level a gate requires. */
461
493
  require?: string;
462
- /** `chant workspace evidence sign --key` (a runner's Ed25519 PEM) and `signers sign --key` (an ssh private key) (#2553). */
494
+ /** `chant workspace evidence sign --key` (a runner's Ed25519 PEM) and `signers sign --key` (an ssh private key) (#2553). Also `chant ci tick --key` (#4031): the runner key the tick signs its tags with. */
463
495
  key?: string;
464
496
  /** `chant workspace evidence sign --check-id <id>` (#2553): the check the evidence is for. */
465
497
  checkId?: string;
@@ -539,6 +571,12 @@ export interface ParsedArgs {
539
571
  digest?: string;
540
572
  /** `chant components release record --release-plan <file>` (ws-055, #2733) — path to a release plan JSON file, persisted content-addressed to `_plans/<digest>.json` on chant/lifecycle and read back through the read contract (`chant workspace status --json`). The plan's own `digest` field supplies `--digest` when it is omitted, and must match it when both are given. Distinct from `--plan` (#2300, below), the Op gate-approval plan digest. */
541
573
  releasePlanFile?: string;
574
+ /** `chant components promote --release <label|digest>` (#4026): deploy under that release, reading the templates its target for `--to` recorded. `chant run --components --release <label|digest>` (#4043): the run is of that release, which must have been cut from the checked-out commit and have a target for `--env`; the release records the run writes name it. */
575
+ release?: string;
576
+ /** `chant release cut --build <command>` (#4026): the shell command run in the member's directory before each environment's templates are read, with `CHANT_ENV` set to the environment. */
577
+ buildCommand?: string;
578
+ /** `chant release compile --artifacts` (#4026, internal): build the artifacts of `--component` instead of compiling the environment. */
579
+ artifacts?: boolean;
542
580
  /** Every `--digest` value, in order (#2602). `chant components promote --digest <component>=<sha256:...>` is repeatable, one per component; the other commands read the single {@link digest}. */
543
581
  digests?: string[];
544
582
  /** `chant components release record --git-sha <sha>` (#568) — git commit the deploy was built from. */
@@ -632,7 +670,7 @@ export interface ParsedArgs {
632
670
  plan?: string;
633
671
  /** `chant operator log --op <name>` (#2029) — restrict the tick history to one ConvergeOp by name. Omitted, every discovered ConvergeOp's ticks are merged into one timeline. */
634
672
  op?: string;
635
- /** `chant operator log --since <iso>` (#2029) — only entries at or after this ISO-8601 instant. `chant workspace records --since <rev>` (#2673) — the revision to compare the records with. */
673
+ /** `chant operator log --since <iso>` (#2029) — only entries at or after this ISO-8601 instant. `chant workspace records --since <rev>` (#2673) — the revision to compare the records with. `chant workspace metrics --since <date>` (#4039) — the start of the window the metrics count. */
636
674
  since?: string;
637
675
  /** `chant operator log --limit <n>` (#2029) — keep only the newest n entries (still printed oldest-first). */
638
676
  limit?: number;