@intentius/chant 0.124.46 → 0.124.48

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 (633) hide show
  1. package/dist/__golden__/wave-loop/op-by-apply-after-fails.json +10 -0
  2. package/dist/__golden__/wave-loop/op-by-apply-hold.json +10 -0
  3. package/dist/__golden__/wave-loop/op-by-apply-ignored.json +10 -0
  4. package/dist/__golden__/wave-loop/op-by-apply-pass.json +10 -0
  5. package/dist/__golden__/wave-loop/op-by-apply-skip.json +10 -0
  6. package/dist/__golden__/wave-loop/op-cost-member-clash.json +6 -0
  7. package/dist/__golden__/wave-loop/op-cost-member.json +13 -0
  8. package/dist/__golden__/wave-loop/op-denied-source.json +16 -0
  9. package/dist/__golden__/wave-loop/op-denied.json +16 -0
  10. package/dist/__golden__/wave-loop/op-discover-rest-short.json +6 -0
  11. package/dist/__golden__/wave-loop/op-discover-rest-stops.json +13 -0
  12. package/dist/__golden__/wave-loop/op-discover-rest.json +26 -0
  13. package/dist/__golden__/wave-loop/op-discover-wide.json +26 -0
  14. package/dist/__golden__/wave-loop/op-held-on-again.json +16 -0
  15. package/dist/__golden__/wave-loop/op-held-on-before-apply.json +16 -0
  16. package/dist/__golden__/wave-loop/op-held-on.json +16 -0
  17. package/dist/__golden__/wave-loop/op-hooks-apply-fails.json +13 -0
  18. package/dist/__golden__/wave-loop/op-hooks-fail-after-apply.json +13 -0
  19. package/dist/__golden__/wave-loop/op-hooks-fail-before-apply.json +13 -0
  20. package/dist/__golden__/wave-loop/op-hooks-fail-before-plan.json +13 -0
  21. package/dist/__golden__/wave-loop/op-hooks-held.json +13 -0
  22. package/dist/__golden__/wave-loop/op-hooks-hold-before-apply.json +13 -0
  23. package/dist/__golden__/wave-loop/op-hooks-pass.json +13 -0
  24. package/dist/__golden__/wave-loop/op-hooks-refused-at-base.json +13 -0
  25. package/dist/__golden__/wave-loop/op-hooks-share.json +33 -0
  26. package/dist/__golden__/wave-loop/op-outcome-held.json +10 -0
  27. package/dist/__golden__/wave-loop/op-outcome-replan-approved.json +10 -0
  28. package/dist/__golden__/wave-loop/op-outcome-replan-forever.json +10 -0
  29. package/dist/__golden__/wave-loop/op-outcome-replan.json +10 -0
  30. package/dist/__golden__/wave-loop/op-outcome-stood-down.json +10 -0
  31. package/dist/__golden__/wave-loop/op-outcome-unreadable.json +10 -0
  32. package/dist/__golden__/wave-loop/op-overridden.json +16 -0
  33. package/dist/__golden__/wave-loop/op-per-run.json +20 -0
  34. package/dist/__golden__/wave-loop/op-point.json +13 -0
  35. package/dist/__golden__/wave-loop/op-pr-review.json +10 -0
  36. package/dist/__golden__/wave-loop/op-sealed.json +10 -0
  37. package/dist/__golden__/wave-loop/op-spend-change-only.json +10 -0
  38. package/dist/__golden__/wave-loop/op-spend.json +10 -0
  39. package/dist/__golden__/wave-loop/op-wave-commands.json +55 -0
  40. package/dist/__golden__/wave-loop/op-wide-refused.json +26 -0
  41. package/dist/__golden__/wave-loop/op-wide-waiting.json +29 -0
  42. package/dist/__golden__/wave-loop/op-wide.json +39 -0
  43. package/dist/action-pins.d.ts +61 -0
  44. package/dist/action-pins.d.ts.map +1 -0
  45. package/dist/action-pins.js +77 -0
  46. package/dist/cli/commands/carve.d.ts +3 -0
  47. package/dist/cli/commands/carve.d.ts.map +1 -1
  48. package/dist/cli/commands/carve.js +36 -7
  49. package/dist/cli/commands/import-report.d.ts +26 -0
  50. package/dist/cli/commands/import-report.d.ts.map +1 -0
  51. package/dist/cli/commands/import-report.js +65 -0
  52. package/dist/cli/commands/import.d.ts +11 -1
  53. package/dist/cli/commands/import.d.ts.map +1 -1
  54. package/dist/cli/commands/import.js +22 -3
  55. package/dist/cli/commands/migrate.d.ts +13 -1
  56. package/dist/cli/commands/migrate.d.ts.map +1 -1
  57. package/dist/cli/commands/migrate.js +134 -10
  58. package/dist/cli/handlers/approve.d.ts.map +1 -1
  59. package/dist/cli/handlers/approve.js +21 -2
  60. package/dist/cli/handlers/build.d.ts.map +1 -1
  61. package/dist/cli/handlers/build.js +6 -1
  62. package/dist/cli/handlers/ledger.d.ts +3 -0
  63. package/dist/cli/handlers/ledger.d.ts.map +1 -0
  64. package/dist/cli/handlers/ledger.js +55 -0
  65. package/dist/cli/handlers/migrate.d.ts.map +1 -1
  66. package/dist/cli/handlers/migrate.js +18 -11
  67. package/dist/cli/handlers/misc.d.ts.map +1 -1
  68. package/dist/cli/handlers/misc.js +12 -1
  69. package/dist/cli/handlers/pr-env.js +2 -2
  70. package/dist/cli/handlers/pr.d.ts +15 -1
  71. package/dist/cli/handlers/pr.d.ts.map +1 -1
  72. package/dist/cli/handlers/pr.js +143 -39
  73. package/dist/cli/handlers/query.d.ts +7 -2
  74. package/dist/cli/handlers/query.d.ts.map +1 -1
  75. package/dist/cli/handlers/query.js +16 -4
  76. package/dist/cli/handlers/release.d.ts.map +1 -1
  77. package/dist/cli/handlers/release.js +6 -3
  78. package/dist/cli/handlers/search.d.ts +2 -4
  79. package/dist/cli/handlers/search.d.ts.map +1 -1
  80. package/dist/cli/handlers/search.js +13 -39
  81. package/dist/cli/main.d.ts.map +1 -1
  82. package/dist/cli/main.js +65 -14
  83. package/dist/cli/parse-args.d.ts.map +1 -1
  84. package/dist/cli/parse-args.js +36 -2
  85. package/dist/cli/registry.d.ts +14 -4
  86. package/dist/cli/registry.d.ts.map +1 -1
  87. package/dist/components/builders.d.ts +5 -1
  88. package/dist/components/builders.d.ts.map +1 -1
  89. package/dist/components/builders.js +5 -0
  90. package/dist/components/capability-plugin-loader.d.ts.map +1 -1
  91. package/dist/components/capability-plugin-loader.js +16 -1
  92. package/dist/components/capability-plugin.d.ts +14 -0
  93. package/dist/components/capability-plugin.d.ts.map +1 -1
  94. package/dist/components/pr-hooks.d.ts +21 -1
  95. package/dist/components/pr-hooks.d.ts.map +1 -1
  96. package/dist/components/pr-hooks.js +72 -4
  97. package/dist/components/pr-pipeline.d.ts +45 -10
  98. package/dist/components/pr-pipeline.d.ts.map +1 -1
  99. package/dist/components/pr-pipeline.js +47 -14
  100. package/dist/components/pr-policy.d.ts +36 -0
  101. package/dist/components/pr-policy.d.ts.map +1 -1
  102. package/dist/components/pr-policy.js +36 -0
  103. package/dist/components/starter-plugin.d.ts +1 -0
  104. package/dist/components/starter-plugin.d.ts.map +1 -1
  105. package/dist/components/starter-plugin.js +5 -1
  106. package/dist/components/verbs/index.d.ts +2 -0
  107. package/dist/components/verbs/index.d.ts.map +1 -1
  108. package/dist/components/verbs/index.js +2 -0
  109. package/dist/components/verbs/publish-artifact.d.ts +65 -0
  110. package/dist/components/verbs/publish-artifact.d.ts.map +1 -0
  111. package/dist/components/verbs/publish-artifact.js +74 -0
  112. package/dist/components/verbs/publish-image.d.ts +129 -0
  113. package/dist/components/verbs/publish-image.d.ts.map +1 -0
  114. package/dist/components/verbs/publish-image.js +145 -0
  115. package/dist/config-environments.d.ts +20 -0
  116. package/dist/config-environments.d.ts.map +1 -1
  117. package/dist/config-environments.js +12 -0
  118. package/dist/config.d.ts +9 -1
  119. package/dist/config.d.ts.map +1 -1
  120. package/dist/config.js +6 -2
  121. package/dist/gate-decision.d.ts +11 -2
  122. package/dist/gate-decision.d.ts.map +1 -1
  123. package/dist/gate-decision.js +15 -3
  124. package/dist/graph-ir.d.ts +25 -0
  125. package/dist/graph-ir.d.ts.map +1 -1
  126. package/dist/graph-walk.d.ts +66 -0
  127. package/dist/graph-walk.d.ts.map +1 -0
  128. package/dist/graph-walk.js +70 -0
  129. package/dist/import/parser.d.ts +19 -0
  130. package/dist/import/parser.d.ts.map +1 -1
  131. package/dist/lexicon.d.ts +71 -6
  132. package/dist/lexicon.d.ts.map +1 -1
  133. package/dist/lifecycle/gate-ledger.d.ts +11 -0
  134. package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
  135. package/dist/lifecycle/git.d.ts +2 -5
  136. package/dist/lifecycle/git.d.ts.map +1 -1
  137. package/dist/lifecycle/ledger-read.d.ts +65 -0
  138. package/dist/lifecycle/ledger-read.d.ts.map +1 -0
  139. package/dist/lifecycle/ledger-read.js +160 -0
  140. package/dist/lifecycle/release-workstation.d.ts +7 -0
  141. package/dist/lifecycle/release-workstation.d.ts.map +1 -1
  142. package/dist/lifecycle/release-workstation.js +25 -0
  143. package/dist/lifecycle/run-ledger.d.ts +4 -3
  144. package/dist/lifecycle/run-ledger.d.ts.map +1 -1
  145. package/dist/lifecycle/run-ledger.js +1 -0
  146. package/dist/lint/discover.js +3 -1
  147. package/dist/lint/post-synth.d.ts +127 -1
  148. package/dist/lint/post-synth.d.ts.map +1 -1
  149. package/dist/lint/post-synth.js +84 -2
  150. package/dist/lint/rules/op/index.d.ts +1 -0
  151. package/dist/lint/rules/op/index.d.ts.map +1 -1
  152. package/dist/lint/rules/op/index.js +2 -0
  153. package/dist/lint/rules/op/ops019-workspace-op-target.d.ts +32 -0
  154. package/dist/lint/rules/op/ops019-workspace-op-target.d.ts.map +1 -0
  155. package/dist/lint/rules/op/ops019-workspace-op-target.js +63 -0
  156. package/dist/op/activities/activity-contracts.d.ts +5 -2
  157. package/dist/op/activities/activity-contracts.d.ts.map +1 -1
  158. package/dist/op/activities/activity-contracts.js +5 -2
  159. package/dist/op/activities/index.d.ts +2 -2
  160. package/dist/op/activities/index.d.ts.map +1 -1
  161. package/dist/op/activities/index.js +1 -1
  162. package/dist/op/activities/review-agent.d.ts +90 -4
  163. package/dist/op/activities/review-agent.d.ts.map +1 -1
  164. package/dist/op/activities/review-agent.js +217 -19
  165. package/dist/op/activities/work-evidence.d.ts +8 -1
  166. package/dist/op/activities/work-evidence.d.ts.map +1 -1
  167. package/dist/op/activities/work-evidence.js +1 -0
  168. package/dist/op/builders.d.ts +9 -5
  169. package/dist/op/builders.d.ts.map +1 -1
  170. package/dist/op/builders.js +9 -5
  171. package/dist/op/composites/apply-op.d.ts +29 -2
  172. package/dist/op/composites/apply-op.d.ts.map +1 -1
  173. package/dist/op/composites/apply-op.js +20 -1
  174. package/dist/op/gate-approval.d.ts +11 -5
  175. package/dist/op/gate-approval.d.ts.map +1 -1
  176. package/dist/op/gate-approval.js +11 -6
  177. package/dist/op/gate-quorum.d.ts +100 -3
  178. package/dist/op/gate-quorum.d.ts.map +1 -1
  179. package/dist/op/gate-quorum.js +108 -6
  180. package/dist/op/gate-review.d.ts +9 -0
  181. package/dist/op/gate-review.d.ts.map +1 -1
  182. package/dist/op/gate-review.js +13 -0
  183. package/dist/op/gate.d.ts +44 -3
  184. package/dist/op/gate.d.ts.map +1 -1
  185. package/dist/op/gate.js +25 -4
  186. package/dist/op/index.d.ts +3 -3
  187. package/dist/op/index.d.ts.map +1 -1
  188. package/dist/op/index.js +1 -1
  189. package/dist/op/local-executor.d.ts +38 -3
  190. package/dist/op/local-executor.d.ts.map +1 -1
  191. package/dist/op/local-executor.js +48 -6
  192. package/dist/op/op-waves-run.d.ts +26 -1
  193. package/dist/op/op-waves-run.d.ts.map +1 -1
  194. package/dist/op/op-waves-run.js +259 -13
  195. package/dist/op/op-waves.d.ts +72 -5
  196. package/dist/op/op-waves.d.ts.map +1 -1
  197. package/dist/op/op-waves.js +110 -15
  198. package/dist/op/runtime.d.ts +11 -0
  199. package/dist/op/runtime.d.ts.map +1 -1
  200. package/dist/op/schedule-overdue.d.ts +16 -0
  201. package/dist/op/schedule-overdue.d.ts.map +1 -1
  202. package/dist/op/schedule-overdue.js +36 -0
  203. package/dist/op/stage-hooks.d.ts +9 -2
  204. package/dist/op/stage-hooks.d.ts.map +1 -1
  205. package/dist/op/stage-hooks.js +7 -5
  206. package/dist/op/workspace-run-env.d.ts +22 -0
  207. package/dist/op/workspace-run-env.d.ts.map +1 -0
  208. package/dist/op/workspace-run-env.js +21 -0
  209. package/dist/pr-forge.d.ts +24 -0
  210. package/dist/pr-forge.d.ts.map +1 -1
  211. package/dist/pr-forge.js +47 -0
  212. package/dist/pr-post.d.ts +42 -0
  213. package/dist/pr-post.d.ts.map +1 -1
  214. package/dist/pr-post.js +67 -1
  215. package/dist/read-filter.d.ts +65 -0
  216. package/dist/read-filter.d.ts.map +1 -0
  217. package/dist/read-filter.js +179 -0
  218. package/dist/run-event.d.ts +1 -1
  219. package/dist/run-event.d.ts.map +1 -1
  220. package/dist/terraform/carve.d.ts +24 -3
  221. package/dist/terraform/carve.d.ts.map +1 -1
  222. package/dist/terraform/carve.js +32 -14
  223. package/dist/terraform/cuts.d.ts +97 -0
  224. package/dist/terraform/cuts.d.ts.map +1 -0
  225. package/dist/terraform/cuts.js +138 -0
  226. package/dist/terraform/folds.d.ts +26 -0
  227. package/dist/terraform/folds.d.ts.map +1 -0
  228. package/dist/terraform/folds.js +38 -0
  229. package/dist/terraform/graph.d.ts.map +1 -1
  230. package/dist/terraform/graph.js +10 -0
  231. package/dist/terraform/reach.d.ts +140 -0
  232. package/dist/terraform/reach.d.ts.map +1 -0
  233. package/dist/terraform/reach.js +170 -0
  234. package/dist/terraform/score.d.ts +14 -0
  235. package/dist/terraform/score.d.ts.map +1 -1
  236. package/dist/terraform/score.js +14 -31
  237. package/dist/terraform/state.d.ts.map +1 -1
  238. package/dist/terraform/state.js +4 -2
  239. package/dist/terraform/types.d.ts +8 -0
  240. package/dist/terraform/types.d.ts.map +1 -1
  241. package/dist/wave-blocked.d.ts +10 -1
  242. package/dist/wave-blocked.d.ts.map +1 -1
  243. package/dist/wave-blocked.js +31 -3
  244. package/dist/wave-runtime.mjs +263 -254
  245. package/dist/workspace/check.schema.json +11 -2
  246. package/dist/workspace/checks/ci-branch.d.ts +44 -0
  247. package/dist/workspace/checks/ci-branch.d.ts.map +1 -0
  248. package/dist/workspace/checks/ci-branch.js +133 -0
  249. package/dist/workspace/checks/links.d.ts +3 -0
  250. package/dist/workspace/checks/links.d.ts.map +1 -1
  251. package/dist/workspace/checks/links.js +12 -1
  252. package/dist/workspace/checks/org.d.ts +48 -0
  253. package/dist/workspace/checks/org.d.ts.map +1 -0
  254. package/dist/workspace/checks/org.js +156 -0
  255. package/dist/workspace/checks.d.ts +11 -1
  256. package/dist/workspace/checks.d.ts.map +1 -1
  257. package/dist/workspace/checks.js +59 -7
  258. package/dist/workspace/ci-branches.d.ts +16 -0
  259. package/dist/workspace/ci-branches.d.ts.map +1 -1
  260. package/dist/workspace/ci-branches.js +27 -0
  261. package/dist/workspace/ci-green-cli.js +7 -7
  262. package/dist/workspace/ci-green-workflow.d.ts +1 -1
  263. package/dist/workspace/ci-green-workflow.d.ts.map +1 -1
  264. package/dist/workspace/ci-green-workflow.js +13 -8
  265. package/dist/workspace/ci-green.d.ts +14 -0
  266. package/dist/workspace/ci-green.d.ts.map +1 -1
  267. package/dist/workspace/ci-green.js +44 -11
  268. package/dist/workspace/ci-run.d.ts +9 -1
  269. package/dist/workspace/ci-run.d.ts.map +1 -1
  270. package/dist/workspace/ci-run.js +67 -6
  271. package/dist/workspace/ci-serve.d.ts +9 -0
  272. package/dist/workspace/ci-serve.d.ts.map +1 -1
  273. package/dist/workspace/ci-serve.js +114 -76
  274. package/dist/workspace/compose-graph.d.ts +14 -0
  275. package/dist/workspace/compose-graph.d.ts.map +1 -1
  276. package/dist/workspace/composites.d.ts +4 -1
  277. package/dist/workspace/composites.d.ts.map +1 -1
  278. package/dist/workspace/composites.js +5 -2
  279. package/dist/workspace/composites.schema.json +22 -0
  280. package/dist/workspace/conformance/__writer_fixture__/work/work.schema.json +105 -1
  281. package/dist/workspace/cross-root-lint.d.ts +56 -0
  282. package/dist/workspace/cross-root-lint.d.ts.map +1 -0
  283. package/dist/workspace/cross-root-lint.js +111 -0
  284. package/dist/workspace/dbt-models-reader.d.ts +44 -0
  285. package/dist/workspace/dbt-models-reader.d.ts.map +1 -0
  286. package/dist/workspace/dbt-models-reader.js +356 -0
  287. package/dist/workspace/dbt-project-common.d.ts +40 -0
  288. package/dist/workspace/dbt-project-common.d.ts.map +1 -0
  289. package/dist/workspace/dbt-project-common.js +106 -0
  290. package/dist/workspace/dbt-project-reader.d.ts +4 -3
  291. package/dist/workspace/dbt-project-reader.d.ts.map +1 -1
  292. package/dist/workspace/dbt-project-reader.js +14 -108
  293. package/dist/workspace/decision-rank.d.ts +26 -0
  294. package/dist/workspace/decision-rank.d.ts.map +1 -0
  295. package/dist/workspace/decision-rank.js +16 -0
  296. package/dist/workspace/declaration.d.ts +43 -2
  297. package/dist/workspace/declaration.d.ts.map +1 -1
  298. package/dist/workspace/declaration.js +45 -11
  299. package/dist/workspace/declaration.schema.json +133 -24
  300. package/dist/workspace/environments.d.ts +26 -2
  301. package/dist/workspace/environments.d.ts.map +1 -1
  302. package/dist/workspace/environments.js +26 -2
  303. package/dist/workspace/flyway-dir.d.ts +39 -0
  304. package/dist/workspace/flyway-dir.d.ts.map +1 -0
  305. package/dist/workspace/flyway-dir.js +104 -0
  306. package/dist/workspace/flyway-layout.d.ts +96 -0
  307. package/dist/workspace/flyway-layout.d.ts.map +1 -0
  308. package/dist/workspace/flyway-layout.js +308 -0
  309. package/dist/workspace/graph-cli.d.ts.map +1 -1
  310. package/dist/workspace/graph-cli.js +26 -8
  311. package/dist/workspace/graph.schema.json +34 -0
  312. package/dist/workspace/intent.d.ts +2 -3
  313. package/dist/workspace/intent.d.ts.map +1 -1
  314. package/dist/workspace/intent.js +5 -9
  315. package/dist/workspace/kind-link-readers.d.ts +59 -2
  316. package/dist/workspace/kind-link-readers.d.ts.map +1 -1
  317. package/dist/workspace/kind-link-readers.js +17 -1
  318. package/dist/workspace/kinds.d.ts +66 -2
  319. package/dist/workspace/kinds.d.ts.map +1 -1
  320. package/dist/workspace/kinds.js +98 -4
  321. package/dist/workspace/ledger.schema.json +158 -0
  322. package/dist/workspace/lexicon-outputs.d.ts +20 -1
  323. package/dist/workspace/lexicon-outputs.d.ts.map +1 -1
  324. package/dist/workspace/lexicon-outputs.js +102 -10
  325. package/dist/workspace/lineage-check.d.ts +3 -0
  326. package/dist/workspace/lineage-check.d.ts.map +1 -1
  327. package/dist/workspace/lineage-check.js +23 -4
  328. package/dist/workspace/links.d.ts +8 -1
  329. package/dist/workspace/links.d.ts.map +1 -1
  330. package/dist/workspace/links.js +25 -1
  331. package/dist/workspace/ls.d.ts +8 -0
  332. package/dist/workspace/ls.d.ts.map +1 -1
  333. package/dist/workspace/ls.js +7 -1
  334. package/dist/workspace/ls.schema.json +7 -0
  335. package/dist/workspace/member-commands.d.ts.map +1 -1
  336. package/dist/workspace/member-commands.js +54 -5
  337. package/dist/workspace/migrate-links.d.ts +45 -0
  338. package/dist/workspace/migrate-links.d.ts.map +1 -0
  339. package/dist/workspace/migrate-links.js +100 -0
  340. package/dist/workspace/migration-dirs.d.ts +74 -0
  341. package/dist/workspace/migration-dirs.d.ts.map +1 -0
  342. package/dist/workspace/migration-dirs.js +254 -0
  343. package/dist/workspace/reason-codes.d.ts +8 -0
  344. package/dist/workspace/reason-codes.d.ts.map +1 -1
  345. package/dist/workspace/reason-codes.js +11 -0
  346. package/dist/workspace/records-cli.d.ts +11 -0
  347. package/dist/workspace/records-cli.d.ts.map +1 -1
  348. package/dist/workspace/records-cli.js +57 -5
  349. package/dist/workspace/records.schema.json +5 -0
  350. package/dist/workspace/release-candidates.d.ts +2 -0
  351. package/dist/workspace/release-candidates.d.ts.map +1 -1
  352. package/dist/workspace/release-candidates.js +5 -2
  353. package/dist/workspace/release-train.d.ts +53 -0
  354. package/dist/workspace/release-train.d.ts.map +1 -0
  355. package/dist/workspace/release-train.js +134 -0
  356. package/dist/workspace/release-workflow.d.ts.map +1 -1
  357. package/dist/workspace/release-workflow.js +4 -3
  358. package/dist/workspace/repo-ref.d.ts +45 -0
  359. package/dist/workspace/repo-ref.d.ts.map +1 -0
  360. package/dist/workspace/repo-ref.js +114 -0
  361. package/dist/workspace/run-event.schema.json +2 -2
  362. package/dist/workspace/runs-cli.d.ts +9 -0
  363. package/dist/workspace/runs-cli.d.ts.map +1 -1
  364. package/dist/workspace/runs-cli.js +48 -3
  365. package/dist/workspace/runs.schema.json +7 -0
  366. package/dist/workspace/search-contract.d.ts +1 -1
  367. package/dist/workspace/search-contract.d.ts.map +1 -1
  368. package/dist/workspace/status-decisions.d.ts +37 -0
  369. package/dist/workspace/status-decisions.d.ts.map +1 -0
  370. package/dist/workspace/status-decisions.js +147 -0
  371. package/dist/workspace/status-gates.d.ts +9 -0
  372. package/dist/workspace/status-gates.d.ts.map +1 -1
  373. package/dist/workspace/status.d.ts +4 -0
  374. package/dist/workspace/status.d.ts.map +1 -1
  375. package/dist/workspace/status.js +14 -2
  376. package/dist/workspace/status.schema.json +6 -0
  377. package/dist/workspace/work-cli.d.ts.map +1 -1
  378. package/dist/workspace/work-cli.js +5 -3
  379. package/dist/workspace/work-evidence-ops.d.ts +83 -0
  380. package/dist/workspace/work-evidence-ops.d.ts.map +1 -0
  381. package/dist/workspace/work-evidence-ops.js +169 -0
  382. package/dist/workspace/work-evidence.d.ts +12 -2
  383. package/dist/workspace/work-evidence.d.ts.map +1 -1
  384. package/dist/workspace/work-evidence.js +21 -3
  385. package/dist/workspace/work-evidence.schema.json +49 -2
  386. package/dist/workspace/workspace-gates.d.ts +110 -0
  387. package/dist/workspace/workspace-gates.d.ts.map +1 -0
  388. package/dist/workspace/workspace-gates.js +140 -0
  389. package/dist/workspace/workspace-kinds.schema.json +58 -3
  390. package/dist/workspace/workspace-ledger.d.ts +76 -0
  391. package/dist/workspace/workspace-ledger.d.ts.map +1 -0
  392. package/dist/workspace/workspace-ledger.js +91 -0
  393. package/dist/workspace/workspace-run.d.ts +112 -0
  394. package/dist/workspace/workspace-run.d.ts.map +1 -0
  395. package/dist/workspace/workspace-run.js +432 -0
  396. package/package.json +1 -1
  397. package/src/__golden__/wave-loop/op-by-apply-after-fails.json +10 -0
  398. package/src/__golden__/wave-loop/op-by-apply-hold.json +10 -0
  399. package/src/__golden__/wave-loop/op-by-apply-ignored.json +10 -0
  400. package/src/__golden__/wave-loop/op-by-apply-pass.json +10 -0
  401. package/src/__golden__/wave-loop/op-by-apply-skip.json +10 -0
  402. package/src/__golden__/wave-loop/op-cost-member-clash.json +6 -0
  403. package/src/__golden__/wave-loop/op-cost-member.json +13 -0
  404. package/src/__golden__/wave-loop/op-denied-source.json +16 -0
  405. package/src/__golden__/wave-loop/op-denied.json +16 -0
  406. package/src/__golden__/wave-loop/op-discover-rest-short.json +6 -0
  407. package/src/__golden__/wave-loop/op-discover-rest-stops.json +13 -0
  408. package/src/__golden__/wave-loop/op-discover-rest.json +26 -0
  409. package/src/__golden__/wave-loop/op-discover-wide.json +26 -0
  410. package/src/__golden__/wave-loop/op-held-on-again.json +16 -0
  411. package/src/__golden__/wave-loop/op-held-on-before-apply.json +16 -0
  412. package/src/__golden__/wave-loop/op-held-on.json +16 -0
  413. package/src/__golden__/wave-loop/op-hooks-apply-fails.json +13 -0
  414. package/src/__golden__/wave-loop/op-hooks-fail-after-apply.json +13 -0
  415. package/src/__golden__/wave-loop/op-hooks-fail-before-apply.json +13 -0
  416. package/src/__golden__/wave-loop/op-hooks-fail-before-plan.json +13 -0
  417. package/src/__golden__/wave-loop/op-hooks-held.json +13 -0
  418. package/src/__golden__/wave-loop/op-hooks-hold-before-apply.json +13 -0
  419. package/src/__golden__/wave-loop/op-hooks-pass.json +13 -0
  420. package/src/__golden__/wave-loop/op-hooks-refused-at-base.json +13 -0
  421. package/src/__golden__/wave-loop/op-hooks-share.json +33 -0
  422. package/src/__golden__/wave-loop/op-outcome-held.json +10 -0
  423. package/src/__golden__/wave-loop/op-outcome-replan-approved.json +10 -0
  424. package/src/__golden__/wave-loop/op-outcome-replan-forever.json +10 -0
  425. package/src/__golden__/wave-loop/op-outcome-replan.json +10 -0
  426. package/src/__golden__/wave-loop/op-outcome-stood-down.json +10 -0
  427. package/src/__golden__/wave-loop/op-outcome-unreadable.json +10 -0
  428. package/src/__golden__/wave-loop/op-overridden.json +16 -0
  429. package/src/__golden__/wave-loop/op-per-run.json +20 -0
  430. package/src/__golden__/wave-loop/op-point.json +13 -0
  431. package/src/__golden__/wave-loop/op-pr-review.json +10 -0
  432. package/src/__golden__/wave-loop/op-sealed.json +10 -0
  433. package/src/__golden__/wave-loop/op-spend-change-only.json +10 -0
  434. package/src/__golden__/wave-loop/op-spend.json +10 -0
  435. package/src/__golden__/wave-loop/op-wave-commands.json +55 -0
  436. package/src/__golden__/wave-loop/op-wide-refused.json +26 -0
  437. package/src/__golden__/wave-loop/op-wide-waiting.json +29 -0
  438. package/src/__golden__/wave-loop/op-wide.json +39 -0
  439. package/src/action-pins.test.ts +78 -0
  440. package/src/action-pins.ts +92 -0
  441. package/src/cli/commands/carve-score-once.test.ts +99 -0
  442. package/src/cli/commands/carve.ts +37 -6
  443. package/src/cli/commands/check-lexicon.test.ts +2 -2
  444. package/src/cli/commands/import-report.ts +71 -0
  445. package/src/cli/commands/import.ts +33 -3
  446. package/src/cli/commands/migrate-dialect.test.ts +145 -0
  447. package/src/cli/commands/migrate.ts +132 -11
  448. package/src/cli/handlers/__snapshots__/build-member.test.ts.snap +4 -4
  449. package/src/cli/handlers/approve.ts +23 -2
  450. package/src/cli/handlers/build.ts +7 -1
  451. package/src/cli/handlers/ledger.ts +54 -0
  452. package/src/cli/handlers/migrate.ts +21 -12
  453. package/src/cli/handlers/misc.ts +10 -1
  454. package/src/cli/handlers/pr-env.ts +2 -2
  455. package/src/cli/handlers/pr.ts +138 -36
  456. package/src/cli/handlers/query.ts +16 -4
  457. package/src/cli/handlers/release.ts +6 -3
  458. package/src/cli/handlers/search.ts +13 -34
  459. package/src/cli/main.test.ts +15 -0
  460. package/src/cli/main.ts +65 -14
  461. package/src/cli/parse-args.ts +27 -2
  462. package/src/cli/registry.ts +14 -4
  463. package/src/components/builders.ts +8 -0
  464. package/src/components/capability-plugin-loader.ts +13 -1
  465. package/src/components/capability-plugin.ts +16 -0
  466. package/src/components/pr-hooks.test.ts +73 -5
  467. package/src/components/pr-hooks.ts +95 -5
  468. package/src/components/pr-pipeline.ts +64 -16
  469. package/src/components/pr-policy.test.ts +64 -1
  470. package/src/components/pr-policy.ts +53 -0
  471. package/src/components/registry.test.ts +1 -1
  472. package/src/components/starter-plugin.ts +6 -0
  473. package/src/components/verbs/index.ts +2 -0
  474. package/src/components/verbs/publish-artifact.test.ts +60 -0
  475. package/src/components/verbs/publish-artifact.ts +122 -0
  476. package/src/components/verbs/publish-image.test.ts +101 -0
  477. package/src/components/verbs/publish-image.ts +265 -0
  478. package/src/config-environments.ts +28 -1
  479. package/src/config.ts +8 -1
  480. package/src/gate-decision-bundle.test.ts +1 -0
  481. package/src/gate-decision-identity.test.ts +9 -0
  482. package/src/gate-decision.ts +26 -3
  483. package/src/graph-ir.ts +27 -0
  484. package/src/graph-walk.test.ts +44 -0
  485. package/src/graph-walk.ts +102 -0
  486. package/src/import/parser.ts +20 -0
  487. package/src/lexicon.ts +74 -6
  488. package/src/lifecycle/gate-ledger.ts +8 -0
  489. package/src/lifecycle/git.ts +2 -2
  490. package/src/lifecycle/ledger-read.test.ts +107 -0
  491. package/src/lifecycle/ledger-read.ts +195 -0
  492. package/src/lifecycle/release-workstation.ts +24 -0
  493. package/src/lifecycle/run-ledger.ts +5 -2
  494. package/src/lint/cross-root.test.ts +122 -0
  495. package/src/lint/discover.ts +3 -1
  496. package/src/lint/post-synth.ts +212 -2
  497. package/src/lint/rules/op/index.ts +2 -0
  498. package/src/lint/rules/op/ops019-workspace-op-target.ts +89 -0
  499. package/src/op/activities/activity-contracts.ts +5 -2
  500. package/src/op/activities/index.ts +2 -2
  501. package/src/op/activities/review-agent.test.ts +221 -4
  502. package/src/op/activities/review-agent.ts +265 -22
  503. package/src/op/activities/work-evidence.ts +9 -1
  504. package/src/op/builders.ts +9 -5
  505. package/src/op/composites/apply-op.test.ts +108 -0
  506. package/src/op/composites/apply-op.ts +37 -2
  507. package/src/op/gate-approval.test.ts +6 -1
  508. package/src/op/gate-approval.ts +12 -6
  509. package/src/op/gate-quorum-at-base.test.ts +211 -0
  510. package/src/op/gate-quorum.ts +156 -8
  511. package/src/op/gate-review.ts +14 -0
  512. package/src/op/gate.ts +67 -8
  513. package/src/op/index.ts +3 -2
  514. package/src/op/local-executor.ts +69 -9
  515. package/src/op/op-waves-depends-on.test.ts +81 -0
  516. package/src/op/op-waves-hook-targets.test.ts +4 -2
  517. package/src/op/op-waves-quorum-product.test.ts +158 -0
  518. package/src/op/op-waves-run.ts +288 -14
  519. package/src/op/op-waves.ts +143 -14
  520. package/src/op/runtime.ts +8 -0
  521. package/src/op/schedule-overdue.ts +33 -0
  522. package/src/op/stage-hooks.ts +13 -5
  523. package/src/op/workspace-run-env.ts +29 -0
  524. package/src/pr-forge-bundle.test.ts +2 -2
  525. package/src/pr-forge.test.ts +47 -0
  526. package/src/pr-forge.ts +68 -0
  527. package/src/pr-post-open.e2e.test.ts +36 -0
  528. package/src/pr-post.test.ts +102 -3
  529. package/src/pr-post.ts +89 -1
  530. package/src/read-filter.test.ts +54 -0
  531. package/src/read-filter.ts +193 -0
  532. package/src/run-event.ts +1 -1
  533. package/src/stage-hooks-bundle.test.ts +1 -0
  534. package/src/terraform/carve.ts +52 -15
  535. package/src/terraform/cuts.test.ts +173 -0
  536. package/src/terraform/cuts.ts +188 -0
  537. package/src/terraform/folds.ts +44 -0
  538. package/src/terraform/graph.ts +9 -0
  539. package/src/terraform/radius.test.ts +90 -0
  540. package/src/terraform/reach.test.ts +146 -0
  541. package/src/terraform/reach.ts +247 -0
  542. package/src/terraform/score.ts +27 -29
  543. package/src/terraform/state.ts +3 -1
  544. package/src/terraform/types.ts +8 -0
  545. package/src/wave-blocked.ts +28 -3
  546. package/src/wave-loop-golden.test.ts +4 -3
  547. package/src/workspace/behold-kinds.test.ts +1 -1
  548. package/src/workspace/check-contract.test.ts +7 -6
  549. package/src/workspace/check.schema.json +11 -2
  550. package/src/workspace/checks/ci-branch.test.ts +128 -0
  551. package/src/workspace/checks/ci-branch.ts +141 -0
  552. package/src/workspace/checks/links.ts +12 -1
  553. package/src/workspace/checks/org.ts +169 -0
  554. package/src/workspace/checks.ts +64 -7
  555. package/src/workspace/ci-branches.ts +31 -0
  556. package/src/workspace/ci-green-branches.test.ts +153 -0
  557. package/src/workspace/ci-green-cli.ts +7 -7
  558. package/src/workspace/ci-green-workflow.test.ts +4 -3
  559. package/src/workspace/ci-green-workflow.ts +13 -9
  560. package/src/workspace/ci-green.ts +49 -12
  561. package/src/workspace/ci-run.test.ts +72 -1
  562. package/src/workspace/ci-run.ts +68 -8
  563. package/src/workspace/ci-serve.test.ts +95 -0
  564. package/src/workspace/ci-serve.ts +106 -65
  565. package/src/workspace/component-environments.test.ts +25 -2
  566. package/src/workspace/compose-graph.ts +9 -2
  567. package/src/workspace/composites.schema.json +22 -0
  568. package/src/workspace/composites.test.ts +39 -8
  569. package/src/workspace/composites.ts +6 -2
  570. package/src/workspace/conformance/__writer_fixture__/work/work.schema.json +105 -1
  571. package/src/workspace/cross-root-lint.test.ts +90 -0
  572. package/src/workspace/cross-root-lint.ts +126 -0
  573. package/src/workspace/dbt-kind.test.ts +3 -2
  574. package/src/workspace/dbt-models-reader.ts +362 -0
  575. package/src/workspace/dbt-models.test.ts +248 -0
  576. package/src/workspace/dbt-project-common.ts +113 -0
  577. package/src/workspace/dbt-project-reader.ts +29 -112
  578. package/src/workspace/decision-rank.ts +40 -0
  579. package/src/workspace/declaration.schema.json +133 -24
  580. package/src/workspace/declaration.ts +84 -15
  581. package/src/workspace/environments.ts +40 -4
  582. package/src/workspace/flyway-dir.ts +113 -0
  583. package/src/workspace/flyway-layout.ts +337 -0
  584. package/src/workspace/graph-cli.ts +25 -10
  585. package/src/workspace/graph-contract.test.ts +4 -2
  586. package/src/workspace/graph.schema.json +34 -0
  587. package/src/workspace/identity.test.ts +14 -2
  588. package/src/workspace/intent.ts +6 -14
  589. package/src/workspace/kind-link-readers.ts +68 -3
  590. package/src/workspace/kinds.test.ts +12 -7
  591. package/src/workspace/kinds.ts +132 -7
  592. package/src/workspace/ledger.schema.json +158 -0
  593. package/src/workspace/lexicon-outputs.ts +132 -13
  594. package/src/workspace/lineage-check.ts +30 -7
  595. package/src/workspace/links.ts +24 -1
  596. package/src/workspace/ls-contract.test.ts +1 -1
  597. package/src/workspace/ls.schema.json +7 -0
  598. package/src/workspace/ls.ts +10 -1
  599. package/src/workspace/member-commands.ts +60 -2
  600. package/src/workspace/member-file-schema.test.ts +124 -0
  601. package/src/workspace/migrate-links.test.ts +99 -0
  602. package/src/workspace/migrate-links.ts +108 -0
  603. package/src/workspace/migration-dirs.test.ts +272 -0
  604. package/src/workspace/migration-dirs.ts +267 -0
  605. package/src/workspace/org-scope.test.ts +238 -0
  606. package/src/workspace/reason-codes.test.ts +6 -1
  607. package/src/workspace/reason-codes.ts +11 -0
  608. package/src/workspace/records-cli.ts +58 -5
  609. package/src/workspace/records.schema.json +5 -0
  610. package/src/workspace/release-candidates.ts +7 -2
  611. package/src/workspace/release-train.ts +157 -0
  612. package/src/workspace/release-workflow.ts +4 -3
  613. package/src/workspace/repo-ref.ts +113 -0
  614. package/src/workspace/run-event.schema.json +2 -2
  615. package/src/workspace/runs-cli.ts +48 -4
  616. package/src/workspace/runs.schema.json +7 -0
  617. package/src/workspace/status-contract.test.ts +46 -1
  618. package/src/workspace/status-decisions.test.ts +100 -0
  619. package/src/workspace/status-decisions.ts +151 -0
  620. package/src/workspace/status-gates.ts +9 -0
  621. package/src/workspace/status.schema.json +6 -0
  622. package/src/workspace/status.ts +17 -3
  623. package/src/workspace/where-filters.test.ts +39 -0
  624. package/src/workspace/work-cli.ts +5 -3
  625. package/src/workspace/work-evidence-ops.test.ts +176 -0
  626. package/src/workspace/work-evidence-ops.ts +189 -0
  627. package/src/workspace/work-evidence.schema.json +49 -2
  628. package/src/workspace/work-evidence.ts +22 -3
  629. package/src/workspace/workspace-gates.ts +200 -0
  630. package/src/workspace/workspace-kinds.schema.json +58 -3
  631. package/src/workspace/workspace-ledger.ts +130 -0
  632. package/src/workspace/workspace-run.test.ts +322 -0
  633. package/src/workspace/workspace-run.ts +461 -0
