📡 HF Propagation · QTH EM83 · Athens-Bogart GA

Live Science SDR Network Ground Truth GhostNet Matrix P4 Predictor
Loading conditions…

Live Band Activity — WSPR nowcast

No WSPR data yet — first poll pending.

Band Conditions (HamQSL)

SFI & Kp Trend (48h)

Space Weather

ALE Band Monitor · empirical · 30 min

Time Sync · EMCOMM P3

Gray-Line · EM83 · today UTC

Computing…

WWV Geophysical Alert (NOAA SWPC)

MUF Map (prop.kc2g)

MUF(D) map — prop.kc2g
Open live map ↗

VOACAP Circuit Predictions (local engine)

No VOACAP predictions yet — daily 05:00 UTC cron pending or engine not installed.

Circuit Verification Receivers

loading…
Live status every 4h (sdr-health-daily). ✅ = online ⚠ = offline — = manual/browser-only. ga-nvis uses NY4Q UberSDR (ka9q-radio, /status.json ✅ automatable) + Bishop GA KiwiSDR. se-charlotte/w1aw/sf-transcon/eu-london use WebSDR — PA3FWM terms prohibit polling; browser links only.

Resource Library

Web Receivers (live RX)
⚠ NVIS verification: use 40m 7.074 USB or 80m 3.573 USB — not 14.175 (20m DX, not regional).
Conditions/WSPR: every 30 min · NOAA SWPC + HamQSL/N0NBH + wspr.live · VOACAP: daily 05:00 UTC · local voacapl engine (jawatson/voacapl, no egress) · KB: /var/lib/jarvis/knowledge/radio/

Pipeline Status

Offline inference built on these correctors → P4 Predictor tab
loading pipeline status…

Build State

Current phasePhase 2 — Scoring Engine (baseline live)
band_stats_hourly rowsloading…
Theory KBknowledge/radio/propagation/ — 6 docs (groundwave / NVIS / skip / DX / drivers / index)
WSPR spine48h raw window → band_stats_hourly (permanent, hourly buckets)
QTH scopeEM83 (Athens-Bogart GA) · tx_loc OR rx_loc LIKE 'EM83%'

Scoring Baseline — Phase 2 (leave-one-day-out CV · open = tx_calls ≥ 5 · BSS > 0 = skill over climatology)

loading scoring baseline…

Evidence Fusion — Tri-Source Brier Over Time

① WSPR Brier prop_index forecaster (LOO-CV) · source: band_stats_hourly
② RBN Brier spot_count / 50 → p_open · 7-day rolling · CW + digital skimmer
③ Fusion BSS vs WSPR 1 − fusion_brier / wspr_brier · > 0 = triangulation adds skill

Hypothesis Ledger Phase 3 · falsifiable claims scored against band_stats_hourly

loading hypotheses…

JS8 Message Activity

Filter: Days:
Decode rate frames per 30-min window · blue=total · teal=distinct callsigns
loading…
Source: js8_messages DB · /api/radio/js8-messages · SNR: ≥0 dB −10 to −1 <−10 dB · Band-condition signal: JS8 density complements FT8 decode counts

Build Roadmap

Phase 0 ✓Theory KB — groundwave / NVIS / skip / DX / drivers docs written. Dashboard placeholder wired.
Phase 1 ✓Durable aggregator — band_stats_hourly fact table (spot_count, distance rings, SNR, conditions, VOACAP REL). Hourly cron rolls up wspr_spots before 48h prune. 30-day WSPR backfill + SFI/Kp enrichment: 4,828 COMPLETE rows. Data quality flags: COMPLETE / PARTIAL / FETCH_GAP.
Phase 2 ✓Scoring engine — Brier, Brier Skill Score, MUF-error, confusion matrix + reliability, stratified by band × UTC-hour × season. Forecasters: climatology (baseline) + prop_index (SFI−5·Kp); VOACAP wired forward-only (NULL on backfill). propagation_forecasts / propagation_scores / propagation_muf_scores.
Phase 3 →Hypothesis registry + VOACAP correctors — learned correctors now realized as the P4 offline predictor.propagation_hypotheses table. Monthly LLM analysis job: score → synthesize KB writeup → propose new hypotheses. Constantly-updating knowledge loop.
Phase 4Dashboard scorecards — calibration curves, per-band predictability, hypothesis ledger, seasonal views. Full UI fills in as ≥12 months of data accrues.

