Deep slate diagnosis — 20260925
- Games: 17 · hits 11 · misses 6 · winner accuracy 0.6471
- Mean total-run bias on losses: 1.0 (negative = under-projected)
- Mean team-run error on losses: 5.333 · mean Brier on losses: 0.271
Loss primary drivers
- Several errors of similar size: 1
- Run environment far lower than projected (over-dispersed): 1
- Run environment far higher than projected (under-dispersed): 1
- Starting-pitcher projection was wrong: 1
- Genuine toss-up that flipped: 2
High-level causal issue register
[HIGH] Blocking canonical artifact error
- Domain:
artifact_integrity· affected: 20260925_LAD@SF - Evidence: structural audit totals: {'critical': 0, 'error': 1, 'warning': 0, 'info': 124}
- 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.
[HIGH] Validated run models explain very little holdout variance
- Domain:
model_validation· affected: ARI@SD, ATL@MIA, BAL@NYY, BAL@NYY, CHC@BOS, CHC@BOS, CIN@TOR, CLE@KC, COL@CHW, HOU@OAK, LAA@SEA, LAD@SF, NYM@WAS, PIT@DET, STL@MIL, TB@PHI, TEX@MIN - Evidence: home/away/total R² = 0.0104/0.0304/0.0058
- 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@SD, ATL@MIA, BAL@NYY, BAL@NYY, CHC@BOS, CHC@BOS, CIN@TOR, CLE@KC, COL@CHW, HOU@OAK, LAA@SEA, LAD@SF, NYM@WAS, PIT@DET, STL@MIL, TB@PHI, TEX@MIN - Evidence: 17/17 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] Material calibrated-to-published movements have recorded lineage
- Domain:
probability_lineage· affected: ATL@MIA, BAL@NYY, CLE@KC, LAD@SF - Evidence: 4 material movement(s), all explained by named score-coherence and/or recency transformations
- Action: Keep showing every probability layer and the named transformation between them.
- Do not infer: A published probability above the calibrated one is not a governor bypass when a recorded transformation explains it.
[INFO] Simulation produced no winner-direction intervention on this slate
- Domain:
simulation· affected: ARI@SD, ATL@MIA, BAL@NYY, BAL@NYY, CHC@BOS, CHC@BOS, CIN@TOR, CLE@KC, COL@CHW, HOU@OAK, LAA@SEA, LAD@SF, NYM@WAS, PIT@DET, STL@MIL, TB@PHI, TEX@MIN - 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: 20260915, 20260916, 20260917, 20260918, 20260919, 20260920, 20260921, 20260922, 20260923, 20260924, 20260925 (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.4, 0.6667, 0.4444, 0.6667, 0.7333, 0.6, 0.3333, 0.4, 0.5, 0.6667, 0.6471]weighted_calibration_error: improving · series [0.2795, 0.1661, 0.1016, 0.1247, 0.3458, 0.3184, 0.2028, 0.1881, 0.1108, 0.1701, 0.1302]margin_bias: regressing · series [-1.667, -1.133, -2.111, -2.0, -0.667, -1.533, -2.667, -1.867, -1.188, -1.083, -1.706]mean_team_run_error_on_losses: flat · series [5.556, 6.4, 3.6, 5.2, 6.5, 6.5, 3.0, 6.222, 5.75, 3.5, 5.333]
Pipeline stage quality
historical_ml: winner 12/17 (0.7059), team-run MAE 2.6129, margin MAE 2.8646variance_applied: winner 10/17 (0.5882), team-run MAE 2.5882, margin MAE 2.8235enhanced_prediction: winner 11/17 (0.6471), team-run MAE 2.7059, margin MAE 2.7059embedded_savant_run_environment: winner 10/17 (0.5882), team-run MAE 2.7353, margin MAE 2.7647fundamental_edge_target_review: winner 11/17 (0.6471), team-run MAE 2.7353, margin MAE 2.7647capped_target: winner 11/17 (0.6471), team-run MAE 2.7353, margin MAE 2.7647simulation_result: winner 11/17 (0.6471), team-run MAE 2.7353, margin MAE 2.7647published_final: winner 11/17 (0.6471), team-run MAE 2.7353, margin MAE 2.7647
Probability lineage
- ARI@SD: raw 0.5 → calibrated 0.5073 → published 0.5053; published probability matches the calibrated/governed value
- ATL@MIA: raw 0.5639 → calibrated 0.5608 → published 0.5344; score coherence followed by matchup-recency guardrail
- BAL@NYY: raw 0.5 → calibrated 0.505 → published 0.505; published probability matches the calibrated/governed value
- BAL@NYY: raw 0.5 → calibrated 0.5613 → published 0.5116; score coherence followed by matchup-recency guardrail
- CHC@BOS: raw 0.5 → calibrated 0.505 → published 0.505; published probability matches the calibrated/governed value
- CHC@BOS: raw 0.5734 → calibrated 0.5671 → published 0.557; no recorded transformation explains the publication delta
- CIN@TOR: raw 0.6693 → calibrated 0.6358 → published 0.6358; published probability matches the calibrated/governed value
- CLE@KC: raw 0.5711 → calibrated 0.6175 → published 0.56; score coherence followed by matchup-recency guardrail
- COL@CHW: raw 0.7841 → calibrated 0.723 → published 0.723; published probability matches the calibrated/governed value
- HOU@OAK: raw 0.5644 → calibrated 0.5546 → published 0.5394; score coherence followed by matchup-recency guardrail
- LAA@SEA: raw 0.5399 → calibrated 0.5249 → published 0.518; score coherence followed by matchup-recency guardrail
- LAD@SF: raw 0.6683 → calibrated 0.6372 → published 0.5661; score coherence followed by matchup-recency guardrail
- NYM@WAS: raw 0.5265 → calibrated 0.5176 → published 0.5127; published probability matches the calibrated/governed value
- PIT@DET: raw 0.5 → calibrated 0.5073 → published 0.505; published probability matches the calibrated/governed value
- STL@MIL: raw 0.5537 → calibrated 0.5585 → published 0.5423; score coherence followed by matchup-recency guardrail
- TB@PHI: raw 0.5494 → calibrated 0.5409 → published 0.5347; no recorded transformation explains the publication delta
- TEX@MIN: raw 0.5613 → calibrated 0.5497 → published 0.5423; no recorded transformation explains the publication delta
Every game, in detail
ARI@SD — ✅ hit
- Predicted ARI 6-5 (conf -0.01, toss_up) · actual ARI 11-4
- Root cause: toss_up_went_our_way
- Errors: winner correct · Brier 0.244765 · team-run err 6.0 · total bias -4
- Contributing factors:
- total runs under-projected by 4 (11 vs 15)
- ARI offense under-projected by 5
- Casey Mize (SD) allowed 4 more ER than projected (7 vs 3)
ATL@MIA — ❌ miss
- Predicted ATL 5-4 (conf -0.07, lean) · actual MIA 0-3
- Root cause: Run environment far lower than projected (over-dispersed)
- Errors: winner WRONG · Brier 0.285616 · team-run err 6.0 · total bias +6
- Contributing factors:
- total runs over-projected by 6 (9 vs 3)
- ATL offense over-projected by 5
BAL@NYY — ❌ miss
- Predicted NYY 5-6 (conf +0.01, toss_up) · actual BAL 10-2
- Root cause: Genuine toss-up that flipped
- Secondary cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.255025 · team-run err 9.0 · total bias -1
- Contributing factors:
- BAL offense under-projected by 5
- NYY offense over-projected by 4
BAL@NYY — ✅ hit
- Predicted NYY 5-6 (conf +0.02, toss_up) · actual NYY 3-6
- Root cause: toss_up_went_our_way
- Errors: winner correct · Brier 0.238555 · team-run err 2.0 · total bias +2
CHC@BOS — ❌ miss
- Predicted CHC 5-4 (conf -0.01, toss_up) · actual BOS 3-4
- Root cause: Genuine toss-up that flipped
- Errors: winner WRONG · Brier 0.255025 · team-run err 2.0 · total bias +2
CHC@BOS — ✅ hit
- Predicted BOS 3-4 (conf +0.11, moderate) · actual BOS 0-2
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.196246 · team-run err 5.0 · total bias +5
- Contributing factors:
- total runs over-projected by 5 (7 vs 2)
- CHC offense over-projected by 3
CIN@TOR — ✅ hit
- Predicted TOR 3-5 (conf +0.27, strong) · actual TOR 5-6
- Root cause: strong_correct_call
- Errors: winner correct · Brier 0.132606 · team-run err 3.0 · total bias -3
- Contributing factors:
- total runs under-projected by 3 (8 vs 11)
CLE@KC — ✅ hit
- Predicted CLE 4-3 (conf -0.12, moderate) · actual CLE 12-9
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.1936 · team-run err 14.0 · total bias -14
- Contributing factors:
- total runs under-projected by 14 (7 vs 21)
- CLE offense under-projected by 8
- KC offense under-projected by 6
- Noah Cameron (KC) allowed 4 more ER than projected (6 vs 2)
COL@CHW — ✅ hit
- Predicted CHW 4-9 (conf +0.45, strong) · actual CHW 1-6
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.076722 · 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
- CHW offense over-projected by 3
HOU@OAK — ❌ miss
- Predicted HOU 5-4 (conf -0.08, lean) · actual OAK 5-6
- Root cause: Several errors of similar size
- Errors: winner WRONG · Brier 0.29098 · team-run err 2.0 · total bias -2
LAA@SEA — ✅ hit
- Predicted LAA 4-3 (conf -0.04, toss_up) · actual LAA 7-5
- Root cause: toss_up_went_our_way
- Errors: winner correct · Brier 0.232309 · team-run err 5.0 · total bias -5
- Contributing factors:
- total runs under-projected by 5 (7 vs 12)
- LAA offense under-projected by 3
- Reid Detmers (LAA) allowed 3 fewer ER than projected (0 vs 3)
LAD@SF — ✅ hit
- Predicted LAD 6-2 (conf -0.13, moderate) · actual LAD 2-0
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.188282 · team-run err 6.0 · total bias +6
- Contributing factors:
- total runs over-projected by 6 (8 vs 2)
- LAD offense over-projected by 4
NYM@WAS — ✅ hit
- Predicted WAS 4-5 (conf +0.03, toss_up) · actual WAS 6-7
- Root cause: toss_up_went_our_way
- Errors: winner correct · Brier 0.23742 · team-run err 4.0 · total bias -4
- Contributing factors:
- total runs under-projected by 4 (9 vs 13)
- Andrew Alvarez (WAS) allowed 3 more ER than projected (5 vs 2)
PIT@DET — ❌ miss
- Predicted PIT 5-4 (conf -0.01, toss_up) · actual DET 7-8
- Root cause: Run environment far higher than projected (under-dispersed)
- Secondary cause: Genuine toss-up that flipped
- Errors: winner WRONG · Brier 0.255025 · team-run err 6.0 · total bias -6
- Contributing factors:
- total runs under-projected by 6 (9 vs 15)
- DET offense under-projected by 4
- Bubba Chandler (PIT) allowed 3 more ER than projected (6 vs 3)
STL@MIL — ✅ hit
- Predicted MIL 4-5 (conf +0.08, lean) · actual MIL 4-8
- Root cause: solid_correct_call
- Errors: winner correct · Brier 0.209515 · team-run err 3.0 · total bias -3
- Contributing factors:
- total runs under-projected by 3 (9 vs 12)
- MIL offense under-projected by 3
TB@PHI — ❌ miss
- Predicted PHI 4-5 (conf +0.07, lean) · actual TB 2-0
- Root cause: Starting-pitcher projection was wrong
- Secondary cause: Run environment far lower than projected (over-dispersed)
- Errors: winner WRONG · Brier 0.285934 · team-run err 7.0 · total bias +7
- Contributing factors:
- total runs over-projected by 7 (9 vs 2)
- PHI offense over-projected by 5
- Freddy Peralta (TB) allowed 5 fewer ER than projected (0 vs 5)
TEX@MIN — ✅ hit
- Predicted MIN 4-5 (conf +0.08, lean) · actual MIN 2-10
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.209524 · team-run err 7.0 · total bias -3
- Contributing factors:
- total runs under-projected by 3 (9 vs 12)
- MIN offense under-projected by 5
- Jacob deGrom (TEX) allowed 5 more ER than projected (8 vs 3)
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: 0 helped vs 2 hurt
- Would hurt / risk:
- CIN@TOR (hit): strong correct call at 0.27; widening softens a good edge
- COL@CHW (hit): strong correct call at 0.45; widening softens a good edge
player.pitcher.v4 form weights / player.pitcher_prior_games
- Targets: starter_er_mae, starter_outs_mae
- Net: 7 helped vs 3 hurt
- Would help:
- ARI@SD (hit): starter ER off by 4
- CLE@KC (hit): starter ER off by 4
- LAA@SEA (hit): starter ER off by 3
- NYM@WAS (hit): starter ER off by 3
- PIT@DET (miss): starter ER off by 3
- TB@PHI (miss): starter ER off by 5
- TEX@MIN (hit): starter ER off by 5
- Would hurt / risk:
- ATL@MIA (miss): starter projection was accurate (ER off 1); reweight risks disturbing it
- BAL@NYY (miss): starter projection was accurate (ER off 1); reweight risks disturbing it
- LAD@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: 12 helped vs 3 hurt
- Would help:
- ARI@SD (hit): team runs off by 6
- ATL@MIA (miss): team runs off by 6
- BAL@NYY (miss): team runs off by 9
- CHC@BOS (hit): team runs off by 5
- CLE@KC (hit): team runs off by 14
- COL@CHW (hit): team runs off by 6
- LAA@SEA (hit): team runs off by 5
- LAD@SF (hit): team runs off by 6
- NYM@WAS (hit): team runs off by 4
- PIT@DET (miss): team runs off by 6
- TB@PHI (miss): team runs off by 7
- TEX@MIN (hit): team runs off by 7
- Would hurt / risk:
- BAL@NYY (hit): team runs already close (off 2); reweight risks disturbing it
- CHC@BOS (miss): team runs already close (off 2); reweight risks disturbing it
- HOU@OAK (miss): team runs already close (off 2); reweight risks disturbing it