The /weather map now shows HRRR-derived data wherever HRRR has coverage and falls back to HRDPS-derived data for Canadian cells outside HRRR's bbox. North of the 49°N HRRR-coverage line the map stays populated instead of going blank. Rust: - weather_scalar_file::dir_for_hrdps + write_atomic_hrdps land HRDPS scalar chunks at `<vt>.hrdps/` so HRRR's `<vt>/` write isn't clobbered. The HRRR writer wipes its dir before each write — both sources need their own dir to coexist. - pipeline::run_chain_step_hrdps now derives a ScalarRow for each scored cell (same derive_row that HRRR uses; same wire format) and writes them via write_atomic_hrdps alongside the .hrdps.prop score files. Elixir: - ScalarFile.dir_for_hrdps + read_bounds + read_point + exists? all walk both `<vt>/` (HRRR) and `<vt>.hrdps/` (HRDPS). read_bounds concatenates with HRRR-precedence on overlap (defensive — Rust pipeline doesn't write HRRR-overlap cells, but cheap to enforce). - Weather.weather_grid_at unchanged: it routes through ScalarFile, which now transparently returns the union. GridCache stays per-valid_time so a single cache entry holds both regions. Tests cover four scenarios: HRRR-only, HRDPS-only, both-present union, and HRRR-precedence on the same cell. |
||
|---|---|---|
| .. | ||
| src | ||
| tests | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Dockerfile | ||