🤖 Generated by the Daily AI Engineer
Reproduction and evidence
Read-only production verification on 2026-07-18 found the OpenCost release Ready with two healthy primary replicas, but its Coroot-backed metrics input is incomplete:
- Coroot Prometheus returns
0 series for node_cpu_seconds_total, container_cpu_usage_seconds_total, and container_memory_working_set_bytes.
- It does return kube-state data (
kube_pod_container_resource_requests: 677 current samples; kube_node_status_capacity: 54).
- OpenCost
GET /allocation/compute?window=24h&aggregate=namespace returns HTTP 200 and 34 namespaces with non-zero requests/costs, but 0/34 namespaces have non-zero cpuCoreUsageAverage or ramByteUsageAverage.
The release being healthy therefore masks a functional degradation: allocation cost is derived from requested resources, while actual usage and efficiency are absent.
Audience and impact
Operators using OpenCost for utilization, idle-spend, or request-versus-usage decisions receive plausible-looking costs with zero actual CPU/RAM usage. This can misstate efficiency and makes the current OpenCost view unsafe as a usage-aware source of record.
The same latent design was about to be copied into the Platform template; platform-template#82 stopped that rollout after exact-head review prompted this live check.
Expected behavior
Choose and prove one coherent cost path:
- keep OpenCost and provide a Prometheus source with the standard node/cAdvisor/kube-state series its allocation model needs; or
- retire OpenCost and use the independently live-proven Coroot node/application cost rollups instead.
Do not treat Helm readiness or a successful allocation HTTP response as sufficient proof.
Acceptance criteria
Rough size: M
Related: #1784, #2043, devantler-tech/platform-template#65
Reproduction and evidence
Read-only production verification on 2026-07-18 found the OpenCost release Ready with two healthy primary replicas, but its Coroot-backed metrics input is incomplete:
0series fornode_cpu_seconds_total,container_cpu_usage_seconds_total, andcontainer_memory_working_set_bytes.kube_pod_container_resource_requests: 677 current samples;kube_node_status_capacity: 54).GET /allocation/compute?window=24h&aggregate=namespacereturns HTTP 200 and 34 namespaces with non-zero requests/costs, but 0/34 namespaces have non-zerocpuCoreUsageAverageorramByteUsageAverage.The release being healthy therefore masks a functional degradation: allocation cost is derived from requested resources, while actual usage and efficiency are absent.
Audience and impact
Operators using OpenCost for utilization, idle-spend, or request-versus-usage decisions receive plausible-looking costs with zero actual CPU/RAM usage. This can misstate efficiency and makes the current OpenCost view unsafe as a usage-aware source of record.
The same latent design was about to be copied into the Platform template;
platform-template#82stopped that rollout after exact-head review prompted this live check.Expected behavior
Choose and prove one coherent cost path:
Do not treat Helm readiness or a successful allocation HTTP response as sufficient proof.
Acceptance criteria
Rough size: M
Related: #1784, #2043, devantler-tech/platform-template#65