@intentius/chant-lexicon-cpln 0.53.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 (266) hide show
  1. package/README.md +85 -0
  2. package/dist/api.d.ts +77 -0
  3. package/dist/api.d.ts.map +1 -0
  4. package/dist/codegen/docs-cli.d.ts +3 -0
  5. package/dist/codegen/docs-cli.d.ts.map +1 -0
  6. package/dist/codegen/docs.d.ts +17 -0
  7. package/dist/codegen/docs.d.ts.map +1 -0
  8. package/dist/codegen/generate-cli.d.ts +6 -0
  9. package/dist/codegen/generate-cli.d.ts.map +1 -0
  10. package/dist/codegen/generate-lexicon.d.ts +36 -0
  11. package/dist/codegen/generate-lexicon.d.ts.map +1 -0
  12. package/dist/codegen/generate-typescript.d.ts +11 -0
  13. package/dist/codegen/generate-typescript.d.ts.map +1 -0
  14. package/dist/codegen/generate.d.ts +15 -0
  15. package/dist/codegen/generate.d.ts.map +1 -0
  16. package/dist/codegen/naming.d.ts +30 -0
  17. package/dist/codegen/naming.d.ts.map +1 -0
  18. package/dist/codegen/package.d.ts +17 -0
  19. package/dist/codegen/package.d.ts.map +1 -0
  20. package/dist/composites/cron-job.d.ts +60 -0
  21. package/dist/composites/cron-job.d.ts.map +1 -0
  22. package/dist/composites/gvc-environment.d.ts +47 -0
  23. package/dist/composites/gvc-environment.d.ts.map +1 -0
  24. package/dist/composites/index.d.ts +13 -0
  25. package/dist/composites/index.d.ts.map +1 -0
  26. package/dist/composites/public-domain.d.ts +68 -0
  27. package/dist/composites/public-domain.d.ts.map +1 -0
  28. package/dist/composites/secret-access.d.ts +78 -0
  29. package/dist/composites/secret-access.d.ts.map +1 -0
  30. package/dist/composites/serverless-service.d.ts +78 -0
  31. package/dist/composites/serverless-service.d.ts.map +1 -0
  32. package/dist/composites/stateful-service.d.ts +79 -0
  33. package/dist/composites/stateful-service.d.ts.map +1 -0
  34. package/dist/coverage.d.ts +59 -0
  35. package/dist/coverage.d.ts.map +1 -0
  36. package/dist/describe-resources.d.ts +71 -0
  37. package/dist/describe-resources.d.ts.map +1 -0
  38. package/dist/detect.d.ts +14 -0
  39. package/dist/detect.d.ts.map +1 -0
  40. package/dist/entity-props.d.ts +34 -0
  41. package/dist/entity-props.d.ts.map +1 -0
  42. package/dist/generated/index.d.ts +151 -0
  43. package/dist/generated/index.d.ts.map +1 -0
  44. package/dist/generated/runtime.d.ts +5 -0
  45. package/dist/generated/runtime.d.ts.map +1 -0
  46. package/dist/index.d.ts +8 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/init-templates.d.ts +16 -0
  49. package/dist/init-templates.d.ts.map +1 -0
  50. package/dist/integrity.json +35 -0
  51. package/dist/kinds.d.ts +70 -0
  52. package/dist/kinds.d.ts.map +1 -0
  53. package/dist/lint/audit-catalog.d.ts +19 -0
  54. package/dist/lint/audit-catalog.d.ts.map +1 -0
  55. package/dist/lint/post-synth/cpl010-unrestricted-outbound.d.ts +12 -0
  56. package/dist/lint/post-synth/cpl010-unrestricted-outbound.d.ts.map +1 -0
  57. package/dist/lint/post-synth/cpl011-internal-firewall-scope.d.ts +11 -0
  58. package/dist/lint/post-synth/cpl011-internal-firewall-scope.d.ts.map +1 -0
  59. package/dist/lint/post-synth/cpl012-no-literal-credential-env.d.ts +11 -0
  60. package/dist/lint/post-synth/cpl012-no-literal-credential-env.d.ts.map +1 -0
  61. package/dist/lint/post-synth/cpl013-qualified-identity-principal.d.ts +11 -0
  62. package/dist/lint/post-synth/cpl013-qualified-identity-principal.d.ts.map +1 -0
  63. package/dist/lint/post-synth/cpl014-qualified-secret-ref.d.ts +14 -0
  64. package/dist/lint/post-synth/cpl014-qualified-secret-ref.d.ts.map +1 -0
  65. package/dist/lint/post-synth/cpl020-serverless-single-port.d.ts +10 -0
  66. package/dist/lint/post-synth/cpl020-serverless-single-port.d.ts.map +1 -0
  67. package/dist/lint/post-synth/cpl021-cron-job-shape.d.ts +11 -0
  68. package/dist/lint/post-synth/cpl021-cron-job-shape.d.ts.map +1 -0
  69. package/dist/lint/post-synth/cpl022-container-ports.d.ts +10 -0
  70. package/dist/lint/post-synth/cpl022-container-ports.d.ts.map +1 -0
  71. package/dist/lint/post-synth/cpl023-container-resources.d.ts +12 -0
  72. package/dist/lint/post-synth/cpl023-container-resources.d.ts.map +1 -0
  73. package/dist/lint/post-synth/cpl024-probe-handler.d.ts +10 -0
  74. package/dist/lint/post-synth/cpl024-probe-handler.d.ts.map +1 -0
  75. package/dist/lint/post-synth/cpl025-autoscaling-shape.d.ts +11 -0
  76. package/dist/lint/post-synth/cpl025-autoscaling-shape.d.ts.map +1 -0
  77. package/dist/lint/post-synth/cpl026-scale-to-zero.d.ts +11 -0
  78. package/dist/lint/post-synth/cpl026-scale-to-zero.d.ts.map +1 -0
  79. package/dist/lint/post-synth/cpl027-capacity-ai-conflict.d.ts +13 -0
  80. package/dist/lint/post-synth/cpl027-capacity-ai-conflict.d.ts.map +1 -0
  81. package/dist/lint/post-synth/cpl028-volume-set.d.ts +3 -0
  82. package/dist/lint/post-synth/cpl028-volume-set.d.ts.map +1 -0
  83. package/dist/lint/post-synth/cpl029-link-targets.d.ts +3 -0
  84. package/dist/lint/post-synth/cpl029-link-targets.d.ts.map +1 -0
  85. package/dist/lint/post-synth/cpl030-domain-routing.d.ts +3 -0
  86. package/dist/lint/post-synth/cpl030-domain-routing.d.ts.map +1 -0
  87. package/dist/lint/post-synth/cpl040-pinned-image.d.ts +11 -0
  88. package/dist/lint/post-synth/cpl040-pinned-image.d.ts.map +1 -0
  89. package/dist/lint/post-synth/cpl041-image-reference-form.d.ts +12 -0
  90. package/dist/lint/post-synth/cpl041-image-reference-form.d.ts.map +1 -0
  91. package/dist/lint/post-synth/cpl042-gvc-placement.d.ts +10 -0
  92. package/dist/lint/post-synth/cpl042-gvc-placement.d.ts.map +1 -0
  93. package/dist/lint/post-synth/cpl043-policy-scope.d.ts +16 -0
  94. package/dist/lint/post-synth/cpl043-policy-scope.d.ts.map +1 -0
  95. package/dist/lint/post-synth/helpers.d.ts +45 -0
  96. package/dist/lint/post-synth/helpers.d.ts.map +1 -0
  97. package/dist/lint/post-synth/index.d.ts +3 -0
  98. package/dist/lint/post-synth/index.d.ts.map +1 -0
  99. package/dist/lint/rules/cpl001-no-secret-literals.d.ts +3 -0
  100. package/dist/lint/rules/cpl001-no-secret-literals.d.ts.map +1 -0
  101. package/dist/lint/rules/cpl002-prefer-resource-reference.d.ts +3 -0
  102. package/dist/lint/rules/cpl002-prefer-resource-reference.d.ts.map +1 -0
  103. package/dist/lint/rules/index.d.ts +6 -0
  104. package/dist/lint/rules/index.d.ts.map +1 -0
  105. package/dist/lsp/completions.d.ts +7 -0
  106. package/dist/lsp/completions.d.ts.map +1 -0
  107. package/dist/lsp/hover.d.ts +4 -0
  108. package/dist/lsp/hover.d.ts.map +1 -0
  109. package/dist/manifest.json +6 -0
  110. package/dist/meta.json +2110 -0
  111. package/dist/okf/index.md +39 -0
  112. package/dist/okf/rules/CPL001.md +22 -0
  113. package/dist/okf/rules/CPL002.md +22 -0
  114. package/dist/okf/rules/CPL010.md +15 -0
  115. package/dist/okf/rules/CPL011.md +15 -0
  116. package/dist/okf/rules/CPL012.md +15 -0
  117. package/dist/okf/rules/CPL013.md +15 -0
  118. package/dist/okf/rules/CPL014.md +16 -0
  119. package/dist/okf/rules/CPL020.md +11 -0
  120. package/dist/okf/rules/CPL021.md +15 -0
  121. package/dist/okf/rules/CPL022.md +15 -0
  122. package/dist/okf/rules/CPL023.md +15 -0
  123. package/dist/okf/rules/CPL024.md +15 -0
  124. package/dist/okf/rules/CPL025.md +15 -0
  125. package/dist/okf/rules/CPL026.md +15 -0
  126. package/dist/okf/rules/CPL027.md +15 -0
  127. package/dist/okf/rules/CPL028.md +15 -0
  128. package/dist/okf/rules/CPL029.md +15 -0
  129. package/dist/okf/rules/CPL030.md +16 -0
  130. package/dist/okf/rules/CPL040.md +15 -0
  131. package/dist/okf/rules/CPL041.md +15 -0
  132. package/dist/okf/rules/CPL042.md +11 -0
  133. package/dist/okf/rules/CPL043.md +15 -0
  134. package/dist/okf/types/Domain.md +22 -0
  135. package/dist/okf/types/Gvc.md +21 -0
  136. package/dist/okf/types/Identity.md +29 -0
  137. package/dist/okf/types/IpSet.md +21 -0
  138. package/dist/okf/types/Policy.md +28 -0
  139. package/dist/okf/types/Secret.md +23 -0
  140. package/dist/okf/types/VolumeSet.md +22 -0
  141. package/dist/okf/types/Workload.md +38 -0
  142. package/dist/ownership.d.ts +23 -0
  143. package/dist/ownership.d.ts.map +1 -0
  144. package/dist/package-cli.d.ts +3 -0
  145. package/dist/package-cli.d.ts.map +1 -0
  146. package/dist/plugin.d.ts +3 -0
  147. package/dist/plugin.d.ts.map +1 -0
  148. package/dist/reference-catalog.d.ts +24 -0
  149. package/dist/reference-catalog.d.ts.map +1 -0
  150. package/dist/rules/cpl001-no-secret-literals.ts +83 -0
  151. package/dist/rules/cpl002-prefer-resource-reference.ts +71 -0
  152. package/dist/rules/cpl010-unrestricted-outbound.ts +41 -0
  153. package/dist/rules/cpl011-internal-firewall-scope.ts +38 -0
  154. package/dist/rules/cpl012-no-literal-credential-env.ts +58 -0
  155. package/dist/rules/cpl013-qualified-identity-principal.ts +45 -0
  156. package/dist/rules/cpl014-qualified-secret-ref.ts +54 -0
  157. package/dist/rules/cpl020-serverless-single-port.ts +58 -0
  158. package/dist/rules/cpl021-cron-job-shape.ts +64 -0
  159. package/dist/rules/cpl022-container-ports.ts +64 -0
  160. package/dist/rules/cpl023-container-resources.ts +87 -0
  161. package/dist/rules/cpl024-probe-handler.ts +51 -0
  162. package/dist/rules/cpl025-autoscaling-shape.ts +100 -0
  163. package/dist/rules/cpl026-scale-to-zero.ts +67 -0
  164. package/dist/rules/cpl027-capacity-ai-conflict.ts +78 -0
  165. package/dist/rules/cpl028-volume-set.ts +183 -0
  166. package/dist/rules/cpl029-link-targets.ts +155 -0
  167. package/dist/rules/cpl030-domain-routing.ts +137 -0
  168. package/dist/rules/cpl040-pinned-image.ts +48 -0
  169. package/dist/rules/cpl041-image-reference-form.ts +60 -0
  170. package/dist/rules/cpl042-gvc-placement.ts +57 -0
  171. package/dist/rules/cpl043-policy-scope.ts +0 -0
  172. package/dist/rules/helpers.ts +114 -0
  173. package/dist/serializer.d.ts +69 -0
  174. package/dist/serializer.d.ts.map +1 -0
  175. package/dist/skills/chant-cpln-secrets.md +110 -0
  176. package/dist/skills/chant-cpln-workloads.md +78 -0
  177. package/dist/skills/chant-cpln.md +103 -0
  178. package/dist/spec/fetch.d.ts +43 -0
  179. package/dist/spec/fetch.d.ts.map +1 -0
  180. package/dist/spec/parse.d.ts +79 -0
  181. package/dist/spec/parse.d.ts.map +1 -0
  182. package/dist/spec/snapshot-cli.d.ts +18 -0
  183. package/dist/spec/snapshot-cli.d.ts.map +1 -0
  184. package/dist/types/index.d.ts +1649 -0
  185. package/dist/validate-cli.d.ts +3 -0
  186. package/dist/validate-cli.d.ts.map +1 -0
  187. package/dist/validate.d.ts +26 -0
  188. package/dist/validate.d.ts.map +1 -0
  189. package/package.json +74 -0
  190. package/src/api.ts +134 -0
  191. package/src/codegen/docs-cli.ts +7 -0
  192. package/src/codegen/docs.ts +94 -0
  193. package/src/codegen/generate-cli.ts +34 -0
  194. package/src/codegen/generate-lexicon.ts +88 -0
  195. package/src/codegen/generate-typescript.ts +71 -0
  196. package/src/codegen/generate.ts +110 -0
  197. package/src/codegen/naming.ts +61 -0
  198. package/src/codegen/package.ts +35 -0
  199. package/src/composites/composites.test.ts +252 -0
  200. package/src/composites/cron-job.ts +124 -0
  201. package/src/composites/gvc-environment.ts +104 -0
  202. package/src/composites/index.ts +17 -0
  203. package/src/composites/public-domain.ts +144 -0
  204. package/src/composites/secret-access.ts +136 -0
  205. package/src/composites/serverless-service.ts +143 -0
  206. package/src/composites/stateful-service.ts +179 -0
  207. package/src/coverage.ts +149 -0
  208. package/src/describe-resources.test.ts +252 -0
  209. package/src/describe-resources.ts +310 -0
  210. package/src/detect.ts +58 -0
  211. package/src/entity-props.ts +98 -0
  212. package/src/generated/index.d.ts +1649 -0
  213. package/src/generated/index.ts +156 -0
  214. package/src/generated/lexicon-cpln.json +2110 -0
  215. package/src/generated/runtime.ts +4 -0
  216. package/src/index.ts +31 -0
  217. package/src/init-templates.ts +131 -0
  218. package/src/kinds.ts +173 -0
  219. package/src/lint/audit-catalog.ts +230 -0
  220. package/src/lint/post-synth/cpl010-unrestricted-outbound.ts +41 -0
  221. package/src/lint/post-synth/cpl011-internal-firewall-scope.ts +38 -0
  222. package/src/lint/post-synth/cpl012-no-literal-credential-env.ts +58 -0
  223. package/src/lint/post-synth/cpl013-qualified-identity-principal.ts +45 -0
  224. package/src/lint/post-synth/cpl014-qualified-secret-ref.ts +54 -0
  225. package/src/lint/post-synth/cpl020-serverless-single-port.ts +58 -0
  226. package/src/lint/post-synth/cpl021-cron-job-shape.ts +64 -0
  227. package/src/lint/post-synth/cpl022-container-ports.ts +64 -0
  228. package/src/lint/post-synth/cpl023-container-resources.ts +87 -0
  229. package/src/lint/post-synth/cpl024-probe-handler.ts +51 -0
  230. package/src/lint/post-synth/cpl025-autoscaling-shape.ts +100 -0
  231. package/src/lint/post-synth/cpl026-scale-to-zero.ts +67 -0
  232. package/src/lint/post-synth/cpl027-capacity-ai-conflict.ts +78 -0
  233. package/src/lint/post-synth/cpl028-volume-set.ts +183 -0
  234. package/src/lint/post-synth/cpl029-link-targets.ts +155 -0
  235. package/src/lint/post-synth/cpl030-domain-routing.ts +137 -0
  236. package/src/lint/post-synth/cpl040-pinned-image.ts +48 -0
  237. package/src/lint/post-synth/cpl041-image-reference-form.ts +60 -0
  238. package/src/lint/post-synth/cpl042-gvc-placement.ts +57 -0
  239. package/src/lint/post-synth/cpl043-policy-scope.ts +0 -0
  240. package/src/lint/post-synth/helpers.ts +114 -0
  241. package/src/lint/post-synth/index.ts +45 -0
  242. package/src/lint/post-synth/post-synth.test.ts +737 -0
  243. package/src/lint/rules/cpl001-no-secret-literals.ts +83 -0
  244. package/src/lint/rules/cpl002-prefer-resource-reference.ts +71 -0
  245. package/src/lint/rules/index.ts +9 -0
  246. package/src/lint/rules/rules.test.ts +108 -0
  247. package/src/lsp/completions.test.ts +44 -0
  248. package/src/lsp/completions.ts +27 -0
  249. package/src/lsp/hover.test.ts +53 -0
  250. package/src/lsp/hover.ts +130 -0
  251. package/src/ownership.ts +28 -0
  252. package/src/package-cli.ts +25 -0
  253. package/src/plugin.test.ts +131 -0
  254. package/src/plugin.ts +187 -0
  255. package/src/reference-catalog.ts +110 -0
  256. package/src/serializer.test.ts +233 -0
  257. package/src/serializer.ts +253 -0
  258. package/src/skills/chant-cpln-secrets.md +110 -0
  259. package/src/skills/chant-cpln-workloads.md +78 -0
  260. package/src/skills/chant-cpln.md +103 -0
  261. package/src/spec/cpln-openapi.snapshot.json +10651 -0
  262. package/src/spec/fetch.ts +77 -0
  263. package/src/spec/parse.ts +451 -0
  264. package/src/spec/snapshot-cli.ts +71 -0
  265. package/src/validate-cli.ts +8 -0
  266. package/src/validate.ts +102 -0
