Path calculator conditions map was missing :latitude and :best_duct_band_ghz. Scorer read them with bracket-notation so the behaviour was defensively correct but we were leaving signal on the floor: - latitude: midpoint of src/dst so `score_season` picks up the right latitude-based seasonal shift for northern vs southern paths - best_duct_band_ghz: queried via new Weather.nearest_native_duct_ghz/3 at the midpoint so score_refractivity/4 applies the 1.15× boost when a native-resolution duct supports the target band Recalibrator.fit/1 was serialising ~10k per-contact HRRR lookups (5000 positives + 5000 negatives, one Weather.find_nearest_hrrr each). Parallelised both sides with Task.async_stream at 20 concurrency — well under the prod db pool of 30. Cuts a band recalibration from ~minutes of query round-trips to seconds. |
||
|---|---|---|
| .. | ||
| microwaveprop | ||
| microwaveprop_web | ||
| mix/tasks | ||
| microwaveprop.ex | ||
| microwaveprop_web.ex | ||