prop/test/microwaveprop/propagation
Graham McIntire 020f05f8eb
feat(hrdps): grid_tasks source column, Canadian mask, HrdpsGridWorker
Stage 3 (Elixir foundation) of the HRDPS plan. Lands the scaffolding
that lets the Rust prop-grid-rs HRDPS branch be wired up cleanly when
it ships, without further DB or Elixir-side changes.

What ships:

- `grid_tasks.source` column (default 'hrrr', backfill is a no-op).
  Replaces the (run_time, forecast_hour, kind) unique index with a
  4-column key (..., source) so HRRR and HRDPS analysis/forecast rows
  for the same cycle coexist.
- `Grid.hrdps_only_points/0` — Canadian cells inside HRDPS bbox
  (49-60°N, -141 to -52°W) but outside HRRR's CONUS bbox. Disjoint
  from `conus_points/0` by construction so the two grids never
  double-write the same (lat, lon).
- `Grid.point_source/1` — `:hrrr | :hrdps | :neither` classification
  for a (lat, lon) pair. Routes per-QSO enrichment to the right NWP
  source.
- `GridTaskEnqueuer.seed_with_analysis/2` and `seed/2` accept a
  `:source` option; defaults to "hrrr" so existing callers are
  unchanged.
- `HrdpsGridWorker` cycle seeder mirroring PropagationGridWorker's
  shape but for HRDPS's 4×/day cadence. `:hrdps` queue added to base
  Oban config.

What's deferred:

- The Rust `prop-grid-rs` worker doesn't yet branch on
  `task.source`. Until that ships, `HrdpsGridWorker` stays out of
  runtime.exs cron — it would just produce rows that the Rust worker
  mishandles as HRRR. Module doc explicitly notes the dormant state.
- Map overlay extension and FreshnessMonitor HRDPS staleness deferred
  to follow-up sessions once real data flows.

Activation path documented in the updated plan file.

Coverage cap recorded as Stage 8 decision: 60°N for v1 (SRTM stops
there). Arctic CDEM deferred to a follow-up plan.
2026-04-29 17:13:00 -05:00
..
band_config_property_test.exs test(property): add property tests for propagation scoring + CIDR matcher 2026-04-21 13:57:12 -05:00
band_config_test.exs chore(scorer): apply recalibrated factor weights from gradient descent fit 2026-04-28 14:41:50 -05:00
calibration_test.exs feat(ml): add prop.compare task for algorithm-vs-ML-vs-reality calibration 2026-04-28 14:38:02 -05:00
common_volume_test.exs feat(rainscatter): classify QSO propagation mechanism from common-volume radar 2026-04-17 15:57:59 -05:00
duct_property_test.exs test: coverage round 2 (82.05% → 83.96%) + 23 new property tests 2026-04-24 10:15:37 -05:00
duct_test.exs test: coverage round 2 (82.05% → 83.96%) + 23 new property tests 2026-04-24 10:15:37 -05:00
eme_test.exs feat(eme): add /eme Earth-Moon-Earth calculator 2026-04-23 16:18:20 -05:00
freshness_monitor_test.exs fix(propagation): dedup PropagationGridWorker enqueues 2026-04-16 14:58:55 -05:00
grid_task_enqueuer_test.exs feat(hrdps): grid_tasks source column, Canadian mask, HrdpsGridWorker 2026-04-29 17:13:00 -05:00
grid_test.exs feat(hrdps): grid_tasks source column, Canadian mask, HrdpsGridWorker 2026-04-29 17:13:00 -05:00
hf_muf_test.exs HfMuf physics: distance-adjusted MUF from GIRO MUFD(3000) 2026-04-15 14:59:39 -05:00
inversion_test.exs Phase 2 tasks 2.1-2.4: BL turbulence feature computations 2026-04-10 08:21:23 -05:00
mechanism_classifier_test.exs feat(propagation): per-contact mechanism classification 2026-04-18 10:42:08 -05:00
mode_thresholds_test.exs feat(rover): add ModeThresholds for SSB/CW/Q65 SNR table 2026-04-25 15:59:52 -05:00
model_test.exs feat(ml): retrain propagation model and add per-prediction explainability 2026-04-28 14:14:22 -05:00
notify_listener_test.exs perf(weather): serve /weather from chunked scalar artifacts 2026-04-28 17:15:36 -05:00
pipeline_status_test.exs feat(map): shareable URL params for view/band/time 2026-04-19 08:53:07 -05:00
profiles_file_test.exs test: expand coverage and refactor to idiomatic style 2026-04-23 13:28:42 -05:00
rain_scatter_classifier_test.exs feat(rainscatter): classify QSO propagation mechanism from common-volume radar 2026-04-17 15:57:59 -05:00
rain_scatter_test.exs test: cover propagation/rain_scatter 2026-04-16 14:09:44 -05:00
recalibrator_test.exs feat(propagation): per-band weight calibration from full-corpus correlation 2026-04-18 10:19:26 -05:00
region_test.exs fix: April 2026 codebase review — address 13 bugs across propagation chain 2026-04-25 10:52:51 -05:00
score_cache_test.exs perf(map): chunk-keyed ScoreCache for viewport reads 2026-04-29 16:47:03 -05:00
scorer_property_test.exs test: add /qsos→/contacts redirect + scorer conversion properties 2026-04-23 14:03:02 -05:00
scorer_test.exs feat(scorer): retire HPBL multiplier and native-duct 1.15× boost 2026-04-25 12:42:56 -05:00
scores_file_property_test.exs test(property): add property tests for propagation scoring + CIDR matcher 2026-04-21 13:57:12 -05:00
scores_file_test.exs fix(map): dedupe duplicated forecast-timeline chips + extract Mechanism helpers 2026-04-21 17:21:11 -05:00
sporadic_e_test.exs Add 50/144/222 MHz bands, rename 440→432 2026-04-16 12:36:10 -05:00