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)
celestrakStarlink snapshots, 2026-03-17 → present, per-objectmean_motion,eccentricity,inclination_deg,norad_id(inextra_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_xray2026-03-17 → present — flare context.- Gaps accepted: no F10.7 or Kp ingested; sunspots proxy F10.7, Dst proxies Kp.
dst_indexlags ~2 weeks (ends 05-27) — fine, it covers the storm.
Sample definition (the load-bearing step)
- Per-object decay rate: for each Starlink, build the
mean_motiontime series; compute daily d(mean_motion)/dt (robust slope over a trailing window). - Clean-drag filter (de-maneuvering): keep only objects whose
mean_motionis 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. - 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.
- Altitude bands: stratify by
mean_motionband (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)
- 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.
- 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.
- TLE epoch noise: mean_motion has per-element jitter; use robust slopes and a trailing window, not single-pair differences.
- Altitude/eccentricity coupling: drag depends on perigee; carry eccentricity as a covariate; band by altitude.
- 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
- — 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.pdfand an/articlesfeature (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.