Skip to main content

FLEET_PROGRAMS_KEY_APLICACAO

Constant FLEET_PROGRAMS_KEY_APLICACAO 

Source
pub const FLEET_PROGRAMS_KEY_APLICACAO: &str = "aplicacao";
Expand description

Canonical lareira-fleet-programs values-schema key naming the per-entry parent-Aplicacao-graph discriminator — the aplicacao: annotation the substrate operator’s fleet-aggregator reads to group each rendered programs[] entry back onto the parent Aplicacao its M3 :membros list contributed it, and the exact key downstream fleet consumers (per-graph observability filters, per-Aplicacao Cilium-policy reconciliation, per-graph Gateway/ HTTPRoute attachment) walk to project the flat programs[] sequence back onto its typed Aplicacao graph.

Peer of FLEET_PROGRAMS_KEY_NAME and M3_KEY_PLACEMENT on the same fleet-programs values schema — FLEET_PROGRAMS_KEY_NAME carries the per-entry Servico-name discriminator (the :membros row’s own :caixa binding), M3_KEY_PLACEMENT carries the M3 placement overlay cloned per entry, and this constant carries the per-entry parent-Aplicacao-nome annotation the aggregator uses to group entries back into their Aplicacao graph. Together the three per-entry keys (plus the top-level FLEET_PROGRAMS_KEY_PROGRAMS array key) name every axis one programs[] entry the caixa-mesh fan-out emits contributes to the substrate operator’s read shape.

One production consumer writes this key: [caixa_mesh::programs_for_aplicacao] — the Aplicacao-side per-:membros entry-builder writes the parent-Aplicacao-nome annotation at this exact key (seeded from the enclosing Caixa’s :nome), at caixa-mesh/src/lib.rs’s per-member entry.insert("aplicacao".into(), …) call. Unlike the peer FLEET_PROGRAMS_KEY_NAME axis (written by both caixa-flux’s per-Servico entry builder and caixa-mesh’s per-:membros builder — a Servico rendered standalone has no parent-Aplicacao annotation to carry), the parent-Aplicacao-nome annotation is emitted only by the caixa-mesh Aplicacao-side fan-out — Servicos rendered standalone through the caixa-flux path leave the annotation absent, which is exactly the discriminator the operator’s aggregator uses to distinguish Aplicacao-graph-scoped entries from stand-alone Servico entries.

Until this lift landed the caixa-mesh emitter carried the bare "aplicacao" byte inline at its entry.insert("aplicacao".into(), …) call, and the peer in-file test probe (the programs_for_aplicacao_annotates_with_parent_nome fixture’s e.get("aplicacao").and_then(|v| v.as_str()) navigation) carried the same bare byte at its readback site. A future fleet-programs schema-key rebrand on the per-entry parent-Aplicacao-annotation axis (per the same trajectory the sibling FLEET_PROGRAMS_KEY_NAME doc-comment names — the lareira-fleet-programs library chart moving its per-entry parent-graph-annotation to a namespaced pleme.pleme.io/aplicacao for multi-tenant aggregator isolation once the M4 flat-programs[]-per-cluster shape splits into per-graph sequences, or to graph: for parity with the M3 :contratos graph nomenclature, or to typed parent: on the ABSORPTION-ROADMAP.md M4 hierarchical-fleet trajectory) without a coordinated edit across both sites would silently split the schema: the emitter would write under the drifted key while the aggregator’s per-Aplicacao filter would still read aplicacao: — every fan-out entry would silently vanish from its parent graph’s projected view at the aggregator’s per-Aplicacao reduce step, with the failure surfacing as “the Aplicacao’s Servicos never appear in per-graph observability filters” far from the rebrand commit’s source. Lifting the literal to one &'static str closes the drift footgun structurally — every consumer reads the same memory, so any future rebrand reaches both sites by construction and a CI build that re-introduces a sibling inline "aplicacao" literal trips the peer pinning tests at the build-time fail-before-deploy posture every prior load-bearing- string lift on this surface (FLEET_PROGRAMS_KEY_PROGRAMS on the sibling fleet-programs top-level array-key axis, FLEET_PROGRAMS_KEY_NAME on the peer per-entry name- discriminator axis, M3_KEY_PLACEMENT / M2_KEY_LIMITS / M2_KEY_BEHAVIOR / M2_KEY_UPGRADE_FROM on the peer per- entry overlay-key surfaces) establishes.

Byte-identical to the string form of the caixa_core::CaixaKind::Aplicacao enum variant today — both resolve to the same nine-byte "aplicacao" literal — but semantically distinct: CaixaKind’s Aplicacao variant names the :kind enum arm (the typed kind-tag every defcaixa selects among), while this constant names the lareira-fleet-programs library chart’s per-entry parent-graph-annotation axis (spelled per the chart’s values.schema.json — a separate schema contract, one whose future rebrand can land independently of the kind-tag axis). Splitting the two lets each schema’s future rebrand land at its canonical const/variant definition without coupling the :kind enum-tag axis to the fleet-programs values- schema axis (or vice versa) — the same discipline the sibling FLEET_PROGRAMS_KEY_NAME doc-comment establishes vs. KUBE_KEY_NAME on the K8s CR canonical name-axis.