Initial release.
- Live scores across 21 sports (
/sport/{sport}/events/live) and day cards — fixtures, in-play, and final results — via the tournament walk (/sport/{sport}/scheduled-tournaments/{date}/page/{n} → /unique-tournament/{id}/scheduled-events/{date}).
- One normalized row shape for every sport: per-period scores, tennis set/game/point state, live match minute, winners, seeds, surfaces, competition context.
- Optional featured "Full time" betting odds (opening + current, decimal), with graceful fallback — events without a market keep null odds instead of being dropped.
- Tournament filter applied before fetching, so filtered runs skip non-matching competitions entirely.
- Result cap split evenly across selected sports; unlimited runs capped at 10,000 events.
- State persists across migrations.
Verified against live endpoints on 2026-08-27. Access and endpoint discrepancies documented in src/constants.ts: Sofascore TLS-fingerprints plain HTTP clients (solved with @crawlee/impit-client Chrome impersonation, no browser), and the documented /sport/{sport}/scheduled-events/{date} endpoint is gone (404) in favor of the tournament walk above.