Listening for events…

Scope / pre-registration — Starlink drag as a thermosphere sensor (March 2026 storm pilot)

Locked 2026-06-09, before any extraction code is written (per the dream-paper rule: methods pre-register first). Feasibility established in feasibility-starlink-thermosphere.md. Proposed workspace slug: starlink-thermosphere-storm-pilot.

Working title

"The Starlink fleet felt the March 2026 geomagnetic storm: orbital decay as a fleet-scale thermospheric density probe."

Research question

When a geomagnetic storm heats and expands the thermosphere, does the increased drag show up as a measurable jump in the orbital decay rate of the non-thrusting Starlink population, and how does that decay rate track the storm/solar drivers across a 3-month window?

Hypotheses (pre-registered, directional)

  • H1 (storm impulse): Among clean-drag (non-maneuvering, decaying) Starlinks, the fleet-median daily decay rate d(mean_motion)/dt rises in the days following the 2026-03-22 Dst minimum (−101 nT) versus the pre-storm baseline.
  • H2 (continuous driver): Across the full window, daily fleet decay rate is positively correlated with storm intensity (−Dst) and with solar/EUV proxy (sunspot number), strongest at lag 0 to +1 day.
  • H3 (altitude gradient): The storm response is larger at lower altitude (higher baseline mean_motion), consistent with denser air and steeper drag.
  • H0 (null): Fleet decay rate around the storm and across the window is within the quiet-period shuffle-null at all lags; no Dst/sunspot correlation above bootstrap CI.

Data inputs (all verified live, 2026-06-09)

  • celestrak Starlink snapshots, 2026-03-17 → present, per-object mean_motion, eccentricity, inclination_deg, norad_id (in extra_json, cast ::jsonb). ~10,400 objects tracked ≥20 days.
  • dst_index (storm intensity) 2026-03-03 → 2026-05-27 — primary geomagnetic driver.
  • dscovr_solar_wind (speed, Bz) 2025-10 → present — upstream driver / sanity.
  • silso_sunspots → 2026-05-30 — F10.7/EUV proxy (the slow "puffing" baseline).
  • goes_xray 2026-03-17 → present — flare context.
  • Gaps accepted: no F10.7 or Kp ingested; sunspots proxy F10.7, Dst proxies Kp. dst_index lags ~2 weeks (ends 05-27) — fine, it covers the storm.

Sample definition (the load-bearing step)

  1. Per-object decay rate: for each Starlink, build the mean_motion time series; compute daily d(mean_motion)/dt (robust slope over a trailing window).
  2. Clean-drag filter (de-maneuvering): keep only objects whose mean_motion is monotonically non-decreasing across the window (decaying, not thrusting). Drop any object with a downward step (orbit raise) > a small threshold. ~3,793 objects pre-qualify on a coarse cut; the real filter is per-segment. This is the primary defense against station-keeping contamination.
  3. Fleet aggregate: daily median decay rate over the clean population (median, not mean, to resist residual maneuver outliers). Also report a 10%-trimmed mean as sensitivity.
  4. Altitude bands: stratify by mean_motion band (proxy for altitude) for H3.

Tests

  • Primary (H1): superposed-epoch of fleet-median decay rate on days [−10 .. +15] around the 2026-03-22 onset. Pre-storm baseline = days [−10..−2]. Bootstrap CI; significance vs a quiet-period shuffle null (random non-storm onsets in the window).
  • Secondary (H2): daily fleet decay rate vs −Dst (and vs sunspots, solar-wind speed), Pearson + Spearman, lags 0..+2 days; partial correlation removing the slow sunspot baseline to isolate the storm component.
  • H3: repeat the superposed-epoch per altitude band; test monotonic ordering.

Confounds and mitigations (pre-registered)

  1. Station-keeping (primary): clean-drag filter + storm-transient leverage (storm = sharp impulse; thrust = slow/continuous). Sensitivity: rerun on maneuvering objects — they should NOT show the clean storm impulse.
  2. Survivorship / censoring: decaying objects reenter and leave the catalog; during a storm the most-decayed disappear, which could bias the surviving population's rate. Track fleet size daily; report attrition; test on a fixed cohort present for the whole window.
  3. TLE epoch noise: mean_motion has per-element jitter; use robust slopes and a trailing window, not single-pair differences.
  4. Altitude/eccentricity coupling: drag depends on perigee; carry eccentricity as a covariate; band by altitude.
  5. Driver collinearity: Dst, solar wind, sunspots are mutually correlated; report partial correlations, do not over-attribute to one index.

Power

N is thousands of objects × ~daily cadence. Expected storm effect is tens of percent (cf. the Feb 2022 Starlink reentry batch). Detection floor for a Dst −101 storm is far below the expected signal. Power is not the constraint; the confound filter is.

Multiple comparisons

Altitude bands (≈4) × drivers (≈3) × lags (≈3) family. Bonferroni within the secondary-correlation family; the H1 superposed-epoch is the single pre-declared primary test.

What we will NOT claim (scope discipline)

  • NOT the 11-year solar cycle (only 3 months of TLE history).
  • NOT the CO₂ secular thermospheric-contraction climate signal (needs decades).
  • NOT new physics. Satellite drag as a density probe is established; the contribution is fleet-scale N + a clean storm natural experiment + a reproducible standing monitor. Frame as demonstration, not discovery.

Prior art to engage (Riley to verify exact refs)

  • Satellite-drag thermospheric density inversion (Emmert et al.; Picone HASDM).
  • The February 2022 Starlink storm loss (e.g. Hapgood et al. 2022; Dang et al.).
  • CO₂-driven thermospheric cooling/contraction (Roble & Dickinson 1989; Emmert
    1. — cited only to motivate the dream-tier V2, not claimed here.

Outputs

  • Workspace starlink-thermosphere-storm-pilot/:
    • data/starlink_decay.parquet — per-object daily mean_motion + decay rate + clean-drag flag + altitude band.
    • data/drivers_daily.parquet — daily Dst, solar wind, sunspots, GOES.
    • data/results.json — superposed-epoch curve + CIs, correlation table, band breakdown, attrition series.
  • paper/paper.tex + paper/paper.pdf and an /articles feature (site standard).
  • Figures: superposed-epoch decay curve around the storm; decay-rate vs −Dst scatter; altitude-stratified storm response; fleet-attrition timeline.

Standing-monitor hook (taxonomy fit)

Open-window, fast-moving (see paper-taxonomy.md). Re-run monthly as celestrak accrues; each storm adds an epoch. The same pipeline grows into the solar-cycle V2 once history (backfill or accrued) is deep enough. Reframes issue #105 from "reentry watch" to "thermosphere monitor."

Next step

Hand to Riley for extraction + analysis against this locked spec, then Sasha (adversarial + rigor) before drafting. Do not start until Mike greenlights the extraction.

Live Feed