Deep slate diagnosis — 20260920
- Games: 15 · hits 9 · misses 6 · winner accuracy 0.6
- Mean total-run bias on losses: -0.167 (negative = under-projected)
- Mean team-run error on losses: 6.5 · mean Brier on losses: 0.283
Loss primary drivers
- Small edge on the losing side: 1
- Genuine toss-up that flipped: 3
- Backed the wrong side with real conviction: 2
High-level causal issue register
[HIGH] Canonical artifact warning requires reconciliation
- Domain:
artifact_integrity· affected: slate-wide - Evidence: structural audit totals: {'critical': 0, 'error': 0, 'warning': 2, 'info': 116}
- 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] An intermediate stage materially degraded winner direction
- Domain:
pipeline_stages· affected: MIA@SD, MIN@LAA, PHI@NYM - Evidence: historical_ml → variance_applied changed winner accuracy by -0.2000 (-3 hits)
- Action: List the exact games whose winner flipped at this stage, and keep both the before-stage and after-stage picks in the trace.
- Do not infer: Even if a later stage recovers the pick, this unstable step is still a risk; do not treat it as harmless.
[HIGH] Published confidence buckets were poorly aligned on this slate
- Domain:
calibration· affected: ATL@HOU, BOS@TB, CHC@CIN, DET@CHW, KC@PIT, MIA@SD, MIL@BAL, MIN@LAA, NYY@ARI, OAK@CLE, PHI@NYM, SEA@COL, SF@LAD, TOR@TEX, WAS@STL - Evidence: weighted absolute calibration error 0.3184 across 15 games
- Action: Watch the same confidence buckets over the full rolling window before changing any calibration weight.
- Do not infer: A single slate has far too few games to establish a stable calibration curve.
[HIGH] Validated run models explain very little holdout variance
- Domain:
model_validation· affected: ATL@HOU, BOS@TB, CHC@CIN, DET@CHW, KC@PIT, MIA@SD, MIL@BAL, MIN@LAA, NYY@ARI, OAK@CLE, PHI@NYM, SEA@COL, SF@LAD, TOR@TEX, WAS@STL - Evidence: home/away/total R² = 0.0082/0.0273/0.0092
- 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: ATL@HOU, BOS@TB, CHC@CIN, DET@CHW, KC@PIT, MIA@SD, MIL@BAL, MIN@LAA, NYY@ARI, OAK@CLE, PHI@NYM, SEA@COL, SF@LAD, TOR@TEX, WAS@STL - 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] Material calibrated-to-published movements have recorded lineage
- Domain:
probability_lineage· affected: ATL@HOU, CHC@CIN, DET@CHW, KC@PIT, MIA@SD, NYY@ARI, OAK@CLE, PHI@NYM, SEA@COL, SF@LAD - Evidence: 10 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: ATL@HOU, BOS@TB, CHC@CIN, DET@CHW, KC@PIT, MIA@SD, MIL@BAL, MIN@LAA, NYY@ARI, OAK@CLE, PHI@NYM, SEA@COL, SF@LAD, TOR@TEX, WAS@STL - 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: 20260910, 20260911, 20260912, 20260913, 20260914, 20260915, 20260916, 20260917, 20260918, 20260919, 20260920 (10 prior slates loaded)
- Highest-confidence pick loss streak: 0 slate(s)
- Actionable pattern detected: True
Escalated persistent patterns
- pipeline_winner_instability — 3 consecutive slates (5 in window)
- Target lever(s): code/diagnostic — no parameter
- Direction: preserve base_ml_winner before integer rounding (code fix)
- Guardrail: pipeline_winner_instability has persisted 3 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.
- 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: flat · series [0.6, 0.6667, 0.5333, 0.6, 0.7, 0.4, 0.6667, 0.4444, 0.6667, 0.7333, 0.6]weighted_calibration_error: regressing · series [0.1171, 0.2091, 0.1711, 0.0827, 0.2812, 0.2795, 0.1661, 0.1016, 0.1247, 0.3458, 0.3184]margin_bias: improving · series [-1.0, -2.933, -2.667, -1.8, -0.4, -1.667, -1.133, -2.111, -2.0, -0.667, -1.533]mean_team_run_error_on_losses: regressing · series [6.5, 5.0, 6.143, 5.0, 6.333, 5.556, 6.4, 3.6, 5.2, 6.5, 6.5]
Pipeline stage quality
historical_ml: winner 12/15 (0.8), team-run MAE 2.4648, margin MAE 3.4248variance_applied: winner 9/15 (0.6), team-run MAE 2.5, margin MAE 3.5333enhanced_prediction: winner 9/15 (0.6), team-run MAE 2.8667, margin MAE 3.4667embedded_savant_run_environment: winner 9/15 (0.6), team-run MAE 2.8667, margin MAE 3.7333fundamental_edge_target_review: winner 9/15 (0.6), team-run MAE 2.9, margin MAE 3.8capped_target: winner 9/15 (0.6), team-run MAE 2.9, margin MAE 3.8simulation_result: winner 9/15 (0.6), team-run MAE 2.9, margin MAE 3.8published_final: winner 9/15 (0.6), team-run MAE 2.9, margin MAE 3.8
Probability lineage
- ATL@HOU: raw 0.5664 → calibrated 0.6219 → published 0.58; score coherence followed by matchup-recency guardrail
- BOS@TB: raw 0.5964 → calibrated 0.5716 → published 0.5517; score coherence followed by matchup-recency guardrail
- CHC@CIN: raw 0.6623 → calibrated 0.7074 → published 0.56; score coherence followed by matchup-recency guardrail
- DET@CHW: raw 0.6209 → calibrated 0.617 → published 0.56; score coherence followed by matchup-recency guardrail
- KC@PIT: raw 0.6997 → calibrated 0.6257 → published 0.5728; score coherence followed by matchup-recency guardrail
- MIA@SD: raw 0.6539 → calibrated 0.689 → published 0.58; score coherence followed by matchup-recency guardrail
- MIL@BAL: raw 0.8086 → calibrated 0.6292 → published 0.6292; published probability matches the calibrated/governed value
- MIN@LAA: raw 0.5 → calibrated 0.5074 → published 0.5054; published probability matches the calibrated/governed value
- NYY@ARI: raw 0.5543 → calibrated 0.6152 → published 0.5449; score coherence followed by matchup-recency guardrail
- OAK@CLE: raw 0.7332 → calibrated 0.7084 → published 0.58; score coherence followed by matchup-recency guardrail
- PHI@NYM: raw 0.5446 → calibrated 0.5386 → published 0.5173; score coherence followed by matchup-recency guardrail
- SEA@COL: raw 0.6611 → calibrated 0.6741 → published 0.56; score coherence followed by matchup-recency guardrail
- SF@LAD: raw 0.7823 → calibrated 0.686 → published 0.58; score coherence followed by matchup-recency guardrail
- TOR@TEX: raw 0.5 → calibrated 0.5594 → published 0.5505; score coherence followed by matchup-recency guardrail
- WAS@STL: raw 0.5 → calibrated 0.5296 → published 0.5125; score coherence followed by matchup-recency guardrail
Every game, in detail
ATL@HOU — ✅ hit
- Predicted ATL 5-3 (conf -0.16, moderate) · actual ATL 4-2
- Root cause: strong_correct_call
- Errors: winner correct · Brier 0.1764 · team-run err 2.0 · total bias +2
- Contributing factors:
- Hunter Brown (HOU) allowed 4 fewer ER than projected (0 vs 4)
BOS@TB — ✅ hit
- Predicted TB 4-5 (conf +0.10, moderate) · actual TB 1-5
- Root cause: strong_correct_call
- Errors: winner correct · Brier 0.200953 · team-run err 3.0 · total bias +3
- Contributing factors:
- total runs over-projected by 3 (9 vs 6)
- BOS offense over-projected by 3
- Griffin Jax (TB) allowed 3 fewer ER than projected (0 vs 3)
CHC@CIN — ✅ hit
- Predicted CHC 8-4 (conf -0.12, moderate) · actual CHC 9-1
- Root cause: solid_correct_call
- Errors: winner correct · Brier 0.1936 · team-run err 4.0 · total bias +2
- Contributing factors:
- CIN offense over-projected by 3
- David Peterson (CHC) allowed 3 fewer ER than projected (1 vs 4)
DET@CHW — ❌ miss
- Predicted DET 5-4 (conf -0.12, moderate) · actual CHW 1-8
- Root cause: Backed the wrong side with real conviction
- Secondary cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.3136 · team-run err 8.0 · total bias +0
- Contributing factors:
- DET offense over-projected by 4
- CHW offense under-projected by 4
- Davis Martin (CHW) allowed 3 fewer ER than projected (0 vs 3)
- committed to DET at 0.12 confidence and it lost
KC@PIT — ✅ hit
- Predicted PIT 2-3 (conf +0.15, moderate) · actual PIT 3-4
- Root cause: strong_correct_call
- Errors: winner correct · Brier 0.182501 · team-run err 2.0 · total bias -2
MIA@SD — ✅ hit
- Predicted SD 4-6 (conf +0.16, moderate) · actual SD 3-7
- Root cause: strong_correct_call
- Errors: winner correct · Brier 0.1764 · team-run err 2.0 · total bias +0
MIL@BAL — ✅ hit
- Predicted MIL 7-1 (conf -0.26, strong) · actual MIL 3-0
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.137478 · team-run err 5.0 · total bias +5
- Contributing factors:
- total runs over-projected by 5 (8 vs 3)
- MIL offense over-projected by 4
MIN@LAA — ❌ miss
- Predicted LAA 4-5 (conf +0.01, toss_up) · actual MIN 8-0
- Root cause: Genuine toss-up that flipped
- Secondary cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.255412 · team-run err 9.0 · total bias +1
- Contributing factors:
- MIN offense under-projected by 4
- LAA offense over-projected by 5
NYY@ARI — ❌ miss
- Predicted NYY 6-4 (conf -0.09, lean) · actual ARI 4-8
- Root cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.296897 · team-run err 6.0 · total bias -2
- Contributing factors:
- ARI offense under-projected by 4
OAK@CLE — ✅ hit
- Predicted CLE 4-7 (conf +0.16, moderate) · actual CLE 0-1
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.1764 · team-run err 10.0 · total bias +10
- Contributing factors:
- total runs over-projected by 10 (11 vs 1)
- OAK offense over-projected by 4
- CLE offense over-projected by 6
- Jack Perkins (OAK) allowed 4 fewer ER than projected (1 vs 5)
- Gavin Williams (CLE) allowed 3 fewer ER than projected (0 vs 3)
PHI@NYM — ❌ miss
- Predicted NYM 4-5 (conf +0.03, toss_up) · actual PHI 7-2
- Root cause: Genuine toss-up that flipped
- Secondary cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.267623 · team-run err 6.0 · total bias +0
- Contributing factors:
- PHI offense under-projected by 3
- NYM offense over-projected by 3
SEA@COL — ✅ hit
- Predicted SEA 9-6 (conf -0.12, moderate) · actual SEA 2-1
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.1936 · team-run err 12.0 · total bias +12
- Contributing factors:
- total runs over-projected by 12 (15 vs 3)
- SEA offense over-projected by 7
- COL offense over-projected by 5
SF@LAD — ✅ hit
- Predicted LAD 4-8 (conf +0.16, moderate) · actual LAD 1-3
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.1764 · team-run err 8.0 · total bias +8
- Contributing factors:
- total runs over-projected by 8 (12 vs 4)
- SF offense over-projected by 3
- LAD offense over-projected by 5
- Matt Wilkinson (SF) allowed 4 fewer ER than projected (0 vs 4)
TOR@TEX — ❌ miss
- Predicted TEX 2-4 (conf +0.10, moderate) · actual TOR 7-2
- Root cause: Backed the wrong side with real conviction
- Secondary cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.303012 · team-run err 7.0 · total bias -3
- Contributing factors:
- total runs under-projected by 3 (6 vs 9)
- TOR offense under-projected by 5
- Spencer Miles (TOR) allowed 3 fewer ER than projected (0 vs 3)
- committed to TEX at 0.10 confidence and it lost
WAS@STL — ❌ miss
- Predicted WAS 6-5 (conf -0.03, toss_up) · actual STL 3-5
- Root cause: Genuine toss-up that flipped
- Errors: winner WRONG · Brier 0.262651 · team-run err 3.0 · total bias +3
- Contributing factors:
- total runs over-projected by 3 (11 vs 8)
- WAS offense over-projected by 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: 2 helped vs 1 hurt
- Would help:
- DET@CHW (miss): lost a 0.12-confidence pick; wider tails lower overconfidence
- TOR@TEX (miss): lost a 0.10-confidence pick; wider tails lower overconfidence
- Would hurt / risk:
- MIL@BAL (hit): strong correct call at 0.26; 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:
- ATL@HOU (hit): starter ER off by 4
- BOS@TB (hit): starter ER off by 3
- CHC@CIN (hit): starter ER off by 3
- DET@CHW (miss): starter ER off by 3
- OAK@CLE (hit): starter ER off by 4
- SF@LAD (hit): starter ER off by 4
- TOR@TEX (miss): starter ER off by 3
- Would hurt / risk:
- KC@PIT (hit): starter projection was accurate (ER off 1); reweight risks disturbing it
- MIL@BAL (hit): starter projection was accurate (ER off 1); reweight risks disturbing it
- WAS@STL (miss): 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:
- CHC@CIN (hit): team runs off by 4
- DET@CHW (miss): team runs off by 8
- MIL@BAL (hit): team runs off by 5
- MIN@LAA (miss): team runs off by 9
- NYY@ARI (miss): team runs off by 6
- OAK@CLE (hit): team runs off by 10
- PHI@NYM (miss): team runs off by 6
- SEA@COL (hit): team runs off by 12
- SF@LAD (hit): team runs off by 8
- TOR@TEX (miss): team runs off by 7
- Would hurt / risk:
- ATL@HOU (hit): team runs already close (off 2); reweight risks disturbing it
- KC@PIT (hit): team runs already close (off 2); reweight risks disturbing it
- MIA@SD (hit): team runs already close (off 2); reweight risks disturbing it