@intentius/chant 0.124.51 → 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 (593) 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 +17 -3
  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 +224 -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/covered-round.d.ts +173 -0
  120. package/dist/components/covered-round.d.ts.map +1 -0
  121. package/dist/components/covered-round.js +200 -0
  122. package/dist/components/declared-reads.d.ts +38 -0
  123. package/dist/components/declared-reads.d.ts.map +1 -0
  124. package/dist/components/declared-reads.js +131 -0
  125. package/dist/components/deploy-units.d.ts.map +1 -1
  126. package/dist/components/deploy-units.js +4 -0
  127. package/dist/components/driver.d.ts +42 -1
  128. package/dist/components/driver.d.ts.map +1 -1
  129. package/dist/components/driver.js +74 -3
  130. package/dist/components/fan-out-run.d.ts +23 -1
  131. package/dist/components/fan-out-run.d.ts.map +1 -1
  132. package/dist/components/fan-out-run.js +82 -14
  133. package/dist/components/fan-out-support.d.ts +6 -0
  134. package/dist/components/fan-out-support.d.ts.map +1 -1
  135. package/dist/components/fan-out-support.js +4 -1
  136. package/dist/components/fan-out.d.ts +28 -0
  137. package/dist/components/fan-out.d.ts.map +1 -1
  138. package/dist/components/groups.d.ts +229 -0
  139. package/dist/components/groups.d.ts.map +1 -0
  140. package/dist/components/groups.js +760 -0
  141. package/dist/components/index.d.ts +7 -2
  142. package/dist/components/index.d.ts.map +1 -1
  143. package/dist/components/index.js +5 -0
  144. package/dist/components/plan-shape-conformance.d.ts +48 -0
  145. package/dist/components/plan-shape-conformance.d.ts.map +1 -0
  146. package/dist/components/plan-shape-conformance.js +122 -0
  147. package/dist/components/pr-run.d.ts +62 -7
  148. package/dist/components/pr-run.d.ts.map +1 -1
  149. package/dist/components/pr-run.js +354 -53
  150. package/dist/components/promote-rounds.d.ts +9 -0
  151. package/dist/components/promote-rounds.d.ts.map +1 -1
  152. package/dist/components/promote-rounds.js +23 -2
  153. package/dist/components/promote.d.ts +17 -0
  154. package/dist/components/promote.d.ts.map +1 -1
  155. package/dist/components/promote.js +36 -6
  156. package/dist/components/release-gate.d.ts +23 -1
  157. package/dist/components/release-gate.d.ts.map +1 -1
  158. package/dist/components/release-gate.js +97 -33
  159. package/dist/components/run-groups.d.ts +58 -0
  160. package/dist/components/run-groups.d.ts.map +1 -0
  161. package/dist/components/run-groups.js +78 -0
  162. package/dist/components/starter-plugin.d.ts +1 -0
  163. package/dist/components/starter-plugin.d.ts.map +1 -1
  164. package/dist/components/starter-plugin.js +6 -1
  165. package/dist/components/verbs/index.d.ts +1 -0
  166. package/dist/components/verbs/index.d.ts.map +1 -1
  167. package/dist/components/verbs/index.js +1 -0
  168. package/dist/components/verbs/member-outputs.d.ts +187 -0
  169. package/dist/components/verbs/member-outputs.d.ts.map +1 -0
  170. package/dist/components/verbs/member-outputs.js +218 -0
  171. package/dist/components/wave-plan.d.ts +2 -0
  172. package/dist/components/wave-plan.d.ts.map +1 -1
  173. package/dist/components/wave-plan.js +4 -1
  174. package/dist/config.d.ts +60 -0
  175. package/dist/config.d.ts.map +1 -1
  176. package/dist/config.js +27 -0
  177. package/dist/deep-observation.d.ts +1 -13
  178. package/dist/deep-observation.d.ts.map +1 -1
  179. package/dist/deep-observation.js +5 -22
  180. package/dist/drift-record.d.ts +542 -0
  181. package/dist/drift-record.d.ts.map +1 -0
  182. package/dist/drift-record.js +886 -0
  183. package/dist/engine-facts.d.ts +144 -0
  184. package/dist/engine-facts.d.ts.map +1 -0
  185. package/dist/engine-facts.js +14 -0
  186. package/dist/graph-ir.d.ts +153 -2
  187. package/dist/graph-ir.d.ts.map +1 -1
  188. package/dist/graph-ir.js +224 -6
  189. package/dist/graph-refs.d.ts +145 -0
  190. package/dist/graph-refs.d.ts.map +1 -1
  191. package/dist/graph-refs.js +305 -0
  192. package/dist/graph-schema/fixtures/adopt.json +15 -0
  193. package/dist/graph-schema/fixtures/choudoufu.engine-graph.json +169 -0
  194. package/dist/graph-schema/fixtures/index.json +68 -0
  195. package/dist/graph-schema/fixtures/plunge.engine-graph.json +158 -0
  196. package/dist/graph-schema/fixtures.d.ts +23 -0
  197. package/dist/graph-schema/fixtures.d.ts.map +1 -0
  198. package/dist/graph-schema/fixtures.js +246 -0
  199. package/dist/graph-schema/generate.d.ts +15 -0
  200. package/dist/graph-schema/generate.d.ts.map +1 -0
  201. package/dist/graph-schema/generate.js +267 -0
  202. package/dist/graph-schema/graph.schema.json +1387 -0
  203. package/dist/health.schema.json +2 -1
  204. package/dist/identity.d.ts.map +1 -1
  205. package/dist/identity.js +2 -0
  206. package/dist/index.d.ts +1 -0
  207. package/dist/index.d.ts.map +1 -1
  208. package/dist/index.js +2 -0
  209. package/dist/instance-nodes.d.ts +159 -0
  210. package/dist/instance-nodes.d.ts.map +1 -0
  211. package/dist/instance-nodes.js +231 -0
  212. package/dist/lexicon.d.ts +72 -0
  213. package/dist/lexicon.d.ts.map +1 -1
  214. package/dist/lifecycle/adoption-file.d.ts +56 -0
  215. package/dist/lifecycle/adoption-file.d.ts.map +1 -0
  216. package/dist/lifecycle/adoption-file.js +123 -0
  217. package/dist/lifecycle/cloud-index.d.ts +186 -0
  218. package/dist/lifecycle/cloud-index.d.ts.map +1 -0
  219. package/dist/lifecycle/cloud-index.js +618 -0
  220. package/dist/lifecycle/derive-edges.d.ts +59 -0
  221. package/dist/lifecycle/derive-edges.d.ts.map +1 -0
  222. package/dist/lifecycle/derive-edges.js +126 -0
  223. package/dist/lifecycle/git.d.ts +10 -9
  224. package/dist/lifecycle/git.d.ts.map +1 -1
  225. package/dist/lifecycle/git.js +7 -1
  226. package/dist/lifecycle/identity-match.d.ts +133 -0
  227. package/dist/lifecycle/identity-match.d.ts.map +1 -0
  228. package/dist/lifecycle/identity-match.js +147 -0
  229. package/dist/lifecycle/index-diff.d.ts +224 -0
  230. package/dist/lifecycle/index-diff.d.ts.map +1 -0
  231. package/dist/lifecycle/index-diff.js +327 -0
  232. package/dist/lifecycle/index-document.d.ts +130 -0
  233. package/dist/lifecycle/index-document.d.ts.map +1 -0
  234. package/dist/lifecycle/index-document.js +189 -0
  235. package/dist/lifecycle/index-drift.d.ts +121 -0
  236. package/dist/lifecycle/index-drift.d.ts.map +1 -0
  237. package/dist/lifecycle/index-drift.js +178 -0
  238. package/dist/lifecycle/index-import.d.ts +168 -0
  239. package/dist/lifecycle/index-import.d.ts.map +1 -0
  240. package/dist/lifecycle/index-import.js +515 -0
  241. package/dist/lifecycle/index-join.d.ts +129 -0
  242. package/dist/lifecycle/index-join.d.ts.map +1 -0
  243. package/dist/lifecycle/index-join.js +248 -0
  244. package/dist/lifecycle/index.d.ts +4 -0
  245. package/dist/lifecycle/index.d.ts.map +1 -1
  246. package/dist/lifecycle/index.js +4 -0
  247. package/dist/lifecycle/observation-baseline.d.ts +61 -21
  248. package/dist/lifecycle/observation-baseline.d.ts.map +1 -1
  249. package/dist/lifecycle/observation-baseline.js +144 -19
  250. package/dist/lifecycle/observe.d.ts.map +1 -1
  251. package/dist/lifecycle/observe.js +6 -1
  252. package/dist/lifecycle/query.d.ts +45 -4
  253. package/dist/lifecycle/query.d.ts.map +1 -1
  254. package/dist/lifecycle/query.js +89 -7
  255. package/dist/lifecycle/replay.d.ts +10 -3
  256. package/dist/lifecycle/replay.d.ts.map +1 -1
  257. package/dist/lifecycle/replay.js +10 -6
  258. package/dist/lifecycle/scenario.d.ts +4 -3
  259. package/dist/lifecycle/scenario.d.ts.map +1 -1
  260. package/dist/lifecycle/snapshot-store-fake.d.ts +9 -0
  261. package/dist/lifecycle/snapshot-store-fake.d.ts.map +1 -0
  262. package/dist/lifecycle/snapshot-store-fake.js +21 -0
  263. package/dist/lifecycle/snapshot-store-s3.d.ts +102 -0
  264. package/dist/lifecycle/snapshot-store-s3.d.ts.map +1 -0
  265. package/dist/lifecycle/snapshot-store-s3.js +254 -0
  266. package/dist/lifecycle/snapshot-store.d.ts +170 -0
  267. package/dist/lifecycle/snapshot-store.d.ts.map +1 -0
  268. package/dist/lifecycle/snapshot-store.js +832 -0
  269. package/dist/lifecycle/snapshot.d.ts +11 -0
  270. package/dist/lifecycle/snapshot.d.ts.map +1 -1
  271. package/dist/lifecycle/snapshot.js +18 -5
  272. package/dist/lifecycle/type-listing.d.ts +148 -0
  273. package/dist/lifecycle/type-listing.d.ts.map +1 -0
  274. package/dist/lifecycle/type-listing.js +166 -0
  275. package/dist/lint/component-checks.d.ts +15 -1
  276. package/dist/lint/component-checks.d.ts.map +1 -1
  277. package/dist/lint/component-checks.js +1 -0
  278. package/dist/lint/presets/relaxed.json +2 -1
  279. package/dist/lint/presets/strict.json +2 -1
  280. package/dist/lint/rules/__fixtures__/comp/comp008/fail/dns.component.d.ts +4 -0
  281. package/dist/lint/rules/__fixtures__/comp/comp008/fail/dns.component.d.ts.map +1 -0
  282. package/dist/lint/rules/__fixtures__/comp/comp008/fail/dns.component.js +13 -0
  283. package/dist/lint/rules/__fixtures__/comp/comp008/pass/dns.component.d.ts +4 -0
  284. package/dist/lint/rules/__fixtures__/comp/comp008/pass/dns.component.d.ts.map +1 -0
  285. package/dist/lint/rules/__fixtures__/comp/comp008/pass/dns.component.js +8 -0
  286. package/dist/lint/rules/comp/comp008-applies-signal-only-root.d.ts +33 -0
  287. package/dist/lint/rules/comp/comp008-applies-signal-only-root.d.ts.map +1 -0
  288. package/dist/lint/rules/comp/comp008-applies-signal-only-root.js +123 -0
  289. package/dist/lint/rules/comp/index.d.ts +2 -1
  290. package/dist/lint/rules/comp/index.d.ts.map +1 -1
  291. package/dist/lint/rules/comp/index.js +4 -1
  292. package/dist/observation.d.ts +19 -2
  293. package/dist/observation.d.ts.map +1 -1
  294. package/dist/observation.js +18 -1
  295. package/dist/op/activities/activity-contracts.d.ts +1 -1
  296. package/dist/op/activities/activity-contracts.js +1 -1
  297. package/dist/op/activities/change-set.d.ts +6 -4
  298. package/dist/op/activities/change-set.d.ts.map +1 -1
  299. package/dist/op/activities/change-set.js +4 -2
  300. package/dist/op/activity-failure.d.ts +27 -0
  301. package/dist/op/activity-failure.d.ts.map +1 -1
  302. package/dist/op/activity-failure.js +31 -0
  303. package/dist/op/index.d.ts +2 -1
  304. package/dist/op/index.d.ts.map +1 -1
  305. package/dist/op/index.js +1 -1
  306. package/dist/op/local-executor.d.ts +5 -1
  307. package/dist/op/local-executor.d.ts.map +1 -1
  308. package/dist/op/local-executor.js +22 -8
  309. package/dist/pr-loop.d.ts +92 -3
  310. package/dist/pr-loop.d.ts.map +1 -1
  311. package/dist/pr-loop.js +62 -3
  312. package/dist/pulumi-urn.d.ts +101 -0
  313. package/dist/pulumi-urn.d.ts.map +1 -0
  314. package/dist/pulumi-urn.js +131 -0
  315. package/dist/release-floors.d.ts +23 -0
  316. package/dist/release-floors.d.ts.map +1 -0
  317. package/dist/release-floors.js +22 -0
  318. package/dist/sensitive-key.d.ts +23 -0
  319. package/dist/sensitive-key.d.ts.map +1 -0
  320. package/dist/sensitive-key.js +31 -0
  321. package/dist/wave-runtime.mjs +234 -234
  322. package/dist/workspace/adoption-report.d.ts +53 -0
  323. package/dist/workspace/adoption-report.d.ts.map +1 -0
  324. package/dist/workspace/adoption-report.js +76 -0
  325. package/dist/workspace/capabilities-contract.d.ts +7 -0
  326. package/dist/workspace/capabilities-contract.d.ts.map +1 -1
  327. package/dist/workspace/capabilities-contract.js +2 -1
  328. package/dist/workspace/capabilities.schema.json +98 -0
  329. package/dist/workspace/change-set.schema.json +42 -3
  330. package/dist/workspace/ci-cloud-identity.d.ts +13 -1
  331. package/dist/workspace/ci-cloud-identity.d.ts.map +1 -1
  332. package/dist/workspace/ci-cloud-identity.js +30 -1
  333. package/dist/workspace/compose-graph.d.ts +10 -1
  334. package/dist/workspace/compose-graph.d.ts.map +1 -1
  335. package/dist/workspace/compose-graph.js +6 -1
  336. package/dist/workspace/conformance/index.d.ts +1 -1
  337. package/dist/workspace/conformance/index.d.ts.map +1 -1
  338. package/dist/workspace/conformance/index.js +6 -1
  339. package/dist/workspace/drift-cli.d.ts +81 -0
  340. package/dist/workspace/drift-cli.d.ts.map +1 -0
  341. package/dist/workspace/drift-cli.js +317 -0
  342. package/dist/workspace/drift.schema.json +672 -0
  343. package/dist/workspace/graph-cli.d.ts +2 -0
  344. package/dist/workspace/graph-cli.d.ts.map +1 -1
  345. package/dist/workspace/graph-cli.js +3 -0
  346. package/dist/workspace/graph.schema.json +72 -0
  347. package/dist/workspace/init.d.ts +5 -1
  348. package/dist/workspace/init.d.ts.map +1 -1
  349. package/dist/workspace/init.js +55 -9
  350. package/dist/workspace/ledger.schema.json +1 -1
  351. package/dist/workspace/nested-graph.d.ts.map +1 -1
  352. package/dist/workspace/nested-graph.js +2 -0
  353. package/dist/workspace/pr-report.schema.json +76 -3
  354. package/dist/workspace/promote-waves.d.ts +112 -0
  355. package/dist/workspace/promote-waves.d.ts.map +1 -0
  356. package/dist/workspace/promote-waves.js +290 -0
  357. package/dist/workspace/promote.d.ts +84 -2
  358. package/dist/workspace/promote.d.ts.map +1 -1
  359. package/dist/workspace/promote.js +347 -61
  360. package/dist/workspace/reason-codes.d.ts +12 -0
  361. package/dist/workspace/reason-codes.d.ts.map +1 -1
  362. package/dist/workspace/reason-codes.js +14 -0
  363. package/dist/workspace/search-contract.d.ts +3 -3
  364. package/dist/workspace/search-contract.d.ts.map +1 -1
  365. package/dist/workspace/search-contract.js +2 -0
  366. package/dist/workspace/search.schema.json +103 -5
  367. package/package.json +14 -1
  368. package/src/__fixtures__/drift-record/README.md +58 -0
  369. package/src/__fixtures__/drift-record/choudoufu-cone.ndjson +4 -0
  370. package/src/__fixtures__/drift-record/choudoufu-resource.ndjson +3 -0
  371. package/src/__fixtures__/drift-record/component-status-ledger.json +65 -0
  372. package/src/__fixtures__/drift-record/component-status.json +91 -0
  373. package/src/__fixtures__/drift-record/deep-diff.json +259 -0
  374. package/src/__fixtures__/drift-record/lifecycle-diff-live.json +825 -0
  375. package/src/__fixtures__/drift-record/live-diff.json +125 -0
  376. package/src/audit/discover.e2e.test.ts +14 -0
  377. package/src/audit/discover.ts +3 -1
  378. package/src/behaviour.ts +1 -1
  379. package/src/capabilities/templates.json +145 -0
  380. package/src/capabilities/templates.test.ts +212 -0
  381. package/src/capabilities/templates.ts +204 -0
  382. package/src/change-set-bundle.test.ts +83 -0
  383. package/src/change-set-graph.ts +80 -9
  384. package/src/change-set.test.ts +24 -0
  385. package/src/change-set.ts +77 -14
  386. package/src/ci-identity-targets.test.ts +23 -0
  387. package/src/ci-identity.ts +10 -4
  388. package/src/cli/commands/import-index.test.ts +117 -0
  389. package/src/cli/commands/import-index.ts +265 -0
  390. package/src/cli/commands/lint.ts +4 -2
  391. package/src/cli/handlers/components.test.ts +9 -0
  392. package/src/cli/handlers/components.ts +12 -2
  393. package/src/cli/handlers/fan-out.ts +17 -3
  394. package/src/cli/handlers/graph.test.ts +42 -0
  395. package/src/cli/handlers/graph.ts +26 -4
  396. package/src/cli/handlers/index-cloud.ts +32 -0
  397. package/src/cli/handlers/index-diff.test.ts +68 -0
  398. package/src/cli/handlers/index-diff.ts +146 -0
  399. package/src/cli/handlers/ledger-root-member.test.ts +161 -0
  400. package/src/cli/handlers/lifecycle-drift.ts +68 -0
  401. package/src/cli/handlers/lifecycle.test.ts +33 -11
  402. package/src/cli/handlers/lifecycle.ts +205 -30
  403. package/src/cli/handlers/misc.ts +73 -0
  404. package/src/cli/handlers/pr-waves-blocked.test.ts +37 -2
  405. package/src/cli/handlers/pr.ts +16 -3
  406. package/src/cli/handlers/promote.test.ts +64 -0
  407. package/src/cli/handlers/promote.ts +81 -6
  408. package/src/cli/handlers/query.ts +27 -4
  409. package/src/cli/handlers/run-declared-reads-cli.test.ts +187 -0
  410. package/src/cli/handlers/run-groups-cli.test.ts +229 -0
  411. package/src/cli/handlers/scenario.test.ts +13 -0
  412. package/src/cli/handlers/scenario.ts +8 -7
  413. package/src/cli/handlers/search-index.test.ts +255 -0
  414. package/src/cli/handlers/search-json.test.ts +1 -1
  415. package/src/cli/handlers/search-ownership.test.ts +194 -0
  416. package/src/cli/handlers/search.ts +271 -38
  417. package/src/cli/main.test.ts +7 -0
  418. package/src/cli/main.ts +56 -1
  419. package/src/cli/mcp/lifecycle-tools.ts +3 -2
  420. package/src/cli/mcp/resource-handlers.ts +4 -3
  421. package/src/cli/mcp/workspace-tools.ts +1 -1
  422. package/src/cli/parse-args.ts +40 -2
  423. package/src/cli/registry.ts +19 -1
  424. package/src/cloud-lister/aws.test.ts +202 -0
  425. package/src/cloud-lister/aws.ts +226 -0
  426. package/src/cloud-lister/azure.test.ts +132 -0
  427. package/src/cloud-lister/azure.ts +142 -0
  428. package/src/cloud-lister/common.ts +115 -0
  429. package/src/cloud-lister/credentials.ts +110 -0
  430. package/src/cloud-lister/fakes.ts +66 -0
  431. package/src/cloud-lister/gcp.test.ts +121 -0
  432. package/src/cloud-lister/gcp.ts +159 -0
  433. package/src/cloud-lister/guard.test.ts +198 -0
  434. package/src/cloud-lister/guard.ts +111 -0
  435. package/src/cloud-lister/ids.ts +54 -0
  436. package/src/cloud-lister/index.ts +134 -0
  437. package/src/cloud-lister/kubernetes.test.ts +160 -0
  438. package/src/cloud-lister/kubernetes.ts +284 -0
  439. package/src/cloud-lister/markers.ts +74 -0
  440. package/src/cloud-lister/mask.ts +77 -0
  441. package/src/cloud-lister/shape.test.ts +81 -0
  442. package/src/cloud-lister/sigv4.ts +70 -0
  443. package/src/cloud-lister/transport.ts +118 -0
  444. package/src/cloud-lister/types.ts +135 -0
  445. package/src/components/capability-plugin-loader.ts +4 -0
  446. package/src/components/capability-plugin.ts +10 -0
  447. package/src/components/capability.ts +238 -0
  448. package/src/components/cli-support.ts +70 -14
  449. package/src/components/covered-round.test.ts +166 -0
  450. package/src/components/covered-round.ts +293 -0
  451. package/src/components/declared-reads.test.ts +103 -0
  452. package/src/components/declared-reads.ts +134 -0
  453. package/src/components/deploy-units.ts +4 -0
  454. package/src/components/driver.ts +101 -4
  455. package/src/components/fan-out-run.ts +95 -15
  456. package/src/components/fan-out-support.ts +10 -1
  457. package/src/components/fan-out.ts +30 -0
  458. package/src/components/groups.test.ts +320 -0
  459. package/src/components/groups.ts +880 -0
  460. package/src/components/index.ts +59 -0
  461. package/src/components/plan-shape-conformance.ts +130 -0
  462. package/src/components/pr-env-run-bundle.test.ts +2 -0
  463. package/src/components/pr-run.test.ts +728 -4
  464. package/src/components/pr-run.ts +395 -55
  465. package/src/components/promote-rounds.ts +25 -2
  466. package/src/components/promote.ts +55 -5
  467. package/src/components/registry.test.ts +1 -1
  468. package/src/components/release-gate.ts +115 -30
  469. package/src/components/release-groups.test.ts +362 -0
  470. package/src/components/run-groups.ts +113 -0
  471. package/src/components/starter-plugin.ts +6 -0
  472. package/src/components/verbs/index.ts +1 -0
  473. package/src/components/verbs/member-outputs.test.ts +205 -0
  474. package/src/components/verbs/member-outputs.ts +308 -0
  475. package/src/components/wave-plan.ts +5 -2
  476. package/src/config.ts +44 -0
  477. package/src/deep-observation.ts +5 -23
  478. package/src/drift-record.test.ts +596 -0
  479. package/src/drift-record.ts +1206 -0
  480. package/src/engine-facts.guard.test.ts +111 -0
  481. package/src/engine-facts.test.ts +178 -0
  482. package/src/engine-facts.ts +154 -0
  483. package/src/gated-waves-bundle.test.ts +2 -0
  484. package/src/graph-ir-live.test.ts +92 -0
  485. package/src/graph-ir.ts +317 -7
  486. package/src/graph-refs.ts +416 -0
  487. package/src/graph-schema/fixtures/adopt.json +15 -0
  488. package/src/graph-schema/fixtures/choudoufu.engine-graph.json +169 -0
  489. package/src/graph-schema/fixtures/index.json +68 -0
  490. package/src/graph-schema/fixtures/plunge.engine-graph.json +158 -0
  491. package/src/graph-schema/fixtures.ts +267 -0
  492. package/src/graph-schema/generate.ts +263 -0
  493. package/src/graph-schema/graph-schema.test.ts +153 -0
  494. package/src/graph-schema/graph.schema.json +1387 -0
  495. package/src/health.schema.json +2 -1
  496. package/src/identity.ts +2 -0
  497. package/src/index.ts +2 -0
  498. package/src/instance-nodes.ts +288 -0
  499. package/src/lexicon.ts +76 -0
  500. package/src/lifecycle/__fixtures__/index-diff/20261026T120000Z-aaaaaaaaaaaa.json +149 -0
  501. package/src/lifecycle/__fixtures__/index-diff/20261026T130000Z-bbbbbbbbbbbb.json +127 -0
  502. package/src/lifecycle/adoption-file.test.ts +100 -0
  503. package/src/lifecycle/adoption-file.ts +154 -0
  504. package/src/lifecycle/cloud-index.test.ts +517 -0
  505. package/src/lifecycle/cloud-index.ts +736 -0
  506. package/src/lifecycle/derive-edges.test.ts +193 -0
  507. package/src/lifecycle/derive-edges.ts +182 -0
  508. package/src/lifecycle/git.ts +10 -4
  509. package/src/lifecycle/identity-match.test.ts +308 -0
  510. package/src/lifecycle/identity-match.ts +257 -0
  511. package/src/lifecycle/index-diff.test.ts +198 -0
  512. package/src/lifecycle/index-diff.ts +476 -0
  513. package/src/lifecycle/index-document.test.ts +64 -0
  514. package/src/lifecycle/index-document.ts +299 -0
  515. package/src/lifecycle/index-drift.test.ts +191 -0
  516. package/src/lifecycle/index-drift.ts +304 -0
  517. package/src/lifecycle/index-import.test.ts +255 -0
  518. package/src/lifecycle/index-import.ts +634 -0
  519. package/src/lifecycle/index-join.test.ts +250 -0
  520. package/src/lifecycle/index-join.ts +304 -0
  521. package/src/lifecycle/index-store-load-bearing.test.ts +187 -0
  522. package/src/lifecycle/index.ts +4 -0
  523. package/src/lifecycle/member-ledger.test.ts +25 -7
  524. package/src/lifecycle/observation-baseline.test.ts +72 -1
  525. package/src/lifecycle/observation-baseline.ts +190 -27
  526. package/src/lifecycle/observe.ts +6 -1
  527. package/src/lifecycle/query.test.ts +69 -1
  528. package/src/lifecycle/query.ts +103 -10
  529. package/src/lifecycle/replay.test.ts +9 -5
  530. package/src/lifecycle/replay.ts +9 -5
  531. package/src/lifecycle/scenario.ts +4 -3
  532. package/src/lifecycle/snapshot-store-fake.ts +29 -0
  533. package/src/lifecycle/snapshot-store-s3.ts +316 -0
  534. package/src/lifecycle/snapshot-store.test.ts +385 -0
  535. package/src/lifecycle/snapshot-store.ts +981 -0
  536. package/src/lifecycle/snapshot.test.ts +13 -0
  537. package/src/lifecycle/snapshot.ts +23 -6
  538. package/src/lifecycle/type-listing.test.ts +166 -0
  539. package/src/lifecycle/type-listing.ts +309 -0
  540. package/src/lint/component-checks.ts +17 -1
  541. package/src/lint/config.test.ts +3 -0
  542. package/src/lint/presets/relaxed.json +2 -1
  543. package/src/lint/presets/strict.json +2 -1
  544. package/src/lint/rules/__fixtures__/comp/comp008/fail/dns.component.ts +15 -0
  545. package/src/lint/rules/__fixtures__/comp/comp008/pass/dns.component.ts +10 -0
  546. package/src/lint/rules/comp/comp.test.ts +2 -1
  547. package/src/lint/rules/comp/comp008-applies-signal-only-root.ts +121 -0
  548. package/src/lint/rules/comp/comp008.test.ts +77 -0
  549. package/src/lint/rules/comp/index.ts +4 -1
  550. package/src/observation-edges.test.ts +33 -0
  551. package/src/observation.ts +36 -1
  552. package/src/op/activities/activity-contracts.ts +1 -1
  553. package/src/op/activities/change-set.ts +8 -5
  554. package/src/op/activity-failure.ts +36 -0
  555. package/src/op/index.ts +2 -1
  556. package/src/op/local-executor.test.ts +80 -0
  557. package/src/op/local-executor.ts +27 -9
  558. package/src/pr-loop-bundle.test.ts +5 -2
  559. package/src/pr-loop.test.ts +57 -1
  560. package/src/pr-loop.ts +154 -6
  561. package/src/pulumi-urn.ts +151 -0
  562. package/src/release-floors.ts +22 -0
  563. package/src/sensitive-key.ts +34 -0
  564. package/src/workspace/adoption-report.test.ts +61 -0
  565. package/src/workspace/adoption-report.ts +103 -0
  566. package/src/workspace/capabilities-contract.test.ts +4 -0
  567. package/src/workspace/capabilities-contract.ts +9 -1
  568. package/src/workspace/capabilities.schema.json +98 -0
  569. package/src/workspace/change-set.schema.json +42 -3
  570. package/src/workspace/ci-cloud-identity.ts +31 -1
  571. package/src/workspace/compose-graph.test.ts +12 -0
  572. package/src/workspace/compose-graph.ts +12 -1
  573. package/src/workspace/conformance/conformance.e2e.test.ts +2 -1
  574. package/src/workspace/conformance/index.ts +6 -1
  575. package/src/workspace/drift-cli.test.ts +65 -0
  576. package/src/workspace/drift-cli.ts +365 -0
  577. package/src/workspace/drift.schema.json +672 -0
  578. package/src/workspace/graph-cli.ts +5 -0
  579. package/src/workspace/graph.schema.json +72 -0
  580. package/src/workspace/init.test.ts +38 -1
  581. package/src/workspace/init.ts +50 -8
  582. package/src/workspace/intent-gaps.test.ts +18 -2
  583. package/src/workspace/ledger.schema.json +1 -1
  584. package/src/workspace/nested-graph.ts +1 -0
  585. package/src/workspace/pr-report.schema.json +76 -3
  586. package/src/workspace/promote-waves.test.ts +296 -0
  587. package/src/workspace/promote-waves.ts +340 -0
  588. package/src/workspace/promote.test.ts +158 -4
  589. package/src/workspace/promote.ts +398 -57
  590. package/src/workspace/reason-codes.test.ts +4 -1
  591. package/src/workspace/reason-codes.ts +14 -0
  592. package/src/workspace/search-contract.ts +2 -0
  593. package/src/workspace/search.schema.json +103 -5
