pub const GATEWAY_API_KEY_REQUEST: &str = "request";Expand description
Canonical K8s Gateway API HTTPRoute per-rule request-timeout-policy
request leaf scalar-key every gateway_routes-emitted HTTPRoute
document mounts its per-rule :politicas :timeout typed K8s-duration
string under (spec.rules[].timeouts.request). Leaf peer to the
container-axis parent GATEWAY_API_KEY_TIMEOUTS (db31108) — the
sibling per-rule request-timeout-policy body-axis — and to the peer
retry-container leaf GATEWAY_API_KEY_ATTEMPTS (e2e136b) landed
on the parallel retry.attempts nesting; this closes the parent-leaf
axis pair (timeouts container + request leaf) the K8s Gateway API
v1 HTTPRouteTimeouts sub-shape pins under
HTTPRoute.spec.rules[].timeouts.request.
The Gateway API v1 CRD schema pins the per-rule request-deadline
through the HTTPRouteTimeouts.request scalar (peer to
HTTPRouteTimeouts.backendRequest per-attempt backend-call deadline
scalar) the Gateway-API-implementation-side per-rule request-dispatch
loop keys off before it commits to a per-request wall-clock deadline.
Drift on this leaf key is exactly as load-bearing as drift on the
parent per-rule request-timeout-policy container axis (timeouts):
the K8s apiserver-side Gateway API CRD schema validator drops any
per-rule timeouts: entry whose leaf request-deadline key carries an
unrecognized name — a "deadline" / "requestTimeout" /
"timeout" / "upstreamRequest" typo silently emits an HTTPRoute
whose per-rule request-deadline the Gateway-API-implementation-side
per-rule request-dispatch loop no-ops entirely (the sub-shape is
parsed as an empty HTTPRouteTimeouts with the typed duration
silently discarded, the route accepts every inbound request with no
per-rule request wall-clock deadline — the “no infinite blocking”
guarantee MESH-COMPOSITION.md §V mandates for every rendered
per-:politicas mesh-composition edge silently regresses to the
pre-overlay unbounded-blocking semantic, and every external
:entrada flow the route was authored to cap by the typed
:politicas :timeout slot runs to whatever request-deadline the
resolved backend’s downstream infrastructure — Envoy default
route-timeout, client SDK deadline, node-local conntrack idle-close
— picks with no field naming the per-rule-request-timeout-leaf-key
drift root cause).
The single source of truth the rendered Aplicacao Gateway-API-side
ingress bundle’s per-HTTPRoute per-rule request-deadline-leaf-key-
naming reaches for:
- the rendered
HTTPRoutedocument’s per-ruletimeouts.request:leaf (caixa-mesh/src/lib.rs — thegateway_routesper-AplicacaoHTTPRoute’s per-rulesingle_field_overlay(spec.politicas.timeout, …)call seeded from the Aplicacao’s:politicas :timeoutoverlay when the slot is set, emitting the typed K8s-duration string under this leaf key inside the siblingGATEWAY_API_KEY_TIMEOUTScontainer axis).
The per-rule request-deadline leaf key names the same
Gateway-API-implementation-side per-rule request-dispatch wall-clock
deadline scalar as the sibling parent GATEWAY_API_KEY_TIMEOUTS
container axis it sits nested inside under
spec.rules[].timeouts.request, and must move together with the
parent on any future Gateway API rebrand (an upstream SIG-Network
Gateway API v2 rename of the per-rule request-deadline leaf key from
request to deadline / requestTimeout / timeout /
upstreamRequest, coordinated with the Gateway API deprecation
cycle). Until this lift landed the leaf key carried an inline
request literal at six physical code sites in
caixa-mesh/src/lib.rs (one production emitter at the
gateway_routes per-rule
single_field_overlay(spec.politicas.timeout, "request", …) call
plus five test-side navigators pinning the overlay’s leaf-value
presence, the canonical duration_codec::render round-trip of a
30s / 90s / 1m typed duration, per-rule fan-out under
multi-:entrada :paths, and independent-axis coexistence with the
sibling retry per-rule retry-policy axis).
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_KEY_ATTEMPTS (e2e136b) /
GATEWAY_API_KEY_RETRY (231bbf5) /
GATEWAY_API_KEY_TIMEOUTS (db31108) /
GATEWAY_API_KEY_HOSTNAMES (b77f744) /
GATEWAY_API_KEY_HOSTNAME (c96fa22) /
GATEWAY_API_KEY_LISTENERS (29f2415) /
GATEWAY_API_KEY_PARENT_REFS (f44e823) /
GATEWAY_API_KEY_BACKEND_REFS (a6c5679) lifts established on the
sibling canonical-Gateway-API-CRD-body-axis surface — closes the
second parent-leaf axis pair (timeouts container + request leaf)
the K8s Gateway API v1 HTTPRouteTimeouts sub-shape pins under
HTTPRoute.spec.rules[].timeouts.request, sibling to the parent-
leaf pair (retry container + attempts leaf) closed in the
immediately-preceding GATEWAY_API_KEY_ATTEMPTS lift. Both
MESH-COMPOSITION.md §V “no infinite blocking / no infinite retrying”
guarantees now rest on typed lifts at both container-axis and leaf-
scalar-axis nesting levels of the two per-:politicas overlays.
The render-side consumer now threads the same &'static str
through its single_field_overlay call and every test-side
navigator’s .get(…) retrieval so a future Gateway API rebrand on
the per-rule request-deadline leaf lands in one place; every future
renderer that reaches for the canonical per-rule request-deadline
leaf (the future M4 mesh.pleme.io/v1alpha1/Aplicacao CR
materializer’s per-Aplicacao per-rule request-deadline fan-out, a
future per-edge backendRequest per-attempt backend-call deadline
emitter) inherits the same value by construction with no opportunity
for per-renderer drift.
Same “the typed constant lives in one place” discipline the
GATEWAY_API_KEY_ATTEMPTS (e2e136b) /
GATEWAY_API_KEY_RETRY (231bbf5) /
GATEWAY_API_KEY_TIMEOUTS (db31108) lifts apply on the peer
canonical-Gateway-API-HTTPRoute-per-rule-body-axis surface, now
extended to the second per-rule container-leaf scalar (parallel to
the sibling retry.attempts container-leaf pair).