MaverickWX

Maverick Wx

Data health

What every feed behind this site is doing right now.

current Healthy — within freshness limits.

Storm graphics: current. Last published 17 min ago — inside both its 30 min schedule and its 2 h freshness limit. NWS message ingest: current. Last ingested 8 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 — 17 min ago
Called stale after2 h
Storms published1
Last render attemptcompleted — 17 min ago. The container exited cleanly.
Upstream sourcescomplete 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.

StormBasinNewest advisoryAgeBudgetState
ep122026 LOWELL EP NHC 3 h 50 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 — 8 min ago
Called stale after2 h
Messages held354
Last errornone 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 checked7
Resultall 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 APIReference and active.json
Method and limitationsAbout 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.