Task · SKT-0015.05

Add declarable pod lifecycle churn, coherent across every signal

Description

SKT-0015.02 landed declarable churn on network_topology only, rotating network_topology_edge_info identities and retiring the gauges with state.DeleteGauge. It deliberately excluded Kubernetes identity, and recorded the reason: pod, node and storage identities are deterministic cross-signal joins.

Decision taken 2026-08-28 (Rob): add pod lifecycle churn as well. Edge churn alone is too narrow a signal for the detectors this feature exists to test. Pods are the highest-volume churning identity in a real cluster and the one a new-series detector actually sees.

The exclusion reasoning was right and still binds. This is not a reversal of SKT-0015.02’s decision, it is the harder case it declined to take on. Pod names and UIDs are seeded (seed:cluster, clusterSeed), ordinal pods share names but differ by UID, and resolve to liveCluster byte-parity is tested. Churn must NOT reseed any of that.

What churn means here is a whole pod identity reaching end of life and a new one starting – the same thing a real rollout, eviction or node drain does. Concretely:

Reuse the network_topology mechanic where it generalises rather than writing a second one. Whatever seam carries the rate should be the same shape for both, so a blueprint declares churn one way.

Cross-signal coherence is the acceptance risk, not the rate arithmetic. Test that a churned pod disappears from every lane in the same tick.

Acceptance Criteria

Definition of Done

Implementation Plan

Lane C after SKT-0013.09: add pod lifecycle churn using the existing churn seam shape, test same-tick retirement across metrics/logs/traces, delete retired gauges, and preserve deterministic cluster-scoped identity. Return root-owned blueprint/schema wiring requests.

Implementation Notes

Lane C dispatch preflight: EXECUTION route requested as gpt-5.6-luna/max with fork_turns=none; Delegation forbidden. Lane A code base 25e8c040 is exact-SHA green including e2e and ci-success.

Final verification: focused lifecycle tests prove bounded turnover, same-tick retirement across metrics/logs/traces, gauge deletion, deterministic replacement UIDs, stable StatefulSet ordinal names and retained PVC identity. The shared series_churn_per_minute seam is generated in the schema and exercised by k8s-logs-events. Existing determinism tests and the complete make gate pass; the complete 28-blueprint dry-run inventory and make e2e at 650/650 also pass.

Exact implementation SHA 1729e2068321fc53b6d973a6fc981fc1066c4c42 passed GitHub ci run 33186760476, including signal-fidelity, go, docker, hygiene, helm, ui, secret-scan, e2e and ci-success.

Final Summary

Added bounded pod lifecycle churn through the shared churn seam with coherent metrics/logs/traces retirement, gauge deletion and deterministic identity preservation; focused cross-signal tests and full gates passed.

View the source file on GitHub