@intentius/chant 0.124.52 → 0.124.54

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 (584) hide show
  1. package/dist/audit/discover.d.ts.map +1 -1
  2. package/dist/audit/discover.js +3 -1
  3. package/dist/behaviour.d.ts +1 -1
  4. package/dist/behaviour.d.ts.map +1 -1
  5. package/dist/capabilities/templates.d.ts +65 -0
  6. package/dist/capabilities/templates.d.ts.map +1 -0
  7. package/dist/capabilities/templates.js +193 -0
  8. package/dist/capabilities/templates.json +145 -0
  9. package/dist/change-set-graph.d.ts +35 -3
  10. package/dist/change-set-graph.d.ts.map +1 -1
  11. package/dist/change-set-graph.js +60 -9
  12. package/dist/change-set.d.ts +65 -7
  13. package/dist/change-set.d.ts.map +1 -1
  14. package/dist/change-set.js +23 -12
  15. package/dist/ci-identity.d.ts +7 -2
  16. package/dist/ci-identity.d.ts.map +1 -1
  17. package/dist/ci-identity.js +4 -1
  18. package/dist/cli/commands/import-index.d.ts +52 -0
  19. package/dist/cli/commands/import-index.d.ts.map +1 -0
  20. package/dist/cli/commands/import-index.js +226 -0
  21. package/dist/cli/commands/lint.d.ts.map +1 -1
  22. package/dist/cli/commands/lint.js +4 -2
  23. package/dist/cli/handlers/components.d.ts.map +1 -1
  24. package/dist/cli/handlers/components.js +11 -2
  25. package/dist/cli/handlers/fan-out.d.ts.map +1 -1
  26. package/dist/cli/handlers/fan-out.js +16 -3
  27. package/dist/cli/handlers/graph.d.ts.map +1 -1
  28. package/dist/cli/handlers/graph.js +22 -4
  29. package/dist/cli/handlers/index-cloud.d.ts +14 -0
  30. package/dist/cli/handlers/index-cloud.d.ts.map +1 -0
  31. package/dist/cli/handlers/index-cloud.js +22 -0
  32. package/dist/cli/handlers/index-diff.d.ts +18 -0
  33. package/dist/cli/handlers/index-diff.d.ts.map +1 -0
  34. package/dist/cli/handlers/index-diff.js +142 -0
  35. package/dist/cli/handlers/lifecycle-drift.d.ts +25 -0
  36. package/dist/cli/handlers/lifecycle-drift.d.ts.map +1 -0
  37. package/dist/cli/handlers/lifecycle-drift.js +64 -0
  38. package/dist/cli/handlers/lifecycle.d.ts.map +1 -1
  39. package/dist/cli/handlers/lifecycle.js +188 -28
  40. package/dist/cli/handlers/misc.d.ts +9 -0
  41. package/dist/cli/handlers/misc.d.ts.map +1 -1
  42. package/dist/cli/handlers/misc.js +77 -0
  43. package/dist/cli/handlers/pr.d.ts.map +1 -1
  44. package/dist/cli/handlers/pr.js +15 -2
  45. package/dist/cli/handlers/promote.d.ts.map +1 -1
  46. package/dist/cli/handlers/promote.js +89 -15
  47. package/dist/cli/handlers/query.d.ts.map +1 -1
  48. package/dist/cli/handlers/query.js +28 -4
  49. package/dist/cli/handlers/scenario.d.ts.map +1 -1
  50. package/dist/cli/handlers/scenario.js +8 -7
  51. package/dist/cli/handlers/search.d.ts +34 -4
  52. package/dist/cli/handlers/search.d.ts.map +1 -1
  53. package/dist/cli/handlers/search.js +216 -36
  54. package/dist/cli/main.d.ts.map +1 -1
  55. package/dist/cli/main.js +55 -1
  56. package/dist/cli/mcp/lifecycle-tools.d.ts.map +1 -1
  57. package/dist/cli/mcp/lifecycle-tools.js +3 -2
  58. package/dist/cli/mcp/resource-handlers.d.ts.map +1 -1
  59. package/dist/cli/mcp/resource-handlers.js +4 -3
  60. package/dist/cli/mcp/workspace-tools.js +1 -1
  61. package/dist/cli/parse-args.d.ts.map +1 -1
  62. package/dist/cli/parse-args.js +55 -2
  63. package/dist/cli/registry.d.ts +19 -1
  64. package/dist/cli/registry.d.ts.map +1 -1
  65. package/dist/cloud-lister/aws.d.ts +35 -0
  66. package/dist/cloud-lister/aws.d.ts.map +1 -0
  67. package/dist/cloud-lister/aws.js +203 -0
  68. package/dist/cloud-lister/azure.d.ts +34 -0
  69. package/dist/cloud-lister/azure.d.ts.map +1 -0
  70. package/dist/cloud-lister/azure.js +129 -0
  71. package/dist/cloud-lister/common.d.ts +40 -0
  72. package/dist/cloud-lister/common.d.ts.map +1 -0
  73. package/dist/cloud-lister/common.js +83 -0
  74. package/dist/cloud-lister/credentials.d.ts +50 -0
  75. package/dist/cloud-lister/credentials.d.ts.map +1 -0
  76. package/dist/cloud-lister/credentials.js +86 -0
  77. package/dist/cloud-lister/fakes.d.ts +27 -0
  78. package/dist/cloud-lister/fakes.d.ts.map +1 -0
  79. package/dist/cloud-lister/fakes.js +50 -0
  80. package/dist/cloud-lister/gcp.d.ts +42 -0
  81. package/dist/cloud-lister/gcp.d.ts.map +1 -0
  82. package/dist/cloud-lister/gcp.js +143 -0
  83. package/dist/cloud-lister/guard.d.ts +49 -0
  84. package/dist/cloud-lister/guard.d.ts.map +1 -0
  85. package/dist/cloud-lister/guard.js +103 -0
  86. package/dist/cloud-lister/ids.d.ts +23 -0
  87. package/dist/cloud-lister/ids.d.ts.map +1 -0
  88. package/dist/cloud-lister/ids.js +42 -0
  89. package/dist/cloud-lister/index.d.ts +67 -0
  90. package/dist/cloud-lister/index.d.ts.map +1 -0
  91. package/dist/cloud-lister/index.js +102 -0
  92. package/dist/cloud-lister/kubernetes.d.ts +64 -0
  93. package/dist/cloud-lister/kubernetes.d.ts.map +1 -0
  94. package/dist/cloud-lister/kubernetes.js +276 -0
  95. package/dist/cloud-lister/markers.d.ts +31 -0
  96. package/dist/cloud-lister/markers.d.ts.map +1 -0
  97. package/dist/cloud-lister/markers.js +73 -0
  98. package/dist/cloud-lister/mask.d.ts +31 -0
  99. package/dist/cloud-lister/mask.d.ts.map +1 -0
  100. package/dist/cloud-lister/mask.js +74 -0
  101. package/dist/cloud-lister/sigv4.d.ts +29 -0
  102. package/dist/cloud-lister/sigv4.d.ts.map +1 -0
  103. package/dist/cloud-lister/sigv4.js +54 -0
  104. package/dist/cloud-lister/transport.d.ts +55 -0
  105. package/dist/cloud-lister/transport.d.ts.map +1 -0
  106. package/dist/cloud-lister/transport.js +86 -0
  107. package/dist/cloud-lister/types.d.ts +121 -0
  108. package/dist/cloud-lister/types.d.ts.map +1 -0
  109. package/dist/cloud-lister/types.js +24 -0
  110. package/dist/components/capability-plugin-loader.d.ts.map +1 -1
  111. package/dist/components/capability-plugin-loader.js +6 -0
  112. package/dist/components/capability-plugin.d.ts +9 -0
  113. package/dist/components/capability-plugin.d.ts.map +1 -1
  114. package/dist/components/capability.d.ts +215 -0
  115. package/dist/components/capability.d.ts.map +1 -1
  116. package/dist/components/cli-support.d.ts +21 -0
  117. package/dist/components/cli-support.d.ts.map +1 -1
  118. package/dist/components/cli-support.js +58 -14
  119. package/dist/components/declared-reads.d.ts +38 -0
  120. package/dist/components/declared-reads.d.ts.map +1 -0
  121. package/dist/components/declared-reads.js +131 -0
  122. package/dist/components/deploy-units.d.ts.map +1 -1
  123. package/dist/components/deploy-units.js +4 -0
  124. package/dist/components/driver.d.ts +34 -1
  125. package/dist/components/driver.d.ts.map +1 -1
  126. package/dist/components/driver.js +66 -3
  127. package/dist/components/fan-out-run.d.ts +23 -1
  128. package/dist/components/fan-out-run.d.ts.map +1 -1
  129. package/dist/components/fan-out-run.js +82 -14
  130. package/dist/components/fan-out-support.d.ts +6 -0
  131. package/dist/components/fan-out-support.d.ts.map +1 -1
  132. package/dist/components/fan-out-support.js +4 -1
  133. package/dist/components/fan-out.d.ts +28 -0
  134. package/dist/components/fan-out.d.ts.map +1 -1
  135. package/dist/components/groups.d.ts +229 -0
  136. package/dist/components/groups.d.ts.map +1 -0
  137. package/dist/components/groups.js +760 -0
  138. package/dist/components/index.d.ts +6 -2
  139. package/dist/components/index.d.ts.map +1 -1
  140. package/dist/components/index.js +4 -0
  141. package/dist/components/plan-shape-conformance.d.ts +48 -0
  142. package/dist/components/plan-shape-conformance.d.ts.map +1 -0
  143. package/dist/components/plan-shape-conformance.js +122 -0
  144. package/dist/components/pr-run.d.ts +41 -4
  145. package/dist/components/pr-run.d.ts.map +1 -1
  146. package/dist/components/pr-run.js +209 -39
  147. package/dist/components/promote-rounds.d.ts +9 -0
  148. package/dist/components/promote-rounds.d.ts.map +1 -1
  149. package/dist/components/promote-rounds.js +23 -2
  150. package/dist/components/promote.d.ts +17 -0
  151. package/dist/components/promote.d.ts.map +1 -1
  152. package/dist/components/promote.js +36 -6
  153. package/dist/components/release-gate.d.ts +23 -1
  154. package/dist/components/release-gate.d.ts.map +1 -1
  155. package/dist/components/release-gate.js +97 -33
  156. package/dist/components/run-groups.d.ts +58 -0
  157. package/dist/components/run-groups.d.ts.map +1 -0
  158. package/dist/components/run-groups.js +78 -0
  159. package/dist/components/starter-plugin.d.ts +1 -0
  160. package/dist/components/starter-plugin.d.ts.map +1 -1
  161. package/dist/components/starter-plugin.js +6 -1
  162. package/dist/components/verbs/index.d.ts +1 -0
  163. package/dist/components/verbs/index.d.ts.map +1 -1
  164. package/dist/components/verbs/index.js +1 -0
  165. package/dist/components/verbs/member-outputs.d.ts +187 -0
  166. package/dist/components/verbs/member-outputs.d.ts.map +1 -0
  167. package/dist/components/verbs/member-outputs.js +218 -0
  168. package/dist/config.d.ts +60 -0
  169. package/dist/config.d.ts.map +1 -1
  170. package/dist/config.js +27 -0
  171. package/dist/deep-observation.d.ts +1 -13
  172. package/dist/deep-observation.d.ts.map +1 -1
  173. package/dist/deep-observation.js +5 -22
  174. package/dist/drift-record.d.ts +542 -0
  175. package/dist/drift-record.d.ts.map +1 -0
  176. package/dist/drift-record.js +886 -0
  177. package/dist/engine-facts.d.ts +144 -0
  178. package/dist/engine-facts.d.ts.map +1 -0
  179. package/dist/engine-facts.js +14 -0
  180. package/dist/graph-ir.d.ts +153 -2
  181. package/dist/graph-ir.d.ts.map +1 -1
  182. package/dist/graph-ir.js +224 -6
  183. package/dist/graph-refs.d.ts +145 -0
  184. package/dist/graph-refs.d.ts.map +1 -1
  185. package/dist/graph-refs.js +305 -0
  186. package/dist/graph-schema/fixtures/adopt.json +15 -0
  187. package/dist/graph-schema/fixtures/choudoufu.engine-graph.json +169 -0
  188. package/dist/graph-schema/fixtures/index.json +68 -0
  189. package/dist/graph-schema/fixtures/plunge.engine-graph.json +158 -0
  190. package/dist/graph-schema/fixtures.d.ts +23 -0
  191. package/dist/graph-schema/fixtures.d.ts.map +1 -0
  192. package/dist/graph-schema/fixtures.js +246 -0
  193. package/dist/graph-schema/generate.d.ts +15 -0
  194. package/dist/graph-schema/generate.d.ts.map +1 -0
  195. package/dist/graph-schema/generate.js +267 -0
  196. package/dist/graph-schema/graph.schema.json +1387 -0
  197. package/dist/health.schema.json +2 -1
  198. package/dist/identity.d.ts.map +1 -1
  199. package/dist/identity.js +2 -0
  200. package/dist/index.d.ts +1 -0
  201. package/dist/index.d.ts.map +1 -1
  202. package/dist/index.js +2 -0
  203. package/dist/instance-nodes.d.ts +159 -0
  204. package/dist/instance-nodes.d.ts.map +1 -0
  205. package/dist/instance-nodes.js +231 -0
  206. package/dist/lexicon.d.ts +72 -0
  207. package/dist/lexicon.d.ts.map +1 -1
  208. package/dist/lifecycle/adoption-file.d.ts +56 -0
  209. package/dist/lifecycle/adoption-file.d.ts.map +1 -0
  210. package/dist/lifecycle/adoption-file.js +123 -0
  211. package/dist/lifecycle/cloud-index.d.ts +186 -0
  212. package/dist/lifecycle/cloud-index.d.ts.map +1 -0
  213. package/dist/lifecycle/cloud-index.js +618 -0
  214. package/dist/lifecycle/derive-edges.d.ts +59 -0
  215. package/dist/lifecycle/derive-edges.d.ts.map +1 -0
  216. package/dist/lifecycle/derive-edges.js +126 -0
  217. package/dist/lifecycle/git.d.ts +10 -9
  218. package/dist/lifecycle/git.d.ts.map +1 -1
  219. package/dist/lifecycle/git.js +7 -1
  220. package/dist/lifecycle/identity-match.d.ts +133 -0
  221. package/dist/lifecycle/identity-match.d.ts.map +1 -0
  222. package/dist/lifecycle/identity-match.js +147 -0
  223. package/dist/lifecycle/index-diff.d.ts +224 -0
  224. package/dist/lifecycle/index-diff.d.ts.map +1 -0
  225. package/dist/lifecycle/index-diff.js +327 -0
  226. package/dist/lifecycle/index-document.d.ts +130 -0
  227. package/dist/lifecycle/index-document.d.ts.map +1 -0
  228. package/dist/lifecycle/index-document.js +189 -0
  229. package/dist/lifecycle/index-drift.d.ts +121 -0
  230. package/dist/lifecycle/index-drift.d.ts.map +1 -0
  231. package/dist/lifecycle/index-drift.js +178 -0
  232. package/dist/lifecycle/index-import.d.ts +168 -0
  233. package/dist/lifecycle/index-import.d.ts.map +1 -0
  234. package/dist/lifecycle/index-import.js +515 -0
  235. package/dist/lifecycle/index-join.d.ts +129 -0
  236. package/dist/lifecycle/index-join.d.ts.map +1 -0
  237. package/dist/lifecycle/index-join.js +248 -0
  238. package/dist/lifecycle/index.d.ts +4 -0
  239. package/dist/lifecycle/index.d.ts.map +1 -1
  240. package/dist/lifecycle/index.js +4 -0
  241. package/dist/lifecycle/observation-baseline.d.ts +61 -21
  242. package/dist/lifecycle/observation-baseline.d.ts.map +1 -1
  243. package/dist/lifecycle/observation-baseline.js +144 -19
  244. package/dist/lifecycle/observe.d.ts.map +1 -1
  245. package/dist/lifecycle/observe.js +6 -1
  246. package/dist/lifecycle/query.d.ts +45 -4
  247. package/dist/lifecycle/query.d.ts.map +1 -1
  248. package/dist/lifecycle/query.js +89 -7
  249. package/dist/lifecycle/replay.d.ts +10 -3
  250. package/dist/lifecycle/replay.d.ts.map +1 -1
  251. package/dist/lifecycle/replay.js +10 -6
  252. package/dist/lifecycle/scenario.d.ts +4 -3
  253. package/dist/lifecycle/scenario.d.ts.map +1 -1
  254. package/dist/lifecycle/snapshot-store-fake.d.ts +9 -0
  255. package/dist/lifecycle/snapshot-store-fake.d.ts.map +1 -0
  256. package/dist/lifecycle/snapshot-store-fake.js +21 -0
  257. package/dist/lifecycle/snapshot-store-s3.d.ts +102 -0
  258. package/dist/lifecycle/snapshot-store-s3.d.ts.map +1 -0
  259. package/dist/lifecycle/snapshot-store-s3.js +254 -0
  260. package/dist/lifecycle/snapshot-store.d.ts +170 -0
  261. package/dist/lifecycle/snapshot-store.d.ts.map +1 -0
  262. package/dist/lifecycle/snapshot-store.js +832 -0
  263. package/dist/lifecycle/snapshot.d.ts +11 -0
  264. package/dist/lifecycle/snapshot.d.ts.map +1 -1
  265. package/dist/lifecycle/snapshot.js +18 -5
  266. package/dist/lifecycle/type-listing.d.ts +148 -0
  267. package/dist/lifecycle/type-listing.d.ts.map +1 -0
  268. package/dist/lifecycle/type-listing.js +166 -0
  269. package/dist/lint/component-checks.d.ts +15 -1
  270. package/dist/lint/component-checks.d.ts.map +1 -1
  271. package/dist/lint/component-checks.js +1 -0
  272. package/dist/lint/presets/relaxed.json +2 -1
  273. package/dist/lint/presets/strict.json +2 -1
  274. package/dist/lint/rules/__fixtures__/comp/comp008/fail/dns.component.d.ts +4 -0
  275. package/dist/lint/rules/__fixtures__/comp/comp008/fail/dns.component.d.ts.map +1 -0
  276. package/dist/lint/rules/__fixtures__/comp/comp008/fail/dns.component.js +13 -0
  277. package/dist/lint/rules/__fixtures__/comp/comp008/pass/dns.component.d.ts +4 -0
  278. package/dist/lint/rules/__fixtures__/comp/comp008/pass/dns.component.d.ts.map +1 -0
  279. package/dist/lint/rules/__fixtures__/comp/comp008/pass/dns.component.js +8 -0
  280. package/dist/lint/rules/comp/comp008-applies-signal-only-root.d.ts +33 -0
  281. package/dist/lint/rules/comp/comp008-applies-signal-only-root.d.ts.map +1 -0
  282. package/dist/lint/rules/comp/comp008-applies-signal-only-root.js +123 -0
  283. package/dist/lint/rules/comp/index.d.ts +2 -1
  284. package/dist/lint/rules/comp/index.d.ts.map +1 -1
  285. package/dist/lint/rules/comp/index.js +4 -1
  286. package/dist/observation.d.ts +19 -2
  287. package/dist/observation.d.ts.map +1 -1
  288. package/dist/observation.js +18 -1
  289. package/dist/op/activities/activity-contracts.d.ts +1 -1
  290. package/dist/op/activities/activity-contracts.js +1 -1
  291. package/dist/op/activities/change-set.d.ts +6 -4
  292. package/dist/op/activities/change-set.d.ts.map +1 -1
  293. package/dist/op/activities/change-set.js +4 -2
  294. package/dist/op/activity-failure.d.ts +27 -0
  295. package/dist/op/activity-failure.d.ts.map +1 -1
  296. package/dist/op/activity-failure.js +31 -0
  297. package/dist/op/index.d.ts +2 -1
  298. package/dist/op/index.d.ts.map +1 -1
  299. package/dist/op/index.js +1 -1
  300. package/dist/op/local-executor.d.ts +5 -1
  301. package/dist/op/local-executor.d.ts.map +1 -1
  302. package/dist/op/local-executor.js +22 -8
  303. package/dist/pr-loop.d.ts +56 -1
  304. package/dist/pr-loop.d.ts.map +1 -1
  305. package/dist/pr-loop.js +51 -1
  306. package/dist/pulumi-urn.d.ts +101 -0
  307. package/dist/pulumi-urn.d.ts.map +1 -0
  308. package/dist/pulumi-urn.js +131 -0
  309. package/dist/release-floors.d.ts +23 -0
  310. package/dist/release-floors.d.ts.map +1 -0
  311. package/dist/release-floors.js +22 -0
  312. package/dist/sensitive-key.d.ts +23 -0
  313. package/dist/sensitive-key.d.ts.map +1 -0
  314. package/dist/sensitive-key.js +31 -0
  315. package/dist/wave-runtime.mjs +234 -234
  316. package/dist/workspace/adoption-report.d.ts +53 -0
  317. package/dist/workspace/adoption-report.d.ts.map +1 -0
  318. package/dist/workspace/adoption-report.js +76 -0
  319. package/dist/workspace/capabilities-contract.d.ts +7 -0
  320. package/dist/workspace/capabilities-contract.d.ts.map +1 -1
  321. package/dist/workspace/capabilities-contract.js +2 -1
  322. package/dist/workspace/capabilities.schema.json +98 -0
  323. package/dist/workspace/change-set.schema.json +42 -3
  324. package/dist/workspace/ci-cloud-identity.d.ts +13 -1
  325. package/dist/workspace/ci-cloud-identity.d.ts.map +1 -1
  326. package/dist/workspace/ci-cloud-identity.js +30 -1
  327. package/dist/workspace/compose-graph.d.ts +10 -1
  328. package/dist/workspace/compose-graph.d.ts.map +1 -1
  329. package/dist/workspace/compose-graph.js +6 -1
  330. package/dist/workspace/conformance/index.d.ts +1 -1
  331. package/dist/workspace/conformance/index.d.ts.map +1 -1
  332. package/dist/workspace/conformance/index.js +6 -1
  333. package/dist/workspace/drift-cli.d.ts +81 -0
  334. package/dist/workspace/drift-cli.d.ts.map +1 -0
  335. package/dist/workspace/drift-cli.js +317 -0
  336. package/dist/workspace/drift.schema.json +672 -0
  337. package/dist/workspace/graph-cli.d.ts +2 -0
  338. package/dist/workspace/graph-cli.d.ts.map +1 -1
  339. package/dist/workspace/graph-cli.js +3 -0
  340. package/dist/workspace/graph.schema.json +72 -0
  341. package/dist/workspace/init.d.ts +5 -1
  342. package/dist/workspace/init.d.ts.map +1 -1
  343. package/dist/workspace/init.js +55 -9
  344. package/dist/workspace/ledger.schema.json +1 -1
  345. package/dist/workspace/nested-graph.d.ts.map +1 -1
  346. package/dist/workspace/nested-graph.js +2 -0
  347. package/dist/workspace/pr-report.schema.json +51 -2
  348. package/dist/workspace/promote-waves.d.ts +112 -0
  349. package/dist/workspace/promote-waves.d.ts.map +1 -0
  350. package/dist/workspace/promote-waves.js +290 -0
  351. package/dist/workspace/promote.d.ts +84 -2
  352. package/dist/workspace/promote.d.ts.map +1 -1
  353. package/dist/workspace/promote.js +347 -61
  354. package/dist/workspace/reason-codes.d.ts +12 -0
  355. package/dist/workspace/reason-codes.d.ts.map +1 -1
  356. package/dist/workspace/reason-codes.js +14 -0
  357. package/dist/workspace/search-contract.d.ts +3 -3
  358. package/dist/workspace/search-contract.d.ts.map +1 -1
  359. package/dist/workspace/search-contract.js +2 -0
  360. package/dist/workspace/search.schema.json +103 -5
  361. package/package.json +14 -1
  362. package/src/__fixtures__/drift-record/README.md +58 -0
  363. package/src/__fixtures__/drift-record/choudoufu-cone.ndjson +4 -0
  364. package/src/__fixtures__/drift-record/choudoufu-resource.ndjson +3 -0
  365. package/src/__fixtures__/drift-record/component-status-ledger.json +65 -0
  366. package/src/__fixtures__/drift-record/component-status.json +91 -0
  367. package/src/__fixtures__/drift-record/deep-diff.json +259 -0
  368. package/src/__fixtures__/drift-record/lifecycle-diff-live.json +825 -0
  369. package/src/__fixtures__/drift-record/live-diff.json +125 -0
  370. package/src/audit/discover.e2e.test.ts +14 -0
  371. package/src/audit/discover.ts +3 -1
  372. package/src/behaviour.ts +1 -1
  373. package/src/capabilities/templates.json +145 -0
  374. package/src/capabilities/templates.test.ts +212 -0
  375. package/src/capabilities/templates.ts +204 -0
  376. package/src/change-set-bundle.test.ts +83 -0
  377. package/src/change-set-graph.ts +80 -9
  378. package/src/change-set.test.ts +24 -0
  379. package/src/change-set.ts +77 -14
  380. package/src/ci-identity-targets.test.ts +23 -0
  381. package/src/ci-identity.ts +10 -4
  382. package/src/cli/commands/import-index.test.ts +117 -0
  383. package/src/cli/commands/import-index.ts +265 -0
  384. package/src/cli/commands/lint.ts +4 -2
  385. package/src/cli/handlers/components.test.ts +9 -0
  386. package/src/cli/handlers/components.ts +12 -2
  387. package/src/cli/handlers/fan-out.ts +17 -3
  388. package/src/cli/handlers/graph.test.ts +42 -0
  389. package/src/cli/handlers/graph.ts +26 -4
  390. package/src/cli/handlers/index-cloud.ts +32 -0
  391. package/src/cli/handlers/index-diff.test.ts +68 -0
  392. package/src/cli/handlers/index-diff.ts +146 -0
  393. package/src/cli/handlers/ledger-root-member.test.ts +161 -0
  394. package/src/cli/handlers/lifecycle-drift.ts +68 -0
  395. package/src/cli/handlers/lifecycle.test.ts +33 -11
  396. package/src/cli/handlers/lifecycle.ts +205 -30
  397. package/src/cli/handlers/misc.ts +73 -0
  398. package/src/cli/handlers/pr-waves-blocked.test.ts +37 -2
  399. package/src/cli/handlers/pr.ts +14 -2
  400. package/src/cli/handlers/promote.test.ts +64 -0
  401. package/src/cli/handlers/promote.ts +81 -6
  402. package/src/cli/handlers/query.ts +27 -4
  403. package/src/cli/handlers/run-declared-reads-cli.test.ts +187 -0
  404. package/src/cli/handlers/run-groups-cli.test.ts +229 -0
  405. package/src/cli/handlers/scenario.test.ts +13 -0
  406. package/src/cli/handlers/scenario.ts +8 -7
  407. package/src/cli/handlers/search-index.test.ts +255 -0
  408. package/src/cli/handlers/search-json.test.ts +1 -1
  409. package/src/cli/handlers/search-ownership.test.ts +194 -0
  410. package/src/cli/handlers/search.ts +271 -38
  411. package/src/cli/main.test.ts +7 -0
  412. package/src/cli/main.ts +56 -1
  413. package/src/cli/mcp/lifecycle-tools.ts +3 -2
  414. package/src/cli/mcp/resource-handlers.ts +4 -3
  415. package/src/cli/mcp/workspace-tools.ts +1 -1
  416. package/src/cli/parse-args.ts +40 -2
  417. package/src/cli/registry.ts +19 -1
  418. package/src/cloud-lister/aws.test.ts +202 -0
  419. package/src/cloud-lister/aws.ts +226 -0
  420. package/src/cloud-lister/azure.test.ts +132 -0
  421. package/src/cloud-lister/azure.ts +142 -0
  422. package/src/cloud-lister/common.ts +115 -0
  423. package/src/cloud-lister/credentials.ts +110 -0
  424. package/src/cloud-lister/fakes.ts +66 -0
  425. package/src/cloud-lister/gcp.test.ts +121 -0
  426. package/src/cloud-lister/gcp.ts +159 -0
  427. package/src/cloud-lister/guard.test.ts +198 -0
  428. package/src/cloud-lister/guard.ts +111 -0
  429. package/src/cloud-lister/ids.ts +54 -0
  430. package/src/cloud-lister/index.ts +134 -0
  431. package/src/cloud-lister/kubernetes.test.ts +160 -0
  432. package/src/cloud-lister/kubernetes.ts +284 -0
  433. package/src/cloud-lister/markers.ts +74 -0
  434. package/src/cloud-lister/mask.ts +77 -0
  435. package/src/cloud-lister/shape.test.ts +81 -0
  436. package/src/cloud-lister/sigv4.ts +70 -0
  437. package/src/cloud-lister/transport.ts +118 -0
  438. package/src/cloud-lister/types.ts +135 -0
  439. package/src/components/capability-plugin-loader.ts +4 -0
  440. package/src/components/capability-plugin.ts +10 -0
  441. package/src/components/capability.ts +229 -0
  442. package/src/components/cli-support.ts +70 -14
  443. package/src/components/declared-reads.test.ts +103 -0
  444. package/src/components/declared-reads.ts +134 -0
  445. package/src/components/deploy-units.ts +4 -0
  446. package/src/components/driver.ts +89 -4
  447. package/src/components/fan-out-run.ts +95 -15
  448. package/src/components/fan-out-support.ts +10 -1
  449. package/src/components/fan-out.ts +30 -0
  450. package/src/components/groups.test.ts +320 -0
  451. package/src/components/groups.ts +880 -0
  452. package/src/components/index.ts +42 -0
  453. package/src/components/plan-shape-conformance.ts +130 -0
  454. package/src/components/pr-env-run-bundle.test.ts +2 -0
  455. package/src/components/pr-run.test.ts +516 -3
  456. package/src/components/pr-run.ts +231 -41
  457. package/src/components/promote-rounds.ts +25 -2
  458. package/src/components/promote.ts +55 -5
  459. package/src/components/registry.test.ts +1 -1
  460. package/src/components/release-gate.ts +115 -30
  461. package/src/components/release-groups.test.ts +362 -0
  462. package/src/components/run-groups.ts +113 -0
  463. package/src/components/starter-plugin.ts +6 -0
  464. package/src/components/verbs/index.ts +1 -0
  465. package/src/components/verbs/member-outputs.test.ts +205 -0
  466. package/src/components/verbs/member-outputs.ts +308 -0
  467. package/src/config.ts +44 -0
  468. package/src/deep-observation.ts +5 -23
  469. package/src/drift-record.test.ts +596 -0
  470. package/src/drift-record.ts +1206 -0
  471. package/src/engine-facts.guard.test.ts +111 -0
  472. package/src/engine-facts.test.ts +178 -0
  473. package/src/engine-facts.ts +154 -0
  474. package/src/gated-waves-bundle.test.ts +2 -0
  475. package/src/graph-ir-live.test.ts +92 -0
  476. package/src/graph-ir.ts +317 -7
  477. package/src/graph-refs.ts +416 -0
  478. package/src/graph-schema/fixtures/adopt.json +15 -0
  479. package/src/graph-schema/fixtures/choudoufu.engine-graph.json +169 -0
  480. package/src/graph-schema/fixtures/index.json +68 -0
  481. package/src/graph-schema/fixtures/plunge.engine-graph.json +158 -0
  482. package/src/graph-schema/fixtures.ts +267 -0
  483. package/src/graph-schema/generate.ts +263 -0
  484. package/src/graph-schema/graph-schema.test.ts +153 -0
  485. package/src/graph-schema/graph.schema.json +1387 -0
  486. package/src/health.schema.json +2 -1
  487. package/src/identity.ts +2 -0
  488. package/src/index.ts +2 -0
  489. package/src/instance-nodes.ts +288 -0
  490. package/src/lexicon.ts +76 -0
  491. package/src/lifecycle/__fixtures__/index-diff/20261026T120000Z-aaaaaaaaaaaa.json +149 -0
  492. package/src/lifecycle/__fixtures__/index-diff/20261026T130000Z-bbbbbbbbbbbb.json +127 -0
  493. package/src/lifecycle/adoption-file.test.ts +100 -0
  494. package/src/lifecycle/adoption-file.ts +154 -0
  495. package/src/lifecycle/cloud-index.test.ts +517 -0
  496. package/src/lifecycle/cloud-index.ts +736 -0
  497. package/src/lifecycle/derive-edges.test.ts +193 -0
  498. package/src/lifecycle/derive-edges.ts +182 -0
  499. package/src/lifecycle/git.ts +10 -4
  500. package/src/lifecycle/identity-match.test.ts +308 -0
  501. package/src/lifecycle/identity-match.ts +257 -0
  502. package/src/lifecycle/index-diff.test.ts +198 -0
  503. package/src/lifecycle/index-diff.ts +476 -0
  504. package/src/lifecycle/index-document.test.ts +64 -0
  505. package/src/lifecycle/index-document.ts +299 -0
  506. package/src/lifecycle/index-drift.test.ts +191 -0
  507. package/src/lifecycle/index-drift.ts +304 -0
  508. package/src/lifecycle/index-import.test.ts +255 -0
  509. package/src/lifecycle/index-import.ts +634 -0
  510. package/src/lifecycle/index-join.test.ts +250 -0
  511. package/src/lifecycle/index-join.ts +304 -0
  512. package/src/lifecycle/index-store-load-bearing.test.ts +187 -0
  513. package/src/lifecycle/index.ts +4 -0
  514. package/src/lifecycle/member-ledger.test.ts +25 -7
  515. package/src/lifecycle/observation-baseline.test.ts +72 -1
  516. package/src/lifecycle/observation-baseline.ts +190 -27
  517. package/src/lifecycle/observe.ts +6 -1
  518. package/src/lifecycle/query.test.ts +69 -1
  519. package/src/lifecycle/query.ts +103 -10
  520. package/src/lifecycle/replay.test.ts +9 -5
  521. package/src/lifecycle/replay.ts +9 -5
  522. package/src/lifecycle/scenario.ts +4 -3
  523. package/src/lifecycle/snapshot-store-fake.ts +29 -0
  524. package/src/lifecycle/snapshot-store-s3.ts +316 -0
  525. package/src/lifecycle/snapshot-store.test.ts +385 -0
  526. package/src/lifecycle/snapshot-store.ts +981 -0
  527. package/src/lifecycle/snapshot.test.ts +13 -0
  528. package/src/lifecycle/snapshot.ts +23 -6
  529. package/src/lifecycle/type-listing.test.ts +166 -0
  530. package/src/lifecycle/type-listing.ts +309 -0
  531. package/src/lint/component-checks.ts +17 -1
  532. package/src/lint/config.test.ts +3 -0
  533. package/src/lint/presets/relaxed.json +2 -1
  534. package/src/lint/presets/strict.json +2 -1
  535. package/src/lint/rules/__fixtures__/comp/comp008/fail/dns.component.ts +15 -0
  536. package/src/lint/rules/__fixtures__/comp/comp008/pass/dns.component.ts +10 -0
  537. package/src/lint/rules/comp/comp.test.ts +2 -1
  538. package/src/lint/rules/comp/comp008-applies-signal-only-root.ts +121 -0
  539. package/src/lint/rules/comp/comp008.test.ts +77 -0
  540. package/src/lint/rules/comp/index.ts +4 -1
  541. package/src/observation-edges.test.ts +33 -0
  542. package/src/observation.ts +36 -1
  543. package/src/op/activities/activity-contracts.ts +1 -1
  544. package/src/op/activities/change-set.ts +8 -5
  545. package/src/op/activity-failure.ts +36 -0
  546. package/src/op/index.ts +2 -1
  547. package/src/op/local-executor.test.ts +80 -0
  548. package/src/op/local-executor.ts +27 -9
  549. package/src/pr-loop-bundle.test.ts +5 -2
  550. package/src/pr-loop.test.ts +43 -0
  551. package/src/pr-loop.ts +111 -2
  552. package/src/pulumi-urn.ts +151 -0
  553. package/src/release-floors.ts +22 -0
  554. package/src/sensitive-key.ts +34 -0
  555. package/src/workspace/adoption-report.test.ts +61 -0
  556. package/src/workspace/adoption-report.ts +103 -0
  557. package/src/workspace/capabilities-contract.test.ts +4 -0
  558. package/src/workspace/capabilities-contract.ts +9 -1
  559. package/src/workspace/capabilities.schema.json +98 -0
  560. package/src/workspace/change-set.schema.json +42 -3
  561. package/src/workspace/ci-cloud-identity.ts +31 -1
  562. package/src/workspace/compose-graph.test.ts +12 -0
  563. package/src/workspace/compose-graph.ts +12 -1
  564. package/src/workspace/conformance/conformance.e2e.test.ts +2 -1
  565. package/src/workspace/conformance/index.ts +6 -1
  566. package/src/workspace/drift-cli.test.ts +65 -0
  567. package/src/workspace/drift-cli.ts +365 -0
  568. package/src/workspace/drift.schema.json +672 -0
  569. package/src/workspace/graph-cli.ts +5 -0
  570. package/src/workspace/graph.schema.json +72 -0
  571. package/src/workspace/init.test.ts +38 -1
  572. package/src/workspace/init.ts +50 -8
  573. package/src/workspace/intent-gaps.test.ts +18 -2
  574. package/src/workspace/ledger.schema.json +1 -1
  575. package/src/workspace/nested-graph.ts +1 -0
  576. package/src/workspace/pr-report.schema.json +51 -2
  577. package/src/workspace/promote-waves.test.ts +296 -0
  578. package/src/workspace/promote-waves.ts +340 -0
  579. package/src/workspace/promote.test.ts +158 -4
  580. package/src/workspace/promote.ts +398 -57
  581. package/src/workspace/reason-codes.test.ts +4 -1
  582. package/src/workspace/reason-codes.ts +14 -0
  583. package/src/workspace/search-contract.ts +2 -0
  584. package/src/workspace/search.schema.json +103 -5
