Root cause of the "81,980 / 81,994" display that wouldn't advance: 14 contacts had pos1 inside the HRRR CONUS grid but pos2 or the great-circle midpoint landed outside it (50°N+ into Canada, mid- Atlantic, Pacific, Caribbean, Alaska). The Rust hrrr-point-worker silently returns no profile for OCONUS points, so `hrrr_data_fully_present?/1` never evaluated true and the contact sat `:queued` forever. The existing ContactWeatherEnqueueWorker.mark_hrrr_status!/3 already flips to `:unavailable` on empty job lists via NarrClient.in_coverage? + Grid.contains?(pos1), but those checks only considered pos1 — not the full contact_path_points list. When pos1 was in-grid but a downstream point was not, the contact entered `:queued` and the reconciler couldn't rescue it. `reconcile_hrrr_statuses/0` now sweeps `:queued` contacts into two buckets: - ANY path point OCONUS → `:unavailable` (matches what the enqueuer would emit had it known about the downstream points); - else, all points present → `:complete`. Applied once in prod to 14 stuck contacts; cron path picks up any new occurrences going forward. |
||
|---|---|---|
| .. | ||
| microwaveprop | ||
| microwaveprop_web | ||
| mix/tasks | ||
| microwaveprop.ex | ||
| microwaveprop_web.ex | ||