prop/rust/prop_grid_rs
Graham McIntire 2348c48c26
fix(rust/hrdps): replace -lola full-grid extract with -lon point extract
Production observation 2026-04-29: HRDPS chain steps using
decoder::extract_grid (wgrib2 -lola) ran at 1000m CPU for 10+ minutes
per task without producing any output. The -lola full-grid
interpolation against HRDPS's rotated lat/lon source grid is far
slower than against HRRR's Lambert source — wgrib2 appears to rebuild
the projection table per record.

The probe (lib/mix/tasks/hrdps_probe.ex, deleted in 1da78a80) had
already proved that wgrib2 -lon at five Canadian cities completes in
under a second. Add decoder::extract_points that uses the same -lon
flag for the HRDPS-only point set (~57k cells), batched at 2000 points
per wgrib2 invocation to stay under Linux ARG_MAX.

run_chain_step_hrdps now calls extract_points instead of extract_grid.
The post-extract HashSet filter to hrdps_only_points is gone —
extraction is already restricted to those cells. Per-cell wall time
should drop from "never completes" to ~30-90 s for 57k cells.

extract_grid stays unchanged — it works correctly for HRRR's CONUS
Lambert source.

Tests: parse_lon_output exercises the wgrib2 -s -lon output shape and
proves multi-record / multi-point parsing. parse_lon_segment unit
tests cover the undefined-value sentinel and the snap-back rejection
that ignores cells wgrib2 returned that don't correspond to anything
in the requested batch.
2026-04-29 18:25:40 -05:00
..
src fix(rust/hrdps): replace -lola full-grid extract with -lon point extract 2026-04-29 18:25:40 -05:00
tests fix(rust/scorer): sync recalibrated default weights with Elixir 2026-04-29 09:32:54 -05:00
.gitignore feat(grid-rs): Rust worker for HRRR f01..f18 propagation chain 2026-04-19 15:42:49 -05:00
Cargo.lock chore(rust): trim unused crate features 2026-04-24 12:25:10 -05:00
Cargo.toml chore(rust): trim unused crate features 2026-04-24 12:25:10 -05:00
Dockerfile fix(grid-rs): build wgrib2 in-tree instead of pulling from prop:latest 2026-04-20 08:33:53 -05:00