Refs #54
Location
deploy/grafana/charon.json — Panel 7 (opportunities queued vs dropped)
Queries
Queued: sum(rate(charon_executor_opportunities_queued_total{...}[1m]))
Dropped: sum by (stage) (rate(charon_executor_opportunities_dropped_total{...}[1m]))
Problem
The queued query aggregates all instances into a single series (no by (stage)). The dropped query breaks out by stage label. The panel renders one line for queued and multiple lines for dropped — they are not directly comparable because queued is a total while dropped is per-stage.
A correct funnel visualization requires either both series at the same aggregation level or both as totals. The current configuration makes it impossible to visually interpret stage-level loss rates against the total intake.
Impact
Operators will misread the opportunity funnel. The core diagnostic value of the panel (understanding where opportunities are being dropped) is obscured by the aggregation mismatch.
Suggested Fix
Either:
- Change the queued query to sum by (stage) with a static stage label (stage="queued") for structural symmetry, OR
- Add a second queued series broken down (queued total and per-stage dropped on the same axes), OR
- Split Panel 7 into two sub-panels: total rate comparison and drop-by-stage breakdown.
Refs #54
Location
deploy/grafana/charon.json — Panel 7 (opportunities queued vs dropped)
Queries
Queued: sum(rate(charon_executor_opportunities_queued_total{...}[1m]))
Dropped: sum by (stage) (rate(charon_executor_opportunities_dropped_total{...}[1m]))
Problem
The queued query aggregates all instances into a single series (no by (stage)). The dropped query breaks out by stage label. The panel renders one line for queued and multiple lines for dropped — they are not directly comparable because queued is a total while dropped is per-stage.
A correct funnel visualization requires either both series at the same aggregation level or both as totals. The current configuration makes it impossible to visually interpret stage-level loss rates against the total intake.
Impact
Operators will misread the opportunity funnel. The core diagnostic value of the panel (understanding where opportunities are being dropped) is obscured by the aggregation mismatch.
Suggested Fix
Either: