Measured reliability
How fresh each league’s complete board is, how many line changes the stream missed, how fast gaps were repaired, and uptime over real windows. Every figure names its window. “No data yet” means the records do not span it.
Complete-board freshness
A full league board compares every line we hold for that league against the source. Age is the time since the last one. Interval is the time between consecutive boards for a league. A complete board is one the source handed over whole.
Measured 2026-11-04 00:11 UTC
| League | Lines listed | Age of last board | Age of last complete board | Complete boards, 24h | Interval p50, 24h | Interval p95, 24h | Longest, 24h | Interval p95, 7d | Complete / partial / failed, 24h |
|---|---|---|---|---|---|---|---|---|---|
| CFB | 4,671 | 8 min | 8 min | 12 of 52 | 25 min | 57 min | 2.1 h | No data yet | 52 / 603 / 0 |
| NHL | 4,103 | 18 min | 18 min | 8 of 60 | 23 min | 38 min | 44 min | No data yet | 60 / 603 / 0 |
| NFL | 3,900 | 29 min | 29 min | 2 of 42 | 34 min | 56 min | 60 min | No data yet | 42 / 603 / 0 |
| NBA | 3,203 | 16 min | 16 min | 6 of 70 | 18 min | 51 min | 67 min | No data yet | 70 / 599 / 0 |
| UCL | 2,762 | 39 min | 39 min | 4 of 65 | 13 min | 52 min | 2.0 h | No data yet | 65 / 603 / 0 |
| SOCCER | 831 | 22 min | 22 min | 1 of 6 | 1.8 h | 2.0 h | 2.0 h | No data yet | 6 / 229 / 0 |
| NHL1P | 814 | 16 min | 16 min | 4 of 22 | 29 min | 74 min | 11.9 h | No data yet | 22 / 304 / 0 |
| TENNIS | 808 | 1.7 h | 1.7 h | 2 of 124 | 8 min | 19 min | 1.7 h | No data yet | 124 / 603 / 0 |
| NFL1H | 446 | 11 min | 11 min | 2 of 22 | 59 min | 2.0 h | 2.0 h | No data yet | 22 / 603 / 0 |
| CBB | 361 | 26 min | 26 min | 5 of 29 | 26 min | 63 min | 10.4 h | No data yet | 29 / 345 / 0 |
| NFL1Q | 263 | 27 min | 27 min | 2 of 16 | 1.5 h | 2.0 h | 2.0 h | No data yet | 16 / 603 / 0 |
| CS2 | 233 | 55 min | 55 min | 1 of 65 | 11 min | 1.5 h | 2.0 h | No data yet | 64 / 560 / 0 |
| LOL | 106 | 24 min | 24 min | 4 of 18 | 1.7 h | 2.0 h | 2.0 h | No data yet | 18 / 603 / 0 |
| NBA1Q | 61 | 56 min | 56 min | 1 of 28 | 33 min | 2.0 h | 2.0 h | No data yet | 27 / 554 / 0 |
| EUROGOLF | 55 | 73 min | 73 min | 1 of 7 | 78 min | 1.8 h | 1.9 h | No data yet | 7 / 225 / 0 |
| PGA | 52 | 9 min | 9 min | 3 of 3 | 27 min | 31 min | 32 min | No data yet | 3 / 24 / 0 |
| TT | 25 | 90 min | 90 min | 1 of 38 | 24 min | 1.6 h | 2.0 h | No data yet | 38 / 584 / 0 |
| KBO | 20 | 67 min | 67 min | 1 of 12 | 84 min | 6.2 h | 10.3 h | No data yet | 11 / 336 / 0 |
| WCBB | 16 | 14 min | 14 min | 4 of 10 | 1.5 h | 1.8 h | 1.9 h | No data yet | 10 / 284 / 0 |
| CFB1H | 12 | 2.0 h | 2.0 h | 1 of 15 | 85 min | 2.0 h | 2.0 h | No data yet | 15 / 603 / 0 |
| UFC | 7 | 33 min | 33 min | 1 of 13 | 2.0 h | 2.0 h | 2.0 h | No data yet | 13 / 603 / 0 |
A byte-identical board and an ingested board both count as a comparison. The run counts cover ingested boards only.
Stream against the full board
Of the line moves or removals recorded for a league, the share the WebSocket did not deliver and a REST board found. Counted from the first whole hour after the stream started. An upper bound on what the stream lost, because a poll can land first. Replayed events and first-seen lines are left out: the stream cannot announce a line it has never seen.
Counted through 2026-11-04 00:11 UTC
| Window | Moves from stream | Moves only a board found | Missing rate, moves | Removals from stream | Removals only a board found | Missing rate, removals |
|---|---|---|---|---|---|---|
| Last 24 hours, 2026-11-03 00:00 to 2026-11-04 00:00 UTC | 34,453 | 1,443 | 4.02% | 48,341 | 43,328 | 47.27% |
| Last 7 days | No data yet: 43 whole hours counted so far | |||||
| Since the stream started, 2026-11-02 05:00 to 2026-11-04 00:00 UTC | 56,755 | 1,725 | 2.95% | 113,714 | 47,090 | 29.28% |
Per league, since the stream started
| League | Moves from stream | Moves only a board found | Missing rate, moves | Removals only a board found | Missing rate, removals |
|---|---|---|---|---|---|
| BAD | 8 | 0 | 0.00% | 33 | 89.19% |
| CBB | 320 | 48 | 13.04% | 3,891 | 55.36% |
| CFB | 2,659 | 61 | 2.24% | 201 | 2.42% |
| CFB1H | 19 | 4 | 17.39% | 13 | 26.00% |
| CS2 | 45 | 13 | 22.41% | 878 | 51.56% |
| DARTS | 10 | 1 | 9.09% | 31 | 43.66% |
| DOTA2 | 11 | 2 | 15.38% | 80 | 80.00% |
| EPL | 1,376 | 0 | 0.00% | 4 | 0.21% |
| EUROGOLF | 0 | 0 | No data yet | 0 | No data yet |
| KBO | 2 | 0 | 0.00% | 22 | 51.16% |
| LA LIGA | 1,070 | 0 | 0.00% | 7 | 0.45% |
| LOL | 14 | 0 | 0.00% | 30 | 88.23% |
| MLS | 1 | 0 | 0.00% | 0 | 0.00% |
| NBA | 21,831 | 1,116 | 4.86% | 27,816 | 33.60% |
| NBA1H | 69 | 5 | 6.76% | 511 | 72.07% |
| NBA1Q | 755 | 47 | 5.86% | 1,407 | 24.67% |
| NBA2H | 239 | 119 | 33.24% | 376 | 74.75% |
| NBA4Q | 104 | 14 | 11.86% | 193 | 65.20% |
| NFL | 10,576 | 195 | 1.81% | 1,414 | 14.64% |
| NFL1H | 135 | 12 | 8.16% | 170 | 21.36% |
| NFL1Q | 428 | 16 | 3.60% | 5 | 1.72% |
| NFL2H | 69 | 35 | 33.65% | 0 | 0.00% |
| NFL4Q | 68 | 1 | 1.45% | 0 | 0.00% |
| NHL | 373 | 12 | 3.12% | 2,208 | 29.49% |
| NHL1P | 0 | 0 | No data yet | 459 | 26.78% |
| PGA | 0 | 0 | No data yet | 73 | 100.00% |
| SERIE A | 192 | 0 | 0.00% | 297 | 14.74% |
| SOCCER | 8 | 0 | 0.00% | 2 | 0.74% |
| TENNIS | 5,281 | 13 | 0.25% | 3,076 | 54.89% |
| TT | 10 | 0 | 0.00% | 30 | 90.91% |
| UCL | 11,062 | 11 | 0.10% | 3,833 | 17.61% |
| WCBB | 20 | 0 | 0.00% | 30 | 93.75% |
WebSocket health
Connection health only. A connected stream says nothing about whether a league’s complete board is fresh. Those are the tables above.
Measured 2026-11-04 00:11 UTC
Stream gaps and repair
On reconnect the client asks the source to resume from its last position and records any discontinuity. The next complete league board then reconciles current lines: a REST row with a newer source revision corrects the stored line. Recovery time runs from a gap until every league on the board has had a complete board after it.
| Detected | Channel | Kind | Last publication | Disconnected | Duration | Publications skipped | Leagues reconciled | Recovery time |
|---|---|---|---|---|---|---|---|---|
| 2026-11-03 22:06 UTC | game | Discontinuous position | 2026-11-03 22:05 UTC | 2026-11-03 22:05 UTC | 21.5 s | 5 | 21 of 21 | 1.8 h |
| 2026-11-03 22:05 UTC | projection | Discontinuous position | 2026-11-03 22:05 UTC | 2026-11-03 22:05 UTC | 21.0 s | 28 | 21 of 21 | 1.8 h |
| 2026-11-03 14:11 UTC | projection | Discontinuous position | — | — | — | 2 | 22 of 22 | 5.6 h |
A gap is a discontinuous stream position, or a recovery the source could not complete. Every gap is logged with its last publication, disconnect and resume times. Duration runs from the disconnect to the resume, or between the two receipts when the connection stayed up. Publications skipped is the offset jump within one stream epoch.
Ingest lag
Each row names its two clocks below.
Measured 2026-11-04 00:11 UTC
| Measure | Window | Samples | p50 | p95 | p99 |
|---|---|---|---|---|---|
| League board, fetch to commit | 24 hours | 825 | 1.3 s | 26.8 s | 2 min |
| All-leagues board, fetch to commit | 24 hours | 603 | 7.3 s | 76 s | 2 min |
| Source update to fetch | 24 hours | 69,406 | 55.8 s | 4 min | No data yet |
| League board, fetch to commit | 7 days | No data yet | No data yet | No data yet | No data yet |
| All-leagues board, fetch to commit | 7 days | No data yet | No data yet | No data yet | No data yet |
| Source update to fetch | 7 days | No data yet | No data yet | No data yet | No data yet |
| League board, fetch to commit | 30 days | No data yet | No data yet | No data yet | No data yet |
| All-leagues board, fetch to commit | 30 days | No data yet | No data yet | No data yet | No data yet |
| Source update to fetch | 30 days | No data yet | No data yet | No data yet | No data yet |
| Stream offer, source to receipt | 24 hours | 52,496 | 38 ms | 328 ms | 1.1 s |
| Stream score, source to receipt | 24 hours | 363,320 | 44 ms | 3.1 h | 25.2 h |
| Stream receipt to commit | 24 hours | No data yet | No data yet | No data yet | No data yet |
| Stream receipt to commit | 7 days | No data yet | No data yet | No data yet | No data yet |
- Board fetch to commit
- From fetching a board to committing it in the database. Exact percentiles over full ingests.
- Source update to fetch
- From the source update time on a changed line to the fetch that saw it. p50 and p95 are stored per ingest and weighted by updates. p99 comes from bucket counts over every update in the window and reads as the upper edge of its bucket.
- Stream source to receipt
- From the source timestamp on a stream publication to our receipt. Offers use the newest revision of each line; scores use stored score changes. Negative samples are clock skew and are excluded and counted. Between two different clocks, so read it as an estimate.
- Stream receipt to commit
- From receipt to the commit of its batch, for every publication. Counted into fixed buckets each minute, so each percentile reads as the upper edge of its bucket.
Uptime over real windows
A window appears once the records span all of it. Until then it says how many days exist.
Measured 2026-11-04 00:11 UTC
| Measure | 24 hours | 7 days | 30 days | 90 days |
|---|---|---|---|---|
| Board collection | 100.00% | No data yet: 6.2 d recorded | No data yet: 6.2 d recorded | No data yet: 6.2 d recorded |
| API requests without a 5xx | 99.67% 3 of 912 | No data yet: 2.3 d recorded | No data yet: 2.3 d recorded | — |
| REST requests to the source | 1,523 1 failed, 0 limited, 0 blocked | No data yet: 6.2 d recorded | No data yet: 6.2 d recorded | No data yet: 6.2 d recorded |
| WebSocket connected, sampled | No data yet | No data yet | No data yet | No data yet |
Board collection since the first measurement on 2026-10-28: 99.05% of 1,791 five-minute intervals.
External probes, dated evidence through 2026-11-02 23:55 UTC
| Endpoint | First probe | Last probe | Checks | Failed | Passed |
|---|---|---|---|---|---|
| /api/health | 2026-10-28 22:04 UTC | 2026-11-02 23:55 UTC | 26,302 | 36 | 99.863% |
| /status | 2026-10-28 22:05 UTC | 2026-11-02 23:53 UTC | 26,310 | 156 | 99.407% |
| / | 2026-10-28 22:05 UTC | 2026-11-02 23:55 UTC | 26,294 | 0 | 100.000% |
- Board collection
- Share of five-minute intervals containing at least one successfully ingested board. Time-weighted over the window. Windows past 30 days read a daily rollup of whole UTC days.
- API requests
- Share of recorded non-demo API requests that did not return a 5xx. Weighted by requests, so a quiet period counts for little. Probes and customers are both included.
- REST requests
- Every REST request to the source and its outcome.
- External probes
- External checks from three regions every five minutes. Pass rate of the probes that ran, weighted by probe count. Not time-weighted. Download the evidence.