
On the day we started ingesting the public river network, not one of the twelve CWC stations we needed was decision-grade. Not one.
- The Brahmani and Baitarani feed had been stalled since 3 June, 84 days.
- Five sensors were flatlined: Akhuapada, Champua, Pamposh, Nimapara, Seorinarayan.
- 34.6% of readings at Kishan Nagar were outside physical range, including a spike to 1133 m and minus 834 m at Jenapur.
- Sambalpur, Hirakud, Basantpur and Khairmal were real but stale, running 38 to 79 hours behind.
This is not a complaint about CWC. Running a national gauge network is genuinely hard. It is an observation about what arrives at your ingest layer, and about how little of it announces itself as broken.
Three of four failure modes look like data
A flatline, a stall and a physically impossible spike all arrive as valid rows with valid timestamps. Nothing in the payload says “do not trust me”. Only the fourth trace, an actual river rising, is what it appears to be. A platform that trusts the feed wholesale would have alerted on noise, confidently, with a number attached.
An unvalidated gauge is worse than no gauge, because it fails silently and looks like data.
So the ingest now ships with a QC layer it turned out to need badly: a physical-range filter, stuck-sensor detection over a 500-reading window, a staleness check, and a datum check that strips a published danger level when it does not share the station’s datum. A level counts toward a score only when the gauge is genuinely live. Otherwise the briefing says the read is rainfall-only, out loud, and the score is capped accordingly.
That discipline is also why our own hardware is held to the same bar. Bhoomi G1 writes to an ingest store and stops. It passes four gates before a reading could ever count, and zero units are deployed today.
Live in production. The QC layer and the gated river term are described in full on the research page.