@@ -340,6 +340,22 @@
340
340
  "wave 1 (net) applies vpc under their overrides, which are now spent"
341
341
  ],
342
342
  "files": {
343
+ ".chant/op-waves/tf-apply/outcomes/outcome-wave-1.json": {
344
+ "version": 1,
345
+ "wave": 1,
346
+ "at": "2026-10-11T00:00:00.000Z",
347
+ "members": {
348
+ "dns": {
349
+ "status": "applied"
350
+ },
351
+ "nat": {
352
+ "status": "applied"
353
+ },
354
+ "vpc": {
355
+ "status": "applied"
356
+ }
357
+ }
358
+ },
343
359
  ".chant/op-waves/tf-apply/wave-1/dns.plan.json": {
344
360
  "planDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222"
345
361
  },
@@ -418,6 +418,26 @@
418
418
  "Nothing in wave 2 or after it ran. Read the plans, then approve: chant approve migrations migrations-wave-2 --plan jcs1-sha256:121fce9fb501cc2872d4239f620d465480edef5fcbe86d290f3b17c017231e8d (with --resume, the approval also starts this job again)"
419
419
  ],
420
420
  "files": {
421
+ ".chant/op-waves/migrations/outcomes/outcome-wave-1.json": {
422
+ "version": 1,
423
+ "wave": 1,
424
+ "at": "2026-10-11T00:00:00.000Z",
425
+ "members": {
426
+ "dev": {
427
+ "status": "applied"
428
+ }
429
+ }
430
+ },
431
+ ".chant/op-waves/migrations/outcomes/outcome-wave-2.json": {
432
+ "version": 1,
433
+ "wave": 2,
434
+ "at": "2026-10-11T00:00:00.000Z",
435
+ "members": {
436
+ "staging": {
437
+ "status": "waiting"
438
+ }
439
+ }
440
+ },
421
441
  ".chant/op-waves/migrations/wave-1/dev.hooks.json": {
422
442
  "version": 1,
423
443
  "opWaves": "migrations",
@@ -402,6 +402,19 @@
402
402
  "wave 1 (prod): the decision point at base cannot be asked (waves.json at bbbbbbbbbbbb: `point.name` is a decision point's name: lower case letters, digits and hyphens, starting with a letter), so nothing in it was planned or applied"
403
403
  ],
404
404
  "files": {
405
+ ".chant/op-waves/tf-apply/outcomes/outcome-wave-1.json": {
406
+ "version": 1,
407
+ "wave": 1,
408
+ "at": "2026-10-11T00:00:00.000Z",
409
+ "members": {
410
+ "db": {
411
+ "status": "failed"
412
+ },
413
+ "net": {
414
+ "status": "failed"
415
+ }
416
+ }
417
+ },
405
418
  ".chant/op-waves/tf-apply/wave-1/db.hooks.json": {
406
419
  "version": 1,
407
420
  "opWaves": "tf-apply",
@@ -330,6 +330,16 @@
330
330
  "Nothing in wave 2 or after it ran. Read the plans, then approve: chant approve migrations migrations-wave-2 --plan jcs1-sha256:121fce9fb501cc2872d4239f620d465480edef5fcbe86d290f3b17c017231e8d (with --resume, the approval also starts this job again)"
331
331
  ],
332
332
  "files": {
333
+ ".chant/op-waves/migrations/outcomes/outcome-wave-2.json": {
334
+ "version": 1,
335
+ "wave": 2,
336
+ "at": "2026-10-11T00:00:00.000Z",
337
+ "members": {
338
+ "staging": {
339
+ "status": "waiting"
340
+ }
341
+ }
342
+ },
333
343
  ".chant/op-waves/migrations/wave-2/staging.hooks.json": {
334
344
  "version": 1,
335
345
  "opWaves": "migrations",
@@ -85,6 +85,16 @@
85
85
  "Nothing in wave 2 or after it ran. Read the plans, then approve: chant approve migrations migrations-wave-2 --plan jcs1-sha256:121fce9fb501cc2872d4239f620d465480edef5fcbe86d290f3b17c017231e8d --sign (with --resume, the approval also starts this job again)"
86
86
  ],
87
87
  "files": {
88
+ ".chant/op-waves/migrations/outcomes/outcome-wave-2.json": {
89
+ "version": 1,
90
+ "wave": 2,
91
+ "at": "2026-10-11T00:00:00.000Z",
92
+ "members": {
93
+ "staging": {
94
+ "status": "waiting"
95
+ }
96
+ }
97
+ },
88
98
  ".chant/op-waves/migrations/wave-2/staging.plan.json": {
89
99
  "planDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
90
100
  "destructive": true
@@ -114,6 +114,16 @@
114
114
  "wave 2 (staging) applies under the approval by alice at 2026-10-10T00:00:00Z, which is now spent"
115
115
  ],
116
116
  "files": {
117
+ ".chant/op-waves/migrations/outcomes/outcome-wave-2.json": {
118
+ "version": 1,
119
+ "wave": 2,
120
+ "at": "2026-10-11T00:00:00.000Z",
121
+ "members": {
122
+ "staging": {
123
+ "status": "applied"
124
+ }
125
+ }
126
+ },
117
127
  ".chant/op-waves/migrations/wave-2/staging.hooks.json": {
118
128
  "version": 1,
119
129
  "opWaves": "migrations",
@@ -278,6 +278,16 @@
278
278
  "wave 2 (staging) could not record that it applies under the approval by alice, so nothing applied: this gate ledger cannot record an applied approval"
279
279
  ],
280
280
  "files": {
281
+ ".chant/op-waves/migrations/outcomes/outcome-wave-2.json": {
282
+ "version": 1,
283
+ "wave": 2,
284
+ "at": "2026-10-11T00:00:00.000Z",
285
+ "members": {
286
+ "staging": {
287
+ "status": "failed"
288
+ }
289
+ }
290
+ },
281
291
  ".chant/op-waves/migrations/wave-2/staging.hooks.json": {
282
292
  "version": 1,
283
293
  "opWaves": "migrations",
@@ -1503,6 +1503,22 @@
1503
1503
  "wave 2 (apps): gate never (read at bbbbbbbbbbbb), digest jcs1-sha256:528ae61c94cd24622aade0c3b2acbebe58dfa1789f13f71de15b9d5d7519f0d3: not-required"
1504
1504
  ],
1505
1505
  "files": {
1506
+ ".chant/op-waves/tf-apply/outcomes/outcome-wave-1.json": {
1507
+ "version": 1,
1508
+ "wave": 1,
1509
+ "at": "2026-10-11T00:00:00.000Z",
1510
+ "members": {
1511
+ "dns": {
1512
+ "status": "waiting"
1513
+ },
1514
+ "nat": {
1515
+ "status": "waiting"
1516
+ },
1517
+ "vpc": {
1518
+ "status": "waiting"
1519
+ }
1520
+ }
1521
+ },
1506
1522
  ".chant/op-waves/tf-apply/wave-1/dns.plan.json": {
1507
1523
  "planDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
1508
1524
  "empty": true
@@ -1810,6 +1826,45 @@
1810
1826
  "outcome": "passed"
1811
1827
  }
1812
1828
  ]
1829
+ },
1830
+ "wide-outcomes/outcome-wave-2-share-1.json": {
1831
+ "version": 1,
1832
+ "wave": 2,
1833
+ "at": "2026-10-11T00:00:00.000Z",
1834
+ "members": {
1835
+ "a1": {
1836
+ "status": "applied"
1837
+ },
1838
+ "a2": {
1839
+ "status": "applied"
1840
+ }
1841
+ }
1842
+ },
1843
+ "wide-outcomes/outcome-wave-2-share-2.json": {
1844
+ "version": 1,
1845
+ "wave": 2,
1846
+ "at": "2026-10-11T00:00:00.000Z",
1847
+ "members": {
1848
+ "a3": {
1849
+ "status": "applied"
1850
+ }
1851
+ }
1852
+ },
1853
+ "wide-outcomes/outcome-wave-2.json": {
1854
+ "version": 1,
1855
+ "wave": 2,
1856
+ "at": "2026-10-11T00:00:00.000Z",
1857
+ "members": {
1858
+ "a1": {
1859
+ "status": "decided"
1860
+ },
1861
+ "a2": {
1862
+ "status": "decided"
1863
+ },
1864
+ "a3": {
1865
+ "status": "decided"
1866
+ }
1867
+ }
1813
1868
  }
1814
1869
  }
1815
1870
  }
@@ -190,6 +190,32 @@
190
190
  "wave 1 (apps) is refused by its policy; nothing applied."
191
191
  ],
192
192
  "files": {
193
+ ".chant/op-waves/tf-apply/outcomes/outcome-wave-1-share-2.json": {
194
+ "version": 1,
195
+ "wave": 1,
196
+ "at": "2026-10-11T00:00:00.000Z",
197
+ "members": {
198
+ "t3": {
199
+ "status": "refused"
200
+ }
201
+ }
202
+ },
203
+ ".chant/op-waves/tf-apply/outcomes/outcome-wave-1.json": {
204
+ "version": 1,
205
+ "wave": 1,
206
+ "at": "2026-10-11T00:00:00.000Z",
207
+ "members": {
208
+ "t1": {
209
+ "status": "refused"
210
+ },
211
+ "t2": {
212
+ "status": "refused"
213
+ },
214
+ "t3": {
215
+ "status": "refused"
216
+ }
217
+ }
218
+ },
193
219
  ".chant/op-waves/tf-apply/wave-1/plans.json": {
194
220
  "runs": [
195
221
  {
@@ -178,6 +178,35 @@
178
178
  "wave 3 (prod) is waiting on migrations-wave-3; nothing applied. chant approve migrations migrations-wave-3 --plan jcs1-sha256:106d25f35ee6bc02e9aa253d0b2633a764396833c82e0c5ec5a4ad83a2a85b4e"
179
179
  ],
180
180
  "files": {
181
+ ".chant/op-waves/migrations/outcomes/outcome-wave-3-share-1.json": {
182
+ "version": 1,
183
+ "wave": 3,
184
+ "at": "2026-10-11T00:00:00.000Z",
185
+ "members": {
186
+ "t1": {
187
+ "status": "waiting"
188
+ },
189
+ "t2": {
190
+ "status": "waiting"
191
+ }
192
+ }
193
+ },
194
+ ".chant/op-waves/migrations/outcomes/outcome-wave-3.json": {
195
+ "version": 1,
196
+ "wave": 3,
197
+ "at": "2026-10-11T00:00:00.000Z",
198
+ "members": {
199
+ "t1": {
200
+ "status": "waiting"
201
+ },
202
+ "t2": {
203
+ "status": "waiting"
204
+ },
205
+ "t3": {
206
+ "status": "waiting"
207
+ }
208
+ }
209
+ },
181
210
  ".chant/op-waves/migrations/wave-3/t1.plan.json": {
182
211
  "planDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111"
183
212
  },
@@ -351,6 +351,45 @@
351
351
  "t2: its plan moved since wave 3 was decided, so it was not applied. decided: sha256:2222222222222222222222222222222222222222222222222222222222222222; planned now: sha256:9999999999999999999999999999999999999999999999999999999999999999"
352
352
  ],
353
353
  "files": {
354
+ ".chant/op-waves/migrations/outcomes/outcome-wave-3-share-1.json": {
355
+ "version": 1,
356
+ "wave": 3,
357
+ "at": "2026-10-11T00:00:00.000Z",
358
+ "members": {
359
+ "t1": {
360
+ "status": "applied"
361
+ },
362
+ "t2": {
363
+ "status": "not-applied"
364
+ }
365
+ }
366
+ },
367
+ ".chant/op-waves/migrations/outcomes/outcome-wave-3-share-2.json": {
368
+ "version": 1,
369
+ "wave": 3,
370
+ "at": "2026-10-11T00:00:00.000Z",
371
+ "members": {
372
+ "t3": {
373
+ "status": "applied"
374
+ }
375
+ }
376
+ },
377
+ ".chant/op-waves/migrations/outcomes/outcome-wave-3.json": {
378
+ "version": 1,
379
+ "wave": 3,
380
+ "at": "2026-10-11T00:00:00.000Z",
381
+ "members": {
382
+ "t1": {
383
+ "status": "decided"
384
+ },
385
+ "t2": {
386
+ "status": "decided"
387
+ },
388
+ "t3": {
389
+ "status": "decided"
390
+ }
391
+ }
392
+ },
354
393
  ".chant/op-waves/migrations/wave-3/t1.hooks.json": {
355
394
  "version": 1,
356
395
  "opWaves": "migrations",
@@ -0,0 +1,61 @@
1
+ /**
2
+ * The GitHub Actions the workflows chant generates use, each pinned by commit
3
+ * SHA (#4403). A tag can move; a SHA cannot. Every generator takes its `uses:`
4
+ * from here, so an update is one change to this table. Each row is the commit
5
+ * the named major tag pointed at, with the release that commit carries;
6
+ * `tagComments` writes that release beside each `uses:` line.
7
+ *
8
+ * Forgejo's actions mirror (code.forgejo.org) carries the same commits. The
9
+ * forgejo lexicon moves `upload-artifact` and `download-artifact` to v3, whose
10
+ * rows are here too: v4 and later refuse to run on a Forgejo runner (#4008).
11
+ *
12
+ * Refresh a row by resolving the major tag to its commit:
13
+ *
14
+ * gh api repos/actions/checkout/commits/v6 --jq .sha
15
+ */
16
+ export interface ActionPin {
17
+ /** The action, with its subpath: `actions/cache/restore`. */
18
+ readonly slug: string;
19
+ /** The major tag the row follows, such as `v4`. */
20
+ readonly major: string;
21
+ readonly sha: string;
22
+ /** The release at that commit, written beside the `uses:` line. */
23
+ readonly tag: string;
24
+ }
25
+ export declare const ACTION_PINS: {
26
+ readonly checkout7: ActionPin;
27
+ readonly checkout6: ActionPin;
28
+ readonly checkout4: ActionPin;
29
+ readonly setupNode6: ActionPin;
30
+ readonly setupNode4: ActionPin;
31
+ readonly setupNode7: ActionPin;
32
+ readonly cache6: ActionPin;
33
+ readonly uploadArtifact7: ActionPin;
34
+ readonly downloadArtifact8: ActionPin;
35
+ readonly setupGo7: ActionPin;
36
+ readonly setupPython7: ActionPin;
37
+ readonly setupBun2: ActionPin;
38
+ readonly golangciLint9: ActionPin;
39
+ readonly dockerLogin4: ActionPin;
40
+ readonly dockerSetupBuildx4: ActionPin;
41
+ readonly dockerMetadata6: ActionPin;
42
+ readonly dockerBuildPush7: ActionPin;
43
+ readonly createGithubAppToken2: ActionPin;
44
+ readonly cacheRestore4: ActionPin;
45
+ readonly cacheSave4: ActionPin;
46
+ readonly uploadArtifact4: ActionPin;
47
+ readonly uploadArtifact3: ActionPin;
48
+ readonly downloadArtifact4: ActionPin;
49
+ readonly downloadArtifact3: ActionPin;
50
+ };
51
+ /** The `uses:` value for a pin: `actions/checkout@<sha>`. */
52
+ export declare const usesRef: (p: ActionPin) => string;
53
+ /** Write each pinned `uses:` line's release beside it, as `# v4.4.0`. A line that has a comment, or a SHA not in the table, is left alone. */
54
+ export declare function tagComments(yaml: string): string;
55
+ /** Every `uses:` in a workflow that names an action by a tag or branch, not a 40-character commit SHA. Local actions and docker images are not actions on a forge. */
56
+ export declare function unpinnedActions(yaml: string): string[];
57
+ /** The row for the same action as the one `sha` pins, at `major`. The forgejo lexicon uses it to move a pinned `upload-artifact` v4 to v3. */
58
+ export declare function pinAtMajor(sha: string, major: string): ActionPin | undefined;
59
+ /** The major of the row `sha` belongs to, as a number, when it is in the table. */
60
+ export declare function pinMajor(sha: string): number | undefined;
61
+ //# sourceMappingURL=action-pins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-pins.d.ts","sourceRoot":"","sources":["../src/action-pins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,SAAS;IACxB,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAID,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;CAyBsB,CAAC;AAE/C,6DAA6D;AAC7D,eAAO,MAAM,OAAO,MAAO,SAAS,KAAG,MAA8B,CAAC;AAKtE,8IAA8I;AAC9I,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED,sKAAsK;AACtK,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAQtD;AAED,8IAA8I;AAC9I,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAI5E;AAED,mFAAmF;AACnF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGxD"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * The GitHub Actions the workflows chant generates use, each pinned by commit
3
+ * SHA (#4403). A tag can move; a SHA cannot. Every generator takes its `uses:`
4
+ * from here, so an update is one change to this table. Each row is the commit
5
+ * the named major tag pointed at, with the release that commit carries;
6
+ * `tagComments` writes that release beside each `uses:` line.
7
+ *
8
+ * Forgejo's actions mirror (code.forgejo.org) carries the same commits. The
9
+ * forgejo lexicon moves `upload-artifact` and `download-artifact` to v3, whose
10
+ * rows are here too: v4 and later refuse to run on a Forgejo runner (#4008).
11
+ *
12
+ * Refresh a row by resolving the major tag to its commit:
13
+ *
14
+ * gh api repos/actions/checkout/commits/v6 --jq .sha
15
+ */
16
+ const pin = (slug, major, sha, tag) => ({ slug, major, sha, tag });
17
+ export const ACTION_PINS = {
18
+ checkout7: pin("actions/checkout", "v7", "3d3c42e5aac5ba805825da76410c181273ba90b1", "v7.0.1"),
19
+ checkout6: pin("actions/checkout", "v6", "d23441a48e516b6c34aea4fa41551a30e30af803", "v6.1.0"),
20
+ checkout4: pin("actions/checkout", "v4", "11d5960a326750d5838078e36cf38b85af677262", "v4.4.0"),
21
+ setupNode6: pin("actions/setup-node", "v6", "249970729cb0ef3589644e2896645e5dc5ba9c38", "v6.5.0"),
22
+ setupNode4: pin("actions/setup-node", "v4", "49933ea5288caeca8642d1e84afbd3f7d6820020", "v4.4.0"),
23
+ setupNode7: pin("actions/setup-node", "v7", "949feb2413d6458794dcd2491c4babbbce0c15c1", "v7.1.0"),
24
+ cache6: pin("actions/cache", "v6", "55cc8345863c7cc4c66a329aec7e433d2d1c52a9", "v6.1.0"),
25
+ uploadArtifact7: pin("actions/upload-artifact", "v7", "cf430e030ddbb5b0abf93d22962f4752f3646cd9", "v7.0.2"),
26
+ downloadArtifact8: pin("actions/download-artifact", "v8", "9000827ccba6bdab643e8b6fd33ac0654aef8333", "v8.0.2"),
27
+ setupGo7: pin("actions/setup-go", "v7", "b7ad1dad31e06c5925ef5d2fc7ad053ef454303e", "v7.0.0"),
28
+ setupPython7: pin("actions/setup-python", "v7", "6d4fd22b20465ccc0f7354476588e8df7c9ca0e0", "v7.1.0"),
29
+ setupBun2: pin("oven-sh/setup-bun", "v2", "0c5077e51419868618aeaa5fe8019c62421857d6", "v2.2.0"),
30
+ golangciLint9: pin("golangci/golangci-lint-action", "v9", "ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a", "v9.3.0"),
31
+ dockerLogin4: pin("docker/login-action", "v4", "81c6f93d4bc991e510b342a00b419b3bb4efc5c6", "v4.7.0"),
32
+ dockerSetupBuildx4: pin("docker/setup-buildx-action", "v4", "f87e5991a6d7451dcb8d9637bfbc97413f497069", "v4.4.1"),
33
+ dockerMetadata6: pin("docker/metadata-action", "v6", "dc802804100637a589fabce1cb79ff13a1411302", "v6.2.0"),
34
+ dockerBuildPush7: pin("docker/build-push-action", "v7", "c3c9e263c25d99ce0380d002d59b67737d91b0dc", "v7.4.0"),
35
+ createGithubAppToken2: pin("actions/create-github-app-token", "v2", "fee1f7d63c2ff003460e3d139729b119787bc349", "v2.2.2"),
36
+ cacheRestore4: pin("actions/cache/restore", "v4", "0057852bfaa89a56745cba8c7296529d2fc39830", "v4.3.0"),
37
+ cacheSave4: pin("actions/cache/save", "v4", "0057852bfaa89a56745cba8c7296529d2fc39830", "v4.3.0"),
38
+ uploadArtifact4: pin("actions/upload-artifact", "v4", "ea165f8d65b6e75b540449e92b4886f43607fa02", "v4.6.2"),
39
+ uploadArtifact3: pin("actions/upload-artifact", "v3", "ff15f0306b3f739f7b6fd43fb5d26cd321bd4de5", "v3.2.1"),
40
+ downloadArtifact4: pin("actions/download-artifact", "v4", "d3f86a106a0bac45b974a628896c90dbdf5c8093", "v4.3.0"),
41
+ downloadArtifact3: pin("actions/download-artifact", "v3", "9bc31d5ccc31df68ecc42ccf4149144866c47d8a", "v3.0.2"),
42
+ };
43
+ /** The `uses:` value for a pin: `actions/checkout@<sha>`. */
44
+ export const usesRef = (p) => `${p.slug}@${p.sha}`;
45
+ const TAG_BY_SHA = new Map();
46
+ for (const p of Object.values(ACTION_PINS))
47
+ TAG_BY_SHA.set(p.sha, p.tag);
48
+ /** Write each pinned `uses:` line's release beside it, as `# v4.4.0`. A line that has a comment, or a SHA not in the table, is left alone. */
49
+ export function tagComments(yaml) {
50
+ return yaml.replace(/^(\s*(?:- )?uses: *["']?[^\s"'#]+@([0-9a-f]{40})["']?)[ \t]*$/gm, (line, head, sha) => {
51
+ const tag = TAG_BY_SHA.get(sha);
52
+ return tag ? `${head} # ${tag}` : line;
53
+ });
54
+ }
55
+ /** Every `uses:` in a workflow that names an action by a tag or branch, not a 40-character commit SHA. Local actions and docker images are not actions on a forge. */
56
+ export function unpinnedActions(yaml) {
57
+ const out = [];
58
+ for (const m of yaml.matchAll(/^\s*(?:- )?uses: *["']?([^\s"'#]+)["']?/gm)) {
59
+ const ref = m[1];
60
+ if (ref.startsWith("./") || ref.startsWith("../") || ref.startsWith("docker://"))
61
+ continue;
62
+ if (!/@[0-9a-f]{40}$/.test(ref))
63
+ out.push(ref);
64
+ }
65
+ return out;
66
+ }
67
+ /** The row for the same action as the one `sha` pins, at `major`. The forgejo lexicon uses it to move a pinned `upload-artifact` v4 to v3. */
68
+ export function pinAtMajor(sha, major) {
69
+ const rows = Object.values(ACTION_PINS);
70
+ const from = rows.find((p) => p.sha === sha);
71
+ return from ? rows.find((p) => p.slug === from.slug && p.major === major) : undefined;
72
+ }
73
+ /** The major of the row `sha` belongs to, as a number, when it is in the table. */
74
+ export function pinMajor(sha) {
75
+ const row = Object.values(ACTION_PINS).find((p) => p.sha === sha);
76
+ return row ? Number(row.major.slice(1)) : undefined;
77
+ }
@@ -74,6 +74,9 @@ export declare function carveAdvise(opts: CarveAdviseOptions): Promise<CarveAdvi
74
74
  * additive and ignorable: the top-level `source` discriminator, per-resource
75
75
  * `notes` and `members`, and two more `bridge` values in a list that was
76
76
  * already declared open-ended.
77
+ *
78
+ * Per-resource `radius` (#2326) is additive the same way: a new field beside
79
+ * `score`, not a term inside it, so the score and its penalties are unchanged.
77
80
  */
78
81
  export declare const CARVE_REPORT_VERSION = 1;
79
82
  /** One ranked resource in the JSON report: its score, plus the boundary its carve would cut. */
@@ -1 +1 @@
1
- {"version":3,"file":"carve.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/carve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAAe,KAAK,WAAW,EAAwB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC/G,OAAO,EAAkB,KAAK,YAAY,EAAqB,MAAM,uBAAuB,CAAC;AAC7F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,KAAK,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAID,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAatF;AA4CD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,gGAAgG;AAChG,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,YAAY,EAAE,CAAC;QAAC,QAAQ,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;CAClE;AAED,yGAAyG;AACzG,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAED,+CAA+C;AAC/C,wBAAgB,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAiBpE;AAeD,6CAA6C;AAC7C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAqCnE"}
1
+ {"version":3,"file":"carve.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/carve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAAe,KAAK,WAAW,EAAwB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC/G,OAAO,EAAqD,KAAK,YAAY,EAAqB,MAAM,uBAAuB,CAAC;AAChI,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,KAAK,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAID,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAatF;AA4CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,gGAAgG;AAChG,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,YAAY,EAAE,CAAC;QAAC,QAAQ,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;CAClE;AAED,yGAAyG;AACzG,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAED,+CAA+C;AAC/C,wBAAgB,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAkBpE;AAiBD,6CAA6C;AAC7C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CA+CnE"}
@@ -18,7 +18,7 @@ import { adviseCloudAssembly, CDK_DIALECT } from "../../cdk/advise.js";
18
18
  import { isCloudAssembly } from "../../cdk/assembly.js";
19
19
  import { parseTerraformDir, Hcl2JsonNotInstalled } from "../../terraform/parse.js";
20
20
  import { scoreEstate } from "../../terraform/score.js";
21
- import { boundaryReport } from "../../terraform/carve.js";
21
+ import { boundaryIndex, boundaryReport } from "../../terraform/carve.js";
22
22
  const BAND_ORDER = ["clean leaf", "carvable w/ edits", "leave in Terraform"];
23
23
  export async function carveAdvise(opts) {
24
24
  if (!opts.from) {
@@ -100,6 +100,9 @@ async function adviseTerraform(opts) {
100
100
  * additive and ignorable: the top-level `source` discriminator, per-resource
101
101
  * `notes` and `members`, and two more `bridge` values in a list that was
102
102
  * already declared open-ended.
103
+ *
104
+ * Per-resource `radius` (#2326) is additive the same way: a new field beside
105
+ * `score`, not a term inside it, so the score and its penalties are unchanged.
103
106
  */
104
107
  export const CARVE_REPORT_VERSION = 1;
105
108
  /** Build the `--json` / `--report` payload. */
@@ -108,6 +111,7 @@ export function carveJson(result) {
108
111
  const counts = Object.fromEntries(BAND_ORDER.map((b) => [b, results.filter((r) => r.band === b).length]));
109
112
  const source = result.source ?? "terraform";
110
113
  const dialect = source === "cdk" ? CDK_DIALECT : "terraform";
114
+ const index = result.graph ? boundaryIndex(result.graph) : undefined;
111
115
  return {
112
116
  version: CARVE_REPORT_VERSION,
113
117
  from: result.from,
@@ -116,14 +120,15 @@ export function carveJson(result) {
116
120
  count: results.length,
117
121
  bands: counts,
118
122
  ...(result.diagnostics?.length ? { diagnostics: result.diagnostics } : {}),
119
- resources: results.map((r) => withBoundary(r, result.graph, dialect, result.scoreOptions)),
123
+ resources: results.map((r) => withBoundary(r, result.graph, dialect, result.scoreOptions, index)),
120
124
  };
121
125
  }
122
126
  /** A scored resource plus its carve boundary, when the graph is at hand (#1636). */
123
- function withBoundary(r, graph, dialect, score) {
127
+ function withBoundary(r, graph, dialect, score, index) {
124
128
  if (!graph)
125
129
  return r;
126
- const report = boundaryReport(graph, r.address, { dialect, score });
130
+ // The ranking already scored this resource; the report reads it back rather than rescoring the estate (#4391).
131
+ const report = boundaryReport(graph, r.address, { dialect, score, peelability: r, index });
127
132
  if (!report)
128
133
  return r;
129
134
  return { ...r, boundary: { inbound: report.inbound, outbound: report.outbound } };
@@ -145,6 +150,8 @@ export function formatCarveReport(result) {
145
150
  for (const note of result.diagnostics ?? [])
146
151
  lines.push(` ! ${note}`);
147
152
  lines.push("");
153
+ const cells = new Map(results.map((r) => [r.address, radiusCell(r)]));
154
+ const cellWidth = Math.max(...[...cells.values()].map((c) => c.length));
148
155
  for (const band of BAND_ORDER) {
149
156
  const inBand = results.filter((r) => r.band === band);
150
157
  if (inBand.length === 0)
@@ -152,16 +159,38 @@ export function formatCarveReport(result) {
152
159
  lines.push(`${bandLabel(band, cdk)} (${inBand.length})`);
153
160
  for (const r of inBand) {
154
161
  const target = r.mapsTo ? ` -> ${r.mapsTo}` : "";
155
- lines.push(` ${String(r.score).padStart(3)} ${r.address}${target}`);
156
- lines.push(` ${reasons(r, cdk)}`);
162
+ const cell = cellWidth > 0 ? `${cells.get(r.address).padEnd(cellWidth)} ` : "";
163
+ const indent = " ".repeat(7 + (cellWidth > 0 ? cellWidth + 2 : 0));
164
+ lines.push(` ${String(r.score).padStart(3)} ${cell}${r.address}${target}`);
165
+ lines.push(`${indent}${reasons(r, cdk)}`);
157
166
  for (const note of r.notes ?? [])
158
- lines.push(` ${note}`);
167
+ lines.push(`${indent}${note}`);
159
168
  }
160
169
  lines.push("");
161
170
  }
162
171
  lines.push(`Bands: 80-100 carve now | 50-79 carve with boundary edits | 0-49 leave in ${cdk ? "CDK" : "Terraform"}`);
172
+ if (cellWidth > 0) {
173
+ lines.push("Radius: resources+outputs that depend on it at any depth, dN the farthest hop; - none; " +
174
+ (cdk ? "xN across a stack boundary." : "? a module or unresolved count/for_each hides how many."));
175
+ }
163
176
  return lines.join("\n").trimEnd();
164
177
  }
178
+ /**
179
+ * The radius column (#2326): `3+1 d2` is three resources and one output that
180
+ * depend on the node, the farthest two hops away; `-` is nothing; `?` stands in
181
+ * for a count a module or unresolved `count` hides; ` x2` is how many sit
182
+ * across a stack boundary. Empty when the result carries no radius.
183
+ */
184
+ function radiusCell(r) {
185
+ const radius = r.radius;
186
+ if (!radius)
187
+ return "";
188
+ if (radius.depth === 0)
189
+ return "-";
190
+ const n = (v) => (v === "unknown" ? "?" : String(v));
191
+ const cross = radius.crossStack !== undefined && radius.crossStack !== 0 ? ` x${n(radius.crossStack)}` : "";
192
+ return `${n(radius.resources)}+${radius.outputs} d${radius.depth}${cross}`;
193
+ }
165
194
  function bandLabel(band, cdk) {
166
195
  switch (band) {
167
196
  case "clean leaf":
@@ -0,0 +1,26 @@
1
+ /**
2
+ * The review report of `chant import` (#4398): the parser's diagnostics as
3
+ * SARIF (`--report <path>`), a summary on stderr, and the exit code under
4
+ * `--strict`. The shape follows `chant migrate`: a needs-review diagnostic is
5
+ * a `warning`, and `--strict` makes any open `warning` or `error` fail the
6
+ * run. An `info` diagnostic names something not carried that needs no
7
+ * decision, and never fails a run.
8
+ */
9
+ import type { ImportDiagnostic } from "../../import/parser.js";
10
+ import type { LintDiagnostic } from "../../lint/rule.js";
11
+ /** Import diagnostics as lint diagnostics against `file`, the template that was imported. */
12
+ export declare function importDiagnosticsToLint(file: string, diagnostics: readonly ImportDiagnostic[]): LintDiagnostic[];
13
+ /** The SARIF document for a run. */
14
+ export declare function importSarif(file: string, diagnostics: readonly ImportDiagnostic[], version?: string): string;
15
+ /** Write the SARIF report; an unwritable path is returned as a message, not thrown. */
16
+ export declare function writeImportReport(path: string, file: string, diagnostics: readonly ImportDiagnostic[], version?: string): string | undefined;
17
+ /** Diagnostics that are open: everything but `info`. */
18
+ export declare function openDiagnostics(diagnostics: readonly ImportDiagnostic[]): ImportDiagnostic[];
19
+ /**
20
+ * The exit code for a finished import. An `error` always fails (a failed
21
+ * `--validate`); a `warning` fails under `--strict`.
22
+ */
23
+ export declare function importExitCode(diagnostics: readonly ImportDiagnostic[] | undefined, strict: boolean): number;
24
+ /** Counts by severity and rule, as the lines printed after an import. */
25
+ export declare function summarizeImportDiagnostics(diagnostics: readonly ImportDiagnostic[]): string;
26
+ //# sourceMappingURL=import-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-report.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/import-report.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,6FAA6F;AAC7F,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,gBAAgB,EAAE,GAAG,cAAc,EAAE,CAUhH;AAED,oCAAoC;AACpC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,gBAAgB,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5G;AAED,uFAAuF;AACvF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,gBAAgB,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO5I;AAED,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAE5F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAI5G;AAED,yEAAyE;AACzE,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,GAAG,MAAM,CAY3F"}