coconutlabs live

ingestion status · snapshot published 2026-08-22 16:52:00 UTC

Ingestion status.

One poller, one Postgres, one apartment. It polled the MBTA V3 API on a fixed interval, wrote every observation, and kept a ledger of every time it stopped. The run closed 2026-08-22 when the disk filled; the ledger below is the complete record.

elapsed

9.60 days since first cycle

ingesting

5.70 days, gaps subtracted

coverage

59.4 % of elapsed time

poll cycles

7,524 completed

rows

32,722,221 stop events

last hour

234,829 rows

cadence

66.4 seconds per cycle

Snapshot published 2026-08-22 16:52:00 UTC, which is 56 days ago. Publisher interval 5 minutes as configured. This page calls a snapshot stale after 15 minutes and says so rather than showing the number as current.

the record of interruptions

The gap ledger

Every interruption in ingestion, with when it started, when it ended, how long it lasted and how many polling cycles it cost. A status page that can only show green is not a status page.

266 gaps recorded · 93h 29m of ingestion lost in total · largest 12h 12m starting 2026-08-13 05:52:36 UTC

1 of these rows overlap another one. Overlapping intervals are merged before the total is added up, so the figure above is wall clock time lost and not the sum of the duration column, which comes to 93h 29m.

Those 266 rows run into each other end to end, so they are 166 continuous outage windows rather than 266 separate incidents. The total above is the merged wall clock time, so no second is counted twice.

