prop/lib/microwaveprop/weather
Graham McIntire 221d5516bc
fix(wgrib2): account for 8-byte Fortran record overhead between messages
build_messages_per_message/3 was slicing the wgrib2 -lola bin output as
a packed float32 stream, ignoring the 4-byte record-length header + 4-byte
trailer that Fortran unformatted records prepend/append around each
message's data block. First value of message 0 came back as ~2.24e-44
(little-endian float32 of the int-16 record length), and every subsequent
message was shifted by 8 bytes so values spilled into neighbouring cells.

Fix: propagate the correct offset math already used by parse_lola_binary/3
(record_overhead = 8, stride = bytes_per_message + 8, data_offset =
msg_idx * stride + 4).

Flipped the characterization test from metadata-only to per-cell physical
asserts (200 K < TMP, DPT < 340 K; DPT <= TMP) and a 0.01 K cross-check
against extract_grid/3 output on the same fixture + bbox. Latent bug —
no production callers of extract_grid_messages*.
2026-04-16 14:58:55 -05:00
..
grib2 fix(wgrib2): account for 8-byte Fortran record overhead between messages 2026-04-16 14:58:55 -05:00
frontal_analysis.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00
grid_cache.ex Fix /weather 500 on cold cache, untrack k8s secret 2026-04-12 13:56:59 -05:00
hrrr_client.ex Split HRRR pressure levels for grid hot path vs per-contact profiles 2026-04-15 08:19:33 -05:00
hrrr_climatology.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00
hrrr_native_client.ex Fix credo warnings: struct specs, length/1, and test patterns 2026-04-12 10:26:53 -05:00
hrrr_native_profile.ex Extend skew-T plot to cover the full troposphere 2026-04-14 17:25:58 -05:00
hrrr_profile.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00
iem_client.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00
iemre_observation.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00
metar_5min_observation.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00
mrms_cache.ex Add MRMS rain mosaic, fix beacons crash, fix UTC clock flash 2026-04-12 14:49:20 -05:00
mrms_client.ex test: cover mrms_cache + mrms_fetch_worker, add Req.Test seam 2026-04-16 14:58:54 -05:00
narr_client.ex NarrClient: parse cdo numeric codes for cdo-version independence 2026-04-16 09:45:23 -05:00
narr_profile.ex Rename ERA5 → NARR across the codebase 2026-04-16 09:22:23 -05:00
ncei_metar_client.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00
nexrad_cache.ex Add more caching to make the map feel instant 2026-04-12 12:26:25 -05:00
nexrad_client.ex Nudge HRRR scores with live ASOS obs between runs 2026-04-12 14:27:27 -05:00
nexrad_observation.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00
rtma_client.ex test: cover rtma_client + rtma_fetch_worker, add Req.Test seam 2026-04-16 14:58:54 -05:00
rtma_observation.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00
solar_client.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00
solar_index.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00
sounding.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00
sounding_params.ex Fix credo warnings: struct specs, length/1, and test patterns 2026-04-12 10:26:53 -05:00
station.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00
surface_observation.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00
theta_e.ex Guard against zero specific humidity in theta-e computation 2026-04-11 12:52:32 -05:00
uwyo_sounding_client.ex Ingest Canadian radiosondes via UWYO + plans for RDPS/HRDPS 2026-04-13 09:14:34 -05:00
weather_layers.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00