Deep slate diagnosis — 20260923
- Games: 16 · hits 8 · misses 8 · winner accuracy 0.5
- Mean total-run bias on losses: 3.75 (negative = under-projected)
- Mean team-run error on losses: 5.75 · mean Brier on losses: 0.282
Loss primary drivers
- Small edge on the losing side: 1
- Run environment far lower than projected (over-dispersed): 5
- Starting-pitcher projection was wrong: 1
- Backed the wrong side with real conviction: 1
High-level causal issue register
[CRITICAL] Published probability differs materially without a recorded transformation
- Domain:
probability_lineage· affected: NYM@TEX - Evidence: 1 game(s) have an unexplained ≥2pp calibrated-to-published delta
- Action: Block any promotion until the missing probability transformation is recorded and reconciled.
- Do not infer: Do not assume the probability governor was bypassed until you have traced the pick-side math.
[HIGH] Canonical artifact warning requires reconciliation
- Domain:
artifact_integrity· affected: slate-wide - Evidence: structural audit totals: {'critical': 0, 'error': 0, 'warning': 2, 'info': 119}
- Action: Fix the flagged stat or presentation contract before treating this slate as clean evidence.
- Do not infer: A warning flags a display or contract issue; it does not prove the model picked the wrong side.
[HIGH] Validated run models explain very little holdout variance
- Domain:
model_validation· affected: ARI@COL, CHW@KC, CIN@ATL, CLE@BOS, HOU@SEA, LAA@OAK, MIA@CHC, MIL@PHI, MIN@SF, NYM@TEX, SD@LAD, STL@PIT, TB@NYY, TOR@BAL, TOR@BAL, WAS@DET - Evidence: home/away/total R² = 0.0040/0.0349/0.0031
- Action: Treat exact run scores as low-confidence estimates, and look for stronger features or a better target before tuning the score tails.
- Do not infer: A small positive R² only means the model beats guessing the average; it does not make the exact scores reliable.
[INFO] Every settled game received structural QA
- Domain:
coverage· affected: ARI@COL, CHW@KC, CIN@ATL, CLE@BOS, HOU@SEA, LAA@OAK, MIA@CHC, MIL@PHI, MIN@SF, NYM@TEX, SD@LAD, STL@PIT, TB@NYY, TOR@BAL, TOR@BAL, WAS@DET - Evidence: 16/16 games structurally audited
- Action: Keep the per-game audit receipt in every report.
- Do not infer: Full audit coverage does not cancel the findings raised inside the audited games.
[INFO] Simulation produced no winner-direction intervention on this slate
- Domain:
simulation· affected: ARI@COL, CHW@KC, CIN@ATL, CLE@BOS, HOU@SEA, LAA@OAK, MIA@CHC, MIL@PHI, MIN@SF, NYM@TEX, SD@LAD, STL@PIT, TB@NYY, TOR@BAL, TOR@BAL, WAS@DET - Evidence: flip candidates 0; published flips 0
- Action: Measure the simulation's contribution across rolling slates, separating score realization from winner flipping.
- Do not infer: Zero winner flips is not a defect and does not mean the simulation did no score-reconciliation work.
Cross-slate trends (persistent-pattern memory)
- Window: 20260913, 20260914, 20260915, 20260916, 20260917, 20260918, 20260919, 20260920, 20260921, 20260922, 20260923 (10 prior slates loaded)
- Highest-confidence pick loss streak: 0 slate(s)
- Actionable pattern detected: True
Escalated persistent patterns
- simulation_inert_on_slate — 11 consecutive slates (11 in window)
- Target lever(s): simulation.allow_score
- Direction: confirm the simulation module is running, not silently no-oping
- Guardrail: simulation_inert_on_slate has persisted 11 consecutive slates; this is no longer single-slate noise. Treat it as an actionable pattern and raise the code/diagnostic action named; do not force a parameter move.
- weak_run_model_signal — 11 consecutive slates (11 in window)
- Target lever(s): training.xgb.n_estimators, training.xgb.max_depth, training.xgb.learning_rate
- Direction: investigate features/target via isolated training backtest (manual)
- Guardrail: weak_run_model_signal has persisted 11 consecutive slates; this is no longer single-slate noise. Treat it as an actionable pattern and raise the code/diagnostic action named; do not force a parameter move.
Metric direction across the window
winner_accuracy: regressing · series [0.6, 0.7, 0.4, 0.6667, 0.4444, 0.6667, 0.7333, 0.6, 0.3333, 0.4, 0.5]weighted_calibration_error: improving · series [0.0827, 0.2812, 0.2795, 0.1661, 0.1016, 0.1247, 0.3458, 0.3184, 0.2028, 0.1881, 0.1108]margin_bias: improving · series [-1.8, -0.4, -1.667, -1.133, -2.111, -2.0, -0.667, -1.533, -2.667, -1.867, -1.188]mean_team_run_error_on_losses: regressing · series [5.0, 6.333, 5.556, 6.4, 3.6, 5.2, 6.5, 6.5, 3.0, 6.222, 5.75]
Pipeline stage quality
historical_ml: winner 8/16 (0.5), team-run MAE 2.053, margin MAE 2.7293variance_applied: winner 6/16 (0.375), team-run MAE 2.0625, margin MAE 2.875enhanced_prediction: winner 8/16 (0.5), team-run MAE 2.2188, margin MAE 2.4375embedded_savant_run_environment: winner 8/16 (0.5), team-run MAE 2.2812, margin MAE 2.4375fundamental_edge_target_review: winner 8/16 (0.5), team-run MAE 2.2812, margin MAE 2.4375capped_target: winner 8/16 (0.5), team-run MAE 2.2812, margin MAE 2.4375simulation_result: winner 8/16 (0.5), team-run MAE 2.2812, margin MAE 2.4375published_final: winner 8/16 (0.5), team-run MAE 2.2812, margin MAE 2.4375
Probability lineage
- ARI@COL: raw 0.5896 → calibrated 0.6329 → published 0.56; score coherence followed by matchup-recency guardrail
- CHW@KC: raw 0.6938 → calibrated 0.6519 → published 0.56; score coherence followed by matchup-recency guardrail
- CIN@ATL: raw 0.7023 → calibrated 0.6488 → published 0.56; score coherence followed by matchup-recency guardrail
- CLE@BOS: raw 0.5 → calibrated 0.5073 → published 0.5053; published probability matches the calibrated/governed value
- HOU@SEA: raw 0.5518 → calibrated 0.5314 → published 0.5153; score coherence followed by matchup-recency guardrail
- LAA@OAK: raw 0.5613 → calibrated 0.5821 → published 0.54; score coherence followed by matchup-recency guardrail
- MIA@CHC: raw 0.5725 → calibrated 0.5686 → published 0.53; score coherence followed by matchup-recency guardrail
- MIL@PHI: raw 0.6273 → calibrated 0.6418 → published 0.56; score coherence followed by matchup-recency guardrail
- MIN@SF: raw 0.544 → calibrated 0.5271 → published 0.5111; score coherence followed by matchup-recency guardrail
- NYM@TEX: raw 0.6402 → calibrated 0.6218 → published 0.5954; no recorded transformation explains the publication delta
- SD@LAD: raw 0.5606 → calibrated 0.5414 → published 0.5352; score coherence followed by matchup-recency guardrail
- STL@PIT: raw 0.6152 → calibrated 0.581 → published 0.556; score coherence followed by matchup-recency guardrail
- TB@NYY: raw 0.5 → calibrated 0.5073 → published 0.5053; published probability matches the calibrated/governed value
- TOR@BAL: raw 0.5059 → calibrated 0.5073 → published 0.505; published probability matches the calibrated/governed value
- TOR@BAL: raw 0.5415 → calibrated 0.5258 → published 0.5117; score coherence followed by matchup-recency guardrail
- WAS@DET: raw 0.5 → calibrated 0.5073 → published 0.505; published probability matches the calibrated/governed value
Every game, in detail
ARI@COL — ✅ hit
- Predicted ARI 8-6 (conf -0.12, moderate) · actual ARI 5-3
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.1936 · team-run err 6.0 · total bias +6
- Contributing factors:
- total runs over-projected by 6 (14 vs 8)
- ARI offense over-projected by 3
- COL offense over-projected by 3
- Merrill Kelly (ARI) allowed 3 fewer ER than projected (2 vs 5)
- Mason Adams (COL) allowed 5 fewer ER than projected (0 vs 5)
CHW@KC — ❌ miss
- Predicted CHW 7-5 (conf -0.12, moderate) · actual KC 4-5
- Root cause: Backed the wrong side with real conviction
- Errors: winner WRONG · Brier 0.3136 · team-run err 3.0 · total bias +3
- Contributing factors:
- total runs over-projected by 3 (12 vs 9)
- CHW offense over-projected by 3
- committed to CHW at 0.12 confidence and it lost
CIN@ATL — ✅ hit
- Predicted ATL 5-6 (conf +0.12, moderate) · actual ATL 2-3
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.1936 · team-run err 6.0 · total bias +6
- Contributing factors:
- total runs over-projected by 6 (11 vs 5)
- CIN offense over-projected by 3
- ATL offense over-projected by 3
CLE@BOS — ❌ miss
- Predicted CLE 5-4 (conf -0.01, toss_up) · actual BOS 0-1
- Root cause: Run environment far lower than projected (over-dispersed)
- Secondary cause: Genuine toss-up that flipped
- Errors: winner WRONG · Brier 0.255287 · team-run err 8.0 · total bias +8
- Contributing factors:
- total runs over-projected by 8 (9 vs 1)
- CLE offense over-projected by 5
- BOS offense over-projected by 3
- Foster Griffin (CLE) allowed 3 fewer ER than projected (1 vs 4)
- Sonny Gray (BOS) allowed 3 fewer ER than projected (0 vs 3)
HOU@SEA — ✅ hit
- Predicted SEA 4-5 (conf +0.03, toss_up) · actual SEA 5-6
- Root cause: toss_up_went_our_way
- Errors: winner correct · Brier 0.234936 · team-run err 2.0 · total bias -2
- Contributing factors:
- Ethan Pecko (HOU) allowed 3 more ER than projected (3 vs 0)
LAA@OAK — ❌ miss
- Predicted LAA 5-4 (conf -0.08, lean) · actual OAK 3-7
- Root cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.2916 · team-run err 5.0 · total bias -1
- Contributing factors:
- OAK offense under-projected by 3
MIA@CHC — ❌ miss
- Predicted CHC 5-6 (conf +0.06, lean) · actual MIA 3-2
- Root cause: Run environment far lower than projected (over-dispersed)
- Errors: winner WRONG · Brier 0.2809 · team-run err 6.0 · total bias +6
- Contributing factors:
- total runs over-projected by 6 (11 vs 5)
- CHC offense over-projected by 4
MIL@PHI — ✅ hit
- Predicted MIL 5-3 (conf -0.12, moderate) · actual MIL 4-1
- Root cause: strong_correct_call
- Errors: winner correct · Brier 0.1936 · team-run err 3.0 · total bias +3
- Contributing factors:
- total runs over-projected by 3 (8 vs 5)
MIN@SF — ✅ hit
- Predicted MIN 4-3 (conf -0.02, toss_up) · actual MIN 4-2
- Root cause: toss_up_went_our_way
- Errors: winner correct · Brier 0.239013 · team-run err 1.0 · total bias +1
NYM@TEX — ✅ hit
- Predicted NYM 6-3 (conf -0.19, moderate) · actual NYM 7-2
- Root cause: strong_correct_call
- Errors: winner correct · Brier 0.16368 · team-run err 2.0 · total bias +0
SD@LAD — ❌ miss
- Predicted LAD 5-7 (conf +0.07, lean) · actual SD 5-1
- Root cause: Run environment far lower than projected (over-dispersed)
- Errors: winner WRONG · Brier 0.286392 · team-run err 6.0 · total bias +6
- Contributing factors:
- total runs over-projected by 6 (12 vs 6)
- LAD offense over-projected by 6
STL@PIT — ❌ miss
- Predicted PIT 5-6 (conf +0.11, moderate) · actual STL 5-1
- Root cause: Run environment far lower than projected (over-dispersed)
- Secondary cause: Backed the wrong side with real conviction
- Errors: winner WRONG · Brier 0.30915 · team-run err 5.0 · total bias +5
- Contributing factors:
- total runs over-projected by 5 (11 vs 6)
- PIT offense over-projected by 5
- committed to PIT at 0.11 confidence and it lost
TB@NYY — ❌ miss
- Predicted TB 5-4 (conf -0.01, toss_up) · actual NYY 2-9
- Root cause: Starting-pitcher projection was wrong
- Secondary cause: Genuine toss-up that flipped
- Errors: winner WRONG · Brier 0.255287 · team-run err 8.0 · total bias -2
- Contributing factors:
- TB offense over-projected by 3
- NYY offense under-projected by 5
- Mason Englert (TB) allowed 5 more ER than projected (8 vs 3)
TOR@BAL — ✅ hit
- Predicted BAL 4-5 (conf +0.01, toss_up) · actual BAL 2-4
- Root cause: toss_up_went_our_way
- Errors: winner correct · Brier 0.245025 · team-run err 3.0 · total bias +3
- Contributing factors:
- total runs over-projected by 3 (9 vs 6)
- Chris Bassitt (BAL) allowed 3 fewer ER than projected (0 vs 3)
TOR@BAL — ❌ miss
- Predicted TOR 6-5 (conf -0.02, toss_up) · actual BAL 2-4
- Root cause: Run environment far lower than projected (over-dispersed)
- Secondary cause: Genuine toss-up that flipped
- Errors: winner WRONG · Brier 0.261801 · team-run err 5.0 · total bias +5
- Contributing factors:
- total runs over-projected by 5 (11 vs 6)
- TOR offense over-projected by 4
WAS@DET — ✅ hit
- Predicted WAS 6-4 (conf -0.01, toss_up) · actual WAS 4-2
- Root cause: toss_up_went_our_way
- Errors: winner correct · Brier 0.245025 · team-run err 4.0 · total bias +4
- Contributing factors:
- total runs over-projected by 4 (10 vs 6)
Cross-game lever tension
Each candidate fix, with the games it would help and the games it would hurt. A lever that repairs one game and breaks two is visible here before it is proposed.
score.variance_multiplier / score.variance_floor (widen run distributions)
- Targets: brier_score, calibration_error
- Net: 2 helped vs 1 hurt
- Would help:
- CHW@KC (miss): lost a 0.12-confidence pick; wider tails lower overconfidence
- STL@PIT (miss): lost a 0.11-confidence pick; wider tails lower overconfidence
- Would hurt / risk:
- NYM@TEX (hit): strong correct call at 0.19; widening softens a good edge
player.pitcher.v4 form weights / player.pitcher_prior_games
- Targets: starter_er_mae, starter_outs_mae
- Net: 5 helped vs 3 hurt
- Would help:
- ARI@COL (hit): starter ER off by 5
- CLE@BOS (miss): starter ER off by 3
- HOU@SEA (hit): starter ER off by 3
- TB@NYY (miss): starter ER off by 5
- TOR@BAL (hit): starter ER off by 3
- Would hurt / risk:
- CHW@KC (miss): starter projection was accurate (ER off 1); reweight risks disturbing it
- CIN@ATL (hit): starter projection was accurate (ER off 1); reweight risks disturbing it
- MIN@SF (hit): starter projection was accurate (ER off 1); reweight risks disturbing it
recent. / season. run-mean weighting
- Targets: team_run_mae, total_run_mae, accuracy
- Net: 10 helped vs 3 hurt
- Would help:
- ARI@COL (hit): team runs off by 6
- CIN@ATL (hit): team runs off by 6
- CLE@BOS (miss): team runs off by 8
- LAA@OAK (miss): team runs off by 5
- MIA@CHC (miss): team runs off by 6
- SD@LAD (miss): team runs off by 6
- STL@PIT (miss): team runs off by 5
- TB@NYY (miss): team runs off by 8
- TOR@BAL (miss): team runs off by 5
- WAS@DET (hit): team runs off by 4
- Would hurt / risk:
- HOU@SEA (hit): team runs already close (off 2); reweight risks disturbing it
- MIN@SF (hit): team runs already close (off 1); reweight risks disturbing it
- NYM@TEX (hit): team runs already close (off 2); reweight risks disturbing it