prop/test/microwaveprop
Graham McIntire cfc5f7583f
feat(pskr): ingest PSK Reporter MQTT firehose for weather correlation
Subscribes to mqtt.pskreporter.info:1883 over plain TCP and folds
every reception report into hourly aggregates per
(band, sender_grid_4, receiver_grid_4). Each spot is the empirical
"propagation actually occurred on this path right now" signal we'll
correlate against HRRR atmospheric state to recalibrate the scoring
weights. Aggregating at the path-hour bucket collapses 50-reporter
QSOs to one row instead of 50.

Topic filter anchors on USA (DXCC 291) on either sender or receiver
side so the broker pre-filters out everything outside our HRRR
domain. Bands subscribed: VHF and up (6m, 2m, 70cm, 23cm, +
microwave) — HF is dominated by ionospheric propagation, which this
project doesn't model.

Pskr.Client cluster-elects a singleton via :global.register_name —
all replicas start the GenServer but only one connects to MQTT;
the rest stay in :standby and watch for the leader's nodedown to
re-run election. Off in dev/test, on by default in prod
(PSKR_MQTT_ENABLED=false as kill-switch).

Pskr.Aggregator buffers in memory keyed by Pskr.path_key/1 and
flushes every 60s via Repo.insert_all/3 with an additive
ON CONFLICT (count summed, SNR envelope by GREATEST/LEAST,
modes unioned via unnest+DISTINCT). Idempotent across overlapping
flushes and across leader handover.

Dockerfile sets BUILD_WITHOUT_QUIC=1 — emqtt's transitive quicer
dep wants CMake + OpenSSL headers we'd otherwise have to add to
the builder image just to never use QUIC over plain MQTT. Base
image is unchanged; the new dep compiles cleanly into the existing
prop-base runtime.
2026-05-04 09:24:20 -05:00
..
accounts feat(accounts): derive 10-char home_grid from explicit lat/lon 2026-04-25 17:04:45 -05:00
aprs fix(aprs): tighten PathParser self-loop check and Q-construct regex 2026-05-01 12:40:17 -05:00
backtest test: expand coverage and refactor to idiomatic style 2026-04-23 13:28:42 -05:00
beacons test: cover beacons/beacon schema 2026-04-16 14:09:45 -05:00
buildings feat(buildings): integrate MS footprints into path clearance + map render 2026-04-26 10:44:46 -05:00
commercial test: coverage round 4 (84.39% → 84.44%) + 6 new property tests 2026-04-24 10:32:05 -05:00
ionosphere fix(ionosphere): disable TLS verify for GIRO to unbreak ionosonde fetch 2026-04-22 09:49:03 -05:00
propagation feat(hrdps): scope to current-hour-only at 0.5° step 2026-04-30 10:36:00 -05:00
pskr feat(pskr): ingest PSK Reporter MQTT firehose for weather correlation 2026-05-04 09:24:20 -05:00
qrz test: cover qrz/client 2026-04-16 14:10:50 -05:00
radio feat(import): strip non-printables from CSV/ADIF uploads 2026-04-26 15:34:46 -05:00
rover refactor(rover-locations): rename status atoms ideal→good, off_limits→bad 2026-05-03 11:13:18 -05:00
space_weather test: coverage round 3 (83.96% → 84.39%) + 10 new property tests 2026-04-24 10:15:37 -05:00
terrain test: coverage round 4 (84.39% → 84.44%) + 6 new property tests 2026-04-24 10:32:05 -05:00
weather fix(weather): snap HRDPS reads to nearest valid_time within 6h 2026-04-30 13:46:32 -05:00
workers feat(rover-planning): hourly backfill worker recovers stuck paths 2026-05-03 13:52:27 -05:00
accounts_test.exs feat(auth): self-service password reset 2026-04-18 08:42:35 -05:00
application_test.exs perf(concurrency): partition Task.Supervisor to remove bottleneck on heavy async_stream paths 2026-04-21 14:20:29 -05:00
aprs_test.exs feat(aprs): add Aprs context for read-only queries against aprs.me 2026-05-01 12:47:35 -05:00
backtest_test.exs Phase 9.1: Consolidated backtest report and contest log import 2026-04-10 11:57:15 -05:00
beacon_monitors_test.exs hardening: Rust worker circuit-breaker + delete wall-clock sleep from beacon test 2026-04-21 18:02:46 -05:00
beacons_test.exs User profiles at /u/:callsign, flexible band input, assorted UX cleanup 2026-04-12 16:13:08 -05:00
cache_test.exs fix(cache): add periodic TTL sweeper to bound ETS growth 2026-04-21 13:19:53 -05:00
callsign_location_test.exs Drop gridmap.org dependency, resolve callsigns locally 2026-04-12 17:43:29 -05:00
canopy_test.exs feat(canopy): add tree-canopy height layer for path obstruction analysis 2026-04-26 12:51:48 -05:00
commercial_test.exs Wire NEXRAD, native ducts, and commercial links into scoring 2026-04-13 12:08:15 -05:00
format_property_test.exs test: cover Format.number/bytes, Instrument.span, SolarClient edges 2026-04-23 14:09:13 -05:00
format_test.exs feat(format): miles-primary distance formatting sitewide 2026-04-18 15:53:40 -05:00
geo_property_test.exs test(property): add property tests for terrain + atmospheric math 2026-04-21 13:56:39 -05:00
geo_test.exs test: cover geo, qrz record, callsign client 2026-04-16 14:09:44 -05:00
geocoder_test.exs Drop gridmap.org dependency, resolve callsigns locally 2026-04-12 17:43:29 -05:00
instrument_test.exs test: cover Format.number/bytes, Instrument.span, SolarClient edges 2026-04-23 14:09:13 -05:00
logger_format_test.exs test: silence expected warnings/errors during test runs 2026-04-24 09:27:17 -05:00
markdown_test.exs Add Tier 1 test coverage: EnrichmentStatus, Markdown, health, RemoteIp, Maidenhead 2026-04-06 10:15:38 -05:00
moon_test.exs feat(eme): add /eme Earth-Moon-Earth calculator 2026-04-23 16:18:20 -05:00
oban_error_reporter_test.exs feat(observability): attach Oban exception telemetry tap 2026-04-21 14:13:53 -05:00
propagation_test.exs fix: April 2026 codebase review — address 13 bugs across propagation chain 2026-04-25 10:52:51 -05:00
pskr_test.exs feat(pskr): ingest PSK Reporter MQTT firehose for weather correlation 2026-05-04 09:24:20 -05:00
qrz_test.exs Drop gridmap.org dependency, resolve callsigns locally 2026-04-12 17:43:29 -05:00
radio_refinement_test.exs CSV/ADIF import: upsert existing contacts on grid/mode refinement 2026-04-16 10:57:37 -05:00
radio_test.exs fix: April 2026 codebase review — address 13 bugs across propagation chain 2026-04-25 10:52:51 -05:00
release_test.exs test: push line coverage from 71.7% → 78.67% 2026-04-23 18:43:18 -05:00
repo_listener_test.exs test: cover repo_listener 2026-04-16 14:58:55 -05:00
rover_planning_test.exs feat(rover-planning): multi-band missions + smart reconcile 2026-05-03 14:08:49 -05:00
rover_test.exs feat(rover): user-scoped FixedStation context with ownership guard 2026-04-25 16:26:33 -05:00
terrain_test.exs Rename qsos table to contacts, qso_id to contact_id 2026-04-02 15:52:19 -05:00
weather_extra_test.exs test: coverage round 2 (82.05% → 83.96%) + 23 new property tests 2026-04-24 10:15:37 -05:00
weather_grid_test.exs perf(weather): cache forecast-hour grids in GridCache to skip ScalarFile decode 2026-04-29 13:10:12 -05:00
weather_test.exs fix: April 2026 codebase review — address 13 bugs across propagation chain 2026-04-25 10:52:51 -05:00