Description
internal/collector/gateways.go:180-197 drops an unparseable RTT/loss threshold with a Debug-only log — invisible at default Info level; the threshold series silently vanishes. Mirror the smart.go #615 pattern: Warn log + a gateway_threshold_parse_errors_total counter.
Acceptance Criteria
- #1 Unparseable threshold produces a Warn and increments a parse-errors counter; series absence is explained
- #2 Test covers a malformed threshold payload
Definition of Done
- #1 just check
- #2 just gen (if any generated artifact changed) and the diff committed
Implementation Plan
Wave 1 L9 plan: read the receiver/pipeline acceptance contract, write the required focused regression first where applicable, implement only the task-owned files, return root-owned wiring precisely, and stop before OPN-0036.
Implementation Notes
Wave 1 staged WIP surfaces gateway threshold parse failures through warnings and a counter, with tests and dashboard coverage; integrated just check passed and L14 found no remaining issue. Not landed because CodeRabbit produced no complete event. Resume: obtain a complete review, triage findings, commit explicitly, integrate current origin/main, rerun just check, push, verify exact-SHA CI, then confirm the counter with a malformed live/test payload if runtime proof is required.
Landed threshold parse warnings, a persistent monotonic parse-error counter, malformed-payload regression coverage, and a dashboard panel in 36bd99a7b4c0b2eb1b760ca9262664bfcf9c988e. CodeRabbit identified counter reset on registration; the implementation and regression were corrected before commit.
Final Summary
Malformed gateway thresholds now emit a warning and increment gateway_threshold_parse_errors_total while explaining the absent threshold series. Focused tests and just check passed; exact-head CI run 33587198497 succeeded at 36bd99a7b4c0b2eb1b760ca9262664bfcf9c988e.