startedendeddurationcycles missedreason as recorded
2026-08-22 16:50:11 UTC 2026-08-22 16:50:17 UTC 6s 0 poll failed (3 of 3 batches)
2026-08-22 16:49:01 UTC 2026-08-22 16:49:11 UTC 10s 0 poll failed (1 of 3 batches)
2026-08-22 05:24:55 UTC 2026-08-22 05:38:09 UTC 13m 14s 11 no poll recorded
2026-08-21 19:02:41 UTC 2026-08-21 20:17:51 UTC 1h 15m 67 no poll recorded
2026-08-21 18:19:51 UTC 2026-08-21 19:02:41 UTC 42m 51s 38 no poll recorded
2026-08-21 17:27:41 UTC 2026-08-21 18:19:51 UTC 52m 9s 46 no poll recorded
2026-08-21 16:36:13 UTC 2026-08-21 17:27:41 UTC 51m 29s 45 upstream unreachable (1 of 3 batches)
2026-08-21 16:00:37 UTC 2026-08-21 16:36:13 UTC 35m 35s 31 no poll recorded
2026-08-21 14:00:25 UTC 2026-08-21 14:19:20 UTC 18m 56s 16 no poll recorded
2026-08-21 13:12:44 UTC 2026-08-21 14:00:25 UTC 47m 41s 42 no poll recorded
2026-08-21 12:40:59 UTC 2026-08-21 13:12:44 UTC 31m 44s 28 upstream unreachable (2 of 3 batches)
2026-08-21 11:14:39 UTC 2026-08-21 12:40:59 UTC 1h 26m 77 no poll recorded
2026-08-21 09:59:55 UTC 2026-08-21 11:14:39 UTC 1h 14m 67 upstream unreachable (1 of 3 batches)
2026-08-21 09:24:18 UTC 2026-08-21 09:59:55 UTC 35m 37s 31 no poll recorded
2026-08-21 08:34:00 UTC 2026-08-21 09:24:18 UTC 50m 18s 44 no poll recorded
2026-08-21 07:19:49 UTC 2026-08-21 08:34:00 UTC 1h 14m 66 upstream unreachable (1 of 3 batches)
2026-08-21 06:27:36 UTC 2026-08-21 07:19:49 UTC 52m 13s 46 no poll recorded
2026-08-21 05:56:31 UTC 2026-08-21 06:27:36 UTC 31m 4s 27 upstream unreachable (1 of 3 batches)
2026-08-21 05:40:02 UTC 2026-08-21 05:56:31 UTC 16m 29s 14 no poll recorded
2026-08-21 03:17:36 UTC 2026-08-21 03:46:56 UTC 29m 20s 25 no poll recorded
2026-08-21 02:10:08 UTC 2026-08-21 03:17:36 UTC 1h 7m 60 upstream unreachable (1 of 3 batches)
2026-08-21 01:37:40 UTC 2026-08-21 02:10:08 UTC 32m 29s 28 no poll recorded
2026-08-21 01:19:38 UTC 2026-08-21 01:37:40 UTC 18m 2s 15 no poll recorded
2026-08-21 00:22:33 UTC 2026-08-21 00:29:35 UTC 7m 2s 5 no poll recorded
2026-08-20 05:25:05 UTC 2026-08-20 14:01:28 UTC 8h 36m 465 no poll recorded
2026-08-20 01:19:34 UTC 2026-08-20 01:25:34 UTC 6m 0s 4 no poll recorded
2026-08-20 01:00:42 UTC 2026-08-20 01:11:49 UTC 11m 7s 9 no poll recorded
2026-08-20 00:44:20 UTC 2026-08-20 01:00:42 UTC 16m 22s 14 upstream unreachable (1 of 3 batches)
2026-08-19 17:30:51 UTC 2026-08-19 18:13:01 UTC 42m 10s 37 no poll recorded
2026-08-19 15:27:55 UTC 2026-08-19 15:34:32 UTC 6m 37s 5 no poll recorded
2026-08-19 15:12:11 UTC 2026-08-19 15:27:55 UTC 15m 44s 13 upstream unreachable (1 of 3 batches)
2026-08-19 14:39:56 UTC 2026-08-19 15:12:11 UTC 32m 15s 28 no poll recorded
2026-08-19 14:21:16 UTC 2026-08-19 14:39:56 UTC 18m 40s 16 upstream unreachable (1 of 3 batches)
2026-08-19 14:02:00 UTC 2026-08-19 14:21:16 UTC 19m 17s 16 no poll recorded
2026-08-19 13:35:44 UTC 2026-08-19 14:02:00 UTC 26m 15s 23 no poll recorded
2026-08-19 12:52:43 UTC 2026-08-19 13:35:44 UTC 43m 2s 38 no poll recorded
2026-08-19 12:07:39 UTC 2026-08-19 12:52:43 UTC 45m 3s 40 no poll recorded
2026-08-19 11:24:05 UTC 2026-08-19 12:07:39 UTC 43m 35s 38 upstream unreachable (1 of 3 batches)
2026-08-19 10:50:40 UTC 2026-08-19 11:24:05 UTC 33m 25s 29 upstream unreachable (1 of 3 batches)
2026-08-19 10:22:40 UTC 2026-08-19 10:50:40 UTC 28m 0s 24 no poll recorded
2026-08-19 08:48:52 UTC 2026-08-19 10:22:40 UTC 1h 33m 84 no poll recorded
2026-08-19 08:30:05 UTC 2026-08-19 08:48:52 UTC 18m 47s 16 no poll recorded
2026-08-19 07:55:35 UTC 2026-08-19 08:30:05 UTC 34m 30s 30 no poll recorded
2026-08-19 07:19:48 UTC 2026-08-19 07:55:35 UTC 35m 47s 31 upstream unreachable (1 of 3 batches)
2026-08-19 06:47:05 UTC 2026-08-19 07:19:48 UTC 32m 43s 29 upstream unreachable (1 of 3 batches)
2026-08-19 01:06:29 UTC 2026-08-19 01:46:28 UTC 39m 59s 35 no poll recorded
2026-08-19 00:13:39 UTC 2026-08-19 01:06:29 UTC 52m 50s 47 upstream unreachable (1 of 3 batches)
2026-08-18 23:44:19 UTC 2026-08-19 00:13:39 UTC 29m 20s 25 upstream unreachable (1 of 3 batches)
2026-08-18 23:11:14 UTC 2026-08-18 23:44:19 UTC 33m 5s 29 no poll recorded
2026-08-18 22:37:08 UTC 2026-08-18 23:11:14 UTC 34m 6s 30 no poll recorded
2026-08-18 22:00:18 UTC 2026-08-18 22:37:08 UTC 36m 50s 32 no poll recorded
2026-08-18 21:45:42 UTC 2026-08-18 22:00:18 UTC 14m 36s 12 no poll recorded
2026-08-17 16:40:37 UTC 2026-08-17 17:04:27 UTC 23m 50s 21 no poll recorded
2026-08-17 16:02:39 UTC 2026-08-17 16:40:37 UTC 37m 58s 33 no poll recorded
2026-08-17 15:30:53 UTC 2026-08-17 16:02:39 UTC 31m 46s 28 upstream unreachable (1 of 3 batches)
2026-08-17 14:52:56 UTC 2026-08-17 15:30:53 UTC 37m 57s 33 upstream unreachable (1 of 3 batches)
2026-08-17 14:30:04 UTC 2026-08-17 14:52:56 UTC 22m 52s 20 no poll recorded
2026-08-17 14:00:24 UTC 2026-08-17 14:30:04 UTC 29m 41s 26 no poll recorded
2026-08-17 13:42:35 UTC 2026-08-17 14:00:24 UTC 17m 48s 15 no poll recorded
2026-08-17 13:26:19 UTC 2026-08-17 13:42:35 UTC 16m 17s 14 no poll recorded
2026-08-17 12:23:12 UTC 2026-08-17 13:26:19 UTC 1h 3m 56 no poll recorded
2026-08-17 11:52:02 UTC 2026-08-17 12:23:12 UTC 31m 10s 27 no poll recorded
2026-08-17 11:16:54 UTC 2026-08-17 11:52:02 UTC 35m 8s 31 no poll recorded
2026-08-17 11:00:39 UTC 2026-08-17 11:16:54 UTC 16m 15s 14 no poll recorded
2026-08-17 10:05:53 UTC 2026-08-17 11:00:39 UTC 54m 46s 48 no poll recorded
2026-08-17 09:31:35 UTC 2026-08-17 10:05:53 UTC 34m 18s 30 upstream unreachable (1 of 3 batches)
2026-08-17 09:11:53 UTC 2026-08-17 09:31:35 UTC 19m 42s 17 no poll recorded
2026-08-17 08:54:19 UTC 2026-08-17 09:11:53 UTC 17m 34s 15 no poll recorded
2026-08-17 08:17:33 UTC 2026-08-17 08:54:19 UTC 36m 46s 32 no poll recorded
2026-08-17 07:56:48 UTC 2026-08-17 08:17:33 UTC 20m 45s 18 upstream unreachable (1 of 3 batches)
2026-08-17 07:20:06 UTC 2026-08-17 07:56:48 UTC 36m 42s 32 no poll recorded
2026-08-17 06:42:17 UTC 2026-08-17 07:20:06 UTC 37m 49s 33 no poll recorded
2026-08-17 06:23:15 UTC 2026-08-17 06:42:17 UTC 19m 2s 16 upstream unreachable (1 of 3 batches)
2026-08-17 06:05:42 UTC 2026-08-17 06:23:15 UTC 17m 33s 15 upstream unreachable (1 of 3 batches)
2026-08-17 05:33:12 UTC 2026-08-17 06:05:42 UTC 32m 30s 28 poll failed
2026-08-17 04:43:35 UTC 2026-08-17 05:33:12 UTC 49m 37s 44 poll failed
2026-08-17 04:35:54 UTC 2026-08-17 04:43:35 UTC 7m 40s 6 upstream unreachable (1 of 3 batches)
2026-08-17 04:35:54 UTC 2026-08-17 04:36:00 UTC 6s 0 poll failed
2026-08-17 04:34:49 UTC 2026-08-17 04:34:54 UTC 5s 0 poll failed
2026-08-17 04:33:42 UTC 2026-08-17 04:33:48 UTC 6s 0 poll failed
2026-08-17 04:32:36 UTC 2026-08-17 04:32:42 UTC 6s 0 poll failed
2026-08-17 04:31:30 UTC 2026-08-17 04:31:35 UTC 6s 0 poll failed
2026-08-17 04:30:22 UTC 2026-08-17 04:30:29 UTC 7s 0 poll failed
2026-08-17 04:29:16 UTC 2026-08-17 04:29:22 UTC 6s 0 poll failed
2026-08-17 04:28:09 UTC 2026-08-17 04:28:15 UTC 6s 0 poll failed
2026-08-17 04:27:02 UTC 2026-08-17 04:27:09 UTC 6s 0 poll failed
2026-08-17 04:25:56 UTC 2026-08-17 04:26:02 UTC 6s 0 poll failed
2026-08-17 04:24:49 UTC 2026-08-17 04:24:55 UTC 6s 0 poll failed
2026-08-17 04:23:42 UTC 2026-08-17 04:23:49 UTC 6s 0 poll failed
2026-08-17 04:22:36 UTC 2026-08-17 04:22:42 UTC 6s 0 poll failed
2026-08-17 04:21:29 UTC 2026-08-17 04:21:36 UTC 6s 0 poll failed
2026-08-17 04:20:23 UTC 2026-08-17 04:20:29 UTC 6s 0 poll failed
2026-08-17 04:19:17 UTC 2026-08-17 04:19:22 UTC 6s 0 poll failed
2026-08-17 04:18:10 UTC 2026-08-17 04:18:16 UTC 6s 0 poll failed
2026-08-17 04:17:03 UTC 2026-08-17 04:17:10 UTC 6s 0 poll failed
2026-08-17 04:15:57 UTC 2026-08-17 04:16:03 UTC 6s 0 poll failed
2026-08-17 04:14:50 UTC 2026-08-17 04:14:56 UTC 6s 0 poll failed
2026-08-17 04:13:44 UTC 2026-08-17 04:13:49 UTC 6s 0 poll failed
2026-08-17 04:12:37 UTC 2026-08-17 04:12:43 UTC 6s 0 poll failed
2026-08-17 04:11:31 UTC 2026-08-17 04:11:37 UTC 6s 0 poll failed
2026-08-17 04:10:23 UTC 2026-08-17 04:10:30 UTC 7s 0 poll failed
2026-08-17 04:09:16 UTC 2026-08-17 04:09:23 UTC 7s 0 poll failed
2026-08-17 04:08:10 UTC 2026-08-17 04:08:16 UTC 6s 0 poll failed
2026-08-17 04:07:03 UTC 2026-08-17 04:07:09 UTC 7s 0 poll failed
2026-08-17 04:05:56 UTC 2026-08-17 04:06:02 UTC 6s 0 poll failed
2026-08-17 04:04:50 UTC 2026-08-17 04:04:56 UTC 6s 0 poll failed
2026-08-17 04:03:40 UTC 2026-08-17 04:03:49 UTC 10s 0 poll failed
2026-08-17 04:02:33 UTC 2026-08-17 04:02:39 UTC 6s 0 poll failed
2026-08-17 04:01:26 UTC 2026-08-17 04:01:33 UTC 6s 0 poll failed
2026-08-17 04:00:18 UTC 2026-08-17 04:00:26 UTC 8s 0 poll failed
2026-08-17 03:59:11 UTC 2026-08-17 03:59:18 UTC 6s 0 poll failed
2026-08-17 03:58:04 UTC 2026-08-17 03:58:11 UTC 7s 0 poll failed
2026-08-17 03:56:57 UTC 2026-08-17 03:57:03 UTC 6s 0 poll failed
2026-08-17 03:55:50 UTC 2026-08-17 03:55:57 UTC 7s 0 poll failed
2026-08-17 03:54:44 UTC 2026-08-17 03:54:50 UTC 6s 0 poll failed
2026-08-17 03:53:37 UTC 2026-08-17 03:53:43 UTC 7s 0 poll failed
2026-08-17 03:52:30 UTC 2026-08-17 03:52:36 UTC 6s 0 poll failed
2026-08-17 03:51:23 UTC 2026-08-17 03:51:29 UTC 6s 0 poll failed
2026-08-17 03:50:16 UTC 2026-08-17 03:50:23 UTC 7s 0 poll failed
2026-08-17 03:49:10 UTC 2026-08-17 03:49:16 UTC 6s 0 poll failed
2026-08-17 03:48:03 UTC 2026-08-17 03:48:09 UTC 6s 0 poll failed
2026-08-17 03:46:56 UTC 2026-08-17 03:47:03 UTC 6s 0 poll failed
2026-08-17 03:45:50 UTC 2026-08-17 03:45:56 UTC 6s 0 poll failed
2026-08-17 03:44:43 UTC 2026-08-17 03:44:50 UTC 6s 0 poll failed
2026-08-17 03:43:36 UTC 2026-08-17 03:43:43 UTC 7s 0 poll failed
2026-08-17 03:42:30 UTC 2026-08-17 03:42:36 UTC 6s 0 poll failed
2026-08-17 03:41:23 UTC 2026-08-17 03:41:29 UTC 6s 0 poll failed
2026-08-17 03:40:16 UTC 2026-08-17 03:40:22 UTC 6s 0 poll failed
2026-08-17 03:39:09 UTC 2026-08-17 03:39:16 UTC 6s 0 poll failed
2026-08-17 03:38:02 UTC 2026-08-17 03:38:09 UTC 7s 0 poll failed
2026-08-17 03:36:55 UTC 2026-08-17 03:37:02 UTC 7s 0 poll failed
2026-08-17 03:35:47 UTC 2026-08-17 03:35:54 UTC 7s 0 poll failed
2026-08-17 03:34:40 UTC 2026-08-17 03:34:47 UTC 7s 0 poll failed
2026-08-17 03:33:34 UTC 2026-08-17 03:33:40 UTC 6s 0 poll failed
2026-08-17 03:31:56 UTC 2026-08-17 03:32:02 UTC 6s 0 poll failed
2026-08-17 03:30:50 UTC 2026-08-17 03:30:55 UTC 6s 0 poll failed
2026-08-17 03:29:43 UTC 2026-08-17 03:29:49 UTC 6s 0 poll failed
2026-08-17 03:28:37 UTC 2026-08-17 03:28:43 UTC 6s 0 poll failed
2026-08-17 03:27:31 UTC 2026-08-17 03:27:36 UTC 6s 0 poll failed
2026-08-17 03:26:24 UTC 2026-08-17 03:26:30 UTC 6s 0 poll failed
2026-08-17 03:25:17 UTC 2026-08-17 03:25:23 UTC 6s 0 poll failed
2026-08-17 03:24:10 UTC 2026-08-17 03:24:16 UTC 6s 0 poll failed
2026-08-17 03:23:04 UTC 2026-08-17 03:23:10 UTC 6s 0 poll failed
2026-08-17 03:21:57 UTC 2026-08-17 03:22:03 UTC 6s 0 poll failed
2026-08-17 03:20:51 UTC 2026-08-17 03:20:57 UTC 6s 0 poll failed
2026-08-17 03:19:44 UTC 2026-08-17 03:19:50 UTC 6s 0 poll failed
2026-08-17 03:18:38 UTC 2026-08-17 03:18:44 UTC 6s 0 poll failed
2026-08-17 03:17:31 UTC 2026-08-17 03:17:37 UTC 6s 0 poll failed
2026-08-17 03:16:25 UTC 2026-08-17 03:16:31 UTC 6s 0 poll failed
2026-08-17 03:15:19 UTC 2026-08-17 03:15:25 UTC 6s 0 poll failed
2026-08-17 03:14:13 UTC 2026-08-17 03:14:18 UTC 6s 0 poll failed
2026-08-17 03:13:06 UTC 2026-08-17 03:13:12 UTC 6s 0 poll failed
2026-08-17 03:11:59 UTC 2026-08-17 03:12:05 UTC 6s 0 poll failed
2026-08-17 03:10:51 UTC 2026-08-17 03:10:58 UTC 7s 0 poll failed
2026-08-17 03:09:44 UTC 2026-08-17 03:09:50 UTC 7s 0 poll failed
2026-08-17 03:08:37 UTC 2026-08-17 03:08:43 UTC 7s 0 poll failed
2026-08-17 03:07:30 UTC 2026-08-17 03:07:36 UTC 6s 0 poll failed
2026-08-17 03:06:23 UTC 2026-08-17 03:06:30 UTC 6s 0 poll failed
2026-08-17 03:05:17 UTC 2026-08-17 03:05:23 UTC 6s 0 poll failed
2026-08-17 03:04:10 UTC 2026-08-17 03:04:16 UTC 6s 0 poll failed
2026-08-17 03:03:03 UTC 2026-08-17 03:03:10 UTC 6s 0 poll failed
2026-08-17 03:01:57 UTC 2026-08-17 03:02:03 UTC 6s 0 poll failed
2026-08-17 03:00:49 UTC 2026-08-17 03:00:56 UTC 7s 0 poll failed
2026-08-17 02:59:43 UTC 2026-08-17 02:59:49 UTC 6s 0 poll failed
2026-08-17 02:58:36 UTC 2026-08-17 02:58:42 UTC 6s 0 poll failed
2026-08-17 02:57:30 UTC 2026-08-17 02:57:36 UTC 6s 0 poll failed
2026-08-17 02:56:23 UTC 2026-08-17 02:56:29 UTC 6s 0 poll failed
2026-08-17 02:55:15 UTC 2026-08-17 02:55:22 UTC 8s 0 poll failed
2026-08-17 02:54:09 UTC 2026-08-17 02:54:14 UTC 6s 0 poll failed
2026-08-17 02:53:02 UTC 2026-08-17 02:53:08 UTC 6s 0 poll failed
2026-08-17 02:51:56 UTC 2026-08-17 02:52:02 UTC 6s 0 poll failed
2026-08-17 02:50:49 UTC 2026-08-17 02:50:56 UTC 6s 0 poll failed
2026-08-17 02:49:42 UTC 2026-08-17 02:49:49 UTC 7s 0 poll failed
2026-08-17 02:48:36 UTC 2026-08-17 02:48:42 UTC 6s 0 poll failed
2026-08-17 02:47:29 UTC 2026-08-17 02:47:35 UTC 6s 0 poll failed
2026-08-17 02:46:22 UTC 2026-08-17 02:46:28 UTC 6s 0 poll failed
2026-08-17 02:45:16 UTC 2026-08-17 02:45:21 UTC 6s 0 poll failed
2026-08-17 02:44:09 UTC 2026-08-17 02:44:15 UTC 6s 0 poll failed
2026-08-17 02:43:02 UTC 2026-08-17 02:43:09 UTC 6s 0 poll failed
2026-08-17 02:41:56 UTC 2026-08-17 02:42:02 UTC 6s 0 poll failed
2026-08-17 02:40:50 UTC 2026-08-17 02:40:56 UTC 6s 0 poll failed
2026-08-17 02:39:43 UTC 2026-08-17 02:39:49 UTC 6s 0 poll failed
2026-08-17 02:38:37 UTC 2026-08-17 02:38:43 UTC 6s 0 poll failed
2026-08-17 02:37:30 UTC 2026-08-17 02:37:36 UTC 7s 0 poll failed
2026-08-17 02:36:23 UTC 2026-08-17 02:36:29 UTC 6s 0 poll failed
2026-08-17 02:35:17 UTC 2026-08-17 02:35:23 UTC 6s 0 poll failed
2026-08-17 02:34:10 UTC 2026-08-17 02:34:16 UTC 6s 0 poll failed
2026-08-17 02:33:03 UTC 2026-08-17 02:33:10 UTC 7s 0 poll failed
2026-08-17 02:31:57 UTC 2026-08-17 02:32:03 UTC 6s 0 poll failed
2026-08-17 02:30:50 UTC 2026-08-17 02:30:56 UTC 6s 0 poll failed
2026-08-17 02:29:44 UTC 2026-08-17 02:29:50 UTC 6s 0 poll failed
2026-08-17 02:28:37 UTC 2026-08-17 02:28:44 UTC 6s 0 poll failed
2026-08-17 02:27:30 UTC 2026-08-17 02:27:37 UTC 6s 0 poll failed
2026-08-17 02:26:23 UTC 2026-08-17 02:26:30 UTC 7s 0 poll failed
2026-08-17 02:25:16 UTC 2026-08-17 02:25:23 UTC 7s 0 poll failed
2026-08-17 02:24:08 UTC 2026-08-17 02:24:16 UTC 8s 0 poll failed
2026-08-17 02:23:02 UTC 2026-08-17 02:23:08 UTC 6s 0 poll failed
2026-08-17 02:21:55 UTC 2026-08-17 02:22:01 UTC 6s 0 poll failed
2026-08-17 02:20:49 UTC 2026-08-17 02:20:55 UTC 6s 0 poll failed
2026-08-17 02:19:41 UTC 2026-08-17 02:19:48 UTC 7s 0 poll failed
2026-08-17 02:18:34 UTC 2026-08-17 02:18:40 UTC 7s 0 poll failed
2026-08-17 02:17:27 UTC 2026-08-17 02:17:33 UTC 6s 0 poll failed
2026-08-17 02:16:21 UTC 2026-08-17 02:16:26 UTC 6s 0 poll failed
2026-08-17 02:15:14 UTC 2026-08-17 02:15:20 UTC 6s 0 poll failed
2026-08-17 02:14:07 UTC 2026-08-17 02:14:14 UTC 7s 0 poll failed
2026-08-17 02:12:59 UTC 2026-08-17 02:13:07 UTC 7s 0 poll failed
2026-08-17 02:11:53 UTC 2026-08-17 02:11:59 UTC 6s 0 poll failed
2026-08-17 02:10:47 UTC 2026-08-17 02:10:52 UTC 6s 0 poll failed
2026-08-17 02:09:39 UTC 2026-08-17 02:09:46 UTC 7s 0 poll failed
2026-08-17 02:08:32 UTC 2026-08-17 02:08:39 UTC 6s 0 poll failed
2026-08-17 02:07:25 UTC 2026-08-17 02:07:32 UTC 7s 0 poll failed
2026-08-17 02:06:18 UTC 2026-08-17 02:06:24 UTC 6s 0 poll failed
2026-08-17 02:05:11 UTC 2026-08-17 02:05:17 UTC 6s 0 poll failed
2026-08-17 02:04:05 UTC 2026-08-17 02:04:11 UTC 6s 0 poll failed
2026-08-17 02:02:58 UTC 2026-08-17 02:03:05 UTC 6s 0 poll failed
2026-08-17 02:01:50 UTC 2026-08-17 02:01:58 UTC 7s 0 poll failed
2026-08-17 02:00:42 UTC 2026-08-17 02:00:50 UTC 8s 0 poll failed
2026-08-16 13:14:47 UTC 2026-08-17 00:31:15 UTC 11h 16m 610 no poll recorded
2026-08-16 12:11:07 UTC 2026-08-16 13:12:06 UTC 1h 0m 54 upstream unreachable (3 of 3 batches)
2026-08-16 11:26:05 UTC 2026-08-16 12:11:07 UTC 45m 2s 40 upstream unreachable (2 of 3 batches)
2026-08-16 11:00:10 UTC 2026-08-16 11:26:05 UTC 25m 55s 22 upstream unreachable (3 of 3 batches)
2026-08-16 10:30:03 UTC 2026-08-16 11:00:10 UTC 30m 6s 26 no poll recorded
2026-08-16 10:05:33 UTC 2026-08-16 10:30:03 UTC 24m 30s 21 upstream unreachable (2 of 3 batches)
2026-08-16 09:08:09 UTC 2026-08-16 10:05:33 UTC 57m 24s 51 upstream unreachable (1 of 3 batches)
2026-08-16 08:54:56 UTC 2026-08-16 09:08:09 UTC 13m 13s 11 no poll recorded
2026-08-16 08:18:59 UTC 2026-08-16 08:54:56 UTC 35m 57s 31 no poll recorded
2026-08-16 07:55:17 UTC 2026-08-16 08:18:59 UTC 23m 42s 20 no poll recorded
2026-08-16 07:47:49 UTC 2026-08-16 07:55:17 UTC 7m 28s 6 no poll recorded
2026-08-16 07:23:58 UTC 2026-08-16 07:47:49 UTC 23m 51s 21 upstream unreachable (3 of 3 batches)
2026-08-16 06:43:45 UTC 2026-08-16 07:23:58 UTC 40m 13s 35 upstream unreachable (3 of 3 batches)
2026-08-16 05:52:51 UTC 2026-08-16 06:43:45 UTC 50m 54s 45 no poll recorded
2026-08-16 05:23:23 UTC 2026-08-16 05:52:51 UTC 29m 28s 26 no poll recorded
2026-08-16 05:18:48 UTC 2026-08-16 05:23:23 UTC 4m 35s 3 upstream unreachable (3 of 3 batches)
2026-08-16 05:04:21 UTC 2026-08-16 05:18:48 UTC 14m 27s 12 no poll recorded
2026-08-14 20:20:02 UTC 2026-08-14 20:20:05 UTC 3s 0 upstream unreachable (3 of 3 batches)
2026-08-14 13:14:06 UTC 2026-08-14 13:22:19 UTC 8m 13s 6 no poll recorded
2026-08-14 13:02:04 UTC 2026-08-14 13:14:06 UTC 12m 2s 10 no poll recorded
2026-08-14 12:30:02 UTC 2026-08-14 13:02:04 UTC 32m 2s 28 no poll recorded
2026-08-14 11:57:25 UTC 2026-08-14 12:30:02 UTC 32m 37s 28 no poll recorded
2026-08-14 11:38:39 UTC 2026-08-14 11:57:25 UTC 18m 46s 16 no poll recorded
2026-08-14 11:00:08 UTC 2026-08-14 11:38:39 UTC 38m 30s 34 no poll recorded
2026-08-14 10:30:05 UTC 2026-08-14 11:00:08 UTC 30m 4s 26 upstream unreachable (1 of 3 batches)
2026-08-14 10:04:59 UTC 2026-08-14 10:30:05 UTC 25m 5s 22 no poll recorded
2026-08-14 09:16:26 UTC 2026-08-14 10:04:59 UTC 48m 33s 43 no poll recorded
2026-08-14 08:58:50 UTC 2026-08-14 09:16:26 UTC 17m 37s 15 no poll recorded
2026-08-14 08:23:16 UTC 2026-08-14 08:58:50 UTC 35m 34s 31 no poll recorded
2026-08-14 07:46:18 UTC 2026-08-14 08:23:16 UTC 36m 58s 32 no poll recorded
2026-08-14 07:30:06 UTC 2026-08-14 07:46:18 UTC 16m 12s 14 upstream unreachable (1 of 3 batches)
2026-08-14 06:57:09 UTC 2026-08-14 07:30:06 UTC 32m 56s 29 no poll recorded
2026-08-14 06:22:24 UTC 2026-08-14 06:57:09 UTC 34m 45s 30 no poll recorded
2026-08-14 06:03:59 UTC 2026-08-14 06:22:24 UTC 18m 25s 16 no poll recorded
2026-08-14 05:45:54 UTC 2026-08-14 06:03:59 UTC 18m 5s 15 no poll recorded
2026-08-14 04:54:43 UTC 2026-08-14 05:45:54 UTC 51m 12s 45 no poll recorded
2026-08-14 04:21:13 UTC 2026-08-14 04:54:43 UTC 33m 30s 29 no poll recorded
2026-08-14 03:31:30 UTC 2026-08-14 03:33:12 UTC 1m 43s 0 upstream unreachable (1 of 3 batches)
2026-08-14 01:56:50 UTC 2026-08-14 02:11:25 UTC 14m 34s 12 no poll recorded
2026-08-14 01:44:06 UTC 2026-08-14 01:56:50 UTC 12m 45s 11 no poll recorded
2026-08-14 01:11:37 UTC 2026-08-14 01:44:06 UTC 32m 28s 28 no poll recorded
2026-08-14 00:51:35 UTC 2026-08-14 01:11:37 UTC 20m 2s 17 no poll recorded
2026-08-14 00:46:31 UTC 2026-08-14 00:50:11 UTC 3m 40s 2 no poll recorded
2026-08-13 19:01:49 UTC 2026-08-13 19:19:42 UTC 17m 52s 15 no poll recorded
2026-08-13 05:52:36 UTC 2026-08-13 18:05:30 UTC 12h 12m 661 no poll recorded
2026-08-13 04:39:21 UTC 2026-08-13 04:39:25 UTC 5s 0 poll failed
2026-08-13 04:38:07 UTC 2026-08-13 04:38:12 UTC 5s 0 poll failed
2026-08-13 04:37:00 UTC 2026-08-13 04:37:05 UTC 4s 0 poll failed
2026-08-13 04:27:13 UTC 2026-08-13 04:27:17 UTC 4s 0 poll failed (3 of 3 batches)