@@ -13,30 +13,62 @@
13
13
  *
14
14
  * Rungs:
15
15
  *
16
- * - `terraform` to `choudoufu`: `choudoufu live-check` in the member's
16
+ * - `terraform` to `choudoufu`: `choudoufu init -backend=false` installs the
17
+ * providers in the staging worktree, which has no `.terraform/` of its own
18
+ * (#4461: `live-import` reads each resource through its provider), then
19
+ * `choudoufu live-check` in the member's
17
20
  * directory must pass, then `choudoufu live-import -state=<--state>
18
21
  * -estate=<member>` prints its ratification report (read-only: it stamps
19
- * nothing without `-approve`). The patch changes the member's kind.
22
+ * nothing without `-approve`). The patch changes the member's kind. The
23
+ * report, one entry per resource with its status, rides on `--json` as
24
+ * `adoption` (INTENTIUS/behold#999, ./adoption-report.ts), so
25
+ * `--dry-run --json` is the read-only way to ask what adopting would claim.
20
26
  * - `choudoufu` or `other` to `chant`: `chant import` writes TypeScript into
21
27
  * the member's directory. The patch holds those files and the kind change.
22
28
  *
29
+ * The digest covers the member, the rung, what the staging changed outside
30
+ * the declaration, and (for `choudoufu`) the digest of the `live-import`
31
+ * report, so an approval is for the report the approver read. The kind change
32
+ * itself is written into the tree's declaration on apply rather than carried
33
+ * as a hunk, so promoting one member never conflicts with another member's
34
+ * uncommitted promotion (#4461: `--all` promotes a workspace in waves, see
35
+ * `./promote-waves.ts`).
36
+ *
37
+ * The stamp (`live-import -approve`) runs in the staging worktree's member
38
+ * directory, where `choudoufu init -backend=false` already installed the
39
+ * providers, so the member's own directory needs none (chant#4492).
40
+ *
41
+ * When `live-import -approve` fails after the kind change is written, the
42
+ * promote leaves a stamp record under `.chant/workspace-promote/` (#4485). A
43
+ * re-run finds the member already of kind `choudoufu` and the record, and
44
+ * retries the stamp ({@link retryPendingStamp}) rather than reporting it
45
+ * promoted or starting the next rung. The retry has no staging of its own to
46
+ * reuse, so it stages one first: a worktree at HEAD with the tree's changes to
47
+ * the member, and `choudoufu init -backend=false` in it. The record goes once
48
+ * a stamp passes.
49
+ *
23
50
  * Commands run through an injectable runner, so a test never starts a binary.
24
51
  */
25
52
  import { execFileSync, spawn } from "node:child_process";
26
- import { existsSync, mkdirSync, realpathSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
53
+ import { copyFileSync, existsSync, mkdirSync, realpathSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
27
54
  import { tmpdir } from "node:os";
28
- import { join, relative, resolve, sep } from "node:path";
55
+ import { dirname, join, relative, resolve, sep } from "node:path";
29
56
  import { formatError, formatInfo, formatSuccess, formatWarning } from "../cli/format.js";
57
+ import { contentDigest } from "../content-digest.js";
30
58
  import { computePlanDigest } from "../lifecycle/plan-digest.js";
31
59
  import { LIFECYCLE_LOCAL_NOTE, isLifecycleLocalNote } from "../lifecycle/local-note.js";
32
60
  import { approveCommand, describeGateMismatch, evaluateGate, gateIsSealed, gitGateLedgerPort } from "../op/gate.js";
33
61
  import { WORKSPACE_PROMOTE_GATE_OP } from "../op/gate-name.js";
62
+ import { parseLiveImportReport } from "./adoption-report.js";
34
63
  import { DECLARATION_FILES, readDeclaration } from "./declaration.js";
35
64
  import { setProperty } from "./json-edit.js";
36
65
  import { workingTree } from "./tree.js";
37
66
  export const PROMOTE_PLAN_KIND = "workspace-promote";
38
67
  export const PROMOTE_GATED_EXIT = 3;
39
- const USAGE = "chant workspace promote <member> [--state <terraform.tfstate>] [--lexicon <lexicon>] [--dry-run] [--output <patch file>] [--json]";
68
+ const USAGE = [
69
+ "chant workspace promote <member> [--state <terraform.tfstate>] [--lexicon <lexicon>] [--dry-run] [--output <patch file>] [--json]",
70
+ "chant workspace promote --all [--state-dir <dir>] [--state <member>=<terraform.tfstate>]... [--canary <member>] [--wave-size <n>] [--dry-run] [--json]",
71
+ ].join("\n");
40
72
  export class PromoteError extends Error {
41
73
  }
42
74
  /** The ladder, lowest rung first. `other` and `terraform` share the bottom rung. */
@@ -58,14 +90,19 @@ export const spawnRunner = (argv, cwd) => new Promise((done) => {
58
90
  child.on("error", (e) => done({ exitCode: 127, output: String(e.message) }));
59
91
  child.on("close", (code) => done({ exitCode: code ?? 1, output: Buffer.concat(out).toString("utf-8") }));
60
92
  });
93
+ /** `choudoufu init -backend=false` in the member's staging directory: the providers `live-import` reads each resource through (#4461). */
94
+ function stagingInit(member) {
95
+ return { label: "choudoufu init", argv: ["choudoufu", "init", "-input=false", "-backend=false", "-no-color"], cwd: member.dir };
96
+ }
61
97
  /** The commands the rung runs in the staging worktree. */
62
98
  export function stagingRuns(rung, member, opts) {
63
99
  if (rung.to === "choudoufu") {
64
100
  if (!opts.state)
65
101
  throw new PromoteError(`promoting ${member.name} to choudoufu reads its state for the adoption report: pass --state <terraform.tfstate>`);
66
102
  return [
103
+ stagingInit(member),
67
104
  { label: "choudoufu live-check", argv: ["choudoufu", "live-check"], cwd: member.dir },
68
- { label: "choudoufu live-import (report)", argv: ["choudoufu", "live-import", `-state=${opts.state}`, `-estate=${member.name}`], cwd: member.dir },
105
+ { label: "choudoufu live-import (report)", argv: ["choudoufu", "live-import", `-state=${opts.state}`, `-estate=${member.name}`], cwd: member.dir, report: true },
69
106
  ];
70
107
  }
71
108
  const lexicon = opts.lexicon ?? (rung.from === "choudoufu" ? "terraform" : undefined);
@@ -79,9 +116,187 @@ export function followUpRuns(rung, member, opts) {
79
116
  return [];
80
117
  return [{ label: "choudoufu live-import -approve", argv: ["choudoufu", "live-import", `-state=${opts.state}`, `-estate=${member.name}`, "-approve"], cwd: member.dir }];
81
118
  }
119
+ /** Where a promote keeps what a re-run needs, relative to the project root. */
120
+ export const PROMOTE_RECORD_DIR = ".chant/workspace-promote";
121
+ export const PENDING_STAMP_SCHEMA = "chant-workspace-promote-stamp/v1";
122
+ function pendingStampPath(root, member) {
123
+ return join(root, PROMOTE_RECORD_DIR, `${member}.stamp.json`);
124
+ }
125
+ /** The stamp a promote of `member` left failed, or undefined when none is pending. */
126
+ export function readPendingStamp(root, member) {
127
+ const file = pendingStampPath(root, member);
128
+ if (!existsSync(file))
129
+ return undefined;
130
+ try {
131
+ const record = JSON.parse(readFileSync(file, "utf-8"));
132
+ return record.schema === PENDING_STAMP_SCHEMA && record.member === member ? record : undefined;
133
+ }
134
+ catch {
135
+ return undefined;
136
+ }
137
+ }
138
+ function writePendingStamp(root, record) {
139
+ mkdirSync(join(root, PROMOTE_RECORD_DIR), { recursive: true });
140
+ writeFileSync(pendingStampPath(root, record.member), `${JSON.stringify(record, null, 2)}\n`);
141
+ }
142
+ function clearPendingStamp(root, member) {
143
+ rmSync(pendingStampPath(root, member), { force: true });
144
+ }
145
+ /** The `live-import -approve` line to run by hand for a pending stamp. */
146
+ export function stampCommand(member, state) {
147
+ return `\`choudoufu live-import -state=${state} -estate=${member.name} -approve\` in ${member.dir || "."}`;
148
+ }
149
+ /**
150
+ * Run the stamps of the `choudoufu` rung's follow-up in `cwd`, the member's
151
+ * directory in a staging worktree whose `choudoufu init` installed the
152
+ * providers (chant#4492). Keep a {@link PendingStamp} in the tree when one
153
+ * fails and drop it when they pass. The result is `applied`, exit 0 when
154
+ * every stamp passed, else exit 1 with the failed follow-up named.
155
+ */
156
+ async function stampMember(input) {
157
+ const rung = { from: "terraform", to: "choudoufu" };
158
+ let followUpOutput;
159
+ for (const step of followUpRuns(rung, input.member, { state: input.state })) {
160
+ const result = await input.run(step.argv, input.cwd);
161
+ input.ran.push({ label: step.label, exitCode: result.exitCode });
162
+ followUpOutput = result.output;
163
+ if (result.exitCode !== 0) {
164
+ const tail = result.output.trimEnd().split("\n").slice(-20).join("\n");
165
+ input.say(formatError({ message: `${step.label} failed after the patch was applied`, hint: tail }));
166
+ writePendingStamp(input.root, {
167
+ schema: PENDING_STAMP_SCHEMA,
168
+ member: input.member.name,
169
+ dir: input.member.dir,
170
+ state: input.state ?? "",
171
+ failed: step.label,
172
+ at: new Date().toISOString(),
173
+ });
174
+ input.say(formatInfo(`the stamp is kept as pending in ${join(PROMOTE_RECORD_DIR, `${input.member.name}.stamp.json`)}: run the same promote again to retry it, or ${stampCommand(input.member, input.state ?? "<terraform.tfstate>")}`));
175
+ return { exitCode: 1, followUpFailed: step.label, failureOutput: tail, followUpOutput };
176
+ }
177
+ }
178
+ clearPendingStamp(input.root, input.member.name);
179
+ return { exitCode: 0, ...(followUpOutput !== undefined ? { followUpOutput } : {}) };
180
+ }
181
+ /**
182
+ * Retry the stamp an earlier promote of `member` left failed (#4485), or
183
+ * undefined when none is pending. The member is already of kind
184
+ * `choudoufu`: its kind change was written, so only the stamp runs, against
185
+ * `state` when given, else the state the record names. The result is
186
+ * `applied`: exit 0 once the stamp passed, exit 1 with the failed follow-up
187
+ * when it failed again.
188
+ */
189
+ export async function retryPendingStamp(opts) {
190
+ const root = realpathSync(resolve(opts.root));
191
+ const pending = readPendingStamp(root, opts.member);
192
+ if (!pending)
193
+ return undefined;
194
+ const say = (m) => {
195
+ if (!opts.json)
196
+ console.error(m);
197
+ };
198
+ const state = opts.state ? resolve(opts.state) : pending.state || undefined;
199
+ if (!state)
200
+ throw new PromoteError(`${opts.member}'s stamp is pending and its record names no state: pass --state <terraform.tfstate>`);
201
+ say(formatInfo(`${opts.member}: kind choudoufu, but the stamp ${pending.at} failed (${pending.failed}); retrying it`));
202
+ const run = opts.runner ?? spawnRunner;
203
+ const member = { name: opts.member, dir: pending.dir };
204
+ const ran = [];
205
+ const done = { outcome: "applied", member: opts.member, from: "terraform", to: "choudoufu", ran, retriedStamp: true };
206
+ // No staging is left from the promote that wrote the record, so stage one (chant#4492): the stamp reads
207
+ // each resource through its provider, and the member's own directory need not have them installed.
208
+ const staging = openStaging(root);
209
+ try {
210
+ const cwd = join(staging.project, member.dir);
211
+ mirrorMember(staging, member.dir);
212
+ mkdirSync(cwd, { recursive: true });
213
+ const init = stagingInit(member);
214
+ const installed = await run(init.argv, cwd);
215
+ ran.push({ label: init.label, exitCode: installed.exitCode });
216
+ if (installed.exitCode !== 0) {
217
+ const tail = installed.output.trimEnd().split("\n").slice(-20).join("\n");
218
+ say(formatError({ message: `${init.label} failed in the staging worktree, so the stamp was not retried`, hint: tail }));
219
+ say(formatInfo(`the stamp stays pending in ${join(PROMOTE_RECORD_DIR, `${member.name}.stamp.json`)}: run the same promote again to retry it`));
220
+ return { ...done, exitCode: 1, followUpFailed: init.label, failureOutput: tail };
221
+ }
222
+ const stamped = await stampMember({ root, cwd, member, state, run, ran, say });
223
+ if (stamped.exitCode === 0)
224
+ say(formatSuccess(`stamped "${opts.member}"; its promotion to choudoufu is complete`));
225
+ return { ...done, ...stamped };
226
+ }
227
+ finally {
228
+ staging.dispose();
229
+ }
230
+ }
231
+ function openStaging(root) {
232
+ let repo;
233
+ let head;
234
+ try {
235
+ repo = git(root, ["rev-parse", "--show-toplevel"]).trim();
236
+ head = git(root, ["rev-parse", "HEAD"]).trim();
237
+ }
238
+ catch {
239
+ throw new PromoteError("chant workspace promote stages its change in a git worktree, so the project must be in a git repository with at least one commit");
240
+ }
241
+ const projectRel = relative(repo, root).split(sep).join("/");
242
+ const holder = mkdtempSync(join(tmpdir(), "chant-promote-"));
243
+ const worktree = join(holder, "wt");
244
+ const dispose = () => {
245
+ try {
246
+ git(repo, ["worktree", "remove", "--force", worktree]);
247
+ }
248
+ catch {
249
+ // Fall through to the directory removal and a prune.
250
+ }
251
+ rmSync(holder, { recursive: true, force: true });
252
+ try {
253
+ git(repo, ["worktree", "prune"]);
254
+ }
255
+ catch {
256
+ // Nothing to prune.
257
+ }
258
+ };
259
+ try {
260
+ git(repo, ["worktree", "add", "-q", "--detach", worktree, head]);
261
+ }
262
+ catch (err) {
263
+ dispose();
264
+ throw err;
265
+ }
266
+ return { repo, head, projectRel, worktree, project: projectRel ? join(worktree, projectRel) : worktree, dispose };
267
+ }
268
+ /**
269
+ * Bring the tree's uncommitted changes to the member's directory into the
270
+ * staging worktree: a promote applied but not yet committed (the lock file
271
+ * `init` wrote, say) is what the stamp should read. Ignored files stay out.
272
+ */
273
+ function mirrorMember(staging, dir) {
274
+ const path = [staging.projectRel, dir].filter(Boolean).join("/") || ".";
275
+ const diff = git(staging.repo, ["diff", "--binary", "HEAD", "--", path]);
276
+ if (diff.trim()) {
277
+ const patchDir = mkdtempSync(join(tmpdir(), "chant-promote-patch-"));
278
+ try {
279
+ const file = join(patchDir, "member.patch");
280
+ writeFileSync(file, diff);
281
+ git(staging.worktree, ["apply", "--binary", "--whitespace=nowarn", file]);
282
+ }
283
+ finally {
284
+ rmSync(patchDir, { recursive: true, force: true });
285
+ }
286
+ }
287
+ for (const f of git(staging.repo, ["ls-files", "--others", "--exclude-standard", "-z", "--", path]).split("\0").filter(Boolean)) {
288
+ const to = join(staging.worktree, f);
289
+ mkdirSync(dirname(to), { recursive: true });
290
+ copyFileSync(join(staging.repo, f), to);
291
+ }
292
+ }
82
293
  function git(cwd, args) {
83
294
  return execFileSync("git", args, { cwd, encoding: "utf-8", stdio: ["ignore", "pipe", "pipe"], maxBuffer: 256 * 1024 * 1024 });
84
295
  }
296
+ /** What a staging writes that no patch carries: the providers and modules `init` installs (#4461). */
297
+ const NOT_STAGED = [":(exclude,glob)**/.terraform/**"];
298
+ /** The staging step whose output is the adoption report. */
299
+ const REPORT_STEP = "choudoufu live-import (report)";
85
300
  function declarationFile(root) {
86
301
  const f = DECLARATION_FILES.find((n) => existsSync(join(root, n)));
87
302
  if (!f)
@@ -108,77 +323,110 @@ export async function promoteCommand(opts) {
108
323
  if (!opts.json)
109
324
  console.error(m);
110
325
  };
326
+ // #4485: the choudoufu rung is not done until its stamp passed; retry that before any next rung.
327
+ if (found.kind === "choudoufu" && !opts.dryRun) {
328
+ const retried = await retryPendingStamp({ root, member: found.name, ...(opts.state ? { state: opts.state } : {}), ...(opts.json !== undefined ? { json: opts.json } : {}), ...(opts.runner ? { runner: opts.runner } : {}) });
329
+ if (retried) {
330
+ if (opts.json && !opts.nested)
331
+ console.log(JSON.stringify(retried, null, 2));
332
+ return retried;
333
+ }
334
+ }
111
335
  const rung = nextRung(found.kind);
112
336
  if (!rung) {
113
337
  say(formatInfo(`${found.name} is kind ${found.kind}, which has no rung above it on the ladder (terraform or other, choudoufu, chant)`));
114
338
  return { outcome: "top-of-ladder", exitCode: 0, member: found.name, from: found.kind };
115
339
  }
116
340
  const member = { name: found.name, dir: found.dir === "." ? "" : found.dir };
117
- const staging = stagingRuns(rung, member, opts);
341
+ // The staging runs in a worktree, so a relative --state would resolve there.
342
+ const state = opts.state ? resolve(opts.state) : undefined;
343
+ const steps = stagingRuns(rung, member, { ...opts, state });
344
+ const emitJson = opts.json && !opts.nested;
118
345
  let repo;
119
- let head;
120
346
  try {
121
347
  repo = git(root, ["rev-parse", "--show-toplevel"]).trim();
122
- head = git(root, ["rev-parse", "HEAD"]).trim();
348
+ git(root, ["rev-parse", "HEAD"]);
123
349
  }
124
350
  catch {
125
351
  throw new PromoteError("chant workspace promote stages its change in a git worktree, so the project must be in a git repository with at least one commit");
126
352
  }
127
353
  const projectRel = relative(repo, root).split(sep).join("/");
128
354
  const declFile = declarationFile(root);
129
- const watched = [declFile, member.dir].filter(Boolean).map((p) => [projectRel, p].filter(Boolean).join("/"));
355
+ // The declaration is not watched: the kind change is written into the
356
+ // tree's declaration on apply, so another member's uncommitted promotion
357
+ // there does not block this one (#4461).
358
+ const inProject = (p) => [projectRel, p].filter(Boolean).join("/") || ".";
359
+ const watched = [inProject(member.dir), `:(exclude)${inProject(declFile)}`];
130
360
  const dirty = git(repo, ["status", "--porcelain", "--untracked-files=all", "--", ...watched]).split("\n").filter(Boolean);
131
361
  if (dirty.length > 0) {
132
362
  throw new PromoteError(`${found.name} has uncommitted changes (${dirty.slice(0, 5).map((l) => l.slice(3)).join(", ")}). Commit them: promote stages from HEAD and applies its patch to the tree.`);
133
363
  }
134
- const holder = mkdtempSync(join(tmpdir(), "chant-promote-"));
135
- const worktree = join(holder, "wt");
136
- const dispose = () => {
137
- try {
138
- git(repo, ["worktree", "remove", "--force", worktree]);
139
- }
140
- catch {
141
- // Fall through to the directory removal and a prune.
142
- }
143
- rmSync(holder, { recursive: true, force: true });
144
- try {
145
- git(repo, ["worktree", "prune"]);
146
- }
147
- catch {
148
- // Nothing to prune.
149
- }
150
- };
364
+ const staging = openStaging(root);
365
+ const { worktree, project } = staging;
151
366
  try {
152
- git(repo, ["worktree", "add", "-q", "--detach", worktree, head]);
153
- const project = projectRel ? join(worktree, projectRel) : worktree;
154
367
  const ran = [];
155
- for (const step of staging) {
368
+ let adoption;
369
+ let reportOutput;
370
+ for (const step of steps) {
156
371
  const cwd = join(project, step.cwd);
157
372
  mkdirSync(cwd, { recursive: true });
158
373
  const result = await run(step.argv, cwd);
159
374
  ran.push({ label: step.label, exitCode: result.exitCode });
160
375
  if (!opts.json)
161
376
  say(formatInfo(`${step.label}: exit ${result.exitCode}`));
377
+ if (step.label === REPORT_STEP) {
378
+ adoption = parseLiveImportReport(result.output);
379
+ // The report is what the gate asks a person to review, so it is shown, not only counted.
380
+ if (result.exitCode === 0 && result.output.trim())
381
+ say(result.output.trimEnd());
382
+ }
162
383
  if (result.exitCode !== 0) {
163
- say(formatError({ message: `${step.label} failed in the staging worktree`, hint: result.output.trimEnd().split("\n").slice(-20).join("\n") }));
384
+ const tail = result.output.trimEnd().split("\n").slice(-20).join("\n");
385
+ say(formatError({ message: `${step.label} failed in the staging worktree`, hint: tail }));
164
386
  say(formatError({ message: "the promotion was not gated: its checks must pass first. The tree is unchanged." }));
165
- if (opts.json)
166
- console.log(JSON.stringify({ outcome: "checks-failed", member: found.name, ran }, null, 2));
167
- return { outcome: "checks-failed", exitCode: 1, member: found.name, from: rung.from, to: rung.to, ran };
387
+ if (emitJson)
388
+ console.log(JSON.stringify({ outcome: "checks-failed", member: found.name, from: rung.from, to: rung.to, ran, ...(adoption ? { adoption } : {}), failed: { label: step.label, output: tail } }, null, 2));
389
+ return { outcome: "checks-failed", exitCode: 1, member: found.name, from: rung.from, to: rung.to, ran, ...(adoption ? { adoption } : {}), failureOutput: tail };
168
390
  }
391
+ if (step.report)
392
+ reportOutput = result.output;
169
393
  }
394
+ const reportDigest = reportOutput === undefined ? undefined : contentDigest(reportOutput.trimEnd());
395
+ const declRel = inProject(declFile);
396
+ // What the staging wrote outside the declaration: the hunks the apply
397
+ // carries. The kind change is described by from and to. The providers
398
+ // `choudoufu init` installed under `.terraform/` are never part of it.
399
+ git(worktree, ["add", "-A", "--", ".", ...NOT_STAGED]);
400
+ const memberPatch = git(worktree, ["diff", "--cached", "--binary", "HEAD", "--", ".", `:(exclude)${declRel}`]);
170
401
  const declPath = join(project, declFile);
171
402
  writeFileSync(declPath, setMemberKind(readFileSync(declPath, "utf-8"), declFile, found.name, rung.to));
172
- git(worktree, ["add", "-A"]);
403
+ git(worktree, ["add", "-A", "--", ".", ...NOT_STAGED]);
173
404
  const patch = git(worktree, ["diff", "--cached", "--binary", "HEAD"]);
174
- const digest = computePlanDigest(PROMOTE_PLAN_KIND, { member: found.name, from: rung.from, to: rung.to, patch });
175
- const base = { outcome: "dry-run", exitCode: 0, member: found.name, from: rung.from, to: rung.to, digest, patch, ran };
405
+ const digest = computePlanDigest(PROMOTE_PLAN_KIND, {
406
+ member: found.name,
407
+ from: rung.from,
408
+ to: rung.to,
409
+ patch: memberPatch,
410
+ ...(reportDigest ? { report: reportDigest } : {}),
411
+ });
412
+ const base = {
413
+ outcome: "dry-run",
414
+ exitCode: 0,
415
+ member: found.name,
416
+ from: rung.from,
417
+ to: rung.to,
418
+ digest,
419
+ patch,
420
+ ran,
421
+ ...(reportDigest ? { reportDigest } : {}),
422
+ ...(adoption ? { adoption } : {}),
423
+ };
176
424
  const report = (outcome, exitCode, extra = {}) => {
177
- if (opts.json)
178
- console.log(JSON.stringify({ outcome, member: found.name, from: rung.from, to: rung.to, digest, ran, ...extra }, null, 2));
179
- return { ...base, outcome, exitCode };
425
+ if (emitJson)
426
+ console.log(JSON.stringify({ outcome, member: found.name, from: rung.from, to: rung.to, digest, ...(reportDigest ? { reportDigest } : {}), ran, ...(adoption ? { adoption } : {}), ...extra }, null, 2));
427
+ return { ...base, outcome, exitCode, ...extra };
180
428
  };
181
- say(formatInfo(`${found.name}: ${rung.from} to ${rung.to}, patch ${digest}`));
429
+ say(formatInfo(`${found.name}: ${rung.from} to ${rung.to}, patch ${digest}${reportDigest ? `, live-import report ${reportDigest}` : ""}`));
182
430
  if (opts.output)
183
431
  writeFileSync(resolve(opts.output), patch);
184
432
  if (opts.dryRun) {
@@ -188,7 +436,7 @@ export async function promoteCommand(opts) {
188
436
  const check = await evaluateGate(opts.ledger ?? gitGateLedgerPort({ cwd: repo }), {
189
437
  op: WORKSPACE_PROMOTE_GATE_OP,
190
438
  gate: found.name,
191
- description: `promote ${found.name} from ${rung.from} to ${rung.to}`,
439
+ description: `promote ${found.name} from ${rung.from} to ${rung.to}${reportDigest ? ` (live-import report ${reportDigest})` : ""}`,
192
440
  planDigest: digest,
193
441
  ...(opts.now ? { now: opts.now } : {}),
194
442
  });
@@ -205,38 +453,76 @@ export async function promoteCommand(opts) {
205
453
  }
206
454
  return report("gated", PROMOTE_GATED_EXIT, { pending: check.pending });
207
455
  }
208
- const patchDir = mkdtempSync(join(tmpdir(), "chant-promote-patch-"));
209
- try {
210
- const file = join(patchDir, "promote.patch");
211
- writeFileSync(file, patch);
456
+ if (memberPatch.trim()) {
457
+ const patchDir = mkdtempSync(join(tmpdir(), "chant-promote-patch-"));
212
458
  try {
213
- git(repo, ["apply", "--binary", "--whitespace=nowarn", file]);
459
+ const file = join(patchDir, "promote.patch");
460
+ writeFileSync(file, memberPatch);
461
+ try {
462
+ git(repo, ["apply", "--binary", "--whitespace=nowarn", file]);
463
+ }
464
+ catch (err) {
465
+ const stderr = err.stderr?.toString().trim();
466
+ throw new PromoteError(`the approved patch no longer applies to the tree${stderr ? `: ${stderr}` : ""}`);
467
+ }
214
468
  }
215
- catch (err) {
216
- const stderr = err.stderr?.toString().trim();
217
- throw new PromoteError(`the approved patch no longer applies to the tree${stderr ? `: ${stderr}` : ""}`);
469
+ finally {
470
+ rmSync(patchDir, { recursive: true, force: true });
218
471
  }
219
472
  }
220
- finally {
221
- rmSync(patchDir, { recursive: true, force: true });
222
- }
223
- for (const step of followUpRuns(rung, member, opts)) {
224
- const result = await run(step.argv, join(root, step.cwd));
225
- ran.push({ label: step.label, exitCode: result.exitCode });
226
- if (result.exitCode !== 0) {
227
- say(formatError({ message: `${step.label} failed after the patch was applied`, hint: result.output.trimEnd().split("\n").slice(-20).join("\n") }));
228
- return report("applied", 1, { followUpFailed: step.label });
473
+ const treeDecl = join(root, declFile);
474
+ writeFileSync(treeDecl, setMemberKind(readFileSync(treeDecl, "utf-8"), declFile, found.name, rung.to));
475
+ let followUpOutput;
476
+ if (rung.to === "choudoufu") {
477
+ // In the staging's member directory, where `choudoufu init` installed the providers (chant#4492).
478
+ const stamped = await stampMember({ root, cwd: join(project, member.dir), member, state, run, ran, say });
479
+ if (stamped.exitCode !== 0) {
480
+ return report("applied", 1, { followUpFailed: stamped.followUpFailed, failureOutput: stamped.failureOutput, followUpOutput: stamped.followUpOutput });
229
481
  }
482
+ followUpOutput = stamped.followUpOutput;
230
483
  }
231
484
  say(formatSuccess(`applied the approved promotion of "${found.name}" to ${rung.to} (${digest}). Review and commit it.`));
232
- return report("applied", 0);
485
+ return report("applied", 0, followUpOutput === undefined ? {} : { followUpOutput });
233
486
  }
234
487
  finally {
235
- dispose();
488
+ staging.dispose();
236
489
  }
237
490
  }
238
491
  export async function runWorkspacePromote(ctx) {
239
492
  const { args } = ctx;
493
+ const mapped = (args.statePaths ?? []).some((s) => s.includes("="));
494
+ if (args.all || args.stateDir || args.waveSize !== undefined || mapped) {
495
+ // #4461: a workspace of roots, in waves.
496
+ if (args.extraPositional) {
497
+ console.error(formatError({ message: "promote --all takes no member: name roots with --state <member>=<path>, the canary with --canary <member>", hint: USAGE }));
498
+ return 1;
499
+ }
500
+ if (args.output || args.lexicon) {
501
+ console.error(formatError({ message: "--output and --lexicon promote one member; promote --all adopts terraform roots into choudoufu and writes no patch file", hint: USAGE }));
502
+ return 1;
503
+ }
504
+ try {
505
+ const { parseStateMappings, promoteWavesCommand } = await import("./promote-waves.js");
506
+ const result = await promoteWavesCommand({
507
+ root: process.cwd(),
508
+ all: args.all,
509
+ states: parseStateMappings(args.statePaths ?? []),
510
+ stateDir: args.stateDir,
511
+ canary: args.canary,
512
+ waveSize: args.waveSize,
513
+ dryRun: args.dryRun,
514
+ json: args.json,
515
+ });
516
+ return result.exitCode;
517
+ }
518
+ catch (err) {
519
+ if (err instanceof PromoteError) {
520
+ console.error(formatError({ message: err.message, hint: USAGE }));
521
+ return 1;
522
+ }
523
+ throw err;
524
+ }
525
+ }
240
526
  if (!args.extraPositional || args.extraPositional2) {
241
527
  console.error(formatError({ message: "promote takes exactly one member", hint: USAGE }));
242
528
  return 1;
@@ -48,11 +48,18 @@ export declare const REASONS: {
48
48
  readonly "environment-unknown": "--env names an environment the project's chant config does not declare.";
49
49
  readonly "snapshot-unavailable": "--snapshot names a snapshot chant can't replay: none is recorded for the environment, or the ref is one replay does not take.";
50
50
  readonly "build-failed": "The project's build, or one of its build roots, failed, so the graph search would answer over is incomplete.";
51
+ readonly "index-unavailable": "--index names an index version chant can't read: none is recorded under the scope key in the store, or its stamp is not the scope or version asked for.";
51
52
  readonly "snapshot-at-revision": "workspace search was given --snapshot and --at: a snapshot replays the estate as recorded over the source in the working tree, not at a revision.";
52
53
  readonly "member-chant-too-old": "The member's chant predates the document asked for: it has no such command, or prints it without the read contract.";
53
54
  readonly "lexicon-has-no-mapping": "The lexicon ships no capability mapping, so no capability rule can read its resources.";
54
55
  readonly "capability-not-derivable": "The lexicon's capability mapping labels none of the kinds the capability's rule needs.";
55
56
  readonly "lexicon-not-loaded": "The lexicon isn't installed where the chant that wrote the catalog runs, so its mapping wasn't read.";
57
+ readonly "instances-each-value": "The block's count or for_each reads each.value or each.key, which only a plan can count.";
58
+ readonly "instances-merge": "The block's count or for_each calls merge(), which the declared graph does not evaluate.";
59
+ readonly "instances-value-unknown": "The block's count or for_each is a form the graph reads, and the files a plan reads give it no value, or one that keys no instances.";
60
+ readonly "instances-form-unread": "The block's count or for_each is an expression the graph does not read: another function, a for expression, another conditional, arithmetic, or a resource, data or module attribute.";
61
+ readonly "instances-over-limit": "The block would have more than 256 instance nodes, so it is drawn alone.";
62
+ readonly "instances-module-uncounted": "The block is under an expanded module call whose count or for_each the graph cannot count, so none of its instance ids is known.";
56
63
  readonly "ledger-unreadable": "Reading the ledger failed, so nothing from it is listed.";
57
64
  readonly "ledger-malformed": "Some lines of the ledger aren't release records; the rest are listed.";
58
65
  readonly "filter-invalid": "A --where or --since names a field the read doesn't have, an operator its type doesn't take, or a value not of its type; nothing was read.";
@@ -324,6 +331,11 @@ export declare const REASONS: {
324
331
  readonly "chant-dependency": "The member's package.json still has a chant dependency, or a script that calls chant.";
325
332
  readonly "chant-in-ci": "A CI file of the exited member still calls chant.";
326
333
  readonly "declaration-not-other": "The declaration still gives the exited member a kind other than other.";
334
+ readonly "member-required": "workspace drift was given no --member, or more than one: it reads one member.";
335
+ readonly "no-drift-read": "The member's kind has no drift read, such as other, app or a nested workspace.";
336
+ readonly "read-unsupported": "--read names a read the member's engine does not answer, such as state on a chant member.";
337
+ readonly "resource-unsupported": "--resource was given for an engine that cannot read one resource on its own.";
338
+ readonly "env-required": "A chant member's live drift read needs an environment, and --env was not given.";
327
339
  };
328
340
  export type ReasonCode = keyof typeof REASONS;
329
341
  /** Every code, in the order of {@link REASONS}. */
@@ -1 +1 @@
1
- {"version":3,"file":"reason-codes.d.ts","sourceRoot":"","sources":["../../src/workspace/reason-codes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reason-codes.d.ts","sourceRoot":"","sources":["../../src/workspace/reason-codes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,sHAAsH;AACtH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,uHAAuH;AACvH,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAE5C,qFAAqF;AACrF,eAAO,MAAM,OAAO;aAElB,qBAAqB,EAAE,2EAA2E;aAClG,uBAAuB,EAAE,4DAA4D;aACrF,yBAAyB,EAAE,mEAAmE;aAC9F,qBAAqB,EAAE,wFAAwF;aAC/G,mBAAmB,EAAE,kDAAkD;aACvE,gBAAgB,EAAE,iEAAiE;aACnF,qBAAqB,EAAE,sHAAsH;aAE7I,sBAAsB,EAAE,mEAAmE;aAC3F,kBAAkB,EAAE,uBAAuB;aAC3C,kBAAkB,EAAE,wFAAwF;aAE5G,qBAAqB,EAAE,yDAAyD;aAEhF,aAAa,EAAE,wCAAwC;aACvD,cAAc,EAAE,gEAAgE;aAChF,mBAAmB,EAAE,oDAAoD;aACzE,YAAY,EAAE,gEAAgE;aAE9E,cAAc,EAAE,4EAA4E;aAC5F,gBAAgB,EAAE,2KAA2K;aAC7L,mBAAmB,EAAE,2EAA2E;aAChG,wBAAwB,EAAE,sDAAsD;aAEhF,eAAe,EAAE,oGAAoG;aACrH,eAAe,EAAE,kIAAkI;aACnJ,qBAAqB,EAAE,yEAAyE;aAChG,sBAAsB,EAAE,+HAA+H;aACvJ,cAAc,EAAE,8GAA8G;aAC9H,mBAAmB,EAAE,yJAAyJ;aAC9K,sBAAsB,EAAE,mJAAmJ;aAC3K,sBAAsB,EAAE,qHAAqH;aAE7I,wBAAwB,EAAE,wFAAwF;aAClH,0BAA0B,EAAE,wFAAwF;aACpH,oBAAoB,EAAE,sGAAsG;aAE5H,sBAAsB,EAAE,0FAA0F;aAClH,iBAAiB,EAAE,0FAA0F;aAC7G,yBAAyB,EAAE,sIAAsI;aACjK,uBAAuB,EAAE,uLAAuL;aAChN,sBAAsB,EAAE,0EAA0E;aAClG,4BAA4B,EAAE,kIAAkI;aAEhK,mBAAmB,EAAE,0DAA0D;aAC/E,kBAAkB,EAAE,uEAAuE;aAE3F,gBAAgB,EAAE,4IAA4I;aAC9J,eAAe,EAAE,iHAAiH;aAElI,iBAAiB,EAAE,iFAAiF;aACpG,sBAAsB,EAAE,gFAAgF;aACxG,yBAAyB,EAAE,gEAAgE;aAE3F,qBAAqB,EAAE,iFAAiF;aACxG,mBAAmB,EAAE,iFAAiF;aACtG,yBAAyB,EAAE,8GAA8G;aAEzI,oBAAoB,EAAE,sJAAsJ;aAC5K,uBAAuB,EAAE,kFAAkF;aAC3G,qBAAqB,EAAE,uDAAuD;aAC9E,2BAA2B,EAAE,8CAA8C;aAC3E,4BAA4B,EAAE,4EAA4E;aAC1G,2BAA2B,EAAE,8CAA8C;aAC3E,8BAA8B,EAAE,6FAA6F;aAC7H,sBAAsB,EAAE,wGAAwG;aAEhI,uBAAuB,EAAE,kJAAkJ;aAC3K,gCAAgC,EAAE,yFAAyF;aAE3H,aAAa,EAAE,4FAA4F;aAC3G,eAAe,EAAE,iEAAiE;aAClF,aAAa,EAAE,sIAAsI;aACrJ,2BAA2B,EAAE,gHAAgH;aAC7I,oBAAoB,EAAE,qHAAqH;aAC3I,mBAAmB,EAAE,+GAA+G;aACpI,yBAAyB,EAAE,2KAA2K;aAEtM,oBAAoB,EAAE,sFAAsF;aAC5G,yBAAyB,EAAE,sEAAsE;aACjG,kBAAkB,EAAE,+EAA+E;aACnG,2BAA2B,EAAE,oFAAoF;aACjH,oBAAoB,EAAE,wFAAwF;aAC9G,0BAA0B,EAAE,2DAA2D;aACvF,oBAAoB,EAAE,mJAAmJ;aACzK,uBAAuB,EAAE,+IAA+I;aACxK,+BAA+B,EAAE,uJAAuJ;aACxL,uBAAuB,EAAE,gFAAgF;aACzG,yBAAyB,EAAE,8EAA8E;aACzG,mBAAmB,EAAE,mFAAmF;aAExG,mBAAmB,EAAE,6EAA6E;aAClG,YAAY,EAAE,uHAAuH;aAErI,0BAA0B,EAAE,uEAAuE;aACnG,sBAAsB,EAAE,8EAA8E;aACtG,sBAAsB,EAAE,qHAAqH;aAE7I,gBAAgB,EAAE,yFAAyF;aAC3G,cAAc,EAAE,gEAAgE;aAChF,kBAAkB,EAAE,oHAAoH;aACxI,qBAAqB,EAAE,oGAAoG;aAC3H,mBAAmB,EAAE,0GAA0G;aAE/H,cAAc,EAAE,8CAA8C;aAC9D,sBAAsB,EAAE,wGAAwG;aAChI,wBAAwB,EAAE,uIAAuI;aACjK,mBAAmB,EAAE,sLAAsL;aAE3M,mBAAmB,EAAE,sKAAsK;aAC3L,8BAA8B,EAAE,6MAA6M;aAE7O,iBAAiB,EAAE,2DAA2D;aAC9E,cAAc,EAAE,oEAAoE;aACpF,mBAAmB,EAAE,kEAAkE;aACvF,oBAAoB,EAAE,6DAA6D;aACnF,gBAAgB,EAAE,4CAA4C;aAC9D,kBAAkB,EAAE,uEAAuE;aAE3F,qBAAqB,EAAE,gFAAgF;aACvG,qBAAqB,EAAE,8FAA8F;aACrH,kBAAkB,EAAE,yCAAyC;aAC7D,iBAAiB,EAAE,4EAA4E;aAC/F,yBAAyB,EAAE,wGAAwG;aACnI,uBAAuB,EAAE,uFAAuF;aAChH,eAAe,EAAE,gGAAgG;aACjH,oBAAoB,EAAE,qEAAqE;aAC3F,yBAAyB,EAAE,+IAA+I;aAC1K,oBAAoB,EAAE,wEAAwE;aAC9F,sBAAsB,EAAE,6DAA6D;aACrF,oBAAoB,EAAE,0IAA0I;aAChK,0BAA0B,EAAE,4IAA4I;aACxK,6BAA6B,EAAE,uIAAuI;aACtK,uBAAuB,EAAE,+IAA+I;aACxK,oBAAoB,EAAE,6KAA6K;aAEnM,iBAAiB,EAAE,mLAAmL;aACtM,oBAAoB,EAAE,iKAAiK;aACvL,qBAAqB,EAAE,kKAAkK;aAEzL,oBAAoB,EAAE,qMAAqM;aAC3N,kBAAkB,EAAE,yIAAyI;aAC7J,uBAAuB,EAAE,qLAAqL;aAC9M,2BAA2B,EAAE,8PAA8P;aAC3R,eAAe,EAAE,kHAAkH;aACnI,wBAAwB,EAAE,0VAA0V;aAEpX,iBAAiB,EAAE,oFAAoF;aACvG,kBAAkB,EAAE,4EAA4E;aAEhG,mBAAmB,EAAE,4GAA4G;aACjI,gBAAgB,EAAE,kIAAkI;aACpJ,eAAe,EAAE,sEAAsE;aACvF,sBAAsB,EAAE,kFAAkF;aAC1G,sBAAsB,EAAE,mGAAmG;aAC3H,sBAAsB,EAAE,8DAA8D;aACtF,gBAAgB,EAAE,oOAAoO;aACtP,wBAAwB,EAAE,wKAAwK;aAClM,uBAAuB,EAAE,oNAAoN;aAC7O,qBAAqB,EAAE,mIAAmI;aAC1J,0BAA0B,EAAE,kOAAkO;aAC9P,0BAA0B,EAAE,6KAA6K;aAEzM,mBAAmB,EAAE,6FAA6F;aAClH,uBAAuB,EAAE,0HAA0H;aACnJ,oBAAoB,EAAE,yFAAyF;aAE/G,uBAAuB,EAAE,wEAAwE;aACjG,uBAAuB,EAAE,iFAAiF;aAC1G,2BAA2B,EAAE,uGAAuG;aACpI,uBAAuB,EAAE,uEAAuE;aAChG,yBAAyB,EAAE,6GAA6G;aAExI,wBAAwB,EAAE,2FAA2F;aACrH,sBAAsB,EAAE,uGAAuG;aAC/H,mBAAmB,EAAE,qMAAqM;aAE1N,yBAAyB,EAAE,kFAAkF;aAC7G,oBAAoB,EAAE,qKAAqK;aAC3L,oBAAoB,EAAE,2DAA2D;aACjF,oBAAoB,EAAE,+DAA+D;aACrF,kBAAkB,EAAE,wKAAwK;aAC5L,0BAA0B,EAAE,4EAA4E;aACxG,iCAAiC,EAAE,uDAAuD;aAC1F,6BAA6B,EAAE,6GAA6G;aAC5I,2BAA2B,EAAE,4GAA4G;aACzI,0BAA0B,EAAE,iEAAiE;aAC7F,wBAAwB,EAAE,iFAAiF;aAC3G,0BAA0B,EAAE,qEAAqE;aACjG,2BAA2B,EAAE,6FAA6F;aAC1H,6BAA6B,EAAE,uDAAuD;aACtF,+BAA+B,EAAE,8HAA8H;aAC/J,qBAAqB,EAAE,uGAAuG;aAC9H,+BAA+B,EAAE,+GAA+G;aAChJ,6BAA6B,EAAE,6KAA6K;aAE5M,wBAAwB,EAAE,wIAAwI;aAClK,mBAAmB,EAAE,oFAAoF;aACzG,wBAAwB,EAAE,mDAAmD;aAC7E,0BAA0B,EAAE,0GAA0G;aAEtI,kBAAkB,EAAE,kHAAkH;aACtI,qBAAqB,EAAE,yJAAyJ;aAEhL,iBAAiB,EAAE,2HAA2H;aAC9I,uBAAuB,EAAE,sPAAsP;aAE/Q,oBAAoB,EAAE,oFAAoF;aAE1G,4BAA4B,EAAE,4FAA4F;aAC1H,0BAA0B,EAAE,iDAAiD;aAC7E,yBAAyB,EAAE,0EAA0E;aAErG,4BAA4B,EAAE,mIAAmI;aACjK,6BAA6B,EAAE,4FAA4F;aAE3H,4BAA4B,EAAE,qHAAqH;aACnJ,gCAAgC,EAAE,oJAAoJ;aACtL,gCAAgC,EAAE,6FAA6F;aAC/H,mCAAmC,EAAE,6JAA6J;aAElM,wBAAwB,EAAE,6HAA6H;aACvJ,4BAA4B,EAAE,iHAAiH;aAE/I,wBAAwB,EAAE,mEAAmE;aAC7F,wBAAwB,EAAE,mEAAmE;aAC7F,sBAAsB,EAAE,iIAAiI;aAEzJ,0BAA0B,EAAE,4HAA4H;aACxJ,+BAA+B,EAAE,iIAAiI;aAClK,kCAAkC,EAAE,sFAAsF;aAC1H,wBAAwB,EAAE,sFAAsF;aAChH,yBAAyB,EAAE,mIAAmI;aAC9J,gCAAgC,EAAE,wFAAwF;aAC1H,4BAA4B,EAAE,uEAAuE;aACrG,8BAA8B,EAAE,gEAAgE;aAChG,6BAA6B,EAAE,gFAAgF;aAC/G,2BAA2B,EAAE,0DAA0D;aACvF,sBAAsB,EAAE,oEAAoE;aAC5F,8BAA8B,EAAE,yFAAyF;aACzH,0BAA0B,EAAE,6DAA6D;aACzF,wBAAwB,EAAE,2GAA2G;aACrI,8BAA8B,EAAE,8HAA8H;aAC9J,+BAA+B,EAAE,gGAAgG;aACjI,2BAA2B,EAAE,uGAAuG;aAEpI,8BAA8B,EAAE,kHAAkH;aAClJ,0BAA0B,EAAE,gHAAgH;aAC5I,4BAA4B,EAAE,2GAA2G;aACzI,2BAA2B,EAAE,6FAA6F;aAC1H,6BAA6B,EAAE,qHAAqH;aACpJ,yBAAyB,EAAE,wGAAwG;aACnI,8BAA8B,EAAE,wFAAwF;aACxH,8BAA8B,EAAE,qNAAqN;aACrP,6BAA6B,EAAE,iEAAiE;aAChG,uBAAuB,EAAE,mJAAmJ;aAC5K,yBAAyB,EAAE,kHAAkH;aAE7I,yBAAyB,EAAE,6KAA6K;aACxM,2BAA2B,EAAE,6FAA6F;aAE1H,kCAAkC,EAAE,4NAA4N;aAEhQ,oBAAoB,EAAE,2FAA2F;aACjH,0BAA0B,EAAE,8LAA8L;aAE1N,UAAU,EAAE,2FAA2F;aACvG,aAAa,EAAE,2FAA2F;aAE1G,mBAAmB,EAAE,kHAAkH;aACvI,qBAAqB,EAAE,qFAAqF;aAC5G,mBAAmB,EAAE,0DAA0D;aAC/E,kBAAkB,EAAE,oGAAoG;aAExH,wBAAwB,EAAE,uHAAuH;aAEjJ,YAAY,EAAE,6FAA6F;aAC3G,gBAAgB,EAAE,4FAA4F;aAC9G,sBAAsB,EAAE,mFAAmF;aAE3G,2BAA2B,EAAE,gHAAgH;aAC7I,4BAA4B,EAAE,wIAAwI;aACtK,8BAA8B,EAAE,yFAAyF;aACzH,YAAY,EAAE,6EAA6E;aAC3F,qBAAqB,EAAE,8GAA8G;aAErI,YAAY,EAAE,sEAAsE;aACpF,aAAa,EAAE,mDAAmD;aAClE,WAAW,EAAE,qDAAqD;aAClE,gBAAgB,EAAE,iFAAiF;aACnG,uBAAuB,EAAE,0EAA0E;aAEnG,eAAe,EAAE,kHAAkH;aACnI,uBAAuB,EAAE,uIAAuI;aAChK,+BAA+B,EAAE,yEAAyE;aAC1G,wBAAwB,EAAE,0LAA0L;aAEpN,wBAAwB,EAAE,kEAAkE;aAC5F,qBAAqB,EAAE,yFAAyF;aAChH,uBAAuB,EAAE,2KAA2K;aAEpM,eAAe,EAAE,gGAAgG;aACjH,gBAAgB,EAAE,gEAAgE;aAElF,sBAAsB,EAAE,gHAAgH;aACxI,gBAAgB,EAAE,sJAAsJ;aACxK,eAAe,EAAE,8IAA8I;aAC/J,gBAAgB,EAAE,8EAA8E;aAEhG,wBAAwB,EAAE,kEAAkE;aAC5F,qBAAqB,EAAE,yFAAyF;aAEhH,wBAAwB,EAAE,8DAA8D;aACxF,cAAc,EAAE,gGAAgG;aAChH,iBAAiB,EAAE,6FAA6F;aAChH,gBAAgB,EAAE,mIAAmI;aACrJ,wBAAwB,EAAE,yGAAyG;aACnI,oBAAoB,EAAE,6OAA6O;aAEnQ,eAAe,EAAE,6GAA6G;aAC9H,UAAU,EAAE,2FAA2F;aACvG,sBAAsB,EAAE,iFAAiF;aACzG,kBAAkB,EAAE,gFAAgF;aACpG,UAAU,EAAE,yFAAyF;aACrG,iBAAiB,EAAE,4FAA4F;aAC/G,oBAAoB,EAAE,iIAAiI;aAEvJ,qBAAqB,EAAE,qGAAqG;aAC5H,mBAAmB,EAAE,4GAA4G;aAEjI,yBAAyB,EAAE,qHAAqH;aAChJ,uBAAuB,EAAE,8IAA8I;aAEvK,sBAAsB,EAAE,uFAAuF;aAC/G,iBAAiB,EAAE,8HAA8H;aACjJ,sBAAsB,EAAE,wDAAwD;aAChF,kBAAkB,EAAE,yHAAyH;aAC7I,wBAAwB,EAAE,0FAA0F;aACpH,kBAAkB,EAAE,gHAAgH;aACpI,uBAAuB,EAAE,oHAAoH;aAC7I,4BAA4B,EAAE,0GAA0G;aACxI,kCAAkC,EAAE,mHAAmH;aACvJ,4BAA4B,EAAE,0HAA0H;aAExJ,yBAAyB,EAAE,uGAAuG;aAClI,qBAAqB,EAAE,oDAAoD;aAC3E,kBAAkB,EAAE,+GAA+G;aACnI,oBAAoB,EAAE,sFAAsF;aAC5G,uBAAuB,EAAE,kEAAkE;aAC3F,4BAA4B,EAAE,kIAAkI;aAChK,0BAA0B,EAAE,sEAAsE;aAClG,oBAAoB,EAAE,mLAAmL;aACzM,sBAAsB,EAAE,8MAA8M;aACtO,qBAAqB,EAAE,sFAAsF;aAE7G,cAAc,EAAE,iCAAiC;aACjD,kBAAkB,EAAE,sDAAsD;aAE1E,aAAa,EAAE,4EAA4E;aAC3F,YAAY,EAAE,mGAAmG;aACjH,qBAAqB,EAAE,mEAAmE;aAC1F,aAAa,EAAE,wEAAwE;aACvF,yBAAyB,EAAE,sDAAsD;aACjF,gBAAgB,EAAE,mDAAmD;aACrE,mBAAmB,EAAE,oEAAoE;aACzF,mBAAmB,EAAE,iEAAiE;aACtF,mBAAmB,EAAE,sDAAsD;aAC3E,kBAAkB,EAAE,uFAAuF;aAC3G,aAAa,EAAE,mDAAmD;aAClE,uBAAuB,EAAE,wEAAwE;aAEjG,iBAAiB,EAAE,+EAA+E;aAClG,eAAe,EAAE,gFAAgF;aACjG,kBAAkB,EAAE,2FAA2F;aAC/G,sBAAsB,EAAE,8EAA8E;aACtG,cAAc,EAAE,iFAAiF;CACzF,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,CAAC;AAE9C,mDAAmD;AACnD,eAAO,MAAM,YAAY,EAA2B,UAAU,EAAE,CAAC;AAEjE,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE;AAED;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,MAAM,IAAI,MAAM,EAAE,CAAC;AAEtD,eAAO,MAAM,WAAW,QAAkD,CAAC;AAE3E,2HAA2H;AAC3H,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,IAAI,UAAU,CAI/E"}
@@ -54,12 +54,20 @@ export const REASONS = {
54
54
  "environment-unknown": "--env names an environment the project's chant config does not declare.",
55
55
  "snapshot-unavailable": "--snapshot names a snapshot chant can't replay: none is recorded for the environment, or the ref is one replay does not take.",
56
56
  "build-failed": "The project's build, or one of its build roots, failed, so the graph search would answer over is incomplete.",
57
+ "index-unavailable": "--index names an index version chant can't read: none is recorded under the scope key in the store, or its stamp is not the scope or version asked for.",
57
58
  "snapshot-at-revision": "workspace search was given --snapshot and --at: a snapshot replays the estate as recorded over the source in the working tree, not at a revision.",
58
59
  "member-chant-too-old": "The member's chant predates the document asked for: it has no such command, or prints it without the read contract.",
59
60
  // the capabilities catalog (#4375): why a lexicon can't supply a capability.
60
61
  "lexicon-has-no-mapping": "The lexicon ships no capability mapping, so no capability rule can read its resources.",
61
62
  "capability-not-derivable": "The lexicon's capability mapping labels none of the kinds the capability's rule needs.",
62
63
  "lexicon-not-loaded": "The lexicon isn't installed where the chant that wrote the catalog runs, so its mapping wasn't read.",
64
+ // Why the graph leaves an expanded terraform block as one node (graph, #4489): nodes[].instanceRollup.code.
65
+ "instances-each-value": "The block's count or for_each reads each.value or each.key, which only a plan can count.",
66
+ "instances-merge": "The block's count or for_each calls merge(), which the declared graph does not evaluate.",
67
+ "instances-value-unknown": "The block's count or for_each is a form the graph reads, and the files a plan reads give it no value, or one that keys no instances.",
68
+ "instances-form-unread": "The block's count or for_each is an expression the graph does not read: another function, a for expression, another conditional, arithmetic, or a resource, data or module attribute.",
69
+ "instances-over-limit": "The block would have more than 256 instance nodes, so it is drawn alone.",
70
+ "instances-module-uncounted": "The block is under an expanded module call whose count or for_each the graph cannot count, so none of its instance ids is known.",
63
71
  // A ledger status can't fully read.
64
72
  "ledger-unreadable": "Reading the ledger failed, so nothing from it is listed.",
65
73
  "ledger-malformed": "Some lines of the ledger aren't release records; the rest are listed.",
@@ -387,6 +395,12 @@ export const REASONS = {
387
395
  "chant-dependency": "The member's package.json still has a chant dependency, or a script that calls chant.",
388
396
  "chant-in-ci": "A CI file of the exited member still calls chant.",
389
397
  "declaration-not-other": "The declaration still gives the exited member a kind other than other.",
398
+ // workspace drift (behold#995): why a member's drift read could not run. records is then empty.
399
+ "member-required": "workspace drift was given no --member, or more than one: it reads one member.",
400
+ "no-drift-read": "The member's kind has no drift read, such as other, app or a nested workspace.",
401
+ "read-unsupported": "--read names a read the member's engine does not answer, such as state on a chant member.",
402
+ "resource-unsupported": "--resource was given for an engine that cannot read one resource on its own.",
403
+ "env-required": "A chant member's live drift read needs an environment, and --env was not given.",
390
404
  };
391
405
  /** Every code, in the order of {@link REASONS}. */
392
406
  export const REASON_CODES = Object.keys(REASONS);