← All findingssource · memory/reference_adding_a_league_doc.md
Phase 0 sportlib (registry, teams, in-season months) Phase 1 sport-data-service adapter (BLOCKING for 2-7) Phase 2 odds-service market mapping Phase 3 sports-scout-service Python plugin (mirror NBA structure) + [internal detail removed] + bump ACTIVE_LEAGUES in src/api/types.ts + bump ACTIVE_LEAGUES env in secrets-stack.ts + cron entry in infra/lib/training-stack.ts Phase 4 debate-service-v2 scheduling Phase 5 live-service poller Phase 6 grading-service boxscore + DNP rule Phase 7 Sweat App routes Phase 8 Advance Scout V2 (basketball-only, optional)
Each phase has a one-line verification curl. Skipping verification between phases compounds breakage.
Anti-patterns called out:
- Hand-coding team tables outside sportlib
- Hand-coding prop type lists outside sportlib (this is the PROP_STAT_TYPES debt in scout)
- Forgetting to bump ACTIVE_LEAGUES env (silent failure)
WNBA Phase 1 verification as of 2026-05-08: GET /api/v1/wnba/games/date/<today> → 200, 13 games, NBA-shape JSON. Phase 1 is LIVE for WNBA.
WNBA Phase 3 effort estimate: 6-8h. Mirror NBA plugin structure, adapt team IDs. Not a single-message task.