Fantasy scoring
Raw statistics flow into 2nd & 11 league rules. BDL’s fantasy totals never replace the active scoring configuration.
- Corrections create ledger revisions
- Provisional state stays visible
- Final reconciliation remains server-owned
A page-by-page map for turning the V1 Worker’s normalized Balls Don’t Lie data into responsive V2 visuals, alerts, evidence, and motion without creating a second scoring engine or exposing provider credentials.
BDL enriches the existing server pipeline. V2 renders normalized records and never decides what the official fantasy score should be.
Each stage answers a different question and lets V2 diagnose provider lag separately from backend, network, or render lag.
Existing routes are reused first. Small backend extensions are requested only when the current response cannot support an exact experience.
Every event is bounded, deduplicated and replay-aware. Reduced motion swaps travel or particles for concise static emphasis.
| Normalized event | V2 response | Safety rule | Reduced motion |
|---|---|---|---|
| Touchdown | Score pulse, touchdown wordmark, reaction prompt | Once per eventId + revision | Static score highlight |
| Interception | Possession-flip banner and interception reaction | Confirmed play only | Banner without travel |
| Turnover on downs | Drive-state flip and contextual system post | Ignore provisional duplicate | Color and text change |
| Big play | Player drop-down, yardage pulse and optional crowd reaction | Configured threshold; exact yards | Short live tile |
| Sack / field goal | Compact play card and fantasy delta if applicable | League rules calculate delta | Compact card |
| Correction | Previous value rolls to corrected value with source label | New revision required | Correction badge |
| Final | Game-over treatment, final scores, challenge settlement queue | Final state from Worker | Static final ribbon |
These are additive contract extensions, not a new provider path and not authorization to change V1 during this checkpoint.
{
"meta": {
"schemaVersion": "1",
"dataType": "game-events",
"provider": "balldontlie",
"authority": "primary",
"season": 2026,
"week": 4,
"providerObservedAt": "...",
"backendReceivedAt": "...",
"normalizedAt": "...",
"revision": 17,
"stale": false
},
"data": [ /* normalized application records */ ]
}Each wave can be disabled independently and must preserve V1 canonical scoring, fallback behavior and rollback controls.
Shared envelope parser, freshness model, render timestamp telemetry and event dedupe policy. No visual behavior change.
Consume normalized live events through a bounded animation controller. Replay uses the same IDs with an explicit replay context.
Add advanced evidence, freshness and provenance to Players, Stats, Front Office, My Team and Trades.
Introduce projections, rankings, ADP, odds, props or DFS context only inside separately approved user workflows.
Complete provider health, mapping coverage, rate reserve, lag-stage and fallback visibility in Data Operations.