Data integrity
Live check status
| Check | Status | Detail |
|---|---|---|
| Run closure (ball-walk vs official scoreboard) | ! warn | 123/140 innings reconcile exactly; 17 short by a total 68 runs (upstream feed gap, not a computation error). |
| Legal-ball closure (deliveries vs overs) | ✓ pass | All 140 innings: legal deliveries match the official over count. |
| Ball-event vocabulary (closed enum) | ✓ pass | Every ball-event name matches a known, classified shape. |
| Statistical plausibility (strike rate / economy) | ✓ pass | No implausible aggregates across the player corpus. |
What we check
Run closure. For every completed innings we add up the runs off the bat (from the ball-by-ball stream) plus extras (from the official scoreboard) and confirm the total equals the scoreboard total. If our figure ever exceeded the official total — the signature of extras being mis-credited to a batter — the build fails.
Legal-ball closure. The count of legal deliveries we walk must equal the over count on the official scoreboard. This catches wides or no-balls being mistakenly counted as legal balls (which would distort strike rates and economy).
Closed ball-event vocabulary. Every ball-event type the feed emits is matched against a known, classified set. A new, unrecognized event shape is treated as a potential bug and flagged before it can silently corrupt an aggregate.
Statistical plausibility. Aggregates outside cricket's physical range (e.g. an implausible strike rate or economy over a real sample) are flagged for review.
Honest about the source
Across 140 completed innings, 123 reconcile to the official total exactly, and 17 fall a few runs short because the upstream ball-by-ball feed itself omitted a handful of deliveries. We surface that gap rather than papering over it. Zero innings over-credit a batter.