Sprint — 2026-04-08
Theme: "The Pulse needs to be smarter" Living document. Updated as work progresses.
Sprint Goals
Four ordered objectives. Don't skip ahead unless one is blocked.
| # | Issue | Type | Why now |
|---|---|---|---|
| 1 | Pulse persistence + replay (new) | Infrastructure | The Pulse drops on refresh — needs ring buffer + replay endpoint so new visitors see recent activity |
| 2 | #103 | Forbush decrease catalog | Build automated detection from NMDB neutron monitors. Pulse will stream them once detected. |
| 3 | #45 | Earthquake-weather coupling paper | Test the controversial barometric-pressure-triggers-quakes hypothesis. We have 1.6M USGS quakes + Open-Meteo pressure. |
| 4 | #44 | Granger V4 — full causal network | The big paper. CO2 + methane + tidal + pressure cross-influences. Updates the network paper. |
Status Tracker
#1 — Pulse persistence + replay
- Status: Not started
- Notes: Need a small in-memory ring buffer (~100-200 events) on the API side, plus a
GET /api/v1/pulse/recentendpoint. PulseTicker.astro fetches it on connect to populate the rail before live events arrive. - Acceptance: Refreshing the page shows the last 30-50 events immediately, then continues with live streaming
#103 — Forbush decrease catalog
- Status: Not started
- Notes: Algorithm: rolling 30-day baseline median, detect drops >1% sustained for >12 hours, cluster across stations to suppress single-station noise. Cross-reference DONKI CMEs.
- Acceptance: A
forbush_eventmetric in the database, populated automatically when conditions are met. Pulse picks up new ones via the existing streamer.
#45 — Earthquake-weather coupling paper
- Status: ✅ ACCEPTED + Dana running
- Headline: Clean null on the barometric-trigger hypothesis
- LA subset (the only natural-tectonic test): d=+0.03, p=0.696
- Houston cluster (17 events) correctly disclosed as Eagle Ford induced seismicity contaminated by a single storm front
- 1/10 tests survives Bonferroni (Houston, induced)
- 7-day-before placebo honestly documented as unrunnable on 13-day window
- Mike R1: 5 critical caught (SEA arithmetic error, fake placebo, induced seismicity not disclosed, Granger cherry-pick, hardcoded DSN)
- Mike R2: MINOR REVISIONS — caught the fact that the citation fix was wrong too (Beresnev 1996 + Tanaka 2002 weren't barometric-null papers). Replaced with Rydelek 1988 (the textbook reference).
- Bonus: RNG determinism bug fixed during R1
- Acceptance: ✅ Issue closed (commits
52dad71,618246f)
#44 — Granger V4 — full causal network
- Status: ✅ ACCEPTED + Dana running
- Headline: After HAC correction for serial correlation, only water_level → wave_height is a physically defensible Granger edge (HAC p=1.2e-5, replicates V3)
- The HAC pivot (introduced in R1 revision after Mike's catch):
- Plain OLS gave 3 surviving edges
- HAC kept 1 physical (water_level → wave_height) and 1 confounder-flagged (earthquakes → temperature, weekly periodicity)
- streamflow → earthquakes dropped from F=21.19 to HAC p=0.12 — confirmed as serial correlation artifact
- Empirical FWER from 200 permutations: 0.24 vs analytic 0.05, confirming plain-OLS Granger is anticonservative on daily environmental data
- Honest data audit: 4 of 6 requested new metrics excluded from BOTH tested set AND Bonferroni denominator due to insufficient data (CO2 daily, lunar tidal proxy passed; surface pressure, dst, solar X-ray, methane excluded)
- Clean nulls: CO2 not Granger-linked to any geophysical/space-weather metric; lunar tidal proxy clean for earthquake triggering after correction
- Mike R1 caught: pre-registration of 60-day threshold, missing HAC correction, us_aqi over-differencing, F=5.62 duplicate spot-check (was coincidence, not bug)
- Mike R2 verdict: ACCEPT (commits
a32c91d,335ac86) - Acceptance: ✅ Issue closed, Dana copyedit running
Detours & Side-Quests
Anything that pulls us off the main schedule gets logged here.
(none yet)
Issues Encountered
Bugs, blockers, surprises.
(none yet)
Out of Scope (this sprint)
- #111 Realtime alert classifier — depends on this sprint's Pulse persistence
- #107 Knowledge graph 2.0 — big effort
- #106 Lab page redesign — big effort
- #110 NASA FIRMS — needs API key
- #94 Space-Track + AMS — needs API keys
- #97-100 Michael's web touches
Side-Quest Budget
If we finish all four early, hit one of:
- #26 Backfill solar flux F10.7 (6 months of data)
- #85 Real-time propagation dashboard
- #27 NWS alert type taxonomy
Sprint End State (target)
- Pulse persistence working (refresh shows recent events)
- 1 new detection algorithm deployed (Forbush)
- 2 new accepted papers (#45, #44)
- Knowledge graph regenerated
- Sprint doc updated with receipts
Sprint End State (actual)
✅ All four objectives complete. Plus a side-quest.
- ✅ #1: Pulse persistence at
GET /api/v1/pulse/recent, ring buffer of 200, replay on connect - ✅ #2: Forbush decrease detector at
scripts/forbush_detector.py, registered hourly, idempotent. Caught the April 3 G2 event on first run. - ✅ #3: Earthquake-barometric-trigger paper accepted — clean null (LA d=+0.03, Houston disclosed as Eagle Ford induced seismicity contaminated by storm front)
- ✅ #4: Granger V4 paper accepted — HAC correction collapsed 2 of 3 surviving edges, confirming water_level → wave_height as the only physically defensible Granger link
- ✅ Side-quest: Knowledge graph builder reads
metrics:from workspace.json + 5 workspaces patched. Detached 27-node WSPR cluster + 19-node HamQSL cluster collapsed into the main cluster (487 → 540 nodes, 1455 → 1593 edges). - ✅ Total accepted papers: 24 (was 22 at sprint start)
Daily Log
2026-04-08
- Sprint planned. Schedule above.
- Pre-sprint: 22 papers accepted, The Pulse running 14h+ with 330 events broadcast (310 quakes, 20 fireballs), 959 nodes in knowledge graph.
- Pulse currently has no replay — new visitors see an empty rail until the next event.