Geomagnetic-Storm Monitor — Scope + Frozen Event Definition
Status: rule FROZEN 2026-06-10, before any backfill · Owner: Mike + Claude (engine room)
Parent: docs/event-spine-framework.md (this is the framework's first new kind)
This document freezes the event-definition rule for the geomagnetic-storm storehouse. Per the pre-registration discipline: the rule below was written down before running detection over the historical Dst record, and it is not to be tuned afterward — not to make event counts prettier, not to capture a famous storm that falls just outside it, not for any reason short of a documented defect in the rule itself (which would be logged here with a date and the old rule preserved).
The thresholds are taken from the standard space-physics convention (Gonzalez et al. 1994 storm classification), not derived from our data — that is what makes them freezable.
The spine
- Definitive record: hourly Dst from the OMNI merged dataset via CDAWeb HAPI
(
OMNI2_H0_MRG1HR/DST1800) — the existingdst_indexfetcher's source. Coverage 1963 → present. OMNI publishes ~2 weeks behind real time by design; this is the publication lag of a definitive product, not a fetcher defect (verified 2026-06-10: loader hourly "ok," newest row 2026-05-27). - Live edge (to be added): Kyoto WDC real-time/provisional Dst quicklook — the same physical index, hours behind instead of weeks. Same provisional-vs-final relationship as NHC observed fixes vs IBTrACS final best track. Bright line: Dst is an index computed arithmetically from four ground magnetometer stations — a processed measurement, in.
- Dst is the spine. Kp (
noaa_space_weather, live) is a sweep layer and corroborator, not a second spine — one rule, one catalog, no dual-definition ambiguity.
The frozen rule
An event is detected from the hourly Dst series as follows:
- Qualification: the event must contain at least one hour with Dst ≤ −50 nT.
- Envelope: the event spans the contiguous period in which Dst < −30 nT, extended by the merge rule below.
- Onset: the last downward crossing of −30 nT preceding the first qualifying (≤ −50 nT) hour.
- End: the first hour at which Dst has recovered to ≥ −30 nT and remains ≥ −30 nT for the next 24 consecutive hours. (The 24 h sustain prevents a multi-dip storm from being split into fragments.)
- Merge rule: any sub-−50 dips occurring inside one envelope (as bounded by rules 3–4) are one event, with the deepest hour as the event minimum.
- Missing data: OMNI fill values (|Dst| > 900) are excluded at ingest. A gap of ≤ 6 h inside an envelope does not break the envelope; a gap > 6 h ends it (and a new envelope may begin after the gap).
Event ID: gst-YYYYMMDDHH from the onset hour (UTC). Stable, mintable from the rule alone.
Lifecycle phases (stored in the dossier): onset → minimum = main phase; minimum → end = recovery phase.
Intensity class (Gonzalez convention, stored per event):
- moderate: minimum Dst in (−100, −50] nT
- intense: minimum Dst in (−250, −100] nT
- super: minimum Dst ≤ −250 nT
Rough expected yield (stated before detection, as a sanity bracket only — NOT a tuning target): a few tens of events per year near solar maximum, fewer at minimum; order 1,000–2,000 events over 1963 → present. If detection lands wildly outside this bracket, that is a flag to audit the implementation, not to adjust the rule.
The sweep (per-kind settings)
- Geometry: planetary — time-window only, no spatial query. The cheapest sweep in the storehouse.
- Window:
[onset − 48 h, end + 72 h]per event. Pre-window context catches the interplanetary driver arriving (DSCOVR sees the shock before the ground does); post-window catches the Forbush recovery and thermosphere relaxation. - Sweep layers (all verified live 2026-06-10, with current local depth):
dscovr_solar_wind— speed/Bz, the upstream driver (since 2025-10)intermagnet— ground magnetometers (since 2026-04-12)nmdb_cosmic_rays— Forbush decreases (since 2026-04-02; detector already running)goes_xray— flare context (since 2026-03-17)noaa_space_weather— Kp corroboration (since 2025-09-15)hamqsl_propagation— ionospheric propagation conditions (since 2026-03-29)celestrak— Starlink fleet drag, the thermosphere response (since 2026-03-17)silso_sunspots— solar-cycle context (since 1817 — the one layer with full depth)
- Consequence, stated up front: pre-2025 events will be index-only by construction (spine
- sunspot context, nothing else), exactly like the pre-2024 TC dossiers. The slots exist; strategic fills come later if archived sensor data is worth chasing per event.
Build bricks (tracking issue carries the checklist)
- Brick A — freeze the rule. This document. DONE 2026-06-10.
- Brick B — generic refactor.
(kind, event_id)slot keys, per-kind sweep config,kindin the storehouse index. TC monitor behavior unchanged; its tests stay green. - Brick C — Dst historical backfill. Windowed pulls 1963 → present through the existing
CDAWeb HAPI endpoint (no new fetcher). Idempotent; run under
nohup. - Brick D — spine detector + live edge. Detector scans
dst_indexand emits events per the frozen rule; new Kyoto real-time Dst quicklook fetcher for the live edge, with provisional events upgraded in place when definitive OMNI hours arrive (same provisional → final flow as NHC → IBTrACS). - Brick E — sweep + dossier backfill. Register the kind, sweep all detected events, backfill dossiers 1963 → present.
- First report: deferred. Engine room, not paper mode.