@@ -0,0 +1,39 @@
1
+ ---
2
+ okf_version: '0.2'
3
+ ---
4
+
5
+ # Resource types
6
+
7
+ * [Domain](/types/Domain.md) - Cpln::Core::Domain
8
+ * [Gvc](/types/Gvc.md) - Cpln::Core::Gvc
9
+ * [Identity](/types/Identity.md) - Cpln::Core::Identity
10
+ * [IpSet](/types/IpSet.md) - Cpln::Core::IpSet
11
+ * [Policy](/types/Policy.md) - Cpln::Core::Policy
12
+ * [Secret](/types/Secret.md) - Cpln::Core::Secret
13
+ * [VolumeSet](/types/VolumeSet.md) - Cpln::Core::VolumeSet
14
+ * [Workload](/types/Workload.md) - Cpln::Core::Workload
15
+
16
+ # Rules
17
+
18
+ * [CPL001](/rules/CPL001.md) - no literal credential material in a cpln declaration.
19
+ * [CPL002](/rules/CPL002.md) - prefer a resource reference over a hand-written link.
20
+ * [CPL010](/rules/CPL010.md) - Workloads should not allow outbound traffic to every address
21
+ * [CPL011](/rules/CPL011.md) - Internal firewall should not be opened to the entire org
22
+ * [CPL012](/rules/CPL012.md) - Credential-shaped environment variables must reference a secret, not a literal
23
+ * [CPL013](/rules/CPL013.md) - Policy bindings must name identities by their GVC-qualified link
24
+ * [CPL014](/rules/CPL014.md) - Secret references in environment variables must name a field
25
+ * [CPL020](/rules/CPL020.md) - Serverless workloads must expose exactly one HTTP port
26
+ * [CPL021](/rules/CPL021.md) - Cron workloads must declare a schedule and expose no ports
27
+ * [CPL022](/rules/CPL022.md) - Container ports must not mix `port` and `ports`, and must be unique across containers
28
+ * [CPL023](/rules/CPL023.md) - Container CPU and memory must clear the platform floors and the memory-to-CPU ratio
29
+ * [CPL024](/rules/CPL024.md) - Each health-check probe must set exactly one of exec, grpc, tcpSocket, httpGet
30
+ * [CPL025](/rules/CPL025.md) - Autoscaling `metric`, `multi` and `target` must form a valid combination
31
+ * [CPL026](/rules/CPL026.md) - minScale 0 must pair with a strategy that can actually scale to zero
32
+ * [CPL027](/rules/CPL027.md) - Capacity AI conflicts with CPU-utilization autoscaling, multi-metric autoscaling and GPUs
33
+ * [CPL028](/rules/CPL028.md) - Volume set capacity, filesystem binding, and workload mount rules
34
+ * [CPL029](/rules/CPL029.md) - Control Plane links must resolve to a declared resource of the right kind and GVC
35
+ * [CPL030](/rules/CPL030.md) - Domain DNS mode, certificate challenge, and routing target must be a valid combination
36
+ * [CPL040](/rules/CPL040.md) - Container images should be pinned to a specific tag or digest
37
+ * [CPL041](/rules/CPL041.md) - Image references must not use docker.io/ or the registry hostname form
38
+ * [CPL042](/rules/CPL042.md) - A GVC must declare where its workloads run
39
+ * [CPL043](/rules/CPL043.md) - Policy target kind, scope and origin must be well formed
@@ -0,0 +1,22 @@
1
+ ---
2
+ type: lint-rule
3
+ title: CPL001
4
+ description: no literal credential material in a cpln declaration.
5
+ id: CPL001
6
+ severity: error
7
+ category: security
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ no literal credential material in a cpln declaration.
12
+
13
+ ## Applies to
14
+
15
+ - [Domain](/types/Domain.md)
16
+ - [Gvc](/types/Gvc.md)
17
+ - [Identity](/types/Identity.md)
18
+ - [IpSet](/types/IpSet.md)
19
+ - [Policy](/types/Policy.md)
20
+ - [Secret](/types/Secret.md)
21
+ - [VolumeSet](/types/VolumeSet.md)
22
+ - [Workload](/types/Workload.md)
@@ -0,0 +1,22 @@
1
+ ---
2
+ type: lint-rule
3
+ title: CPL002
4
+ description: prefer a resource reference over a hand-written link.
5
+ id: CPL002
6
+ severity: info
7
+ category: style
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ prefer a resource reference over a hand-written link.
12
+
13
+ ## Applies to
14
+
15
+ - [Domain](/types/Domain.md)
16
+ - [Gvc](/types/Gvc.md)
17
+ - [Identity](/types/Identity.md)
18
+ - [IpSet](/types/IpSet.md)
19
+ - [Policy](/types/Policy.md)
20
+ - [Secret](/types/Secret.md)
21
+ - [VolumeSet](/types/VolumeSet.md)
22
+ - [Workload](/types/Workload.md)
@@ -0,0 +1,15 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL010
4
+ description: Workloads should not allow outbound traffic to every address
5
+ id: CPL010
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ Workloads should not allow outbound traffic to every address
12
+
13
+ ## Applies to
14
+
15
+ - [Workload](/types/Workload.md)
@@ -0,0 +1,15 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL011
4
+ description: Internal firewall should not be opened to the entire org
5
+ id: CPL011
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ Internal firewall should not be opened to the entire org
12
+
13
+ ## Applies to
14
+
15
+ - [Workload](/types/Workload.md)
@@ -0,0 +1,15 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL012
4
+ description: Credential-shaped environment variables must reference a secret, not a literal
5
+ id: CPL012
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ Credential-shaped environment variables must reference a secret, not a literal
12
+
13
+ ## Applies to
14
+
15
+ - [Workload](/types/Workload.md)
@@ -0,0 +1,15 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL013
4
+ description: Policy bindings must name identities by their GVC-qualified link
5
+ id: CPL013
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ Policy bindings must name identities by their GVC-qualified link
12
+
13
+ ## Applies to
14
+
15
+ - [Policy](/types/Policy.md)
@@ -0,0 +1,16 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL014
4
+ description: Secret references in environment variables must name a field
5
+ id: CPL014
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ Secret references in environment variables must name a field
12
+
13
+ ## Applies to
14
+
15
+ - [Secret](/types/Secret.md)
16
+ - [Workload](/types/Workload.md)
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL020
4
+ description: Serverless workloads must expose exactly one HTTP port
5
+ id: CPL020
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ Serverless workloads must expose exactly one HTTP port
@@ -0,0 +1,15 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL021
4
+ description: Cron workloads must declare a schedule and expose no ports
5
+ id: CPL021
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ Cron workloads must declare a schedule and expose no ports
12
+
13
+ ## Applies to
14
+
15
+ - [Workload](/types/Workload.md)
@@ -0,0 +1,15 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL022
4
+ description: Container ports must not mix `port` and `ports`, and must be unique across containers
5
+ id: CPL022
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ Container ports must not mix `port` and `ports`, and must be unique across containers
12
+
13
+ ## Applies to
14
+
15
+ - [Workload](/types/Workload.md)
@@ -0,0 +1,15 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL023
4
+ description: Container CPU and memory must clear the platform floors and the memory-to-CPU ratio
5
+ id: CPL023
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ Container CPU and memory must clear the platform floors and the memory-to-CPU ratio
12
+
13
+ ## Applies to
14
+
15
+ - [Workload](/types/Workload.md)
@@ -0,0 +1,15 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL024
4
+ description: Each health-check probe must set exactly one of exec, grpc, tcpSocket, httpGet
5
+ id: CPL024
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ Each health-check probe must set exactly one of exec, grpc, tcpSocket, httpGet
12
+
13
+ ## Applies to
14
+
15
+ - [Workload](/types/Workload.md)
@@ -0,0 +1,15 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL025
4
+ description: Autoscaling `metric`, `multi` and `target` must form a valid combination
5
+ id: CPL025
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ Autoscaling `metric`, `multi` and `target` must form a valid combination
12
+
13
+ ## Applies to
14
+
15
+ - [Workload](/types/Workload.md)
@@ -0,0 +1,15 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL026
4
+ description: minScale 0 must pair with a strategy that can actually scale to zero
5
+ id: CPL026
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ minScale 0 must pair with a strategy that can actually scale to zero
12
+
13
+ ## Applies to
14
+
15
+ - [Workload](/types/Workload.md)
@@ -0,0 +1,15 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL027
4
+ description: Capacity AI conflicts with CPU-utilization autoscaling, multi-metric autoscaling and GPUs
5
+ id: CPL027
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ Capacity AI conflicts with CPU-utilization autoscaling, multi-metric autoscaling and GPUs
12
+
13
+ ## Applies to
14
+
15
+ - [Workload](/types/Workload.md)
@@ -0,0 +1,15 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL028
4
+ description: Volume set capacity, filesystem binding, and workload mount rules
5
+ id: CPL028
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ Volume set capacity, filesystem binding, and workload mount rules
12
+
13
+ ## Applies to
14
+
15
+ - [Workload](/types/Workload.md)
@@ -0,0 +1,15 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL029
4
+ description: Control Plane links must resolve to a declared resource of the right kind and GVC
5
+ id: CPL029
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ Control Plane links must resolve to a declared resource of the right kind and GVC
12
+
13
+ ## Applies to
14
+
15
+ - [Workload](/types/Workload.md)
@@ -0,0 +1,16 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL030
4
+ description: Domain DNS mode, certificate challenge, and routing target must be a valid combination
5
+ id: CPL030
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ Domain DNS mode, certificate challenge, and routing target must be a valid combination
12
+
13
+ ## Applies to
14
+
15
+ - [Domain](/types/Domain.md)
16
+ - [Workload](/types/Workload.md)
@@ -0,0 +1,15 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL040
4
+ description: Container images should be pinned to a specific tag or digest
5
+ id: CPL040
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ Container images should be pinned to a specific tag or digest
12
+
13
+ ## Applies to
14
+
15
+ - [Workload](/types/Workload.md)
@@ -0,0 +1,15 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL041
4
+ description: Image references must not use docker.io/ or the registry hostname form
5
+ id: CPL041
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ Image references must not use docker.io/ or the registry hostname form
12
+
13
+ ## Applies to
14
+
15
+ - [Workload](/types/Workload.md)
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL042
4
+ description: A GVC must declare where its workloads run
5
+ id: CPL042
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ A GVC must declare where its workloads run
@@ -0,0 +1,15 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: CPL043
4
+ description: Policy target kind, scope and origin must be well formed
5
+ id: CPL043
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: cpln
9
+ docs: https://intentius.io/chant/lexicons/cpln/rules/
10
+ ---
11
+ Policy target kind, scope and origin must be well formed
12
+
13
+ ## Applies to
14
+
15
+ - [Policy](/types/Policy.md)
@@ -0,0 +1,22 @@
1
+ ---
2
+ type: resource-type
3
+ title: Domain
4
+ description: cpln resource type Cpln::Core::Domain
5
+ name: Domain
6
+ lexicon: cpln
7
+ resource_type: Cpln::Core::Domain
8
+ ---
9
+ `Cpln::Core::Domain`, a resource type of the cpln lexicon.
10
+
11
+ ## Properties
12
+
13
+ - `name` (`string`, required)
14
+ - `description` (`string`, optional)
15
+ - `spec` (`DomainSpec`, optional)
16
+ - `tags` (`Record<string, string>`, optional)
17
+
18
+ ## Governed by
19
+
20
+ - [CPL001](/rules/CPL001.md): no literal credential material in a cpln declaration.
21
+ - [CPL002](/rules/CPL002.md): prefer a resource reference over a hand-written link.
22
+ - [CPL030](/rules/CPL030.md): Domain DNS mode, certificate challenge, and routing target must be a valid combination
@@ -0,0 +1,21 @@
1
+ ---
2
+ type: resource-type
3
+ title: Gvc
4
+ description: cpln resource type Cpln::Core::Gvc
5
+ name: Gvc
6
+ lexicon: cpln
7
+ resource_type: Cpln::Core::Gvc
8
+ ---
9
+ `Cpln::Core::Gvc`, a resource type of the cpln lexicon.
10
+
11
+ ## Properties
12
+
13
+ - `name` (`string`, required)
14
+ - `description` (`string`, optional)
15
+ - `spec` (`GvcSpec`, optional)
16
+ - `tags` (`Record<string, string>`, optional)
17
+
18
+ ## Governed by
19
+
20
+ - [CPL001](/rules/CPL001.md): no literal credential material in a cpln declaration.
21
+ - [CPL002](/rules/CPL002.md): prefer a resource reference over a hand-written link.
@@ -0,0 +1,29 @@
1
+ ---
2
+ type: resource-type
3
+ title: Identity
4
+ description: cpln resource type Cpln::Core::Identity
5
+ name: Identity
6
+ lexicon: cpln
7
+ resource_type: Cpln::Core::Identity
8
+ ---
9
+ `Cpln::Core::Identity`, a resource type of the cpln lexicon.
10
+
11
+ ## Properties
12
+
13
+ - `gvc` (`string`, required): Name of the GVC this resource belongs to.
14
+ - `name` (`string`, required)
15
+ - `aws` (`IdentityAws`, optional)
16
+ - `azure` (`IdentityAzure`, optional)
17
+ - `description` (`string`, optional)
18
+ - `gcp` (`IdentityGcp`, optional)
19
+ - `memcacheAccess` (`IdentityMemcacheAccess[]`, optional)
20
+ - `nativeNetworkResources` (`IdentityNativeNetworkResources[]`, optional)
21
+ - `networkResources` (`NetworkResource[]`, optional)
22
+ - `ngs` (`IdentityNgs`, optional)
23
+ - `spicedbAccess` (`IdentitySpicedbAccess[]`, optional)
24
+ - `tags` (`Record<string, string>`, optional)
25
+
26
+ ## Governed by
27
+
28
+ - [CPL001](/rules/CPL001.md): no literal credential material in a cpln declaration.
29
+ - [CPL002](/rules/CPL002.md): prefer a resource reference over a hand-written link.
@@ -0,0 +1,21 @@
1
+ ---
2
+ type: resource-type
3
+ title: IpSet
4
+ description: cpln resource type Cpln::Core::IpSet
5
+ name: IpSet
6
+ lexicon: cpln
7
+ resource_type: Cpln::Core::IpSet
8
+ ---
9
+ `Cpln::Core::IpSet`, a resource type of the cpln lexicon.
10
+
11
+ ## Properties
12
+
13
+ - `name` (`string`, required)
14
+ - `description` (`string`, optional)
15
+ - `spec` (`IpSetSpec`, optional)
16
+ - `tags` (`Record<string, string>`, optional)
17
+
18
+ ## Governed by
19
+
20
+ - [CPL001](/rules/CPL001.md): no literal credential material in a cpln declaration.
21
+ - [CPL002](/rules/CPL002.md): prefer a resource reference over a hand-written link.
@@ -0,0 +1,28 @@
1
+ ---
2
+ type: resource-type
3
+ title: Policy
4
+ description: cpln resource type Cpln::Core::Policy
5
+ name: Policy
6
+ lexicon: cpln
7
+ resource_type: Cpln::Core::Policy
8
+ ---
9
+ `Cpln::Core::Policy`, a resource type of the cpln lexicon.
10
+
11
+ ## Properties
12
+
13
+ - `name` (`string`, required)
14
+ - `targetKind` (`"accessreport" | "agent" | "auditctx" | "cloudaccount" | "command" | "dbcluster" | "deployment" | "domain" | "event" | "group" | "gvc" | "identity" | "image" | "imagesummary" | "ipset" | "location" | "memcachecluster" | "mk8s" | "org" | "permissions" | "policy" | "policymembership" | "quota" | "resource" | "resourcepolicy" | "secret" | "serviceaccount" | "spicedbcluster" | "task" | "tenant" | "user" | "volumeset" | "workload"`, required)
15
+ - `bindings` (`PolicyBinding[]`, optional)
16
+ - `description` (`string`, optional)
17
+ - `origin` (`"builtin" | "default"`, optional)
18
+ - `tags` (`Record<string, string>`, optional)
19
+ - `target` (`"all"`, optional)
20
+ - `targetLinks` (`string[]`, optional)
21
+ - `targetQuery` (`Query`, optional)
22
+
23
+ ## Governed by
24
+
25
+ - [CPL001](/rules/CPL001.md): no literal credential material in a cpln declaration.
26
+ - [CPL002](/rules/CPL002.md): prefer a resource reference over a hand-written link.
27
+ - [CPL013](/rules/CPL013.md): Policy bindings must name identities by their GVC-qualified link
28
+ - [CPL043](/rules/CPL043.md): Policy target kind, scope and origin must be well formed
@@ -0,0 +1,23 @@
1
+ ---
2
+ type: resource-type
3
+ title: Secret
4
+ description: cpln resource type Cpln::Core::Secret
5
+ name: Secret
6
+ lexicon: cpln
7
+ resource_type: Cpln::Core::Secret
8
+ ---
9
+ `Cpln::Core::Secret`, a resource type of the cpln lexicon.
10
+
11
+ ## Properties
12
+
13
+ - `name` (`string`, required)
14
+ - `type` (`"aws" | "azure-connector" | "azure-sdk" | "dictionary" | "docker" | "ecr" | "gcp" | "keypair" | "nats-account" | "opaque" | "tls" | "userpass"`, required)
15
+ - `data` (`SecretOpaque | SecretTls | string | SecretAwskey | Record<string, unknown> | SecretUserpass | SecretKeypair`, optional)
16
+ - `description` (`string`, optional)
17
+ - `tags` (`Record<string, string>`, optional)
18
+
19
+ ## Governed by
20
+
21
+ - [CPL001](/rules/CPL001.md): no literal credential material in a cpln declaration.
22
+ - [CPL002](/rules/CPL002.md): prefer a resource reference over a hand-written link.
23
+ - [CPL014](/rules/CPL014.md): Secret references in environment variables must name a field
@@ -0,0 +1,22 @@
1
+ ---
2
+ type: resource-type
3
+ title: VolumeSet
4
+ description: cpln resource type Cpln::Core::VolumeSet
5
+ name: VolumeSet
6
+ lexicon: cpln
7
+ resource_type: Cpln::Core::VolumeSet
8
+ ---
9
+ `Cpln::Core::VolumeSet`, a resource type of the cpln lexicon.
10
+
11
+ ## Properties
12
+
13
+ - `gvc` (`string`, required): Name of the GVC this resource belongs to.
14
+ - `name` (`string`, required)
15
+ - `description` (`string`, optional)
16
+ - `spec` (`VolumeSetSpec`, optional)
17
+ - `tags` (`Record<string, string>`, optional)
18
+
19
+ ## Governed by
20
+
21
+ - [CPL001](/rules/CPL001.md): no literal credential material in a cpln declaration.
22
+ - [CPL002](/rules/CPL002.md): prefer a resource reference over a hand-written link.
@@ -0,0 +1,38 @@
1
+ ---
2
+ type: resource-type
3
+ title: Workload
4
+ description: cpln resource type Cpln::Core::Workload
5
+ name: Workload
6
+ lexicon: cpln
7
+ resource_type: Cpln::Core::Workload
8
+ ---
9
+ `Cpln::Core::Workload`, a resource type of the cpln lexicon.
10
+
11
+ ## Properties
12
+
13
+ - `gvc` (`string`, required): Name of the GVC this resource belongs to.
14
+ - `name` (`string`, required): Name of the workload (max 49 characters)
15
+ - `description` (`string`, optional)
16
+ - `spec` (`WorkloadSpec`, optional): Workload specification
17
+ - `tags` (`Record<string, string>`, optional)
18
+
19
+ ## Governed by
20
+
21
+ - [CPL001](/rules/CPL001.md): no literal credential material in a cpln declaration.
22
+ - [CPL002](/rules/CPL002.md): prefer a resource reference over a hand-written link.
23
+ - [CPL010](/rules/CPL010.md): Workloads should not allow outbound traffic to every address
24
+ - [CPL011](/rules/CPL011.md): Internal firewall should not be opened to the entire org
25
+ - [CPL012](/rules/CPL012.md): Credential-shaped environment variables must reference a secret, not a literal
26
+ - [CPL014](/rules/CPL014.md): Secret references in environment variables must name a field
27
+ - [CPL021](/rules/CPL021.md): Cron workloads must declare a schedule and expose no ports
28
+ - [CPL022](/rules/CPL022.md): Container ports must not mix `port` and `ports`, and must be unique across containers
29
+ - [CPL023](/rules/CPL023.md): Container CPU and memory must clear the platform floors and the memory-to-CPU ratio
30
+ - [CPL024](/rules/CPL024.md): Each health-check probe must set exactly one of exec, grpc, tcpSocket, httpGet
31
+ - [CPL025](/rules/CPL025.md): Autoscaling `metric`, `multi` and `target` must form a valid combination
32
+ - [CPL026](/rules/CPL026.md): minScale 0 must pair with a strategy that can actually scale to zero
33
+ - [CPL027](/rules/CPL027.md): Capacity AI conflicts with CPU-utilization autoscaling, multi-metric autoscaling and GPUs
34
+ - [CPL028](/rules/CPL028.md): Volume set capacity, filesystem binding, and workload mount rules
35
+ - [CPL029](/rules/CPL029.md): Control Plane links must resolve to a declared resource of the right kind and GVC
36
+ - [CPL030](/rules/CPL030.md): Domain DNS mode, certificate challenge, and routing target must be a valid combination
37
+ - [CPL040](/rules/CPL040.md): Container images should be pinned to a specific tag or digest
38
+ - [CPL041](/rules/CPL041.md): Image references must not use docker.io/ or the registry hostname form
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The cpln lexicon's ownership convention.
3
+ *
4
+ * Declared here rather than in core — the same seam aws (`chant:managed-by`),
5
+ * azure and fly sit on. Core owns the generic stamp/detect logic; each lexicon
6
+ * owns key names its provider will actually accept.
7
+ *
8
+ * Control Plane gives every kind a free-form `tags` map, which makes this the
9
+ * cleanest ownership channel of any target chant supports: one uniform place on
10
+ * all eight kinds, readable straight off a plain `GET`, with no per-kind
11
+ * special case of the sort fly needs for volumes and certificates.
12
+ *
13
+ * Key naming. Tag keys accept a `/`, which Control Plane uses itself for its
14
+ * reserved `cpln/…` keys (`cpln/relaxMemoryToCpuRatio`). A prefixed key is
15
+ * therefore both idiomatic and safely namespaced against a future reserved key,
16
+ * so these follow the same `chant.intentius.io/…` convention as the shared
17
+ * label channel rather than inventing a flat spelling. The `cpln/` prefix is
18
+ * Control Plane's own and is never written here.
19
+ */
20
+ import type { ChannelKeys } from "@intentius/chant/ownership";
21
+ /** Tag keys carrying chant's ownership marker on every cpln resource. */
22
+ export declare const CPLN_TAG_OWNERSHIP_KEYS: ChannelKeys;
23
+ //# sourceMappingURL=ownership.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ownership.d.ts","sourceRoot":"","sources":["../src/ownership.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,EAAE,WAIrC,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env tsx
2
+ export {};
3
+ //# sourceMappingURL=package-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-cli.d.ts","sourceRoot":"","sources":["../src/package-cli.ts"],"names":[],"mappings":""}