1.3 KiB
1.3 KiB
041 — Stop silently coercing string metric values to 1.0 in sum()/avg()
Summary
coerce_to_f64 (src/engine.rs) maps every MetricPrimitive::String value
to a flat 1.0. This means sum()/avg() on a string-valued metric
silently becomes an occurrence count instead of erroring or behaving
predictably, with no signal to the user that their aggregate doesn't mean
what it looks like it means.
Scope
- At PromQL query-evaluation time, detect when the target metric's declared
value kind is
Stringand the requested aggregation issum/avg. - Either reject the query with a clear error ("cannot sum/avg a string-typed
metric; use count() or a numeric-typed metric"), or introduce an explicit
count()aggregation so occurrence-counting is something a user opts into by name rather than somethingsum()does silently for the wrong metric kind. - Audit existing dashboards/panels for
sum()/avg()over string-kind metrics that would now be rejected or need updating tocount().
Acceptance criteria
- Querying
sum()/avg()over a string-kind metric either fails with a clear, actionable error or is redirected to an explicitcount()semantic — it no longer silently returns a count while looking like a sum. - Numeric-kind metrics are unaffected.
Depends on
None.