Task · SKT-0010.13

Model pods with no Deployment owner and no node

Description

Found by SKT-0010.09 when pod-log entries first became comparable.

The real k3d cluster carries pods with no Deployment owner and no node attribute — the corpus records exactly that variant as its second pod-log shape, with 8 attribute keys against the 11 of an owned, scheduled pod. buildPodLogEntries in internal/construct/k8scluster/podlogs.go always sets a Deployment, so synthkit never emits that variant on any transport.

Why it matters beyond one missing shape: an unowned or unscheduled pod is not an exotic edge case. A bare Pod, a pod between scheduling and admission, a pod owned by a Job or a CRD controller — all produce it, and all are normal in a real cluster. A user whose dashboard handles the absent-k8s_deployment_name case correctly gets no synthetic data exercising that path, so the panel that breaks in production looks fine against synthkit.

It currently cannot surface as a finding in either direction, which is why it needs a task rather than waiting for the gate to catch it. The corpus schema has no optional-key concept, so a family whose key set varies by pod state has no representation — under the old comparator identity it showed up as a whole MISSING log family, which was wrong in a more misleading direction, and under the new shape join it is absorbed silently.

So this is two things: the construct should model the variant, and the corpus schema probably needs a way to say “this key is present only for some members of the family” rather than forcing a choice between two families or one over-specified one.

Acceptance Criteria

Definition of Done

Implementation Plan

Lane F adds the unowned and unscheduled pod-log variant on both transports and an optional-key comparator representation.

Implementation Notes

2026-08-30 closeout: both transports emit the unowned/unscheduled pod variant with absent owner/node keys omitted. Optional stream/metadata keys survive normalization and the comparator reports the reality-only variant without treating synth-only optional keys as contradictions. Final gates exited 0.

Final Summary

The pod-log estate now models and compares pods with no Deployment owner and no node on both transports.

View the source file on GitHub