Precip nowcast says "no precip in the area" from one dry pixel while storms cover the tile; silently degrades when RainViewer has no nowcast frames #162

Closed
opened 2026-08-01 01:25:59 +00:00 by claude-bot · 0 comments
Contributor

Symptom (reported on prod, 2026-08-01, during an active Tornado Watch / Severe Thunderstorm Warning event in MO): every monitored location's dashboard nowcast line reads "no precip in the area now" while storms are demonstrably nearby.

Two compounding causes (reproduced tonight, services/nowcast.py)

1. RainViewer returned zero radar.nowcast (future) framesweather-maps.json had 13 past frames, 0 nowcast frames. With no future frames, horizon = 0 and _summarize() falls through to the literal string "no precip in the area now" (nowcast.py:148). The fetch is still recorded success=True (a past frame sampled fine), so nothing surfaces the fact that the forward-looking half of the feature is dead. This appears to be an upstream RainViewer nowcast outage — worth handling gracefully since it evidently happens.

2. Single-pixel sampling with smoothing off is too literal for "in the area" phrasing. Reproduction for Rolla, MO (37.9514, -91.7713) at 2026-08-01 01:20 UTC, using the app's exact tile math (zoom 8, tile 62/98, pixel 189,202):

  • alpha at the location's pixel: 0 → "no precip"
  • sampled across the same tile: 20.5% of pixels had precip (max alpha 200) — heavy cells a few km away

A point in a gap between convective cells reads bone-dry while a warned storm is one town over, and the UI copy ("in the area") promises more than a point sample delivers.

Suggested fixes

  1. Sample a small neighborhood instead of one pixel — e.g. max alpha over a 3×3 or 5×5 kernel (~±1–3 km at zoom 8), or fetch with RainViewer smoothing on. Keeps the single-tile budget.
  2. When radar.nowcast is empty, say so honestly — e.g. "nowcast unavailable; radar currently shows no precip at this point" — and/or record a degraded (not failed) media freshness so the outage is visible.
  3. Consider distinguishing "at your location" from "in the area" in the copy.

Not migration-related: the code is unchanged since v1.5.0 (#88); tonight's severe weather made the behaviour visible.

Source: post-migration prod verification; investigation in Claude session 2026-08-01.

**Symptom (reported on prod, 2026-08-01, during an active Tornado Watch / Severe Thunderstorm Warning event in MO):** every monitored location's dashboard nowcast line reads "no precip in the area now" while storms are demonstrably nearby. ## Two compounding causes (reproduced tonight, `services/nowcast.py`) **1. RainViewer returned zero `radar.nowcast` (future) frames** — `weather-maps.json` had 13 past frames, 0 nowcast frames. With no future frames, `horizon = 0` and `_summarize()` falls through to the literal string "no precip in the area now" (nowcast.py:148). The fetch is still recorded `success=True` (a past frame sampled fine), so nothing surfaces the fact that the forward-looking half of the feature is dead. This appears to be an upstream RainViewer nowcast outage — worth handling gracefully since it evidently happens. **2. Single-pixel sampling with smoothing off is too literal for "in the area" phrasing.** Reproduction for Rolla, MO (37.9514, -91.7713) at 2026-08-01 01:20 UTC, using the app's exact tile math (zoom 8, tile 62/98, pixel 189,202): - alpha at the location's pixel: **0** → "no precip" - sampled across the same tile: **20.5% of pixels had precip** (max alpha 200) — heavy cells a few km away A point in a gap between convective cells reads bone-dry while a warned storm is one town over, and the UI copy ("in the area") promises more than a point sample delivers. ## Suggested fixes 1. Sample a small neighborhood instead of one pixel — e.g. max alpha over a 3×3 or 5×5 kernel (~±1–3 km at zoom 8), or fetch with RainViewer smoothing on. Keeps the single-tile budget. 2. When `radar.nowcast` is empty, say so honestly — e.g. "nowcast unavailable; radar currently shows no precip at this point" — and/or record a degraded (not failed) media freshness so the outage is visible. 3. Consider distinguishing "at your location" from "in the area" in the copy. Not migration-related: the code is unchanged since v1.5.0 (#88); tonight's severe weather made the behaviour visible. Source: post-migration prod verification; investigation in Claude session 2026-08-01.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rbrooks/WeatherBot#162
No description provided.