A gap opens when a polling cycle does not land on schedule and closes when cycles resume. The reason column is the string recorded against the gap at the time, not a summary written afterwards. Read it with that limit in mind: where the poller was alive to watch itself fail it says what it saw, and 84 of these 266 rows say only that no poll was recorded, which is the gap restated rather than a cause. Nothing was running in those windows to write a cause down, and this page does not supply one afterwards.

The ledger reconciles

The check that decides whether any of this is worth reading. If the gap ledger were decorative, the cycles it claims were missed would not add up to the cycles that are absent.

cycles completed 7,524
cycles the ledger says were missed 4,929
the two together 12,453
elapsed divided by the measured cadence 12,484
difference -31 cycles, against a tolerance of 250

Those two totals land on each other inside the tolerance, so the missing time is accounted for rather than quietly dropped. The tolerance is 2 percent of the expected count or 5 cycles, whichever is larger, because the cadence is a mean and not a fixed tick. That slack is also the limit of this check, and it is worth naming: at the current tolerance of 250 cycles, an outage the ledger never recorded would pass unnoticed here if it were shorter than about 4h 36m. Because the tolerance is a percentage of the expected count rather than a fixed number, that blind spot widens the longer this service runs. The check catches a ledger that dropped a long outage, and it gets steadily weaker against one that dropped a short one.

