Session 56: Full audit — PropLine + boxscore + pipeline + sport coverage (2289 tests)
Research (verified against live MLB Stats / ESPN / The Odds APIs): - specs/propline-audit.md — every stat_type mapped against our 4-layer pipeline; real MLB boxscore fields; sport coverage status; pipeline gap analysis. - specs/vyndr-roadmap.md — priority-ordered Sessions 57–64 + coverage targets. - scripts/propline-audit.js + specs/audit-data/ (raw capture). Headline bug: oddsNormalizer mapped batter_rbis → 'rbis' while the whole grade/feature/outcome chain keys on 'rbi' — every PropLine RBI prop silently failed to grade AND settle. Fixed (+ regression test). Phase 4 — wired missing MLB stats end-to-end: - PropLine MLB markets 6 → 12 (+runs, walks, doubles, earned_runs, hits_allowed, outs — same request, no extra quota). - doubles/outs/triples added to featureCache + outcomeService MLB_LOG_FIELD and all three grade whitelists (analyze/scan/validation.py). Phase 6 — pipeline resilience: - opsNotify.js: ntfy alerts (never throws, test-disabled). Snapshot success/ stale/failure alerts; retry-once on hard odds error (not on empty slate). - Missed-cron watchdog (mostRecentExpectedSlot/isSnapshotOverdue); status probe now returns `overdue`. Coverage truth: MLB is the only end-to-end-live sport; outcome settlement is MLB-only (WNBA/NBA/soccer never settle) — documented as the #1 roadmap gap. Backend 2276 → 2289 tests (+13). Web build exit 0. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -121,6 +121,14 @@ describe('oddsNormalizer', () => {
|
||||
}
|
||||
});
|
||||
|
||||
it('Session 56 audit — batter_rbis normalizes to rbi (singular), matching the grade chain', () => {
|
||||
// The whole grade/feature/outcome chain keys on 'rbi'. If this reverts to
|
||||
// 'rbis', PropLine RBI props silently stop grading + settling again.
|
||||
expect(MARKET_MAP.batter_rbis).toBe('rbi');
|
||||
expect(MARKET_MAP.batter_doubles).toBe('doubles');
|
||||
expect(MARKET_MAP.pitcher_outs).toBe('outs');
|
||||
});
|
||||
|
||||
it('exposes the NFL market keys added in the Session 31 audit', () => {
|
||||
// Defensive mapping landed before NFL is fully wired so it can't
|
||||
// repeat the MLB silent-zero bug. Both odds-api `_yds` and the
|
||||
|
||||
Reference in New Issue
Block a user