Version 95fad2f743ba81538177a5660eb9e168f3ecf2e0aa9b00c28366364bdf3c1adc
· LIVE
Methodology: Calm Anomaly (SWPC)
Slug: calm-anomaly
The absence of activity is a story when it ends a pattern. This methodology covers one publishable frame: a sustained quiet streak on SWPC that follows a period of activity, where both the quiet window and the prior-activity window are fully contained in the warehouse coverage window.
It is the companion to anomaly-detection: that slug covers “the Sun did something unusual”; this slug covers “the Sun stopped doing something, after doing it.” Without the prior-activity clause the frame is not publishable — a permanently-quiet Sun is not news.
When to use this slug
Set methodology_slug = "calm-anomaly" when all of:
- The source is NOAA SWPC.
- The trailing
calm_window_dayshave no M+ flare and Kp max <calm_kp_thresholdin every 3-hour cycle. - The preceding
prior_activity_window_days(immediately before the calm window) contained at leastprior_activity_min_flaresM+ flares orprior_activity_min_kp5_cyclesKp ≥ 5 cycles. - Total warehouse coverage is ≥
calm_window_days + prior_activity_window_daysso both windows are in-bounds.
Fall back to agent-edited if the narrative really requires naming a specific driver (“quiet period attributable to Active Region X rotating to far side”), since that’s beyond what the SWPC time series alone supports.
Parameters
{
"schema_version": 1,
"source": "noaa-swpc",
"calm_window_days": 5,
"calm_kp_threshold": 3,
"calm_flare_class_floor": "M1.0",
"prior_activity_window_days": 14,
"prior_activity_min_flares": 3,
"prior_activity_min_kp5_cycles": 4,
"required_total_coverage_days": 19,
"live_endpoints": {
"kp": "https://services.swpc.noaa.gov/products/noaa-planetary-k-index.json",
"xray": "https://services.swpc.noaa.gov/json/goes/primary/xrays-1-day.json",
"flare_events": "https://services.swpc.noaa.gov/json/goes/primary/xray-flares-latest.json"
},
"archive_roots": {
"kp": "https://www.ngdc.noaa.gov/stp/geomag/kp_ap.html",
"xray": "https://www.ngdc.noaa.gov/stp/satellite/goes-r.html",
"flare_events": "https://kauai.ccmc.gsfc.nasa.gov/DONKI/WS/get/FLR"
}
}
The thresholds above are deliberately conservative. The point of the slug is to capture an actual pattern break, not to fire on every slow afternoon. A fresh version (new hash) is the right way to tune if tuning becomes necessary.
Editorial obligations
- Verify total coverage. Run
SELECT min(observed_at), max(observed_at) FROM swpc_observationsbefore anything else. The span must cover both the calm window and the prior-activity window with margin. If not, frame is unavailable. - Count both windows in the transcript. Show the flare list (or absence) for the calm window; show the flare list and Kp≥5 cycle count for the prior-activity window. These two queries are the methodology — an editor reviewing the transcript must see them.
- Name the exact windows in the narrative. “No M+ flares between 2026-04-10 and 2026-04-15, after a period between 2026-03-27 and 2026-04-10 that saw 4 M-class events and 6 cycles above Kp 5.”
- Do not project forward. Calm may continue or end at any time; the frame is about what has been observed, not about what will happen.
- Do not attribute causation. The SWPC time series alone does not support claims about solar rotation, active-region evolution, or CME direction. If that context is load-bearing for the story, use
agent-editedand link NOAA’s analysis.
Allowed claims
- “No M-class X-ray flares have been recorded on GOES-16 between YYYY-MM-DD and YYYY-MM-DD. Kp has remained below 3 across all Z 3-hour cycles in that period.”
- “This five-day quiet span follows a fortnight (YYYY-MM-DD to YYYY-MM-DD) in which [N] M-class flares were recorded and Kp reached or exceeded 5 in [M] cycles.”
Forbidden claims under this slug
- “Solar activity has entered a new minimum.” (That’s a multi-month/year claim; this frame is days.)
- “The calm is attributable to [cause].” (Use
agent-edited.) - “Expect activity to resume on [date].” (No forecasting under this slug.)
Fail modes (fall back to agent-edited or log no-publish)
- Total coverage <
required_total_coverage_days. - The calm window has no M-flares but Kp crossed the threshold (e.g. from solar-wind sector-boundary crossing). The frame is a clean break on both metrics — if one fails, the frame fails.
- The prior-activity window doesn’t clear its thresholds (i.e. the Sun was already quiet before).
Primary sources required
- The
live_endpointsURLs for Kp, X-ray, and flare events (so a reader can see current state). - The
archive_rootsURLs for Kp and X-ray (so a reader can recover the two windows from the public archive at a later time, not from SWPC’s rolling cache). - The observation windows for both the calm and prior-activity spans, explicit down to the minute.
- The actual flare count and Kp≥5 cycle count for each window — embed the numbers in the narrative so the detection is self-contained.
- If any individual flare is named in the prior-activity window (“M3.2 at 2026-04-03T14:12Z”), include the NOAA DONKI URL for that flare event.
The methodology page itself is not a primary source — it’s the rule, served automatically at /methodology/calm-anomaly/<version> via the detection’s pin.
Reproducibility
Fetch the archived Kp and flare records from archive_roots for both windows. The narrative’s embedded counts are the canonical record of what was observed — SWPC’s rolling cache may have moved on by the time a reader visits.