prop/rust/prop_grid_rs/src
Graham McIntire 22f5828b7e
feat(prop-grid-rs): port native-duct grid fetch + add claim_next_analysis
native_duct.rs is the Rust side of HrrrNativeClient.fetch_native_duct_grid:
fetch native-level HRRR idx → select duct byte ranges (TMP/SPFH/HGT/PRES
× 50 hybrid levels = 200 messages, ~300 MB subset) → wgrib2 decode via
the existing decoder::extract_grid plumbing → per-cell build_native_profile
→ duct::analyze → HashMap<(lat, lon), DuctMetrics>.

build_native_profile keeps the Elixir semantics intact: drop cells that
don't reach 3 levels, sort by ascending height, tolerate missing SPFH/PRES
as zero (the duct math handles zeros gracefully). merge_duct_grid gives
the pipeline.rs caller a drop-in replacement for Elixir's apply_duct_grid.

claim_next_analysis is the analysis-lane companion to claim_next: selects
kind='analysis' rows only, same SKIP LOCKED + newest-first ordering. Kept
on a separate claim function so the forecast lane can keep running
unaffected during cutover; the analysis pipeline wiring lands next.

9 pure unit tests cover message generation, URL builder, profile-sort,
min-level filter, and merge-into-base behaviour. Network-live golden
against a real native GRIB2 deferred to the cutover commit.
2026-04-19 17:55:48 -05:00
..
bin perf(prop-grid-rs): parallel band scoring + metrics + HA 2026-04-19 17:39:30 -05:00
band_config.rs feat(grid-rs): Rust worker for HRRR f01..f18 propagation chain 2026-04-19 15:42:49 -05:00
commercial.rs feat(prop-grid-rs): port Commercial.build_link_lookup to Rust 2026-04-19 17:44:37 -05:00
db.rs feat(prop-grid-rs): port native-duct grid fetch + add claim_next_analysis 2026-04-19 17:55:48 -05:00
decoder.rs feat(grid-rs): Rust worker for HRRR f01..f18 propagation chain 2026-04-19 15:42:49 -05:00
duct.rs feat(prop-grid-rs): port Propagation.Duct to Rust 2026-04-19 17:44:37 -05:00
fetcher.rs feat(grid-rs): Rust worker for HRRR f01..f18 propagation chain 2026-04-19 15:42:49 -05:00
grid.rs feat(grid-rs): Rust worker for HRRR f01..f18 propagation chain 2026-04-19 15:42:49 -05:00
lib.rs feat(prop-grid-rs): port native-duct grid fetch + add claim_next_analysis 2026-04-19 17:55:48 -05:00
metrics.rs perf(prop-grid-rs): parallel band scoring + metrics + HA 2026-04-19 17:39:30 -05:00
native_duct.rs feat(prop-grid-rs): port native-duct grid fetch + add claim_next_analysis 2026-04-19 17:55:48 -05:00
nexrad.rs feat(prop-grid-rs): port NexradClient.fetch_frame to Rust 2026-04-19 17:47:04 -05:00
pipeline.rs perf(prop-grid-rs): parallel band scoring + metrics + HA 2026-04-19 17:39:30 -05:00
region.rs feat(grid-rs): Rust worker for HRRR f01..f18 propagation chain 2026-04-19 15:42:49 -05:00
scorer.rs feat(grid-rs): Rust worker for HRRR f01..f18 propagation chain 2026-04-19 15:42:49 -05:00
scores_file.rs feat(grid-rs): Rust worker for HRRR f01..f18 propagation chain 2026-04-19 15:42:49 -05:00
sounding_params.rs feat(grid-rs): Rust worker for HRRR f01..f18 propagation chain 2026-04-19 15:42:49 -05:00