Per-league stat-correction windows for the reconciliation cron
(Phase G.write).
A bet's settled_at is older than its league's window → the cron
leaves it alone. Bets in leagues without an entry are silently never
reconciled (locked in design — better than guessing a window).
Numbers reflect ESPN's empirical correction-publishing windows:
NBA / WNBA → most stat reviews land within 2h of game-final
NFL → 24h (NFL stat corrections are slow; routinely
amended a day later)
MLB → 6h (mid-tier; box-score scoring reviews)
NHL is intentionally absent — until we run the numbers on its actual
correction window, "silently never reconcile" beats guessing 6h and
either spamming notifications (too short) or missing flips (too long).
Soccer is moot: extractStatForProp returns null for soccer leagues
today, so even if the filter let MLS bets through, there'd be no
actual stat to compare against.
Per-league stat-correction windows for the reconciliation cron (Phase G.write).
A bet's
settled_atis older than its league's window → the cron leaves it alone. Bets in leagues without an entry are silently never reconciled (locked in design — better than guessing a window).Numbers reflect ESPN's empirical correction-publishing windows: NBA / WNBA → most stat reviews land within 2h of game-final NFL → 24h (NFL stat corrections are slow; routinely amended a day later) MLB → 6h (mid-tier; box-score scoring reviews)
NHL is intentionally absent — until we run the numbers on its actual correction window, "silently never reconcile" beats guessing 6h and either spamming notifications (too short) or missing flips (too long).
Soccer is moot: extractStatForProp returns null for soccer leagues today, so even if the filter let MLS bets through, there'd be no actual stat to compare against.