A flood takes a district. A heatwave takes a demographic.
Heat kills quietly and unevenly: outdoor workers, the elderly, anyone without a fan. It leaves no waterline on a wall and no photograph, so it is chronically under-counted and chronically under-warned.
It is also the hazard where a thirty-year baseline matters most, because 42 degrees in Titlagarh is a Tuesday and 38 in Puri is an emergency.
11
locations scored internally: five product cities, western Odisha references, and Ahmedabad, Delhi and Dhaka as portability tests
5
surfaced in the product, the same five cities as flood
0
alerts sent, ever, because there is no live mode in the v1 config
The score is never an absolute temperature.
It is a departure from a thirty-year ERA5 climatology for that exact location, so a number that is ordinary in the west of the state is an emergency on the coast.
Departure from local normal
the primary term
Spell length: consecutive days above threshold
the third day fills wards
Humidity, where we have it
heat index, not dry-bulb
Western Odisha reference. Shadow: scored, not alerted.
Delhi and Dhaka test whether the engine travels outside Odisha at all, the portability question the whole thesis rests on. Western Odisha references calibrate the hot end. Product surfaces stay at five, the same five as flood.
- 5
Bhubaneswar · Cuttack · Puri · Sambalpur · Rourkela
product cities, surfaced
- 3
Western Odisha references, Titlagarh among them
validation only, 404 on product endpoints by design
- 1
Ahmedabad
the city with India's best-known Heat Action Plan
- 1
Delhi
portability outside Odisha: dry, continental
- 1
Dhaka
portability: humid delta, the D014 slot
We never say ten heat cities are live. Five are shown, eleven are scored, and none of them alert. heat_engine_mode has no active in v1.
Said plainly: there is no heat model. There is a dataset.
About 82,000 leakage-audited rows sit under ml/heatwave/: ERA5 observed seasons back to 2012, 1991–2020 normals, and roughly 23,700 forecast-backed rows. No model has been trained on them. HeatBench v0 exists; the IMD grid cross-check sits at roughly 62% within 1.5 degrees of ERA5.
Heat stays where it is until there is a HeatBench a buyer can audit: false-alarm rate, lead time, and a comparison against a published record. Going live is a code change and a recorded decision, not a flag flip. The shadow surface is published anyway: the heat field and the north Odisha basins are scored in the open, and neither one alerts.