prop/test/microwaveprop/propagation
Graham McIntire 690a3523e2
Dual-write propagation scores to binary files on /data
First step of the disk-backed scores migration from the DuckDB plan
doc. Ended up shipping the raw-binary variant instead of Parquet
because the data is disposable after ~2h — the ecosystem benefits
of Parquet only pay off for long-lived datasets, and the binary
path has zero new dependencies.

Microwaveprop.Propagation.ScoresFile writes one file per
(band_mhz, valid_time) tuple under the configured scores dir,
default /data/scores in prod and priv/dev_scores in dev. Layout is
a 33-byte header plus a dense n_rows × n_cols uint8 array (255 is
the no-data sentinel). The whole CONUS grid serializes to ~93 KB
per band, and writes use the temp-then-rename pattern so NFSv4
concurrent readers never see a partial file.

Propagation.replace_scores/2 now materializes the score stream
once and dual-writes: Postgres on the primary path, then one
ScoresFile per band as a best-effort follow-up (any file error is
logged but doesn't fail the DB write, so we can verify the file
path in prod before cutting readers over).

Propagation.prune_old_scores/0 also clears expired score files so
the existing 15-minute prune cron covers both storage layers.

Dev configuration points at priv/dev_scores/, added to .gitignore.
Test configuration points at a per-run tmp directory.
2026-04-14 14:36:55 -05:00
..
asos_nudge_test.exs Fix BackfillEnqueueWorker test timeouts and credo length warnings 2026-04-12 15:02:48 -05:00
band_config_test.exs Refresh propagation algo against expanded prod corpus (2026-04-13) 2026-04-13 10:59:01 -05:00
duct_test.exs Phase 4: Ray-traced duct geometry 2026-04-10 08:31:16 -05:00
grid_score_test.exs Cut propagation_scores write cost with DELETE+COPY, skip-factors, UNLOGGED 2026-04-14 13:47:35 -05:00
grid_test.exs Increase grid to 0.125 degrees with smooth canvas overlay 2026-03-31 08:52:07 -05:00
inversion_test.exs Phase 2 tasks 2.1-2.4: BL turbulence feature computations 2026-04-10 08:21:23 -05:00
model_test.exs Integrate ML model into grid worker, QSO search, and UI improvements 2026-04-01 10:14:22 -05:00
pipeline_status_test.exs Show all executing pipeline workers in the status chip 2026-04-14 14:04:44 -05:00
recalibrator_test.exs Phase 9.3, 9.4, and Phase 3 NEXRAD pipeline 2026-04-10 12:48:36 -05:00
region_test.exs Phase 7: Regionalized seasonal scoring 2026-04-10 08:39:01 -05:00
score_cache_test.exs Nudge HRRR scores with live ASOS obs between runs 2026-04-12 14:27:27 -05:00
scorer_diff_test.exs Phase 9.3, 9.4, and Phase 3 NEXRAD pipeline 2026-04-10 12:48:36 -05:00
scorer_test.exs Wire NEXRAD, native ducts, and commercial links into scoring 2026-04-13 12:08:15 -05:00
scores_file_test.exs Dual-write propagation scores to binary files on /data 2026-04-14 14:36:55 -05:00