prop/rust/prop_grid_rs/src
Graham McIntire 3607a915ba
feat(hrdps): /weather merges HRRR with HRDPS for north-of-CONUS cells
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.
2026-04-29 17:36:03 -05:00
..
bin feat(rust/hrdps): prop-grid-rs HRDPS branch 2026-04-29 17:29:16 -05:00
band_config.rs fix(rust/scorer): sync recalibrated default weights with Elixir 2026-04-29 09:32:54 -05:00
commercial.rs fix(commercial): decode commercial_links.id as Uuid, not i64 2026-04-20 09:21:10 -05:00
db.rs feat(rust/hrdps): prop-grid-rs HRDPS branch 2026-04-29 17:29:16 -05:00
decoder.rs fix(skewt): write profile files for f01..f18 forecast hours 2026-04-25 12:58:10 -05:00
duct.rs style(rust): apply cargo fmt across prop_grid_rs 2026-04-20 13:20:22 -05:00
fetcher.rs fix(skewt): write profile files for f01..f18 forecast hours 2026-04-25 12:58:10 -05:00
grid.rs feat(rust/hrdps): prop-grid-rs HRDPS branch 2026-04-29 17:29:16 -05:00
hrdps_fetcher.rs feat(rust/hrdps): prop-grid-rs HRDPS branch 2026-04-29 17:29:16 -05:00
hrrr_points.rs fix: three more Rust/Elixir contract drift bugs on /map and /weather 2026-04-24 14:04:02 -05:00
lib.rs feat(rust/hrdps): prop-grid-rs HRDPS branch 2026-04-29 17:29:16 -05:00
metrics.rs style(rust): apply cargo fmt across prop_grid_rs 2026-04-20 13:20:22 -05:00
native_duct.rs fix(skewt): write profile files for f01..f18 forecast hours 2026-04-25 12:58:10 -05:00
nexrad.rs chore(rust): drop easily-inlined deps (anyhow, bytes, byteorder, num_cpus) 2026-04-24 12:13:25 -05:00
pipeline.rs feat(hrdps): /weather merges HRRR with HRDPS for north-of-CONUS cells 2026-04-29 17:36:03 -05:00
profiles_file.rs fix: April 2026 codebase review — address 13 bugs across propagation chain 2026-04-25 10:52:51 -05:00
region.rs fix: April 2026 codebase review — address 13 bugs across propagation chain 2026-04-25 10:52:51 -05:00
scorer.rs feat(scorer): retire HPBL multiplier and native-duct 1.15× boost 2026-04-25 12:42:56 -05:00
scores_file.rs feat(rust/hrdps): prop-grid-rs HRDPS branch 2026-04-29 17:29:16 -05:00
sounding_params.rs fix: April 2026 codebase review — address 13 bugs across propagation chain 2026-04-25 10:52:51 -05:00
telemetry.rs chore(rust): drop OpenTelemetry stack to speed up cold builds 2026-04-24 09:11:43 -05:00
weather_scalar_file.rs feat(hrdps): /weather merges HRRR with HRDPS for north-of-CONUS cells 2026-04-29 17:36:03 -05:00