current Healthy — within freshness limits.
Storm graphics: current. Last published 10 min ago — inside both its 30 min schedule and its 2 h freshness limit. NWS message ingest: current. Last ingested 3 min ago — inside both its 10 min schedule and its 2 h freshness limit.
Measured . This page is never
cached — every load re-reads the feeds. It says one of four words, and the indicator in
the bar above says the same one from the same judgement:
current (published within the schedule it runs on),
delayed (a scheduled window has passed with nothing published, and what
is published is still inside its freshness limit),
degraded (still publishing, with something behind it unread or failed)
and stale (past a freshness limit). Being inside a budget is not the
same as being on time, and this page no longer says otherwise. The same verdict as JSON:
/health, which answers 503 when it is not healthy.
Storm graphics
The render pipeline reads NHC and JTWC products, normalises them, draws the graphics and publishes them with a manifest. This is the clock on our publishing, not on the agencies — those are below.
| Last published | — 10 min ago |
|---|---|
| Called stale after | 2 h |
| Storms published | 1 |
| Last render attempt | completed — 10 min ago. The container exited cleanly. |
| Upstream sources | complete No source reported down at the last run. |
Scheduled every 30 minutes, at :03 and :33 past the hour (3,33 * * * *, declared in deploy/systemd/maverickwx-render.timer). Runs on a systemd timer on the render host since September 2026 (A16), after a Cloudflare Worker cron from August, which itself replaced the GitHub Actions scheduler that was delivering 17 of 48 windows a day with gaps up to 235 minutes. Same cadence throughout. The Actions numbers are measured; the two since are not yet measured over a comparable period.
Upstream advisories
How long since each agency issued the newest product for a storm — a different question from how long since we published. Each storm is judged against its own centre's cadence, because the two do not issue alike.
| Storm | Basin | Newest advisory | Age | Budget | State |
|---|---|---|---|---|---|
ep122026 LOWELL |
EP NHC | 3 h 43 min | 9 h | current |
NHC / CPHC (Atlantic, East and Central Pacific)
Full advisories on the synoptic hours (03, 09, 15, 21 UTC), published close to the hour. Intermediate advisories at 3-hour points while watches or warnings are in effect, and special advisories whenever conditions warrant.
JTWC (West Pacific, North Indian Ocean, Southern Hemisphere)
Warnings on the same 00/06/12/18 UTC cycle, but published well after the synoptic hour — the previous warning stays the newest available for some hours, which is why JTWC storms carry a wider staleness budget than NHC ones.
These are the cadences the centres publish on, not a prediction. An intermediate or special advisory can arrive at any time, and none of them is promised.
NWS message ingest
The Senior Duty Meteorologist's administrative messages, fetched from
api.weather.gov and stored so the NWS Data section can serve them. A stalled
ingest looks exactly like a quiet week at the SDM desk, which is why it has a budget.
| Last successful ingest | — 3 min ago |
|---|---|
| Called stale after | 2 h |
| Messages held | 66 |
| Last error | none recorded |
Scheduled every 10 minutes (*/10 * * * *, declared in wrangler.toml). A Cloudflare Worker cron, which does not share the Actions scheduler. Since September 2026 a systemd timer on the render host polls on the same cadence into its own store, for the site origin being proved beside the Worker (A18); the Cloudflare cron is what this page is served from until that cutover completes.
Radar feeds
The radar tab draws from third-party services your browser fetches directly — NOAA, Environment Canada, NASA, RainViewer and others. No render run touches them, so their health is probed separately.
| Last probed | — 14 days ago |
|---|---|
| Feeds checked | 7 |
| Result | all serving at the last probe |
Scheduled weekly, Mondays at 13:41 UTC (41 13 * * 1, declared in .github/workflows/radar-feeds.yml).
Elsewhere
| This page as JSON | /health — 200 healthy, 503 not |
|---|---|
| Content-Security-Policy violations | /csp-report — aggregate counts, no per-reader data |
| Storm API | Reference and active.json |
| Method and limitations | About Maverick Wx |
Scheduled every 3 hours, at :17 past the hour (17 */3 * * *, declared in .github/workflows/freshness.yml). This is what reads /health and fails loudly. Worst-case detection of a stall is the budget plus this interval.