coconutlabs live

operations record · generated 2026-08-14 22:48:11 UTC

What is running right now.

Two systems report their own state to this page. Every number here comes from the system that produced it, and each one carries how old it is. Where a number is missing, the page says it is missing instead of filling it in.

rows ingested

6,065,800 stop events

poll cycles

1,179 completed

elapsed

1.84 days since first cycle

time ingesting

48.1 % of elapsed time

gap ledger

32 recorded

nightly loop

2 nights, 2 rolled back

servicewhat it doesrunninglast signalstatus
pulse ingestion → Polls the MBTA V3 API around the clock and writes stop events to Postgres. 1.84 days elapsed, 48.1% ingesting 1 minute ago ● live
nightly loop → Gates a candidate model every night, canaries it, then promotes it or rolls back. 2 nights on the record run committed 2026-08-14 ● live

The warehouse runs on a Mac in my apartment and publishes a snapshot every 5 minutes. This page reads the newest snapshot. Last publish 1 minute ago. The loop runs in GitHub Actions and commits its artifacts to a public repository. Elapsed time and time ingesting are two different numbers here, and the second one has every recorded gap subtracted out of it. Both are small today. The page is built to read the same way on day ninety.

machine readable: /live/status.json

Everything on these three pages, as one versioned JSON document. Schema coconutlabs.live/1. Top level keys schema, generated_at, pulse, loop. The pulse object carries state (ok, no_snapshot, unavailable), stale, last_publish_age_seconds, stale_after_seconds, the full snapshot row, the complete gaps ledger, and derived, which holds the arithmetic this page does on those two tables: elapsed, ingesting, coverage, the cycle reconciliation and the method string describing each one. The loop object carries every run in the window with its verdicts and its candidate variant, the counts, the current serving version, the gate thresholds, and cache, which says which layer answered and how old that read is. It is served with access-control-allow-origin: * and no store caching, so a poller reads the same freshness a reader does.