@@ -19,7 +19,7 @@ export declare const SEARCH_OUTPUT_SCHEMA_ID = "https://intentius.io/chant/schem
19
19
  * Why `chant search` printed no answer. A member's own refusal under
20
20
  * `chant workspace search` carries the same code as its reason.
21
21
  */
22
- export declare const SEARCH_ERROR_CODES: readonly ["query-invalid", "usage-invalid", "environment-unknown", "snapshot-unavailable", "build-failed"];
22
+ export declare const SEARCH_ERROR_CODES: readonly ["query-invalid", "usage-invalid", "environment-unknown", "snapshot-unavailable", "build-failed", "index-unavailable"];
23
23
  export type SearchErrorCode = (typeof SEARCH_ERROR_CODES)[number];
24
24
  /**
25
25
  * Why `chant workspace search` printed no answer: the declaration's codes and
@@ -29,13 +29,13 @@ export type SearchErrorCode = (typeof SEARCH_ERROR_CODES)[number];
29
29
  export declare const WORKSPACE_SEARCH_ERROR_CODES: readonly ["declaration-missing", "declaration-ambiguous", "declaration-unparseable", "declaration-invalid", "placement-invalid", "reader-too-old", "root-chant-required", "not-a-git-repository", "revision-unknown", "live-at-revision", "snapshot-at-revision", "query-invalid", "usage-invalid"];
30
30
  export type WorkspaceSearchErrorCode = (typeof WORKSPACE_SEARCH_ERROR_CODES)[number];
31
31
  /** Every `error.code` a `search` document can carry, in either form. */
