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.
6,065,800 stop events
1,179 completed
1.84 days since first cycle
48.1 % of elapsed time
32 recorded
2 nights, 2 rolled back
| service | what it does | running | last signal | status |
|---|---|---|---|---|
| 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.