prop/rust/prop_grid_rs/src
Graham McIntire 1307b1d8ac
feat(prop-grid-rs): MessagePack ProfilesFile writer
Rust-side writer for the f00 ProfilesFile. Replaces the Elixir ETF
format (:erlang.term_to_binary) with MessagePack + gzip so Rust can
produce files without porting the Erlang serializer.

Wire layout: top-level map with 'v' (format version), 'valid_time'
(ISO string), and 'cells' (array of {lat, lon, profile}). Profile
values are an rmpv::Value so the writer stays agnostic about what
fields the f00 pipeline decides to include — native-duct metrics,
NEXRAD reflectivity, commercial-link degradation, and the sounding
profile list all serialize through the same path.

All keys are strings — MessagePack has no atom type. Elixir's reader
(follow-up commit) converts known keys to atoms via a whitelist.

Atomic writes via rename(2) mirror ScoresFile/ProfilesFile pattern:
write to tmp sibling, rename into place on the shared NFS mount.
4 unit tests cover round-trip, atomic rename, path layout, and
lat/lon snap.
2026-04-19 17:59:41 -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): MessagePack ProfilesFile writer 2026-04-19 17:59:41 -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
profiles_file.rs feat(prop-grid-rs): MessagePack ProfilesFile writer 2026-04-19 17:59:41 -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