feat(weather-recon): Phase 2b — radar mirror, 1,152 frames on Wasabi (#184)#194
Merged
Conversation
Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01W179bqEPFP92a3JrsPkD5c
…index) Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01W179bqEPFP92a3JrsPkD5c
…t settings) Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01W179bqEPFP92a3JrsPkD5c
Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01W179bqEPFP92a3JrsPkD5c
Final-review fixes: the Dockerfile dep layer now installs boto3 (pyproject declares it; pip install --no-deps skipped it), and build_index stamps "timezone": "UTC" so the frontend can't misread frame stamps — this project has shipped two tz bugs at exactly this seam. Co-Authored-By: Claude Fable 5 <[email protected]>
|
✅ Playwright E2E — 1 passed · 0 failed · 0 flaky · 0 skipped |
This was referenced Jul 13, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 2b of the Weather app (#184): the radar mirror. All 1,152 five-minute NEXRAD CONUS composite frames for 2001-09-09..12 are now on Wasabi under
weather/radar/— zero gaps in the IEM archive for our window (Hurricane Erin included).What's in here
weather_recon/radar.py— pure helpers: 5-min frame-stamp enumeration, IEM archive URLs, ESRI world-file → MapLibre corner geometry ([[-126,50],[-66,50],[-66,24],[-126,24]] verified), PNG dimension reads, index builder.weather_recon/wasabi.py— slim uploader with video-grabber's proven Wasabi client settings (SigV4, path addressing, when_required checksums).weather_recon/flow_radar.py—load-weather-radar: download-with-cache → per-frame geometry verification (hard error on mismatch) → upload-if-absent (resumable via onelist_objectssweep) →weather/radar/index.json(bounds, frame list, gaps,"timezone": "UTC", key pattern — the frontend reads the pattern instead of hardcoding).Verification
image/png+max-age=31536000, index bounds exact; sample frame 6000×2600 px / 114 KB. Resumability proven twice for real — two mid-run kills resumed cleanly withskip_existing(85-frame tail completed on the final resume, then a full re-run uploaded 0).Follow-ups
weather/prefix needs a file-proxy allow-list entry (Traefik Ingress path rule in the infra repo) before the frontend can fetch frames via files.911realtime.org.🤖 Generated with Claude Code
https://claude.ai/code/session_01W179bqEPFP92a3JrsPkD5c