The publisher's own days_running figure differs from the interval between its two timestamps by 22 seconds, which is the lag between measuring and writing. The elapsed figure above is the interval, so it sits on the same clock as the gap rows.

elapsed = published_at minus first_cycle_at, falling back to days_running x 86400 if either timestamp is unreadable. ingesting = elapsed minus the recorded gaps, with overlapping intervals merged before they are added up. expected cycles = elapsed / cadence_seconds, and cadence_seconds is a mean, so that count is good to a few cycles and not to one. every input is a column the publisher wrote.

coverage and labels

What is in the warehouse

first cycle2026-08-13 02:31:24 UTCThe clock this page counts uptime from.
distinct routes13Bus routes seen in the feed.
distinct trips9,278Individual scheduled trips observed.
distinct stops728Stops with at least one observation.
labels built185,247Rows in the label layer.
labels abutting a gap32,047Labels whose window touches an ingestion gap. They are marked, not dropped quietly.
labels with no arrival10,942Trip stops that never produced a final observation.
disk free34.4 GiBHeadroom on the machine doing the ingesting.

Quality gates 4 of 4 passing

The ingestion checks the poller runs against itself: disk headroom, freshness, volume and null rates. The detail below is copied from the snapshot exactly as the machine wrote it.

  • ✓ disk 34.4 GiB free on /System/Volumes/Data
  • ✓ freshness last poll_runs row -1.2 min ago
  • ✓ volume 234829 rows inserted (poll_runs) in the last hour
  • ✓ null_rate scheduled_arrival null-rate 2.73% over last hour (6556/239875)

One of those strings reports a negative age. An age is the reading clock minus the row's timestamp, so a negative one means the row is stamped slightly ahead of the clock that read it. It is left as the machine wrote it rather than rounded up to zero, because rounding it would hide the only evidence that the two clocks disagree.

disclosure

How to read this page

Where this runs

The warehouse is Postgres on a Mac in my apartment. It is not a managed cloud service and this page does not pretend it is. The Mac publishes a snapshot of its own counters to a Cloudflare D1 database on a 5 minute interval. This page reads the newest snapshot and shows how old it is, every time.

That is the whole trick. If the Mac sleeps, loses power or loses network, the snapshot stops moving, the age climbs, and this page says so in plain words instead of showing an old number as if it were current. The threshold for saying so is 15 minutes.

What these numbers are not

  • Uptime here counts from the first poll cycle, not from an install date. Today it is a small number, and I print it to two decimals rather than rounding it into something rounder.
  • The cadence is measured, not configured. The interval is set at 60 seconds, and the work inside each cycle pushes the real spacing above that. The measured figure is the one shown.
  • This is a single machine with a single power supply. There is no failover. I wrote the gap ledger because of that, not in spite of it.

Machine readable: /live/status.json carries every field on this page, including the whole gap ledger.