prop/docs/algo-reports/forecast-2026-08-01.json
Graham McIntire 2fd88a94ea
Some checks failed
Build and Push / Build and Push Docker Image (push) Waiting to run
Build prop-grid-rs / Test, build, push (push) Failing after 3m41s
fix(propagation): 7 pipeline bugs + validation harnesses + model improvements
Phase A — 7 pipeline bugs:
- retain_scores_window: fix timeline self-deletion (NOTIFY payload run_time|valid_time)
- Rust/Elixir weight divergence: Rust loads band_weights.json at startup
- Aurora boost ported to Rust (Kp query + per-cell boost for bands <= 432 MHz)
- Commercial-link boost applied in Rust per-cell scoring
- f00 native gradient preferred over pressure-level gradient
- HRDPS files: greedy regex fixed, now visible to timeline/prune/retain
- GEFS/HRRR collision: GEFS namespace as .gefs.prop, merge at read

Phase B — Validation harness:
- scripts/validate_algo.py: out-of-sample Spearman rho(score,distance) + baselines
- docs/algo-reports/validation-2026-08-01.{json,md}

Phase C — Forecast-skill evaluation:
- scripts/validate_forecast.py: skill degradation by lead time (0h-24h)
- docs/algo-reports/forecast-2026-08-01.{json,md}

Phase D — Calibration + model improvements:
- recalibrate.py: validation gate before weight deploy
- Recalibrator: Nx.max(0.0) replaces Nx.abs(), L2 regularization, val-set integrity
- ML train/serve defaults unified; prop_compare null-handling skew fixed
- Latitude-aware sunrise: solar-declination sunrise_hour(lat,month) (Elixir + Rust)
- Path scoring: wind/sky/rain from HRRR (was ~30% of composite weight silent)
- Region multiplier documented as unvalidated; PWAT/refractivity doc-vs-code noted
- algo.md: synced scoring sections, marked retired features, D5/D6 changelog
- Credo: path_compute cyclomatic complexity bumped (6->10 fields) — informational only
2026-08-01 19:28:41 -05:00

59 lines
1.1 KiB
JSON

{
"generated_at": "2026-08-01T22:03:32+00:00",
"generated_by": "scripts/validate_forecast.py",
"schema_version": 1,
"summary": {
"total_contacts": 59203,
"contacts_with_all_profiles": 12929,
"lead_times_hours": [
0,
1,
3,
6,
12,
24
],
"bands_evaluated": 3
},
"per_band": {
"10000": {
"n": 11825,
"rhos": {
"0": -0.0033,
"1": -0.0007,
"3": 0.0201,
"6": -0.0189,
"12": -0.0128,
"24": 0.0021
},
"delta_6h": 0.0156,
"delta_24h": -0.0054
},
"24000": {
"n": 971,
"rhos": {
"0": 0.314,
"1": 0.3166,
"3": 0.3227,
"6": 0.3761,
"12": 0.3629,
"24": 0.2531
},
"delta_6h": -0.0622,
"delta_24h": 0.0609
},
"47000": {
"n": 108,
"rhos": {
"0": 0.1438,
"1": 0.1373,
"3": 0.1644,
"6": 0.2084,
"12": 0.0689,
"24": 0.142
},
"delta_6h": -0.0646,
"delta_24h": 0.0018
}
}
}