pub const CILIUM_API_VERSION: &str = "cilium.io/v2";Expand description
Canonical Cilium CRD apiVersion every caixa-mesh-emitted
CiliumNetworkPolicy document declares. The Cilium control plane’s
upstream-shipped CRD bundle registers CiliumNetworkPolicy,
CiliumClusterwideNetworkPolicy, CiliumEndpoint, CiliumIdentity,
CiliumNode, CiliumLocalRedirectPolicy, and the rest of the
per-conformance Cilium CRD set at this exact group/version
(cilium.io/v2); drift to a stale v2alpha1 (the historical
pre-stable Cilium-CRD-group/version label upstream Cilium-CRD docs
reference for in-flight per-CRD-version migration) silently routes
the rendered CiliumNetworkPolicy outside the cluster’s
Cilium-operator-side CRD-version registration and breaks at apply
time with a non-self-locating “no kind ‘CiliumNetworkPolicy’ is
registered for version ‘cilium.io/v2alpha1’” error far from the
source caixa.lisp / the renderer’s kube_resource_skeleton call
site.
The single source of truth the rendered Aplicacao Cilium-side mesh bundle’s CRD-group/version axis reaches for:
CiliumNetworkPolicyapiVersion— the top-level CRD-group/ version every emitted CNP document declares (caixa-mesh/src/lib.rs:326 — thecilium_network_policiesper-(:de, :para)policy skeleton call). Until this lift landed both the production-code emit at the per-policy skeleton call site and the matching in-filecilium_policy_carries_canonical_kube_skeletontest fixture pin (caixa-mesh/src/lib.rs:1560) carried inline"cilium.io/v2"string literals — two occurrences of the same load-bearing Cilium-CRD-group/version convention, drift-prone by construction. The Cilium project bumps the per-conformance Cilium-CRD set as a unit; a future Cilium-CRD-group/version promotion (the upstream Cilium roadmap names per-CRD-group / per-version migration once thecilium.io/v3branch lands) on one axis without a coordinated edit on the other would have silently emitted aCiliumNetworkPolicydocument whose top-level apiVersion drifts off the lifted-test-fixture pin — apply-side: the policy lands in a stale CRD-version registration the Cilium operator no longer watches, every(:de, :para)intra-mesh L4 contract drops at the eBPF data plane with no field naming the version-drift root cause.
The PRIME DIRECTIVE duplication-budget rule (THEORY.md §I.3.5,
“every recurring shape becomes a generator before it becomes a
pattern; every pattern becomes a library before it becomes
duplicated code. The duplication budget is zero.”) promotes the
constant to a typed substrate-side &'static str on the same
trajectory the GATEWAY_API_API_VERSION (3c6cfc3) /
FLUX_HELMRELEASE_API_VERSION (55f0fd9) /
FLUX_GITREPOSITORY_API_VERSION (8a6c8a3) /
FLUX_KUSTOMIZATION_API_VERSION (d2dd1b1) /
DEFAULT_FLUX_SYSTEM_NAMESPACE (7197d38) lifts established on
the peer K8s Gateway API ingress / Flux v2 reconcile canonical-
load-bearing-string axes — extends the discipline from the
cluster-side K8s Gateway API ingress + Flux v2 reconcile contracts
onto the cluster-side Cilium identity-based mesh contract (the
eBPF-anchored Cilium control plane that materializes every
per-(:de, :para) L4 / L7 contrato as an identity-keyed eBPF
allow rule). The render-side consumer now threads the same
&'static str through its kube_resource_skeleton call so a
future Cilium-CRD-group/version promotion lands in one place;
every future renderer that reaches for the canonical
Cilium-CRD apiVersion (the future M4
mesh.pleme.io/v1alpha1/Aplicacao CR materializer’s
per-Aplicacao CiliumNetworkPolicy fan-out, a future
CiliumClusterwideNetworkPolicy the caixa-mesh emits for
cluster-scoped baseline-allow / baseline-deny rules, a future
CiliumLocalRedirectPolicy the operator emits for per-Servico
local-redirect coordination) inherits the same value by
construction with no opportunity for per-renderer drift.