Scientific Loop

HypothesisFalsifiable statement — e.g., "20m opens to EU when SFI>120 & Kp<3, 12–16 UTC"
PredictionVOACAP REL + learned correctors → per-band open/partial/closed forecast for each UTC hour
ObservationGround truth: WSPR spots (breadth, all bands) + KiwiSDR FT8 decodes (depth, 40m/80m NVIS)
TestBrier score · reliability diagram · MUF-error · confusion matrix, stratified by band × hour × season
LearnFit VOACAP correctors from residuals · update KB · queue new hypotheses · log sample N + CI
Plan: plans/band-propagation-science.md · KB: knowledge/radio/propagation/ · Directive: Rob 2026-07-05 (≥1yr build)

SDR Receiver Network (online receivers ≤600km of EM83 — who should hear our NVIS TX)

loading receiver network…
loading…
rx_score 0–100 ranks predicted NVIS reception. ≥70 strong · 40–70 moderate · <40 weak. [W] = WSPRnet-proven reception (real spots); [k] = Kiwi-only (online + self-SNR, unproven). Expected column is distance-geometry only (NVIS core fills the skip zone). Discovery: KiwiSDR map · Scoring: WSPRnet findreporter (14d) · Plan: plans/band-propagation-phase1.5-sdr-network.md

RBN Band Activity · last 30 min

No RBN spots yet — ingest begins on next hf-propagation-conditions poll.
Source: Reverse Beacon Network Telnet (rbn.hamqth.com:7000) — CW/digital skimmer spots collected during each 30-min hf-propagation-conditions poll. Complements WSPR nowcast with mode-diverse propagation evidence.

NVIS FT8 Decode History · 40m / 80m · latest 48 slots

Loading…
Source: sdr-decode.py off co-located KiwiSDR — actual FT8 decoded count per 30-min slot. decodes>0 = band open for NVIS range (~200km). Ground-truth for VOACAP accuracy scoring.

VOACAP Prediction Accuracy

No scoring data yet — weekly cron runs Sunday 09:00 UTC. Needs ≥7 days of nvis_ground_truth to score.
Accuracy: % slots where round(VOACAP rel/100) matched FT8 open/closed. Sensitive to the 50% threshold — use Brier for calibration.   Brier: mean (predicted − actual)² — lower is better (0=perfect, 0.25=worst-case).   BSS: Brier Skill Score vs climatology (predict open-rate). Positive = adds skill. Caveats apply at n_obs < 100 (VOACAP is monthly-median; day-to-day solar variance is un-modelled).

GhostNet Receiver × Station Matrix

7.107 MHz USB · JS8 Normal · Thursdays 21:00 ET (01:00 UTC Fri) · Rows = KiwiSDR receivers · Cols = heard stations · Cell = decode count + best SNR

Loading…

Receiver Summary · all GhostNet-window captures

Loading…
rx_score predicts NVIS reception; this matrix is the empirical ground-truth. Receivers that decode frames validate the rx_score model. Source: decodes.jsonl (dial_khz=7107) + js8_messages DB. Callsigns available only for captures made after 2026-07-12 (js8decode.py update).

Offline-inference layer. Consumes the correction factors learned by the Science tab's scoring + fusion pipeline (VOACAP + WSPR ground truth). Science = R&D; P4 = the operational, internet-free forecast.

P4 HF Forecasts

Calibrated WSPR-SNR predictions per circuit × band × horizon. Cal SNR = VOACAP (100W, physical re-baseline) + WSPR correction factor. Values in dB; WSPR detects to ~−27 dB. Null = no factor yet (needs ≥30 WSPR samples).

Loading…

Accuracy · calibrated vs VOACAP vs actuals

MAE from propagation_forecast_outcomes. Outcomes accumulate after WSPR observation windows close (~23:00 UTC). First forecasts committed 2026-07-29; first scored outcomes 2026-07-30 23:00 UTC. P4.9/P4.11 gate: ≥7 days (~2026-08-05).

No scored outcomes yet — first results expected 2026-07-30 23:00 UTC (≥7 days for P4.9/P4.11: ~2026-08-05)

Diagnostics · miss bins + feedback + LLM reasoning

Loading…