Expand description
caixa-helm — typed renderer that emits a per-program lareira-<name>
Helm chart from a Caixa manifest plus its servicos/<name>.computeunit.yaml.
§Output shape
Every chart emitted here mirrors the canonical
pleme-io/helmworks/charts/lareira-<name>/ layout, which is thin:
Chart.yaml ; metadata + dependency on pleme-computeunit values.yaml ; pleme-computeunit values block (the typed L2 ComputeUnit shape) README.md ; one-line elevator pitch for the chart
There are no templates/ — the rendering is delegated to the
pleme-computeunit library chart in helmworks (per theory/META-FRAMEWORK.md
§I, Layer 3 → Layer 2 transformation). caixa-helm’s job is to derive the
values block from a Caixa, not to render Kubernetes objects directly.
§Why a separate crate
Same pattern as [caixa_flake] (renders flake.nix) and [caixa_pangea]
(renders pangea Ruby) — caixa-<target> crates take a typed Caixa and
emit the canonical source for <target>. Naming is uniform across the
workspace.
§V0 contract
use caixa_core::Caixa;
use caixa_helm::{ChartDir, render_chart_for_servico};
let caixa: Caixa = Caixa::from_lisp(src)?;
let cu_yaml: serde_yaml::Value =
serde_yaml::from_str(std::fs::read_to_string("servicos/hello-rio.computeunit.yaml")?)?;
let dir: ChartDir = render_chart_for_servico(&caixa, &cu_yaml)?;
dir.write_to(std::path::Path::new("/tmp/lareira-hello-rio"))?;§What this is NOT
- Not a chart for the
caixa-operatoritself — that lives inpleme-io/caixa/operator-chart/. - Not a Helm CLI wrapper — emitting bytes only; consumers (
feira chart, eventually) drive the I/O. - Not a renderer of K8s resources —
pleme-computeunitlibrary chart owns the templates that turn this values block into ComputeUnit + Service + ScaledObject + ConfigMap.
Structs§
- Chart
Dependency - Chart
Dir - The rendered chart — a flat list of files, plus the chart name.
- Chart
Yaml - Top-level
Chart.yamlshape for a generated lareira-chart. - Maintainer
- Render
Opts - Knobs that don’t come from the Caixa manifest.
Enums§
- Error
- Errors caixa-helm can raise.
Constants§
- COMPUTEUNIT_
SPEC_ KEY_ CAPABILITIES - Local re-export of the canonical
caixa_core::COMPUTEUNIT_SPEC_KEY_CAPABILITIES— thewasm.pleme.io/v1alpha1/ComputeUnitCRD per-CR WASI-capability-listspec.capabilitiessub-block key every renderedvalues.yaml’sDEFAULT_LIBRARY_NAME-wrapped block carries so thepleme-computeunitlibrary chart’s per-Servico WASI-preview-2 capability-token binding fires exactly against the axis the caixa.lisp’s:servicosfixture pins. Peer ofCOMPUTEUNIT_SPEC_KEY_MODULEandCOMPUTEUNIT_SPEC_KEY_TRIGGERon the same ComputeUnit CRD per-spec.*sub-block axis — completes the substrate-side ComputeUnit-CRD per-spec.*sub-block re-export triple in this crate. Seecaixa_core::COMPUTEUNIT_SPEC_KEY_CAPABILITIESfor the full lift rationale. Canonicalwasm.pleme.io/v1alpha1/ComputeUnitCRDspec.capabilitiesper-CR WASI-capability-list sub-block key — the top-levelspec.*child every renderedComputeUnitYAML carries to declare the wasm-component-capability tokens the M2.5 wasm-engine instantiator binds at Servico bring-up (http-in:0.0.0.0:8080for the HTTP incoming-handler,envfor read-only environment access,sock-*for TCP outbound, and the sibling WASI-preview-2 preview- interfaces per the WIT Component Model). Peer ofCOMPUTEUNIT_SPEC_KEY_MODULEandCOMPUTEUNIT_SPEC_KEY_TRIGGERon the same ComputeUnit CRD per-spec.*sub-block surface — completes the substrate-side ComputeUnit-CRD per-spec.*sub-block re-export triple every rendered ComputeUnit YAML declares as its top-level(module, trigger, capabilities)axis. Same lift trajectory as the siblingCOMPUTEUNIT_SPEC_KEY_MODULEaxis — three verbatim inline test-side literals (one caixa-flux drift- detection navigator + two caixa-helm per-values drift-detection navigators, one under the canonical wrap-key + one under the library-name-override wrap-key) collapsed onto the same&'static strso any future rebrand (the substrate moving the capability-list axis tocaps:for terse-schema parity with the WASI-preview-2 upstream naming, splitting intocapabilities.wasi.*/capabilities.pleme.*runtime-vs-substrate discriminators, or the M4 WIT Component Model materializer moving to a typedimports:/exports:split) reaches every consumer by construction. SeeCOMPUTEUNIT_SPEC_KEY_MODULEfor the full lift rationale. - COMPUTEUNIT_
SPEC_ KEY_ MODULE - Local re-export of the canonical
caixa_core::COMPUTEUNIT_SPEC_KEY_MODULE— thewasm.pleme.io/v1alpha1/ComputeUnitCRD per-CR wasm-module-referencespec.modulesub-block key every renderedvalues.yaml’sDEFAULT_LIBRARY_NAME-wrapped block carries so thepleme-computeunitlibrary chart’s per-Servico module-source axis binds to the exact source the caixa.lisp’s:servicosfixture pins. Two per-values drift-detection navigators in this crate’s test module (the canonical-wrap-key round-trip + thelibrary-name-override wrap-key round-trip) now consult the same&'static stras the peer caixa-flux writer’s per-Servicoprograms[]-entry module-source navigators. Same re-export shape as the peerHELM_VALUES_KEY_ENABLED/KUBE_KEY_SPECsurfaces on the sibling canonical-Helm-load-bearing-string / canonical-K8s-CR-body-key axes — extends the discipline the M2-typed-slot / K8s-CR key re-export families establish onto the substrate-side ComputeUnit-CRD per-spec.*sub-block axis. Seecaixa_core::COMPUTEUNIT_SPEC_KEY_MODULEfor the full lift rationale. Canonicalwasm.pleme.io/v1alpha1/ComputeUnitCRDspec.moduleper-CR wasm-module-reference sub-block key — the top-levelspec.*child every renderedComputeUnitYAML carries to name the wasm component (module.source: oci://...for OCI-hosted binaries,module.source: file://...for locally-mounted wasm bundles) the M2.5 wasm-engine instantiator loads at Servico bring-up. The single source of truth every downstream consumer that reads or emits the per-CR module sub-block reaches for: - COMPUTEUNIT_
SPEC_ KEY_ TRIGGER - Local re-export of the canonical
caixa_core::COMPUTEUNIT_SPEC_KEY_TRIGGER— thewasm.pleme.io/v1alpha1/ComputeUnitCRD per-CR invocation-shapespec.triggersub-block key every renderedvalues.yaml’sDEFAULT_LIBRARY_NAME-wrapped block carries so thepleme-computeunitlibrary chart’s per-Servicotrigger.service.{port, paths, breathability}routing binds to the exact axis the caixa.lisp’s:servicosfixture pins. Peer ofCOMPUTEUNIT_SPEC_KEY_MODULEon the same ComputeUnit CRD per-spec.*sub-block axis — seecaixa_core::COMPUTEUNIT_SPEC_KEY_TRIGGERfor the full lift rationale. Canonicalwasm.pleme.io/v1alpha1/ComputeUnitCRDspec.triggerper-CR invocation-trigger sub-block key — the top-levelspec.*child every renderedComputeUnitYAML carries to name how the wasm component is invoked (trigger.service.{port, paths}for HTTP-triggered Servicos,trigger.subscription.{subject}for the future NATS-triggered Servicos the M4:contratostyped-mesh pubsub axis will emit). Peer ofCOMPUTEUNIT_SPEC_KEY_MODULEon the same ComputeUnit CRD per-spec.*sub-block surface —COMPUTEUNIT_SPEC_KEY_MODULEnames the per-CR wasm-binary reference axis, this constant names the per-CR invocation-shape axis every downstream trigger consumer (thepleme-computeunitlibrary chart’s per-Servicotrigger.service.port/trigger.service.paths/trigger.service.breathabilityvalues- block routing, the future M4 pubsub-subscription binding, thecaixa-meshCiliumNetworkPolicyL4-port fallback that reads the destination Servico’s per-trigger.service.portaxis via a future resolver round-trip) reaches for. Same lift trajectory as the siblingCOMPUTEUNIT_SPEC_KEY_MODULEaxis — three verbatim inline test-side literals (one caixa-flux drift-detection navigator - DEFAULT_
LIBRARY_ NAME - Canonical Helm library-chart name every
lareira-<nome>chart depends on — re-export of the liftedcaixa_core::DEFAULT_LIBRARY_NAMEso the load-bearing string lives in exactly one place across every caixa renderer (caixa-helm’sRenderOpts::library_namedefault here + caixa-flux’scluster_bundlehelmrelease.yamlwrap key). A future per-edition library-chart fork — every entry on the absorption-roadmap that names a per-cluster / per-namespace / per-tenant variant of the canonical library chart — reaches both consumers through one&'static strby construction. Same shape as thecaixa_core::DEFAULT_NAMESPACE(a085b26) /caixa_core::DEFAULT_SERVICO_PORT(1e22add) lifts on the peer canonical-K8s-axis-constant surface. Canonical Helm library-chart name everylareira-<nome>chart depends on — thepleme-computeunitlibrary chart inpleme-io/helmworks/charts/pleme-computeunitthat owns the K8s resource templates (ComputeUnit + Service + ScaledObject + ConfigMap) every per-Servico chart consumes via Helm’s per-dep alias convention (when noalias:is set on a dependency, values are scoped under the dependency’sname:). - DEFAULT_
LIBRARY_ REPO - Repository for the
pleme-computeunitlibrary chart. Defaults to the helmworks file:// path used by lareira-* charts; consumers can override viaRenderOpts::library_repoto point at the published OCI registry. - DEFAULT_
LIBRARY_ VERSION - HELM_
CHART_ API_ VERSION - Canonical Helm 3
Chart.yamlapiVersionevery renderedlareira-<nome>chart declares. Re-export of the liftedcaixa_core::HELM_CHART_API_VERSIONso the Helm-side chart-schema apiVersion — the discriminator the Helm binary’s chart-schema parser (helm dependency build,helm lint,helm template) consults to select the schema that reads the rendered Chart.yaml — lives in exactly one place across every caixa renderer. The single production-code call site consuming it is [build_chart_yaml]’sapi_versionfield assignment; a drifted localpub const HELM_CHART_API_VERSION: &str = "…"at this crate (or any sibling per-chart-schema renderer the absorption roadmap acknowledges — the future per-Aplicacao library chart, the future per-cluster snapshot chart) would silently reroute the rendered Chart.yaml through a stale chart-schema parser athelm templatetime far from the rebrand commit’s source, so the equality +&'staticstatic-data identity pin (helm_chart_api_version_re_export_points_at_caixa_core_canonical) closes the drift footgun at caixa-helm build time. Same shape as theDEFAULT_LIBRARY_NAME/KUBE_KEY_SPECre-exports on the sibling canonical-Helm-load-bearing-string / canonical-K8s-CR-key axes. Canonical Helm 3Chart.yamlapiVersioneverycaixa-helm-renderedlareira-<nome>chart declares at its top-levelapiVersionaxis. The Helm 3 chart-schema resolution contract keys off this exact"v2"value:helm dependency build,helm lint, andhelm templateall parse the chart under the Helm 3 v2 schema (which requiresChartYaml::descriptionand permitsdependencies:at the top level); drift to the legacy Helm 2"v1"(the pre-Helm-3 chart schema every upstream Helm-3-migration doc names) silently reroutes the renderedChart.yamlthrough the Helm 2 parser, where the top-leveldependencies:block is unknown and the chart’s dep on thepleme-computeunitlibrary chart never resolves —helm dependency buildreports “no requirements found” and every downstreamhelm template/helm installon the rendered chart emits an empty release (no ComputeUnit / Service / ScaledObject resources land) far from the source caixa.lisp / the renderer’sbuild_chart_yamlcall site. - HELM_
CHART_ DEPENDENCY_ KEY_ ALIAS - Canonical Helm 3
Chart.yamlper-dependencies[]-entry sub-mapping YAML axis-key naming the per-dep chart-alias override field — re-export of the liftedcaixa_core::HELM_CHART_DEPENDENCY_KEY_ALIASso the load-bearing serde field-name atChartDependency’saliasfield lives in exactly one place across every caixa renderer. Peer toHELM_CHART_DEPENDENCY_KEY_NAMEon the sibling per-dep sub-key axes. Canonical Helm 3Chart.yamlper-dependencies[]-entry sub-mapping YAML axis-key naming the per-dep chart-alias override field — the load-bearing serde field-name atcaixa-helm’sChartDependencystruct’saliasfield. The chart-schema per-dep entry’salias:value, when set, overrides the per-dep values wrap-key (Helm’s per-dep alias convention scopes the per-dep values sub-block underalias:when set, and under the siblingHELM_CHART_DEPENDENCY_KEY_NAMEname:value otherwise); the caixa-helm substrate today emits the axis asNoneat every renderedlareira-<nome>chart’sdependencies[0].alias:(the#[serde(default, skip_serializing_if = "Option::is_none")]attribute on thealiasfield elides the axis entirely from the emitted YAML when unset), so the values wrap-key defaults to the per-depname:value — but the axis-key remains part of the substrate-side chart-schema-per-dep-entry contract for the future per-Aplicacao library chart’s per-Servico per-dep aliasingHELM_CHART_TYPE_LIBRARYdocstring names as a trajectory item. A drift on this per-dep sub-key (a future refactor that renamed theChartDependency::aliasRust field, or added a#[serde(rename_all = "camelCase")]attribute that silently activates on a future field addition) would rebrand the wire key silently — Helm’s per-dep alias-convention router would silently drop the alias from the parsed dep-entry (the per-dep values wrap- key falls back to the siblingname:value, and every per-cluster per-Servico per-dep values override the operator authored under the alias-key silently routes nowhere athelm templatetime). Peer toHELM_CHART_DEPENDENCY_KEY_NAME/HELM_CHART_DEPENDENCY_KEY_VERSION/HELM_CHART_DEPENDENCY_KEY_REPOSITORYon the sibling per-dep sub-key axes — completes the per-dependencies[]-entry YAML axis-key canonical-pin tetrad. SeeHELM_CHART_DEPENDENCY_KEY_NAMEfor the shared per-entry-sub-mapping lift rationale. - HELM_
CHART_ DEPENDENCY_ KEY_ NAME - Canonical Helm 3
Chart.yamlper-dependencies[]-entry sub-mapping YAML axis-key naming the per-dep chart-name field — re-export of the liftedcaixa_core::HELM_CHART_DEPENDENCY_KEY_NAMEso the load- bearing serde field-name atChartDependency’snamefield lives in exactly one place across every caixa renderer. Peer toHELM_CHART_DEPENDENCY_KEY_VERSION/HELM_CHART_DEPENDENCY_KEY_REPOSITORY/HELM_CHART_DEPENDENCY_KEY_ALIASon the sibling per-dep sub-key axes. The drift-detection round-trip pin at [tests::chart_dependency_serializes_tetrad_under_lifted_helm_chart_dependency_keys] serializes a fully-populatedChartDependencyand asserts each of the four per-dep sub-mapping wire keys resolves — closing the drift a rename of the Rust field or a#[serde(rename_all)]attribute addition would otherwise leave silent. Canonical Helm 3Chart.yamlper-dependencies[]-entry sub-mapping YAML axis-key naming the per-dep chart-name field — the load-bearing serde field-name atcaixa-helm’sChartDependencystruct’snamefield. Byte-identical to the sibling K8s CRKUBE_KEY_NAMEaxis-key by Helm’s design decision to inherit the K8s CR body-key vocabulary at every schema surface it consumes (chart-metadata, per-CR install-payload, per-dep dependency-list); the paired [tests::helm_chart_dependency_key_name_matches_kube_key_name] pin asserts the two byte-shapes coincide, so a future K8s-side rebrand atKUBE_KEY_NAMEthat dropped the byte-identity would fail the pin at substrate-build time rather than silently drop the per-dep name lookup athelm dependency buildtime far from the drift site. - HELM_
CHART_ DEPENDENCY_ KEY_ REPOSITORY - Canonical Helm 3
Chart.yamlper-dependencies[]-entry sub-mapping YAML axis-key naming the per-dep chart-registry URL field — re-export of the liftedcaixa_core::HELM_CHART_DEPENDENCY_KEY_REPOSITORYso the load-bearing serde field-name atChartDependency’srepositoryfield lives in exactly one place across every caixa renderer. Peer toHELM_CHART_DEPENDENCY_KEY_NAMEon the sibling per-dep sub-key axes. Canonical Helm 3Chart.yamlper-dependencies[]-entry sub-mapping YAML axis-key naming the per-dep chart-registry URL field — the load-bearing serde field-name atcaixa-helm’sChartDependencystruct’srepositoryfield. The chart-schema per-dep entry’srepository:value pins the Helm-registry URL (file://…,https://…,oci://…) Helm’s per-dep resolver consults athelm dependency buildtime to fetch the per-dep chart bytes. At the caixa-helm substrate the default value is the canonical [caixa_helm::DEFAULT_LIBRARY_REPO] pointing at the helmworks file:// path; the future per-edition library-chart re-emission for the OCI registry (oncepleme-io/helmworks/chartslands as an OCI-registry-backed chart-source) reaches this axis through a paired scalar-value lift on the per-dep repo axis. A drift on this per-dep sub-key would surface as one of two silent failure modes at chart-vendor time far from the drift site: Helm’s per-dep resolver silently drops the repository scalar from the parsed dep-entry (the per-dep resolver falls back to the “no repository set” shape and refuses to vendor the dep withno repository defined), or the per-dep chart-schema parser silently absorbs a rename drift via#[serde(default)]fall-through at the struct-side and the per-dep repo axis lands under Rust’s""default — Helm rejects the empty URL athelm dependency buildtime. Peer toHELM_CHART_DEPENDENCY_KEY_NAME/HELM_CHART_DEPENDENCY_KEY_VERSION/HELM_CHART_DEPENDENCY_KEY_ALIASon the sibling per-dep sub-key axes. SeeHELM_CHART_DEPENDENCY_KEY_NAMEfor the shared per-entry-sub-mapping lift rationale. - HELM_
CHART_ DEPENDENCY_ KEY_ VERSION - Canonical Helm 3
Chart.yamlper-dependencies[]-entry sub-mapping YAML axis-key naming the per-dep chart-version-constraint field — re-export of the liftedcaixa_core::HELM_CHART_DEPENDENCY_KEY_VERSIONso the load-bearing serde field-name atChartDependency’sversionfield lives in exactly one place across every caixa renderer. Peer toHELM_CHART_DEPENDENCY_KEY_NAMEon the sibling per-dep sub-key axes. SeeHELM_CHART_DEPENDENCY_KEY_NAMEfor the shared per-entry-sub-mapping lift rationale. Canonical Helm 3Chart.yamlper-dependencies[]-entry sub-mapping YAML axis-key naming the per-dep chart-version-constraint field — the load-bearing serde field-name atcaixa-helm’sChartDependencystruct’sversionfield. Distinct from the sibling per-Chart.yaml top-level chart-own-SemVer axis-key (version:at the top level, whose byte-shape coincides with this per-dep sub-key at the wire — a coincidence the substrate-side paired [tests::helm_chart_dependency_key_version_pins_canonical_value] pin holds byte-verbatim). The chart-schema per-dep entry’sversion:value pins the SemVer-range constraint Helm’s per-dep resolver matches against the target dep’s Chart.yamlversion:scalar athelm dependency build/helm dependency updatetime. A drift on this per-dep sub-key would surface as one of two silent failure modes at chart-vendor time far from the drift site: Helm’s per-dep chart-schema parser silently drops the version-constraint scalar from the parsed dep-entry (the per-dep resolver falls back to the wildcard*shape and vendors whatever chart-version the upstream registry currently advertises, silently promoting a chart upgrade the operator never authored), or a subsequent#[serde(rename_all)]addition rebrands the key to Helm’s unrecognized shape and the per-dep entry silently vanishes from the parsed dep-list. Peer toHELM_CHART_DEPENDENCY_KEY_NAME/HELM_CHART_DEPENDENCY_KEY_REPOSITORY/HELM_CHART_DEPENDENCY_KEY_ALIASon the sibling per-dep sub-key axes — extends the per-entry-sub-key canonical-lift tetrad at the substrate. SeeHELM_CHART_DEPENDENCY_KEY_NAMEfor the shared per-entry-sub-mapping lift rationale. - HELM_
CHART_ KEY_ API_ VERSION - Canonical Helm 3
Chart.yamltop-level YAML axis-key naming the per-chart chart-schema-apiVersion field — re-export of the liftedcaixa_core::HELM_CHART_KEY_API_VERSIONso the top-level chart- schema-apiVersion YAML key theChartYamlapi_versionfield’s#[serde(rename = "apiVersion")]attribute encodes lives in exactly one place across every caixa renderer. Rust’s attribute grammar admits only string literals so the const cannot substitute for the literal syntactically, but the drift-detection pin at [tests::chart_yaml_serializes_api_version_axis_under_lifted_helm_chart_key_api_version] round-trips a renderedChart.yamland asserts the top-levelMapping::get(HELM_CHART_KEY_API_VERSION)resolves, closing the drift the attribute-literal-only grammar leaves silent (a future refactor that dropped the#[serde(rename = "apiVersion")]attribute would silently serialize the field as Rust’s default snake_caseapi_version:, which Helm’s chart-schema parser rejects athelm lint/helm dependency build/helm templatetime with an “apiVersion is required” error far from the drift site). Peer toHELM_CHART_KEY_TYPE/HELM_CHART_KEY_APP_VERSIONon the sibling per-Chart.yaml top-level YAML axis-key re-export surface — completes the per-Chart.yaml top-level YAML axis-key re-export trio at the caixa-helm surface for the three serde- rename-literal-only axes on this crate’sChartYamlstruct. Canonical Helm 3Chart.yamltop-level YAML axis-key naming the per-chart chart-schema-apiVersion field whose scalar-valueHELM_CHART_API_VERSIONalready owns as the peer axis-value lift. Where the peer axis-value lift pins the byte-shape of theapiVersion:field’s admitted scalar (Helm 3’s"v2"), this axis-key lift pins the byte-shape of theapiVersion:field’s YAML-key name itself: the load-bearing serde-rename literal atcaixa-helm’sChartYamlstruct (caixa-helm/src/lib.rs:145,#[serde(rename = "apiVersion")]) that selects how the Rust fieldapi_versionserializes into the renderedChart.yamlYAML mapping. - HELM_
CHART_ KEY_ APP_ VERSION - Canonical Helm 3
Chart.yamltop-level YAML axis-key naming the per-chart underlying-application-version field — re-export of the liftedcaixa_core::HELM_CHART_KEY_APP_VERSIONso the top-level per-chart-app-version YAML key theChartYamlapp_versionfield’s#[serde(rename = "appVersion")]attribute encodes lives in exactly one place across every caixa renderer. Rust’s attribute grammar admits only string literals so the const cannot substitute for the literal syntactically, but the drift-detection pin at [tests::chart_yaml_serializes_app_version_axis_under_lifted_helm_chart_key_app_version] round-trips a renderedChart.yamland asserts the top-levelMapping::get(HELM_CHART_KEY_APP_VERSION)resolves, closing the drift the attribute-literal-only grammar leaves silent (a future refactor that dropped the#[serde(rename = "appVersion")]attribute would silently serialize the field as Rust’s default snake_caseapp_version:, which Helm’s chart-schema parser silently drops from the parsed chart-metadata shape, and every downstream Artifact Hub /helm searchper-chart index falls back to “no application version” for the rendered chart far from the drift site). Peer toHELM_CHART_KEY_TYPEon the sibling per-Chart.yaml top-level YAML axis-key re-export surface — completes the per-Chart.yaml top-level YAML axis-key re-export pair at the caixa-helm surface for the two serde-rename-literal- only axes on this crate’sChartYamlstruct that Rust’s attribute-argument grammar leaves un-substitutable syntactically (the third top-level axis-keyapiVersionre-exports throughHELM_CHART_KEY_API_VERSIONbelow, whose byte-shape coincides with the siblingcaixa_core::KUBE_KEY_API_VERSIONby Helm’s design decision to inherit the K8s CR top-level shape verbatim — the paired substrate-side [caixa_core-sidehelm_chart_key_api_version_matches_kube_key_api_version] pin makes the byte-shape coincidence load-bearing rather than accidental). Canonical Helm 3Chart.yamltop-level YAML axis-key naming the per-chart underlying-application-version field — the load-bearing serde-rename literal atcaixa-helm’sChartYamlstruct (caixa-helm/src/lib.rs:152,#[serde(rename = "appVersion")]) that selects how the Rust fieldapp_versionserializes into the renderedChart.yamlYAML mapping. Distinct from the siblingChart.yamlversion:field (the chart’s own SemVer, incremented per release of the chart itself); theappVersion:field the Helm 3 chart-schema pins carries the underlying application’s version (see app-version-doc) — the version the containerized workload the chart installs advertises (an OCI image tag, a wasm-component:versao, a package release tag). At the caixa-helm renderer today the two axes both draw from the caixa’s:versaoat [build_chart_yaml] because a [caixa-core::Caixa]’s:versaonames both the chart’s own release cadence and the underlying wasm-component release cadence in one axis (caixa’s per-caixa BLAKE3-closure identity binds a caixa’s chart + wasm-binary + declared source at exactly one release axis), but the Chart.yaml schema pins the two YAML keys distinctly regardless — every downstream Helm-consumer (Artifact Hub’s per-chart-search index,helm search/helm show chartoperator surfaces) routes the two axes onto distinct display fields at chart-inspection time. - HELM_
CHART_ KEY_ DEPENDENCIES - Canonical Helm 3
Chart.yamltop-level YAML axis-key naming the per-chart dependency-list field — re-export of the liftedcaixa_core::HELM_CHART_KEY_DEPENDENCIESso the load-bearing serde field-name atChartYaml’sdependenciesfield (the parent list-container the already-re-exported per-dependencies[]-entry sub-mapping tetradHELM_CHART_DEPENDENCY_KEY_NAME/HELM_CHART_DEPENDENCY_KEY_VERSION/HELM_CHART_DEPENDENCY_KEY_REPOSITORY/HELM_CHART_DEPENDENCY_KEY_ALIASmounts one level down under) lives in exactly one place across every caixa renderer. The Rust field name and the wire key coincide by default (no#[serde(rename)]attribute today), so the const doesn’t substitute for the field-name syntactically at the struct definition, but the drift-detection pin at [tests::chart_yaml_serializes_dependencies_axis_under_lifted_helm_chart_key_dependencies] round-trips a renderedChart.yamlthroughserde_yaml::from_str::<serde_yaml::Value>and asserts the top- levelMapping::get(HELM_CHART_KEY_DEPENDENCIES)resolves — closing the drift a future field rename (dependencies→deps/chartDependencies) or a#[serde(rename_all = "camelCase")]attribute addition onChartYamlwould otherwise leave silent (Helm’s chart-schema parser silently drops the entire dep list from the parsed chart-metadata,helm dependency buildfinds no chart to vendor, and every renderedlareira-<nome>chart’s install fails at apply time far from the drift site). Peer toHELM_CHART_KEY_TYPE/HELM_CHART_KEY_APP_VERSION/HELM_CHART_KEY_API_VERSIONon the sibling per-Chart.yaml top-level YAML axis-key re-export surface — extends the per- Chart.yaml top-level YAML axis-key re-export trio at the caixa-helm surface onto the fourth top-level axis-key, the parent list- container whose per-entry sub-mapping tetrad is already re-exported under [HELM_CHART_DEPENDENCY_KEY_*]. Canonical Helm 3Chart.yamltop-level YAML axis-key naming the per-chart dependency-list field — the load-bearing serde field-name atcaixa-helm’sChartYamlstruct’sdependenciesfield, the parent list-container the already-liftedHELM_CHART_DEPENDENCY_KEY_NAME/HELM_CHART_DEPENDENCY_KEY_VERSION/HELM_CHART_DEPENDENCY_KEY_REPOSITORY/HELM_CHART_DEPENDENCY_KEY_ALIASper-entry sub-mapping tetrad (69f62db) mounts under. The chart-schema top-leveldependencies:field pins the list of chart-registry references Helm’s per-dep resolver consults athelm dependency build/helm dependency updatetime to vendor each dependency chart under the substrate’s canonicalDEFAULT_LIBRARY_NAMEwrap-key convention. Every renderedlareira-<nome>chart declares exactly one entry today (theDEFAULT_LIBRARY_NAMEpleme-computeunitlibrary-chart dep the siblingcaixa-helm’sbuild_chart_yamlmounts) — see chart-dependencies-doc for the Helm 3 upstream axis documentation. - HELM_
CHART_ KEY_ TYPE - Canonical Helm 3
Chart.yamltop-level YAML axis-key naming the per-chart-kind discriminator field — re-export of the liftedcaixa_core::HELM_CHART_KEY_TYPEso the top-level per-chart-kind discriminator YAML key the siblingHELM_CHART_TYPE_APPLICATION/HELM_CHART_TYPE_LIBRARYaxis-value re-exports carry the closed- set admitted scalars for lives in exactly one place across every caixa renderer. The production emitter today isChartYaml’schart_typefield#[serde(rename = "type")]attribute — Rust’s attribute grammar admits only string literals so the const cannot substitute for the literal syntactically, but the drift-detection pin at [tests::chart_yaml_serializes_type_axis_under_lifted_helm_chart_key_type] round-trips a renderedChart.yamlthroughserde_yaml::from_str::<serde_yaml::Value>and asserts the top- levelMapping::get(HELM_CHART_KEY_TYPE)resolves, closing the drift the attribute-literal-only grammar leaves silent (a future refactor that dropped the#[serde(rename = "type")]attribute would silently serialize the field as Rust’s default snake_casechart_type:, which Helm’s chart-schema parser silently ignores as an unknown top-level key, defaulting the per-chart-kind axis toapplicationwith no process-log drift-signal). Peer to theHELM_CHART_TYPE_APPLICATION/HELM_CHART_TYPE_LIBRARYre-exports on the sibling per-chart-kind axis-value canonical surface — completes the per-Chart.yaml per-chart-kind discriminator axis’s(key, value-set)canonical re-export trio at the caixa-helm surface. Canonical Helm 3Chart.yamltop-level YAML axis-key naming the per-chart-kind discriminator field whose closed-set scalar-value pairHELM_CHART_TYPE_APPLICATION/HELM_CHART_TYPE_LIBRARYalready owns as the peer axis-value lift. Where the peer axis-value lifts pin the byte-shape of thetype:field’s admitted-value set, this axis-key lift pins the byte-shape of thetype:field’s YAML-key name itself: the load-bearing serde- rename literal atcaixa-helm’sChartYamlstruct (caixa-helm/src/lib.rs:149,#[serde(rename = "type")]) that selects how the Rust fieldchart_typeserializes into the renderedChart.yamlYAML mapping. - HELM_
CHART_ README_ FILENAME - Canonical
lareira-<nome>chart-directory human-facing readme filename every rendered chart carries at its top-level directory — re-export of the liftedcaixa_core::HELM_CHART_README_FILENAMEso the third leg of the canonical{Chart.yaml, values.yaml, README.md}per-lareira-<nome>chart-directoryChartFiletriple lives in exactly one place across every caixa renderer. The single production-code call site consuming it isrender_chart_for_servico’sChartDirassembly where the readme file’s per-ChartFilepathaxis is set (the sole emitter site the prior inline"README.md"string literal sat at); every test-side round-trip navigator that reaches into the renderedChartDirby the readme filename (therender_chart_for_servicofiles-vec- membership pin + theChartDir::write_topost-write existence pin — two sites) now consults the same&'static str. A drifted localpub const HELM_CHART_README_FILENAME: &str = "…"at this crate — the canonical drift footgun where a sibling localpub constcould happen to carry the same string at the source while pointing at a different&'staticallocation — surfaces as GitHub / Artifact Hub / any downstream per-chart README-surfacing UI silently falling back to “no README available” for the renderedlareira-<nome>chart far from the drift commit’s source, with no field naming the readme-filename-drift root cause. The equality +&'staticstatic-data identity pin (helm_chart_readme_filename_re_export_points_at_caixa_core_canonical) closes the drift footgun at caixa-helm build time. Peer to theHELM_CHART_YAML_FILENAME/HELM_VALUES_YAML_FILENAMEre-exports on the sibling canonical-Helm-per-chart-directory- filename axes — completes the per-lareira-<nome>-chart-directory(Chart.yaml, values.yaml, README.md)canonical-per-chart-directory- filename-axis re-export triple every rendered chart declares as its threeChartDir::filesentries. Canonicallareira-<nome>chart-directory human-facing readme filename every rendered chart carries at its top-level directory — the fixed filename thecaixa-helmrenderer emits alongside the two schema-load- bearingHELM_CHART_YAML_FILENAME+HELM_VALUES_YAML_FILENAMEfiles as the third leg of the canonical{Chart.yaml, values.yaml, README.md}per-lareira-<nome>chart-directoryChartFiletriple the peerHELM_CHART_YAML_FILENAMEdocstring explicitly acknowledges is the one axis where the substrate-side single-source discipline had not yet landed at the third file. The single source of truth every consumer that names the readme file — the sole caixa-helm production emit site the prior inline"README.md"literal sat at (caixa-helm’srender_chart_for_servicoChartDirassembly’s per-filepathaxis, the third of the three canonicallareira-<nome>chart-directory files the renderer emits as a bundle, sibling to the metadata-fileHELM_CHART_YAML_FILENAME+ values-fileHELM_VALUES_YAML_FILENAMEaxes) plus every test-side round-trip navigator that reaches into the renderedChartDirby the readme filename (two sites: therenders_three_filesfiles-vec- membership pin + theChartDir::write_topost-write existence pin) — reaches for the same&'static strby construction. - HELM_
CHART_ TYPE_ APPLICATION - Canonical Helm 3
Chart.yamltypefield per-chart-kind discriminator scalar-value every renderedlareira-<nome>chart declares. Re-export of the liftedcaixa_core::HELM_CHART_TYPE_APPLICATIONso the Helm chart-schema per-chart-kind discriminator — the scalar Helm’s per-release install- shape dispatch loop keys off to select the per-chart-kind install pathway — lives in exactly one place across every caixa renderer. The single production-code call site consuming it is [build_chart_yaml]’schart_typefield assignment (the sole emitter site the prior inline"application".into()literal sat at); a drifted localpub const HELM_CHART_TYPE_APPLICATION: &str = "…"at this crate (or any sibling per-chart renderer the absorption roadmap acknowledges — the future per-Aplicacao library chart, the future per-cluster snapshot chart) would surface as one of two silent failure modes athelm installtime: a value outside the schema’s admitted set ({"application", "library"}) that Helm’s chart-schema parser silently treats as the defaultapplicationshape (masking the schema violation with no process-log signal), or an accidental collapse onto the sibling"library"shape that Helm refuses to install directly (“Error: library charts cannot be installed”) with no field naming the chart-kind-drift root cause. The equality +&'staticstatic-data identity pin (helm_chart_type_application_re_export_points_at_caixa_core_canonical) closes the drift footgun at caixa-helm build time. Peer to theHELM_CHART_API_VERSIONre-export on the sibling canonical-Helm- chart-schema-axis — completes the per-Chart.yaml(apiVersion, type)canonical-scalar-axis re-export pair every renderedlareira-<nome>chart declares at its top-level Chart.yaml body. Canonical Helm 3Chart.yamltypefield per-chart-kind discriminator scalar-value every renderedlareira-<nome>chart declares. The Helm chart-schema pins the per-chart-kind axis to the closed set{"application", "library"}(see chart-type-doc) — theapplicationchart-kind is Helm’s default install-shape (an application chart that installs into a namespace as a workload + rendered manifests), while thelibrarychart-kind is Helm’s dependency-only shape (a chart authored as a shared-template substrate that can only be consumed as a dependency, never installed directly). Eachlareira-<nome>chart the caixa-helm renderer emits declares itself as anapplicationchart because it is the per- Servico install shape a cluster operator’shelm install/helm upgradeper-Servico release cycle materializes — the siblingDEFAULT_LIBRARY_NAMEpleme-computeunitchart (the substrate- side library-chart thelareira-<nome>chart depends on for template-shape) carries the siblinglibraryvalue verbatim in its authored Chart.yaml (out-of-tree at thepleme-io/helmworksrepo, so not this crate’s authority). - HELM_
CHART_ TYPE_ LIBRARY - Canonical Helm 3
Chart.yamltypefield per-chart-kind discriminator scalar-value the sibling library-chart shape lands on — re-export of the liftedcaixa_core::HELM_CHART_TYPE_LIBRARYso the second and only other arm of the Helm chart-schema’s closed set{"application", "library"}lives in exactly one place across every caixa renderer. No production emitter here consumes it today — the caixa-helm renderer emits per-Servicoapplication-typedlareira-<nome>charts, and the siblingDEFAULT_LIBRARY_NAMEpleme-computeunitlibrary chart is out-of-tree atpleme-io/helmworks(not this crate’s authority) — but every future substrate-side per-chart-kind classifier and every emitter for the future per-Aplicacao library chart theHELM_CHART_TYPE_APPLICATIONdocstring names as a trajectory item reads the same&'static strby construction. Peer to theHELM_CHART_TYPE_APPLICATIONre-export on the sibling closed-set arm — completes the two-arm re-export pair of the Helm chart-schema’s per-chart-kind axis at the caixa-helm surface so consumers reaching for either shape read from one canonical source per arm. The paired identity pins (helm_chart_type_library_re_export_points_at_caixa_core_canonical) close the drift footgun at caixa-helm build time. Canonical Helm 3Chart.yamltypefield per-chart-kind discriminator scalar-value the sibling library-chart shape lands on — the second and only other arm of the closed set{"application", "library"}the Helm chart-schema pins the per-chart-kind axis to (see chart-type-doc). Thelibrarychart-kind is Helm’s dependency-only install-shape: a chart authored as a shared-template substrate the per-Aplicacaolareira-<nome>application charts depend on for their emitted- object templates (theDEFAULT_LIBRARY_NAMEpleme-computeunitchart out-of-tree atpleme-io/helmworksis the substrate’s canonical instance today), and Helm refuses to install it directly (helm install <library-chart>fails with “Error: library charts cannot be installed”) — a chart declaring itself under this scalar-value is only ever consumed as a dependency by a siblingapplication-typed chart. - HELM_
CHART_ YAML_ FILENAME - Canonical Helm 3 per-chart-directory metadata-file filename every
rendered
lareira-<nome>chart carries at its top-level directory — re-export of the liftedcaixa_core::HELM_CHART_YAML_FILENAMEso the fixed lookup name Helm’s chart-schema parser (helm dependency build,helm lint,helm template,helm install) consults at chart-open time to locate the per-chart schema-body scalars (HELM_CHART_API_VERSION,HELM_CHART_TYPE_APPLICATION, the name/version/dependencies fields) lives in exactly one place across every caixa renderer. The single production-code call site consuming it isrender_chart_for_servico’sChartDirassembly where the metadata file’s per-ChartFilepathaxis is set (the sole emitter site the prior inlinePathBuf::from("Chart.yaml")literal sat at); every test-side round-trip navigator that reaches into the renderedChartDirby the metadata filename (the per-chart-metadata-field sweep tests +ChartDir::write_topost-write existence pin) now consults the same&'static str, so a rebrand of the Helm 3 metadata-file axis (any per-forkChartfile.yaml/ Helm 4 metadata-file rename the upstream packaging spec might adopt) lands at one const and reaches every consumer by construction. A drifted localpub const HELM_CHART_YAML_FILENAME: &str = "…"at this crate — the canonical drift footgun where a sibling localpub constcould happen to carry the same string at the source while pointing at a different&'staticallocation — surfaces as one of two silent failure modes at chart-consumption time: Helm’s chart-schema parser refuses to open the rendered chart-directory (“Error: Chart.yaml file is missing”) far from the drift commit, or the sibling [caixa_flux::cluster_bundle]’s future per-chart-directory resolver — a per-cluster snapshot bundle that re-lists the chart-dir contents by filename — silently returnsNoneat cluster-sidefeira app deploytime. The equality +&'staticstatic-data identity pin (helm_chart_yaml_filename_re_export_points_at_caixa_core_canonical) closes the drift footgun at caixa-helm build time. Peer to theHELM_CHART_API_VERSION/HELM_CHART_TYPE_APPLICATIONre-exports on the sibling canonical-Helm-chart-schema-body-axis surface — completes the per-lareira-<nome>-chart-directory(filename, apiVersion, type)canonical-scalar-axis re-export triple every rendered chart declares at its top-level metadata file. Canonical Helm 3 per-chart-directory metadata-file filename every renderedlareira-<nome>chart carries at its top-level directory — the fixed filename Helm’s chart-schema parser (helm dependency build,helm lint,helm template,helm install) looks up by name at the chart-directory root to locate the per-chartHELM_CHART_API_VERSION+HELM_CHART_TYPE_APPLICATION+ name/version/dependencies scalars eachlareira-<nome>chart declares (see chart-yaml-desc). The single source of truth every consumer that names the metadata file — the sole caixa-helm production emit site the prior inline"Chart.yaml"literal sat at (caixa-helm’srender_chart_for_servicoChartDirassembly’s per-filepathaxis, one of the three canonicallareira-<nome>chart-directory files the renderer emits as a bundle) plus every test-side round-trip navigator that reaches into the renderedChartDirby the metadata filename (six sites acrosscaixa-helm’s per-chart-metadata-field sweep tests +ChartDir::write_topost-write existence pin) — reaches for the same&'static strby construction. - HELM_
VALUES_ KEY_ ENABLED - Canonical
pleme-computeunitlibrary-chart values-block enable-toggle key — re-export of the liftedcaixa_core::HELM_VALUES_KEY_ENABLEDso the values-block toggle every renderedlareira-<nome>chart’s values.yaml carries under itsDEFAULT_LIBRARY_NAMEwrap key lives in exactly one place across every caixa renderer. The single production-code call site consuming it is [build_values_yaml]’sblock.insert(HELM_VALUES_KEY_ENABLED.to_string(), …)(formerly an inline"enabled".to_string()literal atcaixa-helm/src/lib.rs:389); the peer test-fixture navigators pinning the default-off round-trip (values_yaml_wraps_under_pleme_computeunit_key,values_yaml_wrap_key_follows_library_name_override) also consult the re-export so a rebrand of the library-chart’s per-values enable-toggle axis lands at one const and reaches every consumer by construction. A drifted localpub const HELM_VALUES_KEY_ENABLED: &str = "…"(or any sibling per-renderer variant that inlined a stale"enabled"/"enable"/"disabled"literal) would silently emit a values block whose per-values enable-toggle lands under one key while [caixa_flux::cluster_bundle]’sHelmReleasespec.values.<library>.enabledper-cluster override lands under another — Helm’s per-values merge treats them as sibling scalars, the enable-toggle the library chart’s own template consults never sees the flip, and the workload silently comes up with the library chart’s admission-time defaults instead of the per-cluster override the operator set. Same shape as theDEFAULT_LIBRARY_NAME/KUBE_KEY_SPEC/HELM_CHART_API_VERSIONre-exports on the sibling canonical-Helm-load-bearing-string / canonical-K8s-CR-body- key / canonical-Helm-chart-schema-apiVersion axes. Canonicalpleme-computeunitlibrary-chart values-block enable-toggle key — theenabled: <bool>axis everylareira-<nome>chart’s values block carries under itsDEFAULT_LIBRARY_NAMEwrap key, and everycaixa-flux-renderedHelmReleasespec.values.<library>.enabledper-cluster override targets. The single source of truth all four downstream consumers reach for: - HELM_
VALUES_ YAML_ FILENAME - Canonical Helm 3 per-chart-directory values-file filename every
rendered
lareira-<nome>chart carries at its top-level directory — re-export of the liftedcaixa_core::HELM_VALUES_YAML_FILENAMEso the fixed lookup name Helm’s chart-schema parser (helm dependency build,helm lint,helm template,helm install) consults at chart-open time to locate the per-chart values block thatHELM_VALUES_KEY_ENABLEDtoggles under itsDEFAULT_LIBRARY_NAMEwrap key lives in exactly one place across every caixa renderer. The single production-code call site consuming it isrender_chart_for_servico’sChartDirassembly where the values file’s per-ChartFilepathaxis is set (the sole emitter site the prior inlinePathBuf::from("values.yaml")literal sat at); every test-side round-trip navigator that reaches into the renderedChartDirby the values filename (the per-chart-values-field sweep tests +ChartDir::write_topost-write existence pin) now consults the same&'static str, so a rebrand of the Helm 3 values-file axis (any per-forkdefaults.yaml/ Helm 4 values-file rename the upstream packaging spec might adopt) lands at one const and reaches every consumer by construction. A drifted localpub const HELM_VALUES_YAML_FILENAME: &str = "…"at this crate — the canonical drift footgun where a sibling localpub constcould happen to carry the same string at the source while pointing at a different&'staticallocation — surfaces as one of two silent failure modes at chart-consumption time: Helm’s per-chart values-loader silently falls back to the empty values block (helm templateemits the library chart under its admission-time defaults, the workload comes up disabled or without any per-Servico M2 overlay applied) far from the drift commit, or the sibling [caixa_flux::cluster_bundle]’s future per-chart-directory resolver — a per-cluster snapshot bundle that re-lists the chart-dir contents by filename to route per-cluster values overlays through the canonical values file — silently returnsNoneat cluster-sidefeira app deploytime. The equality +&'staticstatic-data identity pin (helm_values_yaml_filename_re_export_points_at_caixa_core_canonical) closes the drift footgun at caixa-helm build time. Peer to theHELM_CHART_YAML_FILENAMEre-export on the sibling canonical-Helm-per-chart-directory-metadata-file-axis surface — completes the per-lareira-<nome>-chart-directory(Chart.yaml, values.yaml)canonical-per-chart-directory-filename- axis re-export pair every rendered chart declares as its two schema-load-bearingChartDir::filesentries. Canonical Helm 3 per-chart-directory values-file filename every renderedlareira-<nome>chart carries at its top-level directory — the fixed filename Helm’s chart-schema parser (helm dependency build,helm lint,helm template,helm install) looks up by name at the chart-directory root to locate the per-chartDEFAULT_LIBRARY_NAME-wrapped values block thatHELM_VALUES_KEY_ENABLEDtoggles (see values-yaml-desc). The single source of truth every consumer that names the values file — the sole caixa-helm production emit site the prior inline"values.yaml"literal sat at (caixa-helm’srender_chart_for_servicoChartDirassembly’s per-filepathaxis, the second of the three canonicallareira-<nome>chart-directory files the renderer emits as a bundle, sibling to the metadata-fileHELM_CHART_YAML_FILENAMEaxis) plus every test-side round-trip navigator that reaches into the renderedChartDirby the values filename (eleven sites acrosscaixa-helm’s per-chart-values-field sweep tests +ChartDir::write_topost-write existence pin) — reaches for the same&'static strby construction. - KUBE_
KEY_ SPEC - Canonical K8s CR top-level
speckey. Re-export of the canonicalcaixa_core::KUBE_KEY_SPECso the per-kind body key lives in exactly one place across every caixa renderer — caixa-helm’sbuild_values_yaml(the upstream ComputeUnit YAML’sspec.*axis the renderedlareira-<nome>chart’s values block re-routes through the library alias) now consults the same&'static stras the peer caixa-flux / caixa-mesh renderers’KUBE_KEY_SPECre-exports. The prior inline"spec"literal at the production- code call site would have let a typo (e.g."Spec","specs","spec_") silently emit a values block that drops every typed ComputeUnit-side field (module,trigger,capabilities,resources,serviceAccount) at the rendered chart’s landing site — theError::MissingField("spec")diagnostic now threads the same&'static strthrough the diagnostic surface so the error message stays byte-identical to the key it failed to find. Same shape as theDEFAULT_LIBRARY_NAMEre-export on the sibling canonical-Helm-load-bearing-string axis. Canonical K8s API key naming the resource’s per-kind body (sibling toKUBE_KEY_METADATAat the K8s CR top level). Every typed substrate renderer that materializes a CR populatesspec.*from the source caixa.lisp — caixa-mesh’scilium_network_policiesper-(:de, :para)CiliumNetworkPolicyemitter (the policy’sendpointSelector/ingressblock lives under spec), caixa-mesh’sgateway_routesGateway+HTTPRouteemitter (the listeners / rules / parentRefs block lives under spec), caixa-flux’sprograms_yaml_entry+upsert_into_helmrelease_programs(the fleetHelmRelease’sspec.values.programs[]axis), caixa-helm’svalues.yamlbuilder (the upstream ComputeUnit YAML’sspec.*axis the renderedlareira-<nome>chart re-routes through the library alias). Spelled exactly as the K8s apiserver expects (the canonical OpenAPI v3 schema property name K8s machinery validates against on every CR registration), so the rendered YAML round-trips through every K8s schema parser without per-renderer string drift. Lifted on the trajectory the peerKUBE_KEY_API_VERSION/KUBE_KEY_KIND/KUBE_KEY_METADATA/KUBE_KEY_NAME/KUBE_KEY_NAMESPACE/KUBE_KEY_LABELS/KUBE_KEY_MATCH_LABELScanonical-K8s- API-key constants establish. - STANDALONE_
LAREIRA_ ENABLED_ DEFAULT - Canonical substrate-side default for the
values.<library>.enabledscalar-value toggle everyrender_chart_for_servico-emitted standalonelareira-<nome>chart’svalues.yamldocument seeds inside its per-caixaDEFAULT_LIBRARY_NAMEwrap block to leave the pairedDEFAULT_LIBRARY_NAMEchild chart opted-out at the per-clusterhelm template/helm installapply step. Re-export of the canonicalcaixa_core::STANDALONE_LAREIRA_ENABLED_DEFAULTso the substrate-side default the standalone per-chart path seeds under the siblingHELM_VALUES_KEY_ENABLEDleaf-scalar-key lives in exactly one place across every caixa renderer. Consumed byRenderOpts::default’senabled_defaultfield seed (formerly an inlinefalsescalar-value literal atcaixa-helm/src/lib.rs:700); the peer test-fixture navigators pinning the default-off round-trip also consult the re-export so a rebrand of the per-values-block child-chart-enablement-toggle scalar on the standalone per-chart path lands at one const and reaches every consumer by construction. Semantically distinct from — and inverse of — the peer [caixa_flux::CLUSTER_BUNDLE_LAREIRA_ENABLED_DEFAULT] on the composition per-cluster-HelmReleasevalues-overlay path (which force-ons the child chart under the substrate-side composition path); the two peer scalar-value defaults name mirror-symmetric per-path child-chart-enablement-toggle-scalar-value defaults at the exact samevalues.<library>.enabledsub-block position on the standalone per-chart-values.yamlpath (this re-export) and the composition per-cluster-HelmReleasevalues-overlay path (the peer re-export). Same shape as theDEFAULT_LIBRARY_NAME/KUBE_KEY_SPEC/HELM_VALUES_KEY_ENABLEDre-exports on the sibling canonical-Helm-load-bearing-string / canonical-K8s-CR-body- key / canonical-Helm-per-values-block-enable-toggle-key axes. Seecaixa_core::STANDALONE_LAREIRA_ENABLED_DEFAULTfor the full lift rationale. Canonical substrate-side default for thevalues.<library>.enabledscalar-value toggle everycaixa_helm::render_chart_for_servico-emitted standalonelareira-<nome>chart’svalues.yamldocument seeds inside its per-caixaDEFAULT_LIBRARY_NAMEwrap block to leave the pairedDEFAULT_LIBRARY_NAMEchild chart opted-out at the per-clusterhelm template/helm installapply step. Pairs with the siblingHELM_VALUES_KEY_ENABLEDleaf-scalar-key half of the(leaf-key, scalar-value)per-values-block child-chart-enablement-toggle declaration pair — the key half names the canonicalvalues.<library>.enabledleaf-scalar-key axis every consumer (this standalone-path default,caixa_flux::cluster_bundle’s per-CR values-overlay) probes on, and this scalar-value half names the substrate-side default the standalone per-chart path seeds under it. Semantically distinct from — and inverse of — the peerCLUSTER_BUNDLE_LAREIRA_ENABLED_DEFAULTdefault thatcaixa_flux::cluster_bundle’shelmrelease.yamlvalues overlay seeds for the substrate-side composition-path force-on (that path rendersenabled: truein the per-clusterHelmRelease.spec.values.<library>overlay so the operator’s per-caixa cluster-scoped ownership at bundle materialization time carries a force-on for the child chart); the standalone per-chart path is the substrate-side opt-out path where the operator has not yet asserted per-caixa cluster-scoped ownership by materializing a per-caixaGitRepository+HelmRelease+Kustomizationtrio, so the per-chartvalues.yamlseedsenabled: falseunder thevalues.<library>wrap and cluster operators must opt each caixa in per-cluster.
Functions§
- render_
chart_ for_ servico - Render a per-program lareira-
chart from a Caixa Servico + its loaded ComputeUnit YAML. - render_
chart_ for_ servico_ with render_chart_for_servicowith explicit options.- servico_
spec_ and_ m2_ overlay_ entries - Local re-export of the canonical
caixa_core::servico_spec_and_m2_overlay_entries— the composed per-Servico value-block splice helper this crate’s [build_values_yaml] and the peer [caixa_flux::programs_yaml_entry] both now route their two-stepspec.*field-splice + M2 typed-slot overlay through. The single production-code call site consuming it is [build_values_yaml]’s inner splice loop (formerly two hand-written for-loops chained aroundstring_keyed_entries+servico_m2_overlay); re-exported so the shared composition contract lives in exactly one place across both per-Servico renderers — a future author readingcaixa_helm::build_values_yamlfinds the composition helper immediately without an extrause caixa_core::…line, and a rebrand of the composition axis (e.g. a swap of theor_insertprecedence rule once per-Aplicacao operator overrides land) reaches both renderers through one canonical&'staticfunction pointer. Same shape as the peerCOMPUTEUNIT_SPEC_KEY_MODULE/COMPUTEUNIT_SPEC_KEY_TRIGGER/COMPUTEUNIT_SPEC_KEY_CAPABILITIESre-exports on the sibling canonical-ComputeUnit-CRDspec.*axis — extends the shared-composition discipline the per-spec.*sub-block re-export triple establishes onto the composed spec.*+M2 splice axis every per-Servico renderer navigates. Compose the canonical per-Servico value-block splice every per-Servico renderer applies to the target values / entry mapping — the two-step sequence [caixa_helm::build_values_yaml] and [caixa_flux::programs_yaml_entry] both re-derived inline before this lift:
Type Aliases§
- Chart
File - One file in the rendered chart —
(path, contents)pair everyrender_chart_for_servico-renderedlareira-<nome>chart-tree leaf lands at (Chart.yaml,values.yaml,README.md).