Description
Both pod-log transports are currently emitted by the catalogue, verified 2026-08-28 from a complete -inventory-json dump: the Loki-native shape matching the capture byte for byte, and the OTLP shape. SKT-0013.05 settled that both are real and the difference is the transport, so both must stay covered.
The problem is that neither is covered deliberately.
k8s-logs-eventsdeclarespod_logs_method: lokiexplicitly. SKT-0013.09 produced that by CHANGING the value fromopentelemetry, not by adding a second environment — see9263c7f. For the length of that change the catalogue’s OTLP coverage depended entirely on the other blueprint.k8s-full-stackcovers the OTLP transport only by OMITTINGpod_logs_methodand inheriting the k8s-monitoring 4.x chart default. Nothing in that file says the OTLP transport depends on the omission. Adding an explicit method there — an obviously reasonable edit — silently removes OTLP pod logs from the entire catalogue.
Both halves are one keystroke from disappearing, and the fidelity gate would report the loss as a coverage gap among six hundred others rather than as a regression.
Make the coverage explicit and guarded. Both transports should be declared by name in a blueprint rather than inherited from a default, and something should fail when the catalogue stops emitting one of them — an architecture test over resolved blueprints, or a fidelity-gate assertion that both loki and otlp_logs entries for the pod-log family are present in the synth inventory.
Do not solve this by declaring both transports in one environment. The whole point of SKT-0013.05 is that a given deployment runs one or the other; a blueprint claiming both would model a cluster that does not exist.
Acceptance Criteria
- #1 Each pod-log transport is declared by name in a blueprint rather than inherited from a chart default
- #2 Removing either transport from the catalogue fails a check, rather than appearing as one coverage gap among hundreds
- #3 No single blueprint environment declares both transports at once
Definition of Done
- #1 make gate (build vet test race rw-proto-check spdx-check forbidden-words)
- #2 make blueprint-schema (only if a blueprint field or construct/workload config struct changed)
- #3 DRY_RUN=true go run ./cmd/synthkit -once -dump — inventory diffed against signals/
Implementation Plan
Lane F builds the transport guard and returns explicit root-owned blueprint and architecture-test diffs.
Implementation Notes
2026-08-30 closeout: both pod-log transports are explicit in separate blueprints, architecture coverage fails if either disappears, and the final dump/gates exited 0.
Final Summary
Loki and OTLP pod-log coverage is explicit, separate, and guarded against accidental catalogue loss.