@intentius/chant 0.13.1 → 0.15.0

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 (450) hide show
  1. package/dist/audit/catalog.d.ts +45 -5
  2. package/dist/audit/catalog.d.ts.map +1 -1
  3. package/dist/audit/proof.d.ts +3 -0
  4. package/dist/audit/proof.d.ts.map +1 -1
  5. package/dist/audit/report-model.d.ts +4 -1
  6. package/dist/audit/report-model.d.ts.map +1 -1
  7. package/dist/audit/report.d.ts +3 -0
  8. package/dist/audit/report.d.ts.map +1 -1
  9. package/dist/audit/rules-doc.d.ts +8 -2
  10. package/dist/audit/rules-doc.d.ts.map +1 -1
  11. package/dist/cli/commands/audit.d.ts.map +1 -1
  12. package/dist/cli/commands/doctor.d.ts.map +1 -1
  13. package/dist/cli/commands/lexicon-rolling-upgrade.d.ts +37 -0
  14. package/dist/cli/commands/lexicon-rolling-upgrade.d.ts.map +1 -0
  15. package/dist/cli/commands/lexicon-surface-diff.d.ts +48 -0
  16. package/dist/cli/commands/lexicon-surface-diff.d.ts.map +1 -0
  17. package/dist/cli/commands/lint.d.ts.map +1 -1
  18. package/dist/cli/commands/pinned-upgrade.d.ts +41 -0
  19. package/dist/cli/commands/pinned-upgrade.d.ts.map +1 -0
  20. package/dist/cli/handlers/build.d.ts.map +1 -1
  21. package/dist/cli/handlers/components.d.ts +39 -0
  22. package/dist/cli/handlers/components.d.ts.map +1 -0
  23. package/dist/cli/handlers/dev.d.ts +3 -0
  24. package/dist/cli/handlers/dev.d.ts.map +1 -1
  25. package/dist/cli/handlers/graph.d.ts +4 -2
  26. package/dist/cli/handlers/graph.d.ts.map +1 -1
  27. package/dist/cli/handlers/misc.d.ts.map +1 -1
  28. package/dist/cli/handlers/run.d.ts +49 -0
  29. package/dist/cli/handlers/run.d.ts.map +1 -1
  30. package/dist/cli/main.d.ts.map +1 -1
  31. package/dist/cli/registry.d.ts +35 -0
  32. package/dist/cli/registry.d.ts.map +1 -1
  33. package/dist/codegen/fetch.d.ts +22 -0
  34. package/dist/codegen/fetch.d.ts.map +1 -1
  35. package/dist/codegen/lexicon-regen.d.ts +110 -0
  36. package/dist/codegen/lexicon-regen.d.ts.map +1 -0
  37. package/dist/codegen/pinned-upgrade.d.ts +153 -0
  38. package/dist/codegen/pinned-upgrade.d.ts.map +1 -0
  39. package/dist/codegen/rolling-upgrade.d.ts +138 -0
  40. package/dist/codegen/rolling-upgrade.d.ts.map +1 -0
  41. package/dist/codegen/surface-snapshot.d.ts +173 -0
  42. package/dist/codegen/surface-snapshot.d.ts.map +1 -0
  43. package/dist/codegen/version-bump.d.ts +21 -0
  44. package/dist/codegen/version-bump.d.ts.map +1 -0
  45. package/dist/components/auto-release.d.ts +93 -0
  46. package/dist/components/auto-release.d.ts.map +1 -0
  47. package/dist/components/builders.d.ts +37 -0
  48. package/dist/components/builders.d.ts.map +1 -0
  49. package/dist/components/capability-plugin-loader.d.ts +111 -0
  50. package/dist/components/capability-plugin-loader.d.ts.map +1 -0
  51. package/dist/components/capability-plugin-schema.d.ts +24 -0
  52. package/dist/components/capability-plugin-schema.d.ts.map +1 -0
  53. package/dist/components/capability-plugin.d.ts +85 -0
  54. package/dist/components/capability-plugin.d.ts.map +1 -0
  55. package/dist/components/capability.d.ts +89 -0
  56. package/dist/components/capability.d.ts.map +1 -0
  57. package/dist/components/cli-support.d.ts +204 -0
  58. package/dist/components/cli-support.d.ts.map +1 -0
  59. package/dist/components/component.d.ts +179 -0
  60. package/dist/components/component.d.ts.map +1 -0
  61. package/dist/components/config-defaults.d.ts +41 -0
  62. package/dist/components/config-defaults.d.ts.map +1 -0
  63. package/dist/components/discover.d.ts +60 -0
  64. package/dist/components/discover.d.ts.map +1 -0
  65. package/dist/components/driver-output.d.ts +20 -0
  66. package/dist/components/driver-output.d.ts.map +1 -0
  67. package/dist/components/driver.d.ts +209 -0
  68. package/dist/components/driver.d.ts.map +1 -0
  69. package/dist/components/index.d.ts +22 -0
  70. package/dist/components/index.d.ts.map +1 -0
  71. package/dist/components/manifest-persistence.d.ts +79 -0
  72. package/dist/components/manifest-persistence.d.ts.map +1 -0
  73. package/dist/components/pilots/alb-ecs.pilot.d.ts +27 -0
  74. package/dist/components/pilots/alb-ecs.pilot.d.ts.map +1 -0
  75. package/dist/components/pilots/dynamodb.pilot.d.ts +22 -0
  76. package/dist/components/pilots/dynamodb.pilot.d.ts.map +1 -0
  77. package/dist/components/pilots/jar-emr.pilot.d.ts +37 -0
  78. package/dist/components/pilots/jar-emr.pilot.d.ts.map +1 -0
  79. package/dist/components/pilots/lambda.pilot.d.ts +35 -0
  80. package/dist/components/pilots/lambda.pilot.d.ts.map +1 -0
  81. package/dist/components/pilots/neo4j-fanout.pilot.d.ts +17 -0
  82. package/dist/components/pilots/neo4j-fanout.pilot.d.ts.map +1 -0
  83. package/dist/components/pilots/project.d.ts +13 -0
  84. package/dist/components/pilots/project.d.ts.map +1 -0
  85. package/dist/components/presets/ecs-fargate.d.ts +59 -0
  86. package/dist/components/presets/ecs-fargate.d.ts.map +1 -0
  87. package/dist/components/presets/index.d.ts +29 -0
  88. package/dist/components/presets/index.d.ts.map +1 -0
  89. package/dist/components/presets/lambda.d.ts +35 -0
  90. package/dist/components/presets/lambda.d.ts.map +1 -0
  91. package/dist/components/presets/single-host-compose.d.ts +43 -0
  92. package/dist/components/presets/single-host-compose.d.ts.map +1 -0
  93. package/dist/components/registry.d.ts +29 -0
  94. package/dist/components/registry.d.ts.map +1 -0
  95. package/dist/components/starter-plugin.d.ts +51 -0
  96. package/dist/components/starter-plugin.d.ts.map +1 -0
  97. package/dist/components/temporal-codegen-loader.d.ts +27 -0
  98. package/dist/components/temporal-codegen-loader.d.ts.map +1 -0
  99. package/dist/components/verbs/__tests__/mock-cloud-executor.d.ts +35 -0
  100. package/dist/components/verbs/__tests__/mock-cloud-executor.d.ts.map +1 -0
  101. package/dist/components/verbs/__tests__/mock-process-runner.d.ts +45 -0
  102. package/dist/components/verbs/__tests__/mock-process-runner.d.ts.map +1 -0
  103. package/dist/components/verbs/__tests__/mock-sbom-generator.d.ts +33 -0
  104. package/dist/components/verbs/__tests__/mock-sbom-generator.d.ts.map +1 -0
  105. package/dist/components/verbs/bom-writer.d.ts +155 -0
  106. package/dist/components/verbs/bom-writer.d.ts.map +1 -0
  107. package/dist/components/verbs/build-archive.d.ts +205 -0
  108. package/dist/components/verbs/build-archive.d.ts.map +1 -0
  109. package/dist/components/verbs/build.d.ts +150 -0
  110. package/dist/components/verbs/build.d.ts.map +1 -0
  111. package/dist/components/verbs/cloud-executor.d.ts +88 -0
  112. package/dist/components/verbs/cloud-executor.d.ts.map +1 -0
  113. package/dist/components/verbs/component-bom.d.ts +103 -0
  114. package/dist/components/verbs/component-bom.d.ts.map +1 -0
  115. package/dist/components/verbs/index.d.ts +49 -0
  116. package/dist/components/verbs/index.d.ts.map +1 -0
  117. package/dist/components/verbs/license-policy.d.ts +56 -0
  118. package/dist/components/verbs/license-policy.d.ts.map +1 -0
  119. package/dist/components/verbs/lockfile-sbom-generator.d.ts +81 -0
  120. package/dist/components/verbs/lockfile-sbom-generator.d.ts.map +1 -0
  121. package/dist/components/verbs/process-runner.d.ts +64 -0
  122. package/dist/components/verbs/process-runner.d.ts.map +1 -0
  123. package/dist/components/verbs/reproducibility.d.ts +80 -0
  124. package/dist/components/verbs/reproducibility.d.ts.map +1 -0
  125. package/dist/components/verbs/sbom-generator.d.ts +157 -0
  126. package/dist/components/verbs/sbom-generator.d.ts.map +1 -0
  127. package/dist/components/verbs/sbom.d.ts +79 -0
  128. package/dist/components/verbs/sbom.d.ts.map +1 -0
  129. package/dist/components/verbs/shell.d.ts +35 -0
  130. package/dist/components/verbs/shell.d.ts.map +1 -0
  131. package/dist/components/verbs/sign.d.ts +222 -0
  132. package/dist/components/verbs/sign.d.ts.map +1 -0
  133. package/dist/components/verbs/stub.d.ts +18 -0
  134. package/dist/components/verbs/stub.d.ts.map +1 -0
  135. package/dist/components/verbs/tool-sbom-generator.d.ts +51 -0
  136. package/dist/components/verbs/tool-sbom-generator.d.ts.map +1 -0
  137. package/dist/components/verbs/verify.d.ts +106 -0
  138. package/dist/components/verbs/verify.d.ts.map +1 -0
  139. package/dist/components/verbs/vex.d.ts +65 -0
  140. package/dist/components/verbs/vex.d.ts.map +1 -0
  141. package/dist/components/verbs/vuln-gate.d.ts +91 -0
  142. package/dist/components/verbs/vuln-gate.d.ts.map +1 -0
  143. package/dist/components/verbs/vuln-scan.d.ts +116 -0
  144. package/dist/components/verbs/vuln-scan.d.ts.map +1 -0
  145. package/dist/components/verbs/wait-verify.d.ts +85 -0
  146. package/dist/components/verbs/wait-verify.d.ts.map +1 -0
  147. package/dist/config.d.ts +205 -0
  148. package/dist/config.d.ts.map +1 -1
  149. package/dist/index.d.ts +4 -0
  150. package/dist/index.d.ts.map +1 -1
  151. package/dist/lexicon.d.ts +78 -0
  152. package/dist/lexicon.d.ts.map +1 -1
  153. package/dist/lifecycle/build-ledger-store.d.ts +121 -0
  154. package/dist/lifecycle/build-ledger-store.d.ts.map +1 -0
  155. package/dist/lifecycle/build-ledger.d.ts +225 -0
  156. package/dist/lifecycle/build-ledger.d.ts.map +1 -0
  157. package/dist/lifecycle/git.d.ts +84 -0
  158. package/dist/lifecycle/git.d.ts.map +1 -1
  159. package/dist/lifecycle/index.d.ts +5 -0
  160. package/dist/lifecycle/index.d.ts.map +1 -1
  161. package/dist/lifecycle/oras-referrer-lookup.d.ts +41 -0
  162. package/dist/lifecycle/oras-referrer-lookup.d.ts.map +1 -0
  163. package/dist/lifecycle/release-ledger.d.ts +122 -0
  164. package/dist/lifecycle/release-ledger.d.ts.map +1 -0
  165. package/dist/lifecycle/status.d.ts +150 -0
  166. package/dist/lifecycle/status.d.ts.map +1 -0
  167. package/dist/lint/component-checks.d.ts +95 -0
  168. package/dist/lint/component-checks.d.ts.map +1 -0
  169. package/dist/lint/engine.d.ts +23 -0
  170. package/dist/lint/engine.d.ts.map +1 -1
  171. package/dist/lint/presets/strict.json +8 -1
  172. package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.d.ts +4 -0
  173. package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.d.ts.map +1 -0
  174. package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.d.ts +4 -0
  175. package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.d.ts.map +1 -0
  176. package/dist/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.d.ts +4 -0
  177. package/dist/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.d.ts.map +1 -0
  178. package/dist/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.d.ts +4 -0
  179. package/dist/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.d.ts.map +1 -0
  180. package/dist/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.d.ts +4 -0
  181. package/dist/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.d.ts.map +1 -0
  182. package/dist/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.d.ts +10 -0
  183. package/dist/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.d.ts.map +1 -0
  184. package/dist/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.d.ts +3 -0
  185. package/dist/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.d.ts.map +1 -0
  186. package/dist/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.d.ts +4 -0
  187. package/dist/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.d.ts.map +1 -0
  188. package/dist/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.d.ts +4 -0
  189. package/dist/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.d.ts.map +1 -0
  190. package/dist/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.d.ts +4 -0
  191. package/dist/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.d.ts.map +1 -0
  192. package/dist/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.d.ts +4 -0
  193. package/dist/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.d.ts.map +1 -0
  194. package/dist/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.d.ts +4 -0
  195. package/dist/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.d.ts.map +1 -0
  196. package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.d.ts +4 -0
  197. package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.d.ts.map +1 -0
  198. package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.d.ts +4 -0
  199. package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.d.ts.map +1 -0
  200. package/dist/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.d.ts +4 -0
  201. package/dist/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.d.ts.map +1 -0
  202. package/dist/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.d.ts +4 -0
  203. package/dist/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.d.ts.map +1 -0
  204. package/dist/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.d.ts +4 -0
  205. package/dist/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.d.ts.map +1 -0
  206. package/dist/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.d.ts +4 -0
  207. package/dist/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.d.ts.map +1 -0
  208. package/dist/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.d.ts +4 -0
  209. package/dist/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.d.ts.map +1 -0
  210. package/dist/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.d.ts +4 -0
  211. package/dist/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.d.ts.map +1 -0
  212. package/dist/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.d.ts +3 -0
  213. package/dist/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.d.ts.map +1 -0
  214. package/dist/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.d.ts +4 -0
  215. package/dist/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.d.ts.map +1 -0
  216. package/dist/lint/rules/comp/comp001-publishes-never-applies.d.ts +20 -0
  217. package/dist/lint/rules/comp/comp001-publishes-never-applies.d.ts.map +1 -0
  218. package/dist/lint/rules/comp/comp002-dangling-wiring-ref.d.ts +28 -0
  219. package/dist/lint/rules/comp/comp002-dangling-wiring-ref.d.ts.map +1 -0
  220. package/dist/lint/rules/comp/comp003-mutating-no-rollback.d.ts +39 -0
  221. package/dist/lint/rules/comp/comp003-mutating-no-rollback.d.ts.map +1 -0
  222. package/dist/lint/rules/comp/comp004-gate-needs-temporal.d.ts +37 -0
  223. package/dist/lint/rules/comp/comp004-gate-needs-temporal.d.ts.map +1 -0
  224. package/dist/lint/rules/comp/comp005-capability-kind-is-noun.d.ts +43 -0
  225. package/dist/lint/rules/comp/comp005-capability-kind-is-noun.d.ts.map +1 -0
  226. package/dist/lint/rules/comp/comp006-shell-needs-reason.d.ts +22 -0
  227. package/dist/lint/rules/comp/comp006-shell-needs-reason.d.ts.map +1 -0
  228. package/dist/lint/rules/comp/comp007-composition-sprawl.d.ts +33 -0
  229. package/dist/lint/rules/comp/comp007-composition-sprawl.d.ts.map +1 -0
  230. package/dist/lint/rules/comp/index.d.ts +18 -0
  231. package/dist/lint/rules/comp/index.d.ts.map +1 -0
  232. package/dist/lint/rules/comp/support.d.ts +71 -0
  233. package/dist/lint/rules/comp/support.d.ts.map +1 -0
  234. package/dist/lsp/lexicon-providers.d.ts.map +1 -1
  235. package/dist/op/activity-registry.d.ts +11 -6
  236. package/dist/op/activity-registry.d.ts.map +1 -1
  237. package/dist/op/activity-runtime.d.ts +24 -0
  238. package/dist/op/activity-runtime.d.ts.map +1 -0
  239. package/dist/op/builders.d.ts +56 -0
  240. package/dist/op/builders.d.ts.map +1 -1
  241. package/dist/op/index.d.ts +2 -1
  242. package/dist/op/index.d.ts.map +1 -1
  243. package/dist/ownership.d.ts +20 -14
  244. package/dist/ownership.d.ts.map +1 -1
  245. package/package.json +14 -1
  246. package/src/audit/catalog.test.ts +74 -22
  247. package/src/audit/catalog.ts +74 -471
  248. package/src/audit/proof.ts +4 -2
  249. package/src/audit/report-html.test.ts +14 -7
  250. package/src/audit/report-model.ts +20 -9
  251. package/src/audit/report.test.ts +36 -13
  252. package/src/audit/report.ts +2 -0
  253. package/src/audit/rules-doc.test.ts +8 -6
  254. package/src/audit/rules-doc.ts +13 -5
  255. package/src/cli/commands/audit.ts +23 -18
  256. package/src/cli/commands/component-lint.test.ts +158 -0
  257. package/src/cli/commands/doctor.test.ts +116 -2
  258. package/src/cli/commands/doctor.ts +46 -0
  259. package/src/cli/commands/lexicon-rolling-upgrade.ts +198 -0
  260. package/src/cli/commands/lexicon-surface-diff.test.ts +104 -0
  261. package/src/cli/commands/lexicon-surface-diff.ts +185 -0
  262. package/src/cli/commands/lint.ts +142 -1
  263. package/src/cli/commands/pinned-upgrade.ts +204 -0
  264. package/src/cli/handlers/build.ts +58 -1
  265. package/src/cli/handlers/components.test.ts +504 -0
  266. package/src/cli/handlers/components.ts +404 -0
  267. package/src/cli/handlers/dev.ts +60 -1
  268. package/src/cli/handlers/graph.ts +47 -2
  269. package/src/cli/handlers/misc.ts +45 -1
  270. package/src/cli/handlers/run.test.ts +967 -3
  271. package/src/cli/handlers/run.ts +618 -11
  272. package/src/cli/main.test.ts +66 -0
  273. package/src/cli/main.ts +105 -2
  274. package/src/cli/registry.ts +35 -0
  275. package/src/codegen/fetch.test.ts +84 -3
  276. package/src/codegen/fetch.ts +76 -2
  277. package/src/codegen/lexicon-regen.test.ts +298 -0
  278. package/src/codegen/lexicon-regen.ts +545 -0
  279. package/src/codegen/pinned-upgrade.test.ts +399 -0
  280. package/src/codegen/pinned-upgrade.ts +423 -0
  281. package/src/codegen/rolling-upgrade.test.ts +333 -0
  282. package/src/codegen/rolling-upgrade.ts +320 -0
  283. package/src/codegen/surface-snapshot.test.ts +461 -0
  284. package/src/codegen/surface-snapshot.ts +546 -0
  285. package/src/codegen/version-bump.test.ts +47 -0
  286. package/src/codegen/version-bump.ts +39 -0
  287. package/src/components/README.md +130 -0
  288. package/src/components/SPRAWL-VALIDATION.md +181 -0
  289. package/src/components/__fixtures__/alb-ecs-service.json +51 -0
  290. package/src/components/__fixtures__/dynamodb-infra.json +32 -0
  291. package/src/components/__fixtures__/emr-job-consumer.json +26 -0
  292. package/src/components/__fixtures__/jar-lib-producer.json +16 -0
  293. package/src/components/__fixtures__/lambda-image-processor.json +28 -0
  294. package/src/components/__fixtures__/neo4j-fanout.json +34 -0
  295. package/src/components/__fixtures__/single-host-compose.json +29 -0
  296. package/src/components/auto-release.test.ts +217 -0
  297. package/src/components/auto-release.ts +216 -0
  298. package/src/components/builders.test.ts +45 -0
  299. package/src/components/builders.ts +71 -0
  300. package/src/components/capability-plugin-loader.ts +218 -0
  301. package/src/components/capability-plugin-schema.ts +56 -0
  302. package/src/components/capability-plugin.test.ts +235 -0
  303. package/src/components/capability-plugin.ts +108 -0
  304. package/src/components/capability.ts +117 -0
  305. package/src/components/cli-support.test.ts +579 -0
  306. package/src/components/cli-support.ts +481 -0
  307. package/src/components/component-schema.test.ts +265 -0
  308. package/src/components/component.schema.json +235 -0
  309. package/src/components/component.test.ts +251 -0
  310. package/src/components/component.ts +255 -0
  311. package/src/components/config-defaults.test.ts +263 -0
  312. package/src/components/config-defaults.ts +145 -0
  313. package/src/components/discover.test.ts +352 -0
  314. package/src/components/discover.ts +167 -0
  315. package/src/components/driver-output.ts +71 -0
  316. package/src/components/driver.test.ts +638 -0
  317. package/src/components/driver.ts +690 -0
  318. package/src/components/index.ts +113 -0
  319. package/src/components/manifest-persistence.test.ts +152 -0
  320. package/src/components/manifest-persistence.ts +164 -0
  321. package/src/components/pilots/README.md +33 -0
  322. package/src/components/pilots/alb-ecs.pilot.ts +63 -0
  323. package/src/components/pilots/dynamodb.pilot.ts +59 -0
  324. package/src/components/pilots/jar-emr.pilot.ts +69 -0
  325. package/src/components/pilots/lambda.pilot.ts +55 -0
  326. package/src/components/pilots/neo4j-fanout.pilot.ts +92 -0
  327. package/src/components/pilots/pilots-lint-clean.test.ts +78 -0
  328. package/src/components/pilots/pilots.test.ts +126 -0
  329. package/src/components/pilots/project.ts +13 -0
  330. package/src/components/presets/comp007-reduction.test.ts +122 -0
  331. package/src/components/presets/ecs-fargate.test.ts +84 -0
  332. package/src/components/presets/ecs-fargate.ts +103 -0
  333. package/src/components/presets/index.ts +32 -0
  334. package/src/components/presets/lambda.test.ts +35 -0
  335. package/src/components/presets/lambda.ts +53 -0
  336. package/src/components/presets/single-host-compose.test.ts +65 -0
  337. package/src/components/presets/single-host-compose.ts +64 -0
  338. package/src/components/registry.test.ts +112 -0
  339. package/src/components/registry.ts +37 -0
  340. package/src/components/starter-plugin.ts +105 -0
  341. package/src/components/temporal-codegen-loader.ts +41 -0
  342. package/src/components/verbs/__fixtures__/package-lock.json +45 -0
  343. package/src/components/verbs/__fixtures__/pom.xml +37 -0
  344. package/src/components/verbs/__fixtures__/schemas/cyclonedx-1.5.schema.json +3800 -0
  345. package/src/components/verbs/__fixtures__/schemas/cyclonedx-spdx-license.schema.json +621 -0
  346. package/src/components/verbs/__fixtures__/schemas/jsf-0.82.schema.json +240 -0
  347. package/src/components/verbs/__fixtures__/schemas/spdx-2.3.schema.json +740 -0
  348. package/src/components/verbs/__tests__/mock-cloud-executor.ts +102 -0
  349. package/src/components/verbs/__tests__/mock-process-runner.ts +79 -0
  350. package/src/components/verbs/__tests__/mock-sbom-generator.ts +85 -0
  351. package/src/components/verbs/bom-writer.test.ts +331 -0
  352. package/src/components/verbs/bom-writer.ts +386 -0
  353. package/src/components/verbs/build-archive.test.ts +251 -0
  354. package/src/components/verbs/build-archive.ts +296 -0
  355. package/src/components/verbs/build.test.ts +222 -0
  356. package/src/components/verbs/build.ts +252 -0
  357. package/src/components/verbs/cloud-executor.ts +181 -0
  358. package/src/components/verbs/component-bom.test.ts +219 -0
  359. package/src/components/verbs/component-bom.ts +189 -0
  360. package/src/components/verbs/index.ts +49 -0
  361. package/src/components/verbs/license-policy.ts +115 -0
  362. package/src/components/verbs/lockfile-sbom-generator.test.ts +195 -0
  363. package/src/components/verbs/lockfile-sbom-generator.ts +236 -0
  364. package/src/components/verbs/process-runner.test.ts +79 -0
  365. package/src/components/verbs/process-runner.ts +113 -0
  366. package/src/components/verbs/reproducibility.test.ts +24 -0
  367. package/src/components/verbs/reproducibility.ts +100 -0
  368. package/src/components/verbs/sbom-generator.test.ts +96 -0
  369. package/src/components/verbs/sbom-generator.ts +209 -0
  370. package/src/components/verbs/sbom.test.ts +184 -0
  371. package/src/components/verbs/sbom.ts +152 -0
  372. package/src/components/verbs/shell.test.ts +36 -0
  373. package/src/components/verbs/shell.ts +51 -0
  374. package/src/components/verbs/sign.test.ts +210 -0
  375. package/src/components/verbs/sign.ts +350 -0
  376. package/src/components/verbs/stub.ts +34 -0
  377. package/src/components/verbs/tool-sbom-generator.test.ts +194 -0
  378. package/src/components/verbs/tool-sbom-generator.ts +192 -0
  379. package/src/components/verbs/verify.test.ts +159 -0
  380. package/src/components/verbs/verify.ts +179 -0
  381. package/src/components/verbs/vex.ts +182 -0
  382. package/src/components/verbs/vuln-gate.test.ts +201 -0
  383. package/src/components/verbs/vuln-gate.ts +170 -0
  384. package/src/components/verbs/vuln-scan.test.ts +145 -0
  385. package/src/components/verbs/vuln-scan.ts +266 -0
  386. package/src/components/verbs/wait-verify.test.ts +111 -0
  387. package/src/components/verbs/wait-verify.ts +171 -0
  388. package/src/config.test.ts +74 -1
  389. package/src/config.ts +219 -0
  390. package/src/index.ts +32 -0
  391. package/src/lexicon.ts +88 -0
  392. package/src/lifecycle/build-ledger-store.test.ts +217 -0
  393. package/src/lifecycle/build-ledger-store.ts +165 -0
  394. package/src/lifecycle/build-ledger.test.ts +349 -0
  395. package/src/lifecycle/build-ledger.ts +305 -0
  396. package/src/lifecycle/git.test.ts +118 -0
  397. package/src/lifecycle/git.ts +149 -14
  398. package/src/lifecycle/index.ts +5 -0
  399. package/src/lifecycle/oras-referrer-lookup.test.ts +116 -0
  400. package/src/lifecycle/oras-referrer-lookup.ts +110 -0
  401. package/src/lifecycle/release-ledger.test.ts +209 -0
  402. package/src/lifecycle/release-ledger.ts +185 -0
  403. package/src/lifecycle/status.test.ts +330 -0
  404. package/src/lifecycle/status.ts +278 -0
  405. package/src/lint/component-checks.ts +148 -0
  406. package/src/lint/config.test.ts +21 -0
  407. package/src/lint/engine.ts +11 -2
  408. package/src/lint/presets/relaxed.json +8 -1
  409. package/src/lint/presets/strict.json +8 -1
  410. package/src/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.ts +9 -0
  411. package/src/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.ts +9 -0
  412. package/src/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.ts +11 -0
  413. package/src/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.ts +13 -0
  414. package/src/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.ts +11 -0
  415. package/src/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.ts +27 -0
  416. package/src/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.ts +10 -0
  417. package/src/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.ts +23 -0
  418. package/src/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.ts +10 -0
  419. package/src/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.ts +19 -0
  420. package/src/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.ts +10 -0
  421. package/src/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.ts +20 -0
  422. package/src/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.ts +23 -0
  423. package/src/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.ts +10 -0
  424. package/src/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.ts +14 -0
  425. package/src/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.ts +18 -0
  426. package/src/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.ts +10 -0
  427. package/src/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.ts +14 -0
  428. package/src/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.ts +13 -0
  429. package/src/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.ts +13 -0
  430. package/src/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.ts +12 -0
  431. package/src/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.ts +18 -0
  432. package/src/lint/rules/comp/comp.test.ts +378 -0
  433. package/src/lint/rules/comp/comp001-publishes-never-applies.ts +78 -0
  434. package/src/lint/rules/comp/comp002-dangling-wiring-ref.ts +94 -0
  435. package/src/lint/rules/comp/comp003-mutating-no-rollback.ts +115 -0
  436. package/src/lint/rules/comp/comp004-gate-needs-temporal.ts +66 -0
  437. package/src/lint/rules/comp/comp005-capability-kind-is-noun.ts +113 -0
  438. package/src/lint/rules/comp/comp006-shell-needs-reason.ts +55 -0
  439. package/src/lint/rules/comp/comp007-composition-sprawl.ts +71 -0
  440. package/src/lint/rules/comp/index.ts +37 -0
  441. package/src/lint/rules/comp/support.ts +173 -0
  442. package/src/lsp/lexicon-providers.test.ts +55 -0
  443. package/src/lsp/lexicon-providers.ts +13 -3
  444. package/src/op/activity-registry.test.ts +38 -0
  445. package/src/op/activity-registry.ts +31 -12
  446. package/src/op/activity-runtime.ts +73 -0
  447. package/src/op/builders.ts +92 -0
  448. package/src/op/index.ts +3 -1
  449. package/src/ownership.test.ts +24 -26
  450. package/src/ownership.ts +26 -38
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-ledger.d.ts","sourceRoot":"","sources":["../../src/lifecycle/release-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,4FAA4F;IAC5F,OAAO,EAAE,CAAC,CAAC;IACX,6FAA6F;IAC7F,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;;OAOG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,iJAAiJ;IACjJ,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;IACd,gOAAgO;IAChO,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAaD,4KAA4K;AAC5K,qBAAa,yBAA0B,SAAQ,KAAK;aACtB,OAAO,EAAE,MAAM,EAAE;gBAAjB,OAAO,EAAE,MAAM,EAAE;CAI9C;AAED,yFAAyF;AACzF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,EAAE,CAO9E;AAED,gIAAgI;AAChI,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAEhE;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,kBAAkB,EACzB,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC,CAQpD;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB1D;AAED,4EAA4E;AAC5E,wBAAsB,uBAAuB,CAAC,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAExF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CASvF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CAE1F"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Status surface — reconciles the release ledger against live truth (#568,
3
+ * epic #551 "Build & deploy observability").
4
+ *
5
+ * Two ledgers, joined by one key. What's been built lives in the
6
+ * content-addressed `BuildArchive` (../components/verbs/build-archive.ts,
7
+ * ./build-ledger.ts). What we *recorded* deploying lives in the release
8
+ * ledger (./release-ledger.ts). What's *actually running* is live truth:
9
+ * ownership markers (../ownership.ts) plus `lifecycle diff --live`
10
+ * (./live-diff.ts). This module is the join: for each component/env, line up
11
+ * the latest recorded release against whatever live evidence is available,
12
+ * and flag the four things that matter —
13
+ *
14
+ * - **unrecorded** — something is live/owned but no release record exists
15
+ * for it. Someone (or some pipeline) deployed outside the recorded path.
16
+ * - **stale** — a release record exists but nothing live corresponds to it
17
+ * anymore (the component disappeared from observation).
18
+ * - **drifted** — the environment's live/owned resources don't confirm the
19
+ * recorded digest one way or the other from this join alone (recorded,
20
+ * but live identity can't be read back to a digest) — surfaced as a
21
+ * lower-confidence signal rather than silently treated as "reconciled".
22
+ * - **reconciled** — a release record exists and live evidence (via
23
+ * ownership) confirms the component is present and owned by chant.
24
+ *
25
+ * This is deliberately a light-touch reconciliation: chant's lexicons report
26
+ * resource-level status (`ResourceMetadata`), not "the digest currently
27
+ * running" (most lexicons have no notion of image digest at all — a
28
+ * CloudFormation stack doesn't expose "the ECS task's image digest" through
29
+ * `describeResources`). So the live axis here is presence/ownership, not a
30
+ * digest re-derivation; digest-level truth is what the *release ledger*
31
+ * itself provides, and cross-environment digest comparison
32
+ * (`buildIsInBothEnvs`) is the query the epic actually asks for ("which
33
+ * build is in prod, and is it the one tested in staging").
34
+ */
35
+ import type { ChangeSet, ChangeAction } from "./change-set.js";
36
+ import { type ReleaseRecord } from "./release-ledger.js";
37
+ import type { BuildLedgerEntry, ComponentBomSummary } from "./build-ledger.js";
38
+ /** One row of `chant components status [env]` — the per-component join of recorded vs live. */
39
+ export interface ComponentStatusRow {
40
+ component: string;
41
+ env: string;
42
+ /** The latest recorded release for this component/env, if any. */
43
+ recorded?: ReleaseRecord;
44
+ /** Build-ledger detail for the recorded digest, when discoverable (referrers, manifest digest, this artifact's own reproducibility — #614). */
45
+ build?: BuildLedgerEntry;
46
+ /**
47
+ * Component-level BOM aggregation summary (#614,
48
+ * ../components/verbs/component-bom.ts), when the recorded digest's build
49
+ * archive manifest is available (`opts.componentBomByDigest`). Reports
50
+ * every leaf BOM (software SBOM + IaC config-BOM) the component's archive
51
+ * carries and whether they compose 1:1 or as a real multi-artifact
52
+ * assembly — independent of `build`/`buildsByDigest` (which stays scoped
53
+ * to image entries), since a config-only/infra component with no image
54
+ * still has a component BOM to report.
55
+ */
56
+ componentBom?: ComponentBomSummary;
57
+ /** Live reconciliation verdict for this row. */
58
+ reconciliation: "reconciled" | "unrecorded" | "stale" | "drifted" | "unknown";
59
+ /** Human-readable detail backing the verdict. */
60
+ detail: string;
61
+ }
62
+ export interface ComponentStatusResult {
63
+ env: string;
64
+ rows: ComponentStatusRow[];
65
+ /** Count of malformed ledger lines skipped (surfaced so a corrupted ledger is never silently invisible). */
66
+ malformedLedgerLines: number;
67
+ }
68
+ /**
69
+ * Live evidence for one component, distilled from a `ChangeSet` entry
70
+ * (./change-set.ts) — the same read-only classification `lifecycle plan`
71
+ * already computes from ownership + `diffLive`. `chant components status`
72
+ * doesn't recompute live/ownership logic; it reuses `buildChangeSet`'s
73
+ * output, so "unrecorded deploy" and "drift" both key off the one
74
+ * ownership-aware classification chant already trusts.
75
+ */
76
+ export interface LiveComponentEvidence {
77
+ /** True if this component name was observed live at all (declared+live, or orphan+live). */
78
+ live: boolean;
79
+ /** The `ChangeSet` action chant's existing plan logic assigned, when the component maps to a tracked entity/resource name. */
80
+ action?: ChangeAction;
81
+ /** Ownership verdict, when known. */
82
+ ownership?: "owned" | "foreign" | "unknown";
83
+ }
84
+ /**
85
+ * Component -> live entity/resource name(s) it owns (#598). Mirrors
86
+ * `Component.liveNames` (../components/component.ts) without importing it —
87
+ * this module stays decoupled from the typed authoring form, since a
88
+ * hand-written JSON component or a future non-chant frontend can supply the
89
+ * same mapping without going through `Component` at all. A component absent
90
+ * from this map, or mapped to `undefined`/an empty array, falls back to its
91
+ * own name as the sole live name — the original name == entity join.
92
+ */
93
+ export type LiveNameMapping = Map<string, string[] | undefined>;
94
+ /** Resolve the live entity/resource name(s) a component owns: its explicit mapping, or `[component]` when none is given. */
95
+ export declare function resolveLiveNames(component: string, mapping?: LiveNameMapping): string[];
96
+ /**
97
+ * Build a `component -> live evidence` map from a `ChangeSet`. Components and
98
+ * chant entities are different namespaces (a component's `name` need not
99
+ * equal any single lexicon entity name), so callers that want live
100
+ * reconciliation for a component whose live name(s) differ from its own name
101
+ * pass `nameMapping` (typically projected from `Component.liveNames`, see
102
+ * ../components/component.ts) — e.g. `new Map([["search-svc",
103
+ * ["search-service-v2"]]])`. Without a mapping (or for a component with no
104
+ * entry in it), the component's own name is used as its sole live name — the
105
+ * identity-keyed join that was this function's only behavior before #598,
106
+ * preserved here as the fallback so existing callers see no change.
107
+ */
108
+ export declare function liveEvidenceFromChangeSet(cs: ChangeSet, nameMapping?: LiveNameMapping): Map<string, LiveComponentEvidence>;
109
+ /**
110
+ * Reconcile the release ledger against live evidence for one environment.
111
+ * Pure — no I/O. Callers assemble `records` (./release-ledger.ts's
112
+ * `readReleaseLedger`), `liveEvidence` (from a `ChangeSet` via
113
+ * `liveEvidenceFromChangeSet`, or `undefined` when `--live` wasn't
114
+ * requested), `builds` (a `component -> BuildLedgerEntry` lookup keyed by
115
+ * digest, from ./build-ledger.ts), and `componentBomByDigest` (#614, a
116
+ * `digest -> ComponentBomSummary` lookup, also from ./build-ledger.ts) ahead
117
+ * of time.
118
+ */
119
+ export declare function reconcileStatus(env: string, records: ReleaseRecord[], opts?: {
120
+ liveEvidence?: Map<string, LiveComponentEvidence>;
121
+ /** Build-ledger detail keyed by digest, when available. */
122
+ buildsByDigest?: Map<string, BuildLedgerEntry>;
123
+ /** Component-level BOM aggregation summary keyed by digest, when available (#614). Independent of `buildsByDigest` — a config-only/infra component with no image entry still has a component BOM to report. */
124
+ componentBomByDigest?: Map<string, ComponentBomSummary>;
125
+ /** Component names known to exist (from `discoverComponents`) but with no release record at all — still reported as `unrecorded` when live evidence says they're running. */
126
+ allComponents?: string[];
127
+ }): ComponentStatusRow[];
128
+ /**
129
+ * Answer "which build is in `envA`, and is it the one tested in `envB`" —
130
+ * the single-query comparison the epic names explicitly — for one component
131
+ * across two environments' release ledgers.
132
+ */
133
+ export interface CrossEnvComparison {
134
+ component: string;
135
+ envA: string;
136
+ envB: string;
137
+ digestA?: string;
138
+ digestB?: string;
139
+ /** True only when both envs have a recorded digest and they match. */
140
+ same: boolean;
141
+ }
142
+ /** Compare the latest recorded digest for `component` between two environments' release records. */
143
+ export declare function compareAcrossEnvironments(component: string, envA: {
144
+ name: string;
145
+ records: ReleaseRecord[];
146
+ }, envB: {
147
+ name: string;
148
+ records: ReleaseRecord[];
149
+ }): CrossEnvComparison;
150
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/lifecycle/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE5E,+FAA+F;AAC/F,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,kEAAkE;IAClE,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,+IAA+I;IAC/I,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,gDAAgD;IAChD,cAAc,EAAE,YAAY,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IAC9E,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,kBAAkB,EAAE,CAAC;IAC3B,4GAA4G;IAC5G,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,4FAA4F;IAC5F,IAAI,EAAE,OAAO,CAAC;IACd,8HAA8H;IAC9H,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,qCAAqC;IACrC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;CAC7C;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;AAEhE,4HAA4H;AAC5H,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,EAAE,CAGvF;AA2BD;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,SAAS,EACb,WAAW,CAAC,EAAE,eAAe,GAC5B,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CA+BpC;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,aAAa,EAAE,EACxB,IAAI,CAAC,EAAE;IACL,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAClD,2DAA2D;IAC3D,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC/C,+MAA+M;IAC/M,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACxD,6KAA6K;IAC7K,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,GACA,kBAAkB,EAAE,CA4CtB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,IAAI,EAAE,OAAO,CAAC;CACf;AAED,oGAAoG;AACpG,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,EAAE,CAAA;CAAE,EAChD,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,EAAE,CAAA;CAAE,GAC/C,kBAAkB,CAWpB"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Component composition checks — the COMP* rule family (#562, epic #551).
3
+ *
4
+ * COR/EVL rules (./rule.ts, ./engine.ts) check one `ts.SourceFile`'s AST in
5
+ * isolation, synchronously — no execution, no cross-file knowledge. A COMP*
6
+ * rule cannot work that way: "publishes but never applies", "`imageRef`
7
+ * points at a nonexistent phase", and "identical composition repeated across
8
+ * components" are all properties of the *discovered component graph*, which
9
+ * only exists after `*.component.ts` files are actually imported (mirroring
10
+ * `../components/discover.ts`'s `discoverComponents`, itself async for the
11
+ * same reason `../discovery/index.ts`'s `discover()` is).
12
+ *
13
+ * Rather than stretch `LintRule.check(context)` (sync, single-file, AST-only)
14
+ * to cover this, COMP* rules follow the precedent chant already has for
15
+ * "check something that needs real, resolved, whole-project data":
16
+ * `./post-synth.ts`'s `PostSynthCheck`/`PostSynthContext`/`runPostSynthChecks`,
17
+ * which wraps a real (async) build result for a sync `check(ctx)` call. This
18
+ * module is that same shape, one layer earlier in the pipeline — over the
19
+ * discovered `Component` graph instead of serialized resource output — so
20
+ * `chant lint` (not just `chant build`) can run it. See
21
+ * ../components/discover.ts's own docstring for why `Component` gets a
22
+ * parallel, purpose-built convention rather than reusing `Declarable`'s.
23
+ */
24
+ import type { Component } from "../components/component.js";
25
+ import type { DiscoveredComponent } from "../components/discover.js";
26
+ import type { RollbackPolicy } from "../components/capability.js";
27
+ import type { Severity } from "./rule.js";
28
+ /** One discovered component, keyed by its declared name, with the file it came from. */
29
+ export interface ComponentCheckEntry {
30
+ component: Component;
31
+ filePath: string;
32
+ }
33
+ /** Context handed to a `ComponentCheck` — the whole discovered component graph for one project. */
34
+ export interface ComponentCheckContext {
35
+ /** Every discovered component, keyed by `component.name`. */
36
+ components: Map<string, ComponentCheckEntry>;
37
+ /**
38
+ * Every capability `kind` registered for this project — core's starter set
39
+ * plus whatever the active lexicons contribute (e.g. `cfn-deploy` when
40
+ * `lexicons: ["aws"]`). Supplied by the `chant lint` CLI, which builds the
41
+ * registry from the project's config; undefined when a check runs without a
42
+ * resolved registry (e.g. a direct unit test), in which case a rule should
43
+ * fall back to core's starter set. Rules that key off "is this a known verb"
44
+ * (e.g. COMP005) read this rather than hard-coding a verb list.
45
+ */
46
+ knownKinds?: ReadonlySet<string>;
47
+ /**
48
+ * Each registered verb's rollback disposition (`native`/`none-by-design`/
49
+ * `needs-opt-out`), derived from the project's capability registry the same
50
+ * way `knownKinds` is. Read by COMP003 instead of a hard-coded verb list;
51
+ * undefined when no registry was resolved (a check then treats every kind as
52
+ * `none-by-design`, i.e. flags nothing).
53
+ */
54
+ rollbackPolicies?: ReadonlyMap<string, RollbackPolicy>;
55
+ }
56
+ /** A diagnostic from a component composition check. Shaped like `PostSynthDiagnostic`, plus a `file` so it can be merged into `LintDiagnostic`s and reported per-file like every other lint diagnostic. */
57
+ export interface ComponentCheckDiagnostic {
58
+ /** ID of the check that produced this diagnostic (e.g. "COMP001"). */
59
+ checkId: string;
60
+ severity: Severity;
61
+ message: string;
62
+ /** File the discovered component was declared in — where the diagnostic is reported. */
63
+ file: string;
64
+ /** The component name this diagnostic concerns. */
65
+ component: string;
66
+ }
67
+ /** A composition-level lint check over the whole discovered component graph. */
68
+ export interface ComponentCheck {
69
+ /** Unique identifier, e.g. "COMP001". */
70
+ id: string;
71
+ description: string;
72
+ severity: Severity;
73
+ category: "correctness" | "style" | "performance" | "security";
74
+ /** Execute the check and return diagnostics. */
75
+ check(ctx: ComponentCheckContext): ComponentCheckDiagnostic[];
76
+ }
77
+ /**
78
+ * Discover every component under `path` and run every `ComponentCheck`
79
+ * against the resulting graph. Mirrors `runPostSynthChecks`'s shape
80
+ * (async discovery/build once, then every check runs sync over the result),
81
+ * except the input is `discoverComponents`'s result rather than a build's
82
+ * serialized output.
83
+ *
84
+ * Discovery errors (e.g. a duplicate component name, a `*.component.ts` file
85
+ * that throws on import) are surfaced as a single synthetic diagnostic per
86
+ * error under the pseudo-check id "COMP000" rather than silently dropped —
87
+ * matching how `discoverComponents`'s caller (`../components/cli-support.ts`)
88
+ * always surfaces `result.errors` rather than ignoring them.
89
+ */
90
+ export declare function runComponentChecks(path: string, checks: ComponentCheck[], registryContext?: Pick<ComponentCheckContext, "knownKinds" | "rollbackPolicies">): Promise<ComponentCheckDiagnostic[]>;
91
+ /** Structural type guard, mirroring `isPostSynthCheck` — used by rule discovery/registry code. */
92
+ export declare function isComponentCheck(value: unknown): value is ComponentCheck;
93
+ /** Re-exported for rule modules that need the discovered shape without importing `../components/discover` directly. */
94
+ export type { DiscoveredComponent };
95
+ //# sourceMappingURL=component-checks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-checks.d.ts","sourceRoot":"","sources":["../../src/lint/component-checks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEvC,wFAAwF;AACxF,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mGAAmG;AACnG,MAAM,WAAW,qBAAqB;IACpC,6DAA6D;IAC7D,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC7C;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACxD;AAED,2MAA2M;AAC3M,MAAM,WAAW,wBAAwB;IACvC,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,aAAa,GAAG,OAAO,GAAG,aAAa,GAAG,UAAU,CAAC;IAC/D,gDAAgD;IAChD,KAAK,CAAC,GAAG,EAAE,qBAAqB,GAAG,wBAAwB,EAAE,CAAC;CAC/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,cAAc,EAAE,EACxB,eAAe,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAC/E,OAAO,CAAC,wBAAwB,EAAE,CAAC,CA+BrC;AAED,kGAAkG;AAClG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAUxE;AAED,uHAAuH;AACvH,YAAY,EAAE,mBAAmB,EAAE,CAAC"}
@@ -10,6 +10,29 @@ export interface LintRunResult {
10
10
  reason?: string;
11
11
  }>;
12
12
  }
13
+ /**
14
+ * Represents a disable directive found in source code comments
15
+ */
16
+ export interface DisableDirective {
17
+ /** Line number where the directive appears (1-based) */
18
+ line: number;
19
+ /** Type of directive */
20
+ type: "file" | "line" | "next-line";
21
+ /** Specific rule IDs to disable, or undefined for all rules */
22
+ ruleIds?: string[];
23
+ /** Optional reason for the suppression (text after ` -- `) */
24
+ reason?: string;
25
+ }
26
+ /**
27
+ * Parse `chant-disable`/`chant-disable-line`/`chant-disable-next-line`
28
+ * comments out of raw file content. Exported (in addition to being used
29
+ * internally by `runLint`) so other diagnostic sources that are not plain
30
+ * per-file AST `LintRule`s — e.g. ../lint/rules/comp's component composition
31
+ * checks, which produce whole-component diagnostics rather than
32
+ * exact-line ones — can still honor at least the file-level directive form
33
+ * without duplicating this parsing.
34
+ */
35
+ export declare function parseDisableComments(content: string): DisableDirective[];
13
36
  /**
14
37
  * Execute lint rules on a set of files
15
38
  * @param files - Array of file paths to lint
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/lint/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAe,MAAM,QAAQ,CAAC;AAIpE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,mFAAmF;IACnF,UAAU,EAAE,KAAK,CAAC,cAAc,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD;AAyKD;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,MAAM,EAAE,EACf,KAAK,EAAE,QAAQ,EAAE,EACjB,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACjD,OAAO,CAAC,aAAa,CAAC,CAqDxB"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/lint/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAe,MAAM,QAAQ,CAAC;AAIpE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,mFAAmF;IACnF,UAAU,EAAE,KAAK,CAAC,cAAc,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC;IACpC,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAkED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAyCxE;AAgDD;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,MAAM,EAAE,EACf,KAAK,EAAE,QAAQ,EAAE,EACjB,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACjD,OAAO,CAAC,aAAa,CAAC,CAqDxB"}
@@ -14,6 +14,13 @@
14
14
  "COR012": "warning",
15
15
  "COR013": "info",
16
16
  "COR014": "warning",
17
- "COR015": "warning"
17
+ "COR015": "warning",
18
+ "COMP001": "error",
19
+ "COMP002": "error",
20
+ "COMP003": "error",
21
+ "COMP004": "error",
22
+ "COMP005": "error",
23
+ "COMP006": "error",
24
+ "COMP007": "warning"
18
25
  }
19
26
  }
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../components/component.js";
2
+ /** Duplicate component name (see broken-b.component.ts) — exercises the COMP000 discovery-error surfacing path in component-checks.ts. */
3
+ export declare const dup: Component;
4
+ //# sourceMappingURL=broken-a.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broken-a.component.d.ts","sourceRoot":"","sources":["../../../../../../src/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAGrE,0IAA0I;AAC1I,eAAO,MAAM,GAAG,EAAE,SAIjB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../components/component.js";
2
+ /** Duplicate component name (see broken-a.component.ts) — exercises the COMP000 discovery-error surfacing path in component-checks.ts. */
3
+ export declare const dup: Component;
4
+ //# sourceMappingURL=broken-b.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broken-b.component.d.ts","sourceRoot":"","sources":["../../../../../../src/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAGrE,0IAA0I;AAC1I,eAAO,MAAM,GAAG,EAAE,SAIjB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ /** COMP001 fail case: publishes an artifact nothing ever consumes — no other component references it, and no later step in this component references the Publish phase's output. */
3
+ export declare const orphanLib: Component;
4
+ //# sourceMappingURL=orphan-lib.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orphan-lib.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,oLAAoL;AACpL,eAAO,MAAM,SAAS,EAAE,SAMvB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ /** Consumer that references jar-lib's published artifact — makes jar-lib's publish step "consumed" for COMP001. */
3
+ export declare const emrJob: Component;
4
+ //# sourceMappingURL=emr-job.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emr-job.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,mHAAmH;AACnH,eAAO,MAAM,MAAM,EAAE,SAQpB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ /** Producer whose published artifact IS consumed downstream (by emr-job.component.ts) — COMP001 must not flag this. */
3
+ export declare const jarLib: Component;
4
+ //# sourceMappingURL=jar-lib.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jar-lib.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,uHAAuH;AACvH,eAAO,MAAM,MAAM,EAAE,SAMpB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ /**
3
+ * COMP002 fail case: two dangling wiring references.
4
+ * - "@Build.digest" names a phase ("Build") that does not exist in this
5
+ * component's deploy (the actual phase is named "Publish").
6
+ * - "@missing-lib.publish.uri" names a component that was never discovered
7
+ * at all in this fixture directory.
8
+ */
9
+ export declare const searchService: Component;
10
+ //# sourceMappingURL=search-service.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-service.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,SAgB3B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ export declare const jarLib: Component;
3
+ //# sourceMappingURL=jar-lib.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jar-lib.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,eAAO,MAAM,MAAM,EAAE,SAMpB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ /** COMP002 pass case: every wiring reference resolves — "@Publish.digest" points at this component's own "Publish" phase, and "@jar-lib.publish.uri" points at a discovered component listed in dependsOn. */
3
+ export declare const searchService: Component;
4
+ //# sourceMappingURL=search-service.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-service.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,8MAA8M;AAC9M,eAAO,MAAM,aAAa,EAAE,SAkB3B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ /** COMP003 fail case: "run-migration" has no native rollback, no noRollback opt-out, no component-level rollback, and no compensation sibling step. */
3
+ export declare const migrator: Component;
4
+ //# sourceMappingURL=migrator.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrator.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,uJAAuJ;AACvJ,eAAO,MAAM,QAAQ,EAAE,SAKtB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ /** COMP003 pass case: "run-migration" is a needs-opt-out kind, but declares an explicit noRollback reason. */
3
+ export declare const migrator: Component;
4
+ //# sourceMappingURL=migrator.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrator.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,8GAA8G;AAC9G,eAAO,MAAM,QAAQ,EAAE,SActB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ /** COMP003 pass case: cfn-deploy has a known native rollback, so no opt-out is required. */
3
+ export declare const ordersTable: Component;
4
+ //# sourceMappingURL=orders-table.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orders-table.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,4FAA4F;AAC5F,eAAO,MAAM,WAAW,EAAE,SAKzB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ /** COMP004 fail case: a gate step with no disable directive — flagged, since the local executor cannot run it. */
3
+ export declare const neo4jCluster: Component;
4
+ //# sourceMappingURL=neo4j-cluster.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neo4j-cluster.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,kHAAkH;AAClH,eAAO,MAAM,YAAY,EAAE,SAe1B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ /** COMP004 pass case: a genuine gate, opted out via a file-level disable directive with a documented reason — the intended path for a component that graduates to the Temporal backend. */
3
+ export declare const neo4jCluster: Component;
4
+ //# sourceMappingURL=neo4j-cluster.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neo4j-cluster.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,2LAA2L;AAC3L,eAAO,MAAM,YAAY,EAAE,SAiB1B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ /** COMP004 pass case: no gate step anywhere — nothing requires the durable backend. */
3
+ export declare const ordersTable: Component;
4
+ //# sourceMappingURL=orders-table.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orders-table.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,uFAAuF;AACvF,eAAO,MAAM,WAAW,EAAE,SAKzB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ /** COMP005 fail case: the Apply step's kind is named after this very component ("deploy-search-service") — a noun, not an operation. */
3
+ export declare const searchService: Component;
4
+ //# sourceMappingURL=search-service.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-service.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,wIAAwI;AACxI,eAAO,MAAM,aAAa,EAAE,SAS3B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ /** COMP005 pass case: every step kind is a verb (an operation), never the component's own name. */
3
+ export declare const searchService: Component;
4
+ //# sourceMappingURL=search-service.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-service.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,mGAAmG;AACnG,eAAO,MAAM,aAAa,EAAE,SAa3B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ /** COMP006 fail case: a raw "shell" step with no "reason" at all. */
3
+ export declare const legacyTool: Component;
4
+ //# sourceMappingURL=legacy-tool.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-tool.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,qEAAqE;AACrE,eAAO,MAAM,UAAU,EAAE,SAKxB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ /** COMP006 pass case: the "shell" escape hatch declares a non-empty reason. */
3
+ export declare const legacyTool: Component;
4
+ //# sourceMappingURL=legacy-tool.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-tool.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,+EAA+E;AAC/E,eAAO,MAAM,UAAU,EAAE,SASxB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ /** COMP007 fail case: identical phase/step-kind shape to orders-table.component.ts. */
3
+ export declare const inventoryTable: Component;
4
+ //# sourceMappingURL=inventory-table.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inventory-table.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,uFAAuF;AACvF,eAAO,MAAM,cAAc,EAAE,SAQ5B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ /** COMP007 fail case: identical phase/step-kind shape to inventory-table.component.ts — a declaration-sprawl hint (should reach for a preset). */
3
+ export declare const ordersTable: Component;
4
+ //# sourceMappingURL=orders-table.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orders-table.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,kJAAkJ;AAClJ,eAAO,MAAM,WAAW,EAAE,SAQzB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ export declare const ordersTable: Component;
3
+ //# sourceMappingURL=orders-table.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orders-table.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,eAAO,MAAM,WAAW,EAAE,SAQzB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Component } from "../../../../../../components/component.js";
2
+ /** COMP007 pass case: structurally distinct from orders-table.component.ts (service: build+publish+apply+verify vs. infra: apply+verify only) — no sprawl hint expected. */
3
+ export declare const searchService: Component;
4
+ //# sourceMappingURL=search-service.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-service.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,4KAA4K;AAC5K,eAAO,MAAM,aAAa,EAAE,SAa3B,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * COMP001: publishes-but-never-applies
3
+ *
4
+ * Flags a component that publishes an image/artifact (a `publish-image`,
5
+ * `publish-artifact`, or `load-image-on-host` step) that nothing ever
6
+ * consumes: neither an apply/submit step later in the same component (via a
7
+ * `@Phase.field` prior-step reference into the publish phase) nor any other
8
+ * component (via `@<this-component>.publish.uri|digest|key`). A publish step
9
+ * with no consumer either belongs to a producer/library component another
10
+ * component should depend on, or is dead composition — see epic #551 §7
11
+ * ("What chant adds") and §"Failure modes" (renamed/orphaned sprawl).
12
+ *
13
+ * Triggers on: a `service`-shaped component whose `publish-image` output is
14
+ * never referenced by its own Apply phase or by any sibling component.
15
+ * OK: the publish output is referenced via `@Publish.digest` (same
16
+ * component) or `@<name>.publish.uri` (a consumer component).
17
+ */
18
+ import type { ComponentCheck } from "../../component-checks.js";
19
+ export declare const comp001PublishesNeverAppliesRule: ComponentCheck;
20
+ //# sourceMappingURL=comp001-publishes-never-applies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comp001-publishes-never-applies.d.ts","sourceRoot":"","sources":["../../../../src/lint/rules/comp/comp001-publishes-never-applies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAmD,MAAM,wBAAwB,CAAC;AAK9G,eAAO,MAAM,gCAAgC,EAAE,cAsD9C,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * COMP002: dangling-wiring-ref
3
+ *
4
+ * Flags a wiring reference (`@Phase.field` or `@<component>.publish.*`,
5
+ * carried in a step's `imageRef`/`jar`/`revision`/`inputs`/any other
6
+ * capability-specific field — see ../../../components/component.ts's
7
+ * `Wiring`) that points at a phase or component that does not exist:
8
+ *
9
+ * - `@Phase.field` naming a phase not declared anywhere in this component's
10
+ * own `deploy` (top-level phase names only — a nested fan-out phase's
11
+ * name is addressed by its own name, never a parent's, matching how
12
+ * ../../../components/driver.ts's `resolveWiring` keys `phaseOutputs` by
13
+ * the phase the step ran directly under).
14
+ * - `@<component>.publish.<field>` naming a component that either is not
15
+ * discovered at all, or is discovered but not listed in this component's
16
+ * `dependsOn` — the graph only resolves an artifact reference for a
17
+ * declared dependency (composition-and-wiring.mdx#cross-component-outputs).
18
+ *
19
+ * Triggers on: `imageRef: "@Build.digest"` when no phase named "Build"
20
+ * exists, or `jar: "@some-lib.publish.uri"` when "some-lib" is undiscovered
21
+ * or missing from `dependsOn`.
22
+ * OK: `imageRef: "@Publish.digest"` when a "Publish" phase exists in the same
23
+ * component, or `jar: "@jar-lib.publish.uri"` when "jar-lib" is discovered
24
+ * and listed in `dependsOn`.
25
+ */
26
+ import type { ComponentCheck } from "../../component-checks.js";
27
+ export declare const comp002DanglingWiringRefRule: ComponentCheck;
28
+ //# sourceMappingURL=comp002-dangling-wiring-ref.d.ts.map