32
- export declare const SEARCH_DOCUMENT_ERROR_CODES: ("agent-unknown" | "amend-id-immutable" | "amend-supersede-instead" | "answer-field-unsupported" | "answer-in-steward-turn" | "answer-never-over-mcp" | "answer-not-answered" | "answer-not-candidate" | "answer-point-changed" | "answer-point-unknown" | "answer-points-unreadable" | "asset-drift" | "asset-missing" | "asset-stale" | "box-capability-unbrokered" | "box-credential-declared" | "box-fountain-callback-undeclared" | "box-intent-unconstrained" | "box-intent-unknown" | "box-isolation-collision" | "box-isolation-literal" | "box-none" | "box-several" | "build-failed" | "capability-not-derivable" | "change-out-of-scope" | "change-uncovered" | "chant-config-left" | "chant-dependency" | "chant-in-ci" | "choudoufu-steps-missing" | "ci-branch-route-differs" | "ci-branch-unknown" | "ci-green-undeclared" | "ci-workflow-apply-in-green" | "ci-workflow-green-undeclared" | "ci-workflow-no-components" | "ci-workflow-no-environments" | "ci-workflow-no-pre-merge" | "ci-workflow-pipeline-differs" | "ci-workflow-pipeline-missing" | "ci-workflow-publish-missing" | "ci-workflow-ungated-env" | "command-failed" | "commit-unlinked" | "commit-wrongly-linked" | "composites-no-chant-member" | "composites-no-component" | "composites-none-declared" | "declaration-ambiguous" | "declaration-invalid" | "declaration-missing" | "declaration-not-other" | "declaration-unparseable" | "diagram-render-drift" | "diagram-render-missing" | "diagram-source-missing" | "dir-missing" | "envelope-invalid" | "envelope-unreadable" | "envelope-untrusted" | "environment-invalid" | "environment-unknown" | "environments-component-undeclared" | "environments-ledger-undeclared" | "environments-ledger-unreadable" | "environments-none-declared" | "evidence-payload-type" | "evidence-runner-mismatch" | "evidence-statement-invalid" | "executor-config-unreadable" | "executor-none-declared" | "exit-failed" | "factory-box-missing" | "factory-member-unknown" | "filter-invalid" | "flag-stale" | "flag-work-unknown" | "gate-approval-unbased" | "gates-ledger-unreadable" | "gates-no-gate-ledger" | "gates-no-ledger" | "intent-artifact-unpinned" | "intent-commit-bare" | "intent-commit-join-conflict" | "intent-commit-undecided" | "intent-constraint-coarse" | "intent-constraint-lost" | "intent-decision-contested" | "intent-decision-provisional" | "intent-decision-superseded-live" | "intent-decision-unimplemented" | "intent-evidence-unpinned" | "intent-history-shallow" | "intent-pin-drifted" | "intent-pin-missing" | "intent-pin-stale" | "intent-plugin-failed" | "intent-record-unknown" | "intent-region-invalid" | "intent-region-unconstrained" | "intent-symbol-ambiguous" | "intent-symbol-unknown" | "intent-symbol-unsupported" | "intent-trailer-unverified" | "intent-why-no-decision" | "intent-why-no-run" | "intent-why-run-ambiguous" | "intent-why-uncommitted" | "intent-work-blocked" | "intent-work-open-decided-code" | "ir-version-unsupported" | "kind-invalid" | "kind-not-run" | "kind-probe-failed" | "kind-unreadable" | "lease-held" | "lease-not-held" | "lease-push-rejected" | "lease-race" | "lease-token-mismatch" | "ledger-malformed" | "ledger-unreadable" | "lexicon-has-no-mapping" | "lexicon-not-loaded" | "lexicon-unsupported" | "listing-box-missing" | "listing-cover-invalid" | "listing-member-unknown" | "live-at-revision" | "location-missing" | "lock-invalid" | "manual-step-open" | "member-chant-too-old" | "member-exists" | "member-unknown" | "missing-dir" | "native-missing" | "native-unreadable" | "no-deploy-command" | "no-lexicon" | "no-matches" | "not-a-git-repository" | "output-unreadable" | "patch-path-invalid" | "placement-invalid" | "point-candidates-invalid" | "point-decider-failed" | "point-inputs-invalid" | "point-unknown" | "points-invalid" | "points-undeclared" | "principal-unidentified" | "publish-answer-invalid" | "publish-failed" | "publish-member-unknown" | "publish-none" | "publish-refused" | "publish-unrecorded" | "query-invalid" | "quorum-not-met" | "ratify-quorum-not-met" | "reader-too-old" | "record-closed" | "record-conflict" | "record-id-duplicate" | "record-id-taken" | "record-id-unallocatable" | "record-no-evidence" | "record-not-found" | "record-path-unmatched" | "record-ratified-below-quorum" | "record-remediates-not-closed" | "record-remediates-unknown" | "record-schema-invalid" | "record-seal-mismatch" | "record-sign-failed" | "record-state-not-initial" | "record-supersedes-conflict" | "record-supersedes-pending" | "record-supersedes-unknown" | "record-unattested" | "record-unparseable" | "review-agent" | "review-decider" | "review-duplicate" | "review-note-required" | "review-older-digest" | "review-sign-failed" | "review-unattested" | "review-undigested" | "review-unsupported" | "revision-unknown" | "root-chant-required" | "rotation-first-version" | "rotation-invalid" | "rotation-missing" | "rotation-previous-mismatch" | "rotation-threshold-not-met" | "rotation-threshold-unsatisfiable" | "rotation-unparseable" | "rotation-version-skew" | "run-ended" | "run-exists" | "run-not-ended" | "run-statement-invalid" | "run-statement-mismatch" | "run-statement-signer-mismatch" | "run-unknown" | "runner-exists" | "runner-key-invalid" | "runner-key-is-signer" | "runner-key-unlisted" | "runner-unknown" | "runs-ledger-malformed" | "runs-no-ledger" | "runtimes-config-unreadable" | "runtimes-lexicon-unreadable" | "schema-id-mismatch" | "schema-invalid" | "schema-unreadable" | "seal-missing" | "seal-signature-invalid" | "seal-signer-unlisted" | "seal-unverifiable" | "security-attribution-any" | "security-component-no-sbom" | "security-component-no-verify" | "security-gate-unsigned" | "security-publish-allows-unsigned" | "security-publish-no-provenance" | "security-release-gate-missing" | "security-review-not-required" | "security-runner-start-no-key" | "security-runner-start-no-role" | "security-runner-untrusted" | "security-sbom-disabled" | "security-sbom-unsourced" | "security-signed-since-unset" | "security-signers-missing" | "security-tick-no-key" | "security-trust-unreadable" | "session-not-open" | "session-seal-mismatch" | "session-unknown" | "session-verdict-unknown-record" | "signers-file-missing" | "signers-removed" | "since-rev-unknown" | "since-session-open" | "since-session-unknown" | "snapshot-at-revision" | "snapshot-unavailable" | "source-harvest-not-proposed" | "source-transcript-drift" | "squash-unfollowed" | "steward-runs-unreadable" | "stewards-conflict" | "stewards-unreadable" | "table-unknown" | "trust-config-invalid" | "trust-conflict" | "trust-policy-unreadable" | "unknown-kind" | "usage-invalid" | "wip-branch-other" | "wip-no-branch" | "wip-none" | "wip-policy-none" | "wip-race" | "wip-remote-unknown" | "wip-snapshot-unknown" | "work-acceptance-self-verified" | "work-acceptance-unmet" | "work-closed-without-date" | "work-contract-undecided" | "work-contract-unknown" | "work-criterion-unknown" | "work-done-gap-open" | "work-done-unpinned" | "work-evidence-ops-mismatch" | "work-evidence-ops-missing" | "work-evidence-ops-unfinished" | "work-implements-undecided" | "work-implements-unknown" | "work-item-closed" | "work-item-unknown" | "work-kind-ambiguous" | "work-kind-missing" | "work-needs-cycle" | "work-needs-unknown" | "work-tier-unknown" | "write-input-invalid" | "write-lock-not-held" | "write-lock-timeout" | "write-scope-class-unknown" | "write-scope-kind" | "write-scope-member" | "write-scope-protected" | "write-usage-invalid")[];
32
+ export declare const SEARCH_DOCUMENT_ERROR_CODES: ("agent-unknown" | "amend-id-immutable" | "amend-supersede-instead" | "answer-field-unsupported" | "answer-in-steward-turn" | "answer-never-over-mcp" | "answer-not-answered" | "answer-not-candidate" | "answer-point-changed" | "answer-point-unknown" | "answer-points-unreadable" | "asset-drift" | "asset-missing" | "asset-stale" | "box-capability-unbrokered" | "box-credential-declared" | "box-fountain-callback-undeclared" | "box-intent-unconstrained" | "box-intent-unknown" | "box-isolation-collision" | "box-isolation-literal" | "box-none" | "box-several" | "build-failed" | "capability-not-derivable" | "change-out-of-scope" | "change-uncovered" | "chant-config-left" | "chant-dependency" | "chant-in-ci" | "choudoufu-steps-missing" | "ci-branch-route-differs" | "ci-branch-unknown" | "ci-green-undeclared" | "ci-workflow-apply-in-green" | "ci-workflow-green-undeclared" | "ci-workflow-no-components" | "ci-workflow-no-environments" | "ci-workflow-no-pre-merge" | "ci-workflow-pipeline-differs" | "ci-workflow-pipeline-missing" | "ci-workflow-publish-missing" | "ci-workflow-ungated-env" | "command-failed" | "commit-unlinked" | "commit-wrongly-linked" | "composites-no-chant-member" | "composites-no-component" | "composites-none-declared" | "declaration-ambiguous" | "declaration-invalid" | "declaration-missing" | "declaration-not-other" | "declaration-unparseable" | "diagram-render-drift" | "diagram-render-missing" | "diagram-source-missing" | "dir-missing" | "env-required" | "envelope-invalid" | "envelope-unreadable" | "envelope-untrusted" | "environment-invalid" | "environment-unknown" | "environments-component-undeclared" | "environments-ledger-undeclared" | "environments-ledger-unreadable" | "environments-none-declared" | "evidence-payload-type" | "evidence-runner-mismatch" | "evidence-statement-invalid" | "executor-config-unreadable" | "executor-none-declared" | "exit-failed" | "factory-box-missing" | "factory-member-unknown" | "filter-invalid" | "flag-stale" | "flag-work-unknown" | "gate-approval-unbased" | "gates-ledger-unreadable" | "gates-no-gate-ledger" | "gates-no-ledger" | "index-unavailable" | "instances-each-value" | "instances-form-unread" | "instances-merge" | "instances-module-uncounted" | "instances-over-limit" | "instances-value-unknown" | "intent-artifact-unpinned" | "intent-commit-bare" | "intent-commit-join-conflict" | "intent-commit-undecided" | "intent-constraint-coarse" | "intent-constraint-lost" | "intent-decision-contested" | "intent-decision-provisional" | "intent-decision-superseded-live" | "intent-decision-unimplemented" | "intent-evidence-unpinned" | "intent-history-shallow" | "intent-pin-drifted" | "intent-pin-missing" | "intent-pin-stale" | "intent-plugin-failed" | "intent-record-unknown" | "intent-region-invalid" | "intent-region-unconstrained" | "intent-symbol-ambiguous" | "intent-symbol-unknown" | "intent-symbol-unsupported" | "intent-trailer-unverified" | "intent-why-no-decision" | "intent-why-no-run" | "intent-why-run-ambiguous" | "intent-why-uncommitted" | "intent-work-blocked" | "intent-work-open-decided-code" | "ir-version-unsupported" | "kind-invalid" | "kind-not-run" | "kind-probe-failed" | "kind-unreadable" | "lease-held" | "lease-not-held" | "lease-push-rejected" | "lease-race" | "lease-token-mismatch" | "ledger-malformed" | "ledger-unreadable" | "lexicon-has-no-mapping" | "lexicon-not-loaded" | "lexicon-unsupported" | "listing-box-missing" | "listing-cover-invalid" | "listing-member-unknown" | "live-at-revision" | "location-missing" | "lock-invalid" | "manual-step-open" | "member-chant-too-old" | "member-exists" | "member-required" | "member-unknown" | "missing-dir" | "native-missing" | "native-unreadable" | "no-deploy-command" | "no-drift-read" | "no-lexicon" | "no-matches" | "not-a-git-repository" | "output-unreadable" | "patch-path-invalid" | "placement-invalid" | "point-candidates-invalid" | "point-decider-failed" | "point-inputs-invalid" | "point-unknown" | "points-invalid" | "points-undeclared" | "principal-unidentified" | "publish-answer-invalid" | "publish-failed" | "publish-member-unknown" | "publish-none" | "publish-refused" | "publish-unrecorded" | "query-invalid" | "quorum-not-met" | "ratify-quorum-not-met" | "read-unsupported" | "reader-too-old" | "record-closed" | "record-conflict" | "record-id-duplicate" | "record-id-taken" | "record-id-unallocatable" | "record-no-evidence" | "record-not-found" | "record-path-unmatched" | "record-ratified-below-quorum" | "record-remediates-not-closed" | "record-remediates-unknown" | "record-schema-invalid" | "record-seal-mismatch" | "record-sign-failed" | "record-state-not-initial" | "record-supersedes-conflict" | "record-supersedes-pending" | "record-supersedes-unknown" | "record-unattested" | "record-unparseable" | "resource-unsupported" | "review-agent" | "review-decider" | "review-duplicate" | "review-note-required" | "review-older-digest" | "review-sign-failed" | "review-unattested" | "review-undigested" | "review-unsupported" | "revision-unknown" | "root-chant-required" | "rotation-first-version" | "rotation-invalid" | "rotation-missing" | "rotation-previous-mismatch" | "rotation-threshold-not-met" | "rotation-threshold-unsatisfiable" | "rotation-unparseable" | "rotation-version-skew" | "run-ended" | "run-exists" | "run-not-ended" | "run-statement-invalid" | "run-statement-mismatch" | "run-statement-signer-mismatch" | "run-unknown" | "runner-exists" | "runner-key-invalid" | "runner-key-is-signer" | "runner-key-unlisted" | "runner-unknown" | "runs-ledger-malformed" | "runs-no-ledger" | "runtimes-config-unreadable" | "runtimes-lexicon-unreadable" | "schema-id-mismatch" | "schema-invalid" | "schema-unreadable" | "seal-missing" | "seal-signature-invalid" | "seal-signer-unlisted" | "seal-unverifiable" | "security-attribution-any" | "security-component-no-sbom" | "security-component-no-verify" | "security-gate-unsigned" | "security-publish-allows-unsigned" | "security-publish-no-provenance" | "security-release-gate-missing" | "security-review-not-required" | "security-runner-start-no-key" | "security-runner-start-no-role" | "security-runner-untrusted" | "security-sbom-disabled" | "security-sbom-unsourced" | "security-signed-since-unset" | "security-signers-missing" | "security-tick-no-key" | "security-trust-unreadable" | "session-not-open" | "session-seal-mismatch" | "session-unknown" | "session-verdict-unknown-record" | "signers-file-missing" | "signers-removed" | "since-rev-unknown" | "since-session-open" | "since-session-unknown" | "snapshot-at-revision" | "snapshot-unavailable" | "source-harvest-not-proposed" | "source-transcript-drift" | "squash-unfollowed" | "steward-runs-unreadable" | "stewards-conflict" | "stewards-unreadable" | "table-unknown" | "trust-config-invalid" | "trust-conflict" | "trust-policy-unreadable" | "unknown-kind" | "usage-invalid" | "wip-branch-other" | "wip-no-branch" | "wip-none" | "wip-policy-none" | "wip-race" | "wip-remote-unknown" | "wip-snapshot-unknown" | "work-acceptance-self-verified" | "work-acceptance-unmet" | "work-closed-without-date" | "work-contract-undecided" | "work-contract-unknown" | "work-criterion-unknown" | "work-done-gap-open" | "work-done-unpinned" | "work-evidence-ops-mismatch" | "work-evidence-ops-missing" | "work-evidence-ops-unfinished" | "work-implements-undecided" | "work-implements-unknown" | "work-item-closed" | "work-item-unknown" | "work-kind-ambiguous" | "work-kind-missing" | "work-needs-cycle" | "work-needs-unknown" | "work-tier-unknown" | "write-input-invalid" | "write-lock-not-held" | "write-lock-timeout" | "write-scope-class-unknown" | "write-scope-kind" | "write-scope-member" | "write-scope-protected" | "write-usage-invalid")[];
33
33
  /**
34
34
  * Why a member of `chant workspace search` has no answer. A member that ran
35
35
  * and refused carries its own {@link SEARCH_ERROR_CODES} code; the rest are
36
36
  * the per-member codes `workspace graph` uses, and `member-chant-too-old`.
37
37
  */
38
- export declare const SEARCH_MEMBER_REASON_CODES: readonly ["kind-not-run", "dir-missing", "unknown-kind", "kind-probe-failed", "command-failed", "output-unreadable", "member-chant-too-old", "query-invalid", "usage-invalid", "environment-unknown", "snapshot-unavailable", "build-failed"];
38
+ export declare const SEARCH_MEMBER_REASON_CODES: readonly ["kind-not-run", "dir-missing", "unknown-kind", "kind-probe-failed", "command-failed", "output-unreadable", "member-chant-too-old", "query-invalid", "usage-invalid", "environment-unknown", "snapshot-unavailable", "build-failed", "index-unavailable"];
39
39
  export type SearchMemberReasonCode = (typeof SEARCH_MEMBER_REASON_CODES)[number];
40
40
  /** The head every `search` document opens with. */
41
41
  export interface SearchHead {
@@ -1 +1 @@
1
- {"version":3,"file":"search-contract.d.ts","sourceRoot":"","sources":["../../src/workspace/search-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,8DAA8D;AAC9D,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,8EAA8E,CAAC;AAEnH;;;GAGG;AACH,eAAO,MAAM,kBAAkB,4GAWW,CAAC;AAC3C,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,qSAcC,CAAC;AAC3C,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAErF,wEAAwE;AACxE,eAAO,MAAM,2BAA2B,mxOAAqF,CAAC;AAE9H;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,+OASG,CAAC;AAC3C,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjF,mDAAmD;AACnD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,uBAAuB,CAAC;IACxC,QAAQ,EAAE,OAAO,uBAAuB,CAAC;IACzC,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,yGAAyG;AACzG,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD"}
1
+ {"version":3,"file":"search-contract.d.ts","sourceRoot":"","sources":["../../src/workspace/search-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,8DAA8D;AAC9D,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,8EAA8E,CAAC;AAEnH;;;GAGG;AACH,eAAO,MAAM,kBAAkB,iIAaW,CAAC;AAC3C,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,qSAcC,CAAC;AAC3C,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAErF,wEAAwE;AACxE,eAAO,MAAM,2BAA2B,yiPAAqF,CAAC;AAE9H;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,oQASG,CAAC;AAC3C,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjF,mDAAmD;AACnD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,uBAAuB,CAAC;IACxC,QAAQ,EAAE,OAAO,uBAAuB,CAAC;IACzC,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,yGAAyG;AACzG,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD"}
@@ -30,6 +30,8 @@ export const SEARCH_ERROR_CODES = [
30
30
  "snapshot-unavailable",
31
31
  /** The build, or a build root, failed: the graph would be incomplete. */
32
32
  "build-failed",
33
+ /** --index names no index version the store holds, or one stamped for another scope (#4525). */
34
+ "index-unavailable",
33
35
  ];
34
36
  /**
35
37
  * Why `chant workspace search` printed no answer: the declaration's codes and
@@ -112,7 +112,8 @@
112
112
  "enum": [
113
113
  "declared",
114
114
  "live",
115
- "snapshot"
115
+ "snapshot",
116
+ "index"
116
117
  ]
117
118
  },
118
119
  "notEvaluated": {
@@ -253,7 +254,8 @@
253
254
  "usage-invalid",
254
255
  "environment-unknown",
255
256
  "snapshot-unavailable",
256
- "build-failed"
257
+ "build-failed",
258
+ "index-unavailable"
257
259
  ]
258
260
  },
259
261
  "message": {
@@ -289,7 +291,7 @@
289
291
  }
290
292
  },
291
293
  "source": {
292
- "description": "Which observation answered. `declared` is the source graph; `live` reads the account now; `snapshot` replays a recorded lifecycle snapshot. In the workspace form the top-level source names the axis asked for, and each member's source names the snapshot commit it replayed.",
294
+ "description": "Which observation answered. `declared` is the source graph; `live` reads the account now; `snapshot` replays a recorded lifecycle snapshot; `index` answers from an index version in the store (`--index`, #4525). In the workspace form the top-level source names the axis asked for, and each member's source names the snapshot commit it replayed.",
293
295
  "type": "object",
294
296
  "required": [
295
297
  "kind"
@@ -299,9 +301,42 @@
299
301
  "enum": [
300
302
  "declared",
301
303
  "live",
302
- "snapshot"
304
+ "snapshot",
305
+ "index"
303
306
  ]
304
307
  },
308
+ "index": {
309
+ "type": "string",
310
+ "description": "`index` only: the index version answered from, as `<scope key>@<version>`."
311
+ },
312
+ "scopeKey": {
313
+ "type": "string",
314
+ "description": "`index` only: the index's `stamp.scopeKey`, the store path of its source and scope."
315
+ },
316
+ "version": {
317
+ "type": "string",
318
+ "description": "`index` only: the version name, `<observedAt>-<digest12>`."
319
+ },
320
+ "observedAt": {
321
+ "type": "string",
322
+ "description": "`index` only: when the read that wrote the index started, ISO UTC."
323
+ },
324
+ "completedAt": {
325
+ "type": "string",
326
+ "description": "`index` only: when that read's last call returned, when the index records it."
327
+ },
328
+ "digest": {
329
+ "type": "string",
330
+ "description": "`index` only: the index document's digest."
331
+ },
332
+ "by": {
333
+ "type": "string",
334
+ "description": "`index` only: the source that wrote the index, with its version when it has one, such as `behold-lister 0.4.0`."
335
+ },
336
+ "project": {
337
+ "type": "boolean",
338
+ "description": "`index` only: false when there was no project, so every row is an indexed node; true when the rows are declared and each carries a `join`."
339
+ },
305
340
  "env": {
306
341
  "type": "string",
307
342
  "description": "The environment, for `live` and `snapshot`."
@@ -389,6 +424,68 @@
389
424
  "$ref": "#/$defs/path"
390
425
  },
391
426
  "description": "One per positive edge term and cap: term the node matched through. Empty when the query has none."
427
+ },
428
+ "join": {
429
+ "$ref": "#/$defs/indexJoin"
430
+ }
431
+ }
432
+ },
433
+ "indexJoin": {
434
+ "description": "`--index` with a project (#4525): how the declared row joined to the index version, through its lexicon's index match. `bound` names the indexed node; `absent` means the index listed the type and location and holds no such resource; `not-observed` means the index did not look, with the reason; `no-binding` means the declaration spells no identity to match by; `ambiguous` names every candidate and binds none.",
435
+ "type": "object",
436
+ "required": [
437
+ "verdict"
438
+ ],
439
+ "properties": {
440
+ "verdict": {
441
+ "enum": [
442
+ "bound",
443
+ "absent",
444
+ "not-observed",
445
+ "no-binding",
446
+ "ambiguous"
447
+ ]
448
+ },
449
+ "listedType": {
450
+ "type": "string",
451
+ "description": "The inventory type the declaration's identity belongs to."
452
+ },
453
+ "identifier": {
454
+ "type": "string",
455
+ "description": "The identifier the declaration spells, as the index's nativeId spells it."
456
+ },
457
+ "location": {
458
+ "type": "string",
459
+ "description": "The location the identity was looked for in."
460
+ },
461
+ "node": {
462
+ "type": "string",
463
+ "description": "`bound`: the indexed node's id."
464
+ },
465
+ "nativeId": {
466
+ "type": "string",
467
+ "description": "`bound`: the indexed node's native id."
468
+ },
469
+ "reason": {
470
+ "enum": [
471
+ "read-failed",
472
+ "no-credentials",
473
+ "no-binding",
474
+ "unsupported-kind",
475
+ "filtered",
476
+ "not-reached"
477
+ ],
478
+ "description": "`not-observed`: why the index has no verdict for the row."
479
+ },
480
+ "candidates": {
481
+ "type": "array",
482
+ "items": {
483
+ "type": "string"
484
+ },
485
+ "description": "`ambiguous`: every indexed node carrying the identity."
486
+ },
487
+ "detail": {
488
+ "type": "string"
392
489
  }
393
490
  }
394
491
  },
@@ -750,7 +847,8 @@
750
847
  "usage-invalid",
751
848
  "environment-unknown",
752
849
  "snapshot-unavailable",
753
- "build-failed"
850
+ "build-failed",
851
+ "index-unavailable"
754
852
  ],
755
853
  "description": "A member that ran and refused carries its own search refusal code. `member-chant-too-old` is a member whose chant prints no search document of the contract, or, for a query with a capability term, no capability view (#4378)."
756
854
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentius/chant",
3
- "version": "0.124.51",
3
+ "version": "0.124.54",
4
4
  "description": "Declarative infrastructure-as-code toolkit — TypeScript on Node.js",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://intentius.io/chant",
@@ -51,6 +51,7 @@
51
51
  "default": "./src/cli/index.ts"
52
52
  },
53
53
  "./workspace/*.schema.json": "./src/workspace/*.schema.json",
54
+ "./capabilities/templates.json": "./src/capabilities/templates.json",
54
55
  "./notify.schema.json": "./src/notify.schema.json",
55
56
  "./health.schema.json": "./src/health.schema.json",
56
57
  "./workspace/factory-rules": {
@@ -142,9 +143,21 @@
142
143
  "@cdktn/hcl2json": "^0.24.0"
143
144
  },
144
145
  "peerDependencies": {
146
+ "@aws-sdk/credential-providers": "^3.0.0",
147
+ "@azure/identity": "^4.0.0",
148
+ "google-auth-library": "^9.0.0 || ^10.0.0",
145
149
  "vitest": ">=2"
146
150
  },
147
151
  "peerDependenciesMeta": {
152
+ "@aws-sdk/credential-providers": {
153
+ "optional": true
154
+ },
155
+ "@azure/identity": {
156
+ "optional": true
157
+ },
158
+ "google-auth-library": {
159
+ "optional": true
160
+ },
148
161
  "vitest": {
149
162
  "optional": true
150
163
  }
@@ -0,0 +1,58 @@
1
+ # Drift-record adapter fixtures (#4451)
2
+
3
+ Every fixture here is recorded from a run (#4475, 2026-10-26). None is hand-written.
4
+
5
+ ## The chant reads
6
+
7
+ Recorded on the floci emulator (`ghcr.io/lex00/floci@sha256:5ec92ae8046445d62c0009590dd09f04560886e5a5ef31248cb3fcc09b2961ec`) with chant 0.124.34 from INTENTIUS/chant `integration/engine-ship` at
8
+ 9ae806b69 plus this change, running from source. The project is a small chant AWS project (a bucket and its policy,
9
+ a queue, an IAM role tagged `api-token-owner`, two security groups and three topics) deployed with
10
+ `chant run --components` (cfn-deploy) into stack `recy`, plus four one-resource components (`api`, `jobs`, `edge`,
11
+ `docs`) on their own stacks. The sequence:
12
+
13
+ 1. deploy `demo-infra`, `api` and `jobs` with release records, `edge` with `--no-release-record`, `docs` never;
14
+ 2. `chant lifecycle snapshot recy --deep`;
15
+ 3. add the two security groups and `alertsTopic` and deploy `demo-infra` again;
16
+ 4. out of band through floci's API: delete stack `recy-jobs`, retag the role, delete the queue;
17
+ 5. change the source without deploying: drop `strayTopic`, add `cacheTopic`, change `webSg`'s description;
18
+ 6. read.
19
+
20
+ - `lifecycle-diff-live.json`: `chant lifecycle diff recy --live --json`, the whole document as `chant workspace
21
+ drift` reads it. The one edit: the scratch project's absolute path in `reconcile[].sourceFile` is `<project>/`.
22
+ - `live-diff.json`: that document's `lexicons.aws.resources` (a `LiveDiffResult`), unchanged.
23
+ - `deep-diff.json`: its `lexicons.aws.deep` (a `DeepDiffResult`), unchanged.
24
+ - `component-status.json`: `chant components status recy --live --json`.
25
+ - `component-status-ledger.json`: `chant components status recy --json` (no `--live`).
26
+
27
+ What the recording showed beside the earlier hand-written files:
28
+
29
+ - `components status --json` prints a bare array of rows, not `{ env, rows, malformedLedgerLines }`.
30
+ `chant workspace drift` already read it as an array; the test now does too.
31
+ - `LiveDiffResult` also carries `queried` and `definitions`.
32
+ - A redeploy since the snapshot shows as thin drift on `lastUpdated`, `status` and, for a bucket policy,
33
+ `physicalId`. An entity dropped from the source while its stack still holds it reads as `disappeared`, not
34
+ `orphan`: the stack carries no chant ownership marker, so the read looks only at declared names.
35
+ - floci's Cloud Control `GetResource` returns identity properties only, so most declared deep properties read
36
+ `absent` (declared value, no live value). A source change after deploy gives a `changed` property
37
+ (`webSg`'s `GroupDescription`). The deep read also lists the security groups under `unclaimed`.
38
+ - The deep read addresses keyed array elements by key (`Tags[#api-token-owner].Value`). The drift record did not
39
+ read that form as a key, so a tag named like a token kept its value. `attributePathKeys` now reads `[#key]` as a
40
+ key, and those paths redact.
41
+ - A queue deleted through SQS still reads as present: the read lists the stack's resources, and the stack still
42
+ names it.
43
+
44
+ What floci cannot produce, kept as constructed inputs inside `drift-record.test.ts` (not as files): a runtime
45
+ child, an orphan, an unchanged thin entity, a thin attribute change beyond timestamps, a failed deep read, a deep
46
+ unchanged entity, a component whose live digest differs from its record, and missing credentials.
47
+
48
+ ## The choudoufu stream
49
+
50
+ `choudoufu-resource.ndjson` and `choudoufu-cone.ndjson` are recorded (#4475, 2026-10-26): choudoufu
51
+ v0.31.1-local.c4f468a235, a build of INTENTIUS/choudoufu `integration/engine-ship` at c4f468a235, ran
52
+ choudoufu's own `live/e2e/estate-block` fixture (estate renamed `rec4475-block`) on the floci emulator
53
+ (`ghcr.io/lex00/floci@sha256:5ec92ae8046445d62c0009590dd09f04560886e5a5ef31248cb3fcc09b2961ec`) after an apply.
54
+ `choudoufu-resource.ndjson` is `live-plan -resource=aws_cloudwatch_log_group.app` after the log group's retention
55
+ was changed through floci's API; `choudoufu-cone.ndjson` is `live-plan -resource=aws_subnet.app`, whose cone holds
56
+ the VPC. What the recording showed beside the earlier hand-written stream: records carry no `resourceType`, a
57
+ drifted record names its paths with no values, neither the start nor the settle line has an `at`, and the settle's
58
+ `reads` adds `tagIndexCalls`.
@@ -0,0 +1,4 @@
1
+ {"type":"drift-start","drift":"v1","member":"rec4475-block","engine":"choudoufu","read":"plan","resource":"aws_subnet.app","expected":["aws_subnet.app","aws_vpc.main"]}
2
+ {"type":"drift-record","member":"rec4475-block","engine":"choudoufu","address":"aws_vpc.main","node":null,"observedAt":"2026-10-26T05:42:52Z","read":"plan","status":"in-sync","ownership":{"verdict":"owned","by":"marker"},"evidence":{"tool":"choudoufu","version":"v0.31.1-local.c4f468a235","command":"live-plan -resource=aws_subnet.app","engineCode":"noop"}}
3
+ {"type":"drift-record","member":"rec4475-block","engine":"choudoufu","address":"aws_subnet.app","node":null,"observedAt":"2026-10-26T05:42:52Z","read":"plan","status":"in-sync","ownership":{"verdict":"owned","by":"marker"},"evidence":{"tool":"choudoufu","version":"v0.31.1-local.c4f468a235","command":"live-plan -resource=aws_subnet.app","engineCode":"noop"}}
4
+ {"type":"drift-settle","drift":"v1","member":"rec4475-block","engine":"choudoufu","read":"plan","counts":{"in-sync":2},"reads":{"recordsRead":18,"recordKeys":2,"recordListCalls":0,"sweepCalls":0,"scanTypes":[],"scanListCalls":0,"tagIndexCalls":0}}
@@ -0,0 +1,3 @@
1
+ {"type":"drift-start","drift":"v1","member":"rec4475-block","engine":"choudoufu","read":"plan","resource":"aws_cloudwatch_log_group.app","expected":["aws_cloudwatch_log_group.app"]}
2
+ {"type":"drift-record","member":"rec4475-block","engine":"choudoufu","address":"aws_cloudwatch_log_group.app","node":null,"observedAt":"2026-10-26T05:42:45Z","read":"plan","status":"drifted","attributes":[{"path":"retention_in_days"}],"ownership":{"verdict":"owned","by":"derived"},"evidence":{"tool":"choudoufu","version":"v0.31.1-local.c4f468a235","command":"live-plan -resource=aws_cloudwatch_log_group.app","engineCode":"update"}}
3
+ {"type":"drift-settle","drift":"v1","member":"rec4475-block","engine":"choudoufu","read":"plan","counts":{"drifted":1},"reads":{"recordsRead":6,"recordKeys":1,"recordListCalls":0,"sweepCalls":0,"scanTypes":[],"scanListCalls":0,"tagIndexCalls":0}}
@@ -0,0 +1,65 @@
1
+ [
2
+ {
3
+ "component": "api",
4
+ "env": "recy",
5
+ "recorded": {
6
+ "digest": "jcs1-sha256:7a8b3f47cd6c729c15efb2324f7b9ebc26037752155832e60ca2b5770f78c835",
7
+ "gitSha": "baaa6bb09bc4ff7fe22e559af62e1d32256b7392",
8
+ "runId": "local-1792996303605",
9
+ "timestamp": "2026-10-26T06:31:45.462Z",
10
+ "actor": "alex"
11
+ },
12
+ "build": null,
13
+ "componentBom": null,
14
+ "reconciliation": "unknown",
15
+ "detail": "recorded; live status not queried (pass --live to reconcile)"
16
+ },
17
+ {
18
+ "component": "demo-infra",
19
+ "env": "recy",
20
+ "recorded": {
21
+ "digest": "jcs1-sha256:32a05af0532a86b9ec5b8693f6c7a5b5e1ff8c41c65fb1cc1a9bf5d3064a2a98",
22
+ "gitSha": "e2014e95f134d2273a2b5b7c56bf085b36ddae6a",
23
+ "runId": "local-1792996318960",
24
+ "timestamp": "2026-10-26T06:32:00.401Z",
25
+ "actor": "alex"
26
+ },
27
+ "build": null,
28
+ "componentBom": null,
29
+ "reconciliation": "unknown",
30
+ "detail": "recorded; live status not queried (pass --live to reconcile)"
31
+ },
32
+ {
33
+ "component": "docs",
34
+ "env": "recy",
35
+ "recorded": null,
36
+ "build": null,
37
+ "componentBom": null,
38
+ "reconciliation": "unrecorded",
39
+ "detail": "no release record found"
40
+ },
41
+ {
42
+ "component": "edge",
43
+ "env": "recy",
44
+ "recorded": null,
45
+ "build": null,
46
+ "componentBom": null,
47
+ "reconciliation": "unrecorded",
48
+ "detail": "no release record found"
49
+ },
50
+ {
51
+ "component": "jobs",
52
+ "env": "recy",
53
+ "recorded": {
54
+ "digest": "jcs1-sha256:829ac8939f9b487e82c1488dc31f5d1fe832ba7d292f28bfad1ca48a60e0c4dd",
55
+ "gitSha": "baaa6bb09bc4ff7fe22e559af62e1d32256b7392",
56
+ "runId": "local-1792996303605",
57
+ "timestamp": "2026-10-26T06:31:45.723Z",
58
+ "actor": "alex"
59
+ },
60
+ "build": null,
61
+ "componentBom": null,
62
+ "reconciliation": "unknown",
63
+ "detail": "recorded; live status not queried (pass --live to reconcile)"
64
+ }
65
+ ]
@@ -0,0 +1,91 @@
1
+ [
2
+ {
3
+ "component": "api",
4
+ "env": "recy",
5
+ "recorded": {
6
+ "digest": "jcs1-sha256:7a8b3f47cd6c729c15efb2324f7b9ebc26037752155832e60ca2b5770f78c835",
7
+ "gitSha": "baaa6bb09bc4ff7fe22e559af62e1d32256b7392",
8
+ "runId": "local-1792996303605",
9
+ "timestamp": "2026-10-26T06:31:45.462Z",
10
+ "actor": "alex"
11
+ },
12
+ "build": null,
13
+ "componentBom": null,
14
+ "reconciliation": "reconciled",
15
+ "detail": "recorded 2026-10-26T06:31:45.462Z (digest jcs1-sha256:7a8b3f47cd6c729c15efb2324f7b9ebc26037752155832e60ca2b5770f78c835), live and consistent",
16
+ "live": true,
17
+ "stack": {
18
+ "name": "recy-api",
19
+ "status": "CREATE_COMPLETE",
20
+ "healthy": true
21
+ }
22
+ },
23
+ {
24
+ "component": "demo-infra",
25
+ "env": "recy",
26
+ "recorded": {
27
+ "digest": "jcs1-sha256:32a05af0532a86b9ec5b8693f6c7a5b5e1ff8c41c65fb1cc1a9bf5d3064a2a98",
28
+ "gitSha": "e2014e95f134d2273a2b5b7c56bf085b36ddae6a",
29
+ "runId": "local-1792996318960",
30
+ "timestamp": "2026-10-26T06:32:00.401Z",
31
+ "actor": "alex"
32
+ },
33
+ "build": null,
34
+ "componentBom": null,
35
+ "reconciliation": "reconciled",
36
+ "detail": "recorded 2026-10-26T06:32:00.401Z (digest jcs1-sha256:32a05af0532a86b9ec5b8693f6c7a5b5e1ff8c41c65fb1cc1a9bf5d3064a2a98), live and consistent",
37
+ "live": true,
38
+ "stack": {
39
+ "name": "recy",
40
+ "status": "UPDATE_COMPLETE",
41
+ "healthy": true
42
+ }
43
+ },
44
+ {
45
+ "component": "docs",
46
+ "env": "recy",
47
+ "recorded": null,
48
+ "build": null,
49
+ "componentBom": null,
50
+ "reconciliation": "unrecorded",
51
+ "detail": "no release record and nothing observed live",
52
+ "live": false,
53
+ "stack": {
54
+ "name": "recy-docs"
55
+ }
56
+ },
57
+ {
58
+ "component": "edge",
59
+ "env": "recy",
60
+ "recorded": null,
61
+ "build": null,
62
+ "componentBom": null,
63
+ "reconciliation": "unrecorded",
64
+ "detail": "live and chant-owned, but no release record exists \u2014 deployed outside the recorded path",
65
+ "live": true,
66
+ "stack": {
67
+ "name": "recy-edge",
68
+ "status": "CREATE_COMPLETE",
69
+ "healthy": true
70
+ }
71
+ },
72
+ {
73
+ "component": "jobs",
74
+ "env": "recy",
75
+ "recorded": {
76
+ "digest": "jcs1-sha256:829ac8939f9b487e82c1488dc31f5d1fe832ba7d292f28bfad1ca48a60e0c4dd",
77
+ "gitSha": "baaa6bb09bc4ff7fe22e559af62e1d32256b7392",
78
+ "runId": "local-1792996303605",
79
+ "timestamp": "2026-10-26T06:31:45.723Z",
80
+ "actor": "alex"
81
+ },
82
+ "build": null,
83
+ "componentBom": null,
84
+ "reconciliation": "stale",
85
+ "detail": "recorded 2026-10-26T06:31:45.723Z (digest jcs1-sha256:829ac8939f9b487e82c1488dc31f5d1fe832ba7d292f28bfad1ca48a60e0c4dd), but nothing observed live now",
86
+ "live": false,
87
+ "stack": {
88
+ "name": "recy-jobs"
89
+ }
90
+ }
91
+ ]