Deep slate diagnosis — 20260909
- Games: 15 · hits 10 · misses 5 · winner accuracy 0.6667
- Mean total-run bias on losses: 0.4 (negative = under-projected)
- Mean team-run error on losses: 5.6 · mean Brier on losses: 0.29
Loss primary drivers
- Small edge on the losing side: 1
- Several errors of similar size: 1
- Run environment far lower than projected (over-dispersed): 2
- Starting-pitcher projection was wrong: 1
High-level causal issue register
[CRITICAL] Critical canonical artifact integrity failure
- Domain:
artifact_integrity· affected: 20260909_WAS@SD - Evidence: structural audit totals: {'critical': 1, 'error': 0, 'warning': 0, 'info': 114}
- Action: Exclude this slate from parameter learning until the artifact-generation step that wrote the broken file is fixed.
- Do not infer: A malformed artifact is a file bug, not proof the prediction model was wrong; do not blame accuracy changes on it.
[CRITICAL] Published probability differs materially without a recorded transformation
- Domain:
probability_lineage· affected: PIT@CHW, TB@ATL - Evidence: 2 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] Validated run models explain very little holdout variance
- Domain:
model_validation· affected: ARI@KC, CHC@MIL, CIN@LAD, CLE@BAL, COL@NYY, HOU@PHI, LAA@BOS, MIN@DET, NYM@MIA, PIT@CHW, STL@SF, TB@ATL, TEX@SEA, TOR@OAK, WAS@SD - Evidence: home/away/total R² = 0.0118/0.0210/0.0207
- 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@KC, CHC@MIL, CIN@LAD, CLE@BAL, COL@NYY, HOU@PHI, LAA@BOS, MIN@DET, NYM@MIA, PIT@CHW, STL@SF, TB@ATL, TEX@SEA, TOR@OAK, WAS@SD - Evidence: 15/15 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@KC, CHC@MIL, CIN@LAD, CLE@BAL, COL@NYY, HOU@PHI, LAA@BOS, MIN@DET, NYM@MIA, PIT@CHW, STL@SF, TB@ATL, TEX@SEA, TOR@OAK, WAS@SD - 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: 20260830, 20260831, 20260901, 20260902, 20260903, 20260904, 20260905, 20260906, 20260907, 20260908, 20260909 (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: improving · series [0.5, 0.6667, 0.4667, 0.3333, 0.5556, 0.625, 0.5333, 0.6, 0.5455, 0.7333, 0.6667]weighted_calibration_error: improving · series [0.0693, 0.1661, 0.2476, 0.21, 0.1474, 0.1316, 0.1, 0.0937, 0.2611, 0.1825, 0.1069]margin_bias: regressing · series [-2.786, -3.5, -2.533, -3.067, -1.778, -0.688, -1.467, -1.467, -0.182, -0.867, -2.133]mean_team_run_error_on_losses: improving · series [7.0, 8.25, 7.125, 6.4, 6.75, 6.0, 5.286, 5.333, 3.8, 6.75, 5.6]
Pipeline stage quality
historical_ml: winner 10/15 (0.6667), team-run MAE 3.1009, margin MAE 3.1847variance_applied: winner 9/15 (0.6), team-run MAE 3.1333, margin MAE 3.2enhanced_prediction: winner 10/15 (0.6667), team-run MAE 3.2667, margin MAE 3.3333embedded_savant_run_environment: winner 10/15 (0.6667), team-run MAE 3.2667, margin MAE 3.2fundamental_edge_target_review: winner 10/15 (0.6667), team-run MAE 3.2667, margin MAE 3.2capped_target: winner 10/15 (0.6667), team-run MAE 3.2667, margin MAE 3.2simulation_result: winner 10/15 (0.6667), team-run MAE 3.2667, margin MAE 3.2published_final: winner 10/15 (0.6667), team-run MAE 3.2667, margin MAE 3.2
Probability lineage
- ARI@KC: raw 0.5823 → calibrated 0.5474 → published 0.53; score coherence followed by matchup-recency guardrail
- CHC@MIL: raw 0.5411 → calibrated 0.5339 → published 0.5245; score coherence followed by matchup-recency guardrail
- CIN@LAD: raw 0.691 → calibrated 0.6629 → published 0.58; score coherence followed by matchup-recency guardrail
- CLE@BAL: raw 0.5282 → calibrated 0.5802 → published 0.558; score coherence followed by matchup-recency guardrail
- COL@NYY: raw 0.7754 → calibrated 0.7839 → published 0.7839; published probability matches the calibrated/governed value
- HOU@PHI: raw 0.5438 → calibrated 0.5273 → published 0.5197; score coherence followed by matchup-recency guardrail
- LAA@BOS: raw 0.5671 → calibrated 0.5397 → published 0.5287; score coherence followed by matchup-recency guardrail
- MIN@DET: raw 0.5546 → calibrated 0.5331 → published 0.5239; score coherence followed by matchup-recency guardrail
- NYM@MIA: raw 0.5464 → calibrated 0.6118 → published 0.5416; score coherence followed by matchup-recency guardrail
- PIT@CHW: raw 0.6887 → calibrated 0.6496 → published 0.5984; no recorded transformation explains the publication delta
- STL@SF: raw 0.5472 → calibrated 0.5291 → published 0.521; score coherence followed by matchup-recency guardrail
- TB@ATL: raw 0.6188 → calibrated 0.5996 → published 0.5772; no recorded transformation explains the publication delta
- TEX@SEA: raw 0.5169 → calibrated 0.6398 → published 0.5487; score coherence followed by matchup-recency guardrail
- TOR@OAK: raw 0.5523 → calibrated 0.55 → published 0.5362; score coherence followed by matchup-recency guardrail
- WAS@SD: raw 0.5641 → calibrated 0.5546 → published 0.5245; score coherence followed by matchup-recency guardrail
Every game, in detail
ARI@KC — ✅ hit
- Predicted KC 5-7 (conf +0.06, lean) · actual KC 2-5
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.2209 · team-run err 5.0 · total bias +5
- Contributing factors:
- total runs over-projected by 5 (12 vs 7)
- ARI offense over-projected by 3
CHC@MIL — ✅ hit
- Predicted MIL 5-6 (conf +0.05, lean) · actual MIL 6-8
- Root cause: solid_correct_call
- Errors: winner correct · Brier 0.226118 · team-run err 3.0 · total bias -3
- Contributing factors:
- total runs under-projected by 3 (11 vs 14)
- Logan Henderson (MIL) allowed 3 fewer ER than projected (0 vs 3)
CIN@LAD — ✅ hit
- Predicted LAD 5-8 (conf +0.16, moderate) · actual LAD 1-14
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.1764 · team-run err 10.0 · total bias -2
- Contributing factors:
- CIN offense over-projected by 4
- LAD offense under-projected by 6
- Rhett Lowder (CIN) allowed 3 more ER than projected (7 vs 4)
CLE@BAL — ❌ miss
- Predicted CLE 4-3 (conf -0.12, moderate) · actual BAL 5-9
- Root cause: Starting-pitcher projection was wrong
- Secondary cause: Run environment far higher than projected (under-dispersed)
- Errors: winner WRONG · Brier 0.311325 · team-run err 7.0 · total bias -7
- Contributing factors:
- total runs under-projected by 7 (7 vs 14)
- BAL offense under-projected by 6
- Foster Griffin (CLE) allowed 5 more ER than projected (8 vs 3)
- Shane Baz (BAL) allowed 4 more ER than projected (5 vs 1)
- committed to CLE at 0.12 confidence and it lost
COL@NYY — ✅ hit
- Predicted NYY 4-9 (conf +0.57, strong) · actual NYY 1-6
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.046714 · team-run err 6.0 · total bias +6
- Contributing factors:
- total runs over-projected by 6 (13 vs 7)
- COL offense over-projected by 3
- NYY offense over-projected by 3
- Will Warren (NYY) allowed 3 fewer ER than projected (1 vs 4)
HOU@PHI — ✅ hit
- Predicted PHI 3-4 (conf +0.04, toss_up) · actual PHI 7-11
- Root cause: toss_up_went_our_way
- Errors: winner correct · Brier 0.230691 · team-run err 11.0 · total bias -11
- Contributing factors:
- total runs under-projected by 11 (7 vs 18)
- HOU offense under-projected by 4
- PHI offense under-projected by 7
- Cristopher Sánchez (PHI) allowed 4 more ER than projected (6 vs 2)
LAA@BOS — ❌ miss
- Predicted BOS 4-5 (conf +0.06, lean) · actual LAA 6-4
- Root cause: Several errors of similar size
- Errors: winner WRONG · Brier 0.279527 · team-run err 3.0 · total bias -1
- Contributing factors:
- Jake Bennett (BOS) allowed 3 more ER than projected (6 vs 3)
MIN@DET — ✅ hit
- Predicted DET 4-5 (conf +0.05, lean) · actual DET 2-7
- Root cause: solid_correct_call
- Errors: winner correct · Brier 0.226629 · team-run err 4.0 · total bias +0
NYM@MIA — ✅ hit
- Predicted NYM 7-4 (conf -0.08, lean) · actual NYM 15-14
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.210168 · team-run err 18.0 · total bias -18
- Contributing factors:
- total runs under-projected by 18 (11 vs 29)
- NYM offense under-projected by 8
- MIA offense under-projected by 10
- Janson Junk (MIA) allowed 5 more ER than projected (8 vs 3)
PIT@CHW — ✅ hit
- Predicted PIT 5-4 (conf -0.20, moderate) · actual PIT 4-2
- Root cause: strong_correct_call
- Errors: winner correct · Brier 0.161277 · team-run err 3.0 · total bias +3
- Contributing factors:
- total runs over-projected by 3 (9 vs 6)
- Davis Martin (CHW) allowed 3 fewer ER than projected (1 vs 4)
STL@SF — ❌ miss
- Predicted STL 5-4 (conf -0.04, lean) · actual SF 6-7
- Root cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.27145 · team-run err 4.0 · total bias -4
- Contributing factors:
- total runs under-projected by 4 (9 vs 13)
- SF offense under-projected by 3
- Blade Tidwell (SF) allowed 3 more ER than projected (4 vs 1)
TB@ATL — ✅ hit
- Predicted TB 4-3 (conf -0.15, moderate) · actual TB 7-2
- Root cause: solid_correct_call
- Errors: winner correct · Brier 0.178782 · team-run err 4.0 · total bias -2
- Contributing factors:
- TB offense under-projected by 3
- Reynaldo López (ATL) allowed 3 more ER than projected (6 vs 3)
TEX@SEA — ❌ miss
- Predicted TEX 6-4 (conf -0.10, lean) · actual SEA 2-3
- Root cause: Run environment far lower than projected (over-dispersed)
- Errors: winner WRONG · Brier 0.301097 · team-run err 5.0 · total bias +5
- Contributing factors:
- total runs over-projected by 5 (10 vs 5)
- TEX offense over-projected by 4
TOR@OAK — ❌ miss
- Predicted TOR 6-5 (conf -0.07, lean) · actual OAK 0-2
- Root cause: Run environment far lower than projected (over-dispersed)
- Errors: winner WRONG · Brier 0.287464 · team-run err 9.0 · total bias +9
- Contributing factors:
- total runs over-projected by 9 (11 vs 2)
- TOR offense over-projected by 6
- OAK offense over-projected by 3
- Brady Basso (OAK) allowed 3 fewer ER than projected (0 vs 3)
WAS@SD — ✅ hit
- Predicted SD 4-5 (conf +0.05, lean) · actual SD 2-9
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.226103 · team-run err 6.0 · total bias -2
- Contributing factors:
- SD offense under-projected by 4
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: 1 helped vs 2 hurt
- Would help:
- CLE@BAL (miss): lost a 0.12-confidence pick; wider tails lower overconfidence
- Would hurt / risk:
- COL@NYY (hit): strong correct call at 0.57; widening softens a good edge
- PIT@CHW (hit): strong correct call at 0.20; widening softens a good edge
player.pitcher.v4 form weights / player.pitcher_prior_games
- Targets: starter_er_mae, starter_outs_mae
- Net: 11 helped vs 2 hurt
- Would help:
- CHC@MIL (hit): starter ER off by 3
- CIN@LAD (hit): starter ER off by 3
- CLE@BAL (miss): starter ER off by 5
- COL@NYY (hit): starter ER off by 3
- HOU@PHI (hit): starter ER off by 4
- LAA@BOS (miss): starter ER off by 3
- NYM@MIA (hit): starter ER off by 5
- PIT@CHW (hit): starter ER off by 3
- STL@SF (miss): starter ER off by 3
- TB@ATL (hit): starter ER off by 3
- TOR@OAK (miss): starter ER off by 3
- Would hurt / risk:
- MIN@DET (hit): starter projection was accurate (ER off 1); reweight risks disturbing it
- WAS@SD (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: 12 helped vs 0 hurt
- Would help:
- ARI@KC (hit): team runs off by 5
- CIN@LAD (hit): team runs off by 10
- CLE@BAL (miss): team runs off by 7
- COL@NYY (hit): team runs off by 6
- HOU@PHI (hit): team runs off by 11
- MIN@DET (hit): team runs off by 4
- NYM@MIA (hit): team runs off by 18
- STL@SF (miss): team runs off by 4
- TB@ATL (hit): team runs off by 4
- TEX@SEA (miss): team runs off by 5
- TOR@OAK (miss): team runs off by 9
- WAS@SD (hit): team runs off by 6