Observed vs baseline
Every row carries both. If baseline is 125ms and observed is 1900ms, that is the claim. Compose is not allowed to say “slightly elevated.”
Grounded analysis · heuristic compose · optional Groq or OpenAI
Detectors
Every row is a detector hit with observed vs baseline values. This is the evidence RCA ranks — not a vibe chart.
No anomalies in memory yet.
Checkout cascade typically emits CPU, memory, latency, error rate, traffic, availability, and error-log bursts on checkout-service in overlapping five-minute windows. Independent detectors, one clock.
Every row carries both. If baseline is 125ms and observed is 1900ms, that is the claim. Compose is not allowed to say “slightly elevated.”
service vs global. Most hits are service-scoped. Global is reserved for signals that have no owner in the graph — treat those as last.
A detector-local number used by correlation weights. It is not an SLO burn. Do not paste it into a customer email.
After a healthy-baseline run this table should be empty. That is the control. If it is not empty, the detectors are too hungry.
Thresholds live in configs/default.yaml under anomaly_detection. A quiet CPU series does not suppress an error-rate spike.