Deep slate report — 20261006

Generated 2026-10-07T05:23:31.725862-04:00 · schema deep_slate_diagnosis_v3 · fuses prediction review + forensic deep audit + official starter lines, with a Luna post-mortem.

Process, end to end

1. Settle review
complete
2 games vs official finals
2. Forensic deep audit
complete
per-game probability + pitcher impact
3. Deep diagnosis
built
0 losses attributed to a root cause
4. Luna post-mortem
received
9/8 sections; 2/2 games; 5/5 causes; 7/7 sources
5. Adjustment
applied_to_production
confidence.empirical_max_weight
6. Applied to production
champion changed
armed for rollback; next slates measure improve/worsen

Slate summary

Games
2
Hits
2
Misses
0
Winner accuracy
100%
Mean Brier (losses)
n/a
Mean total-run bias (losses)
n/a

Source coverage receipt

Which reports actually fed the diagnosis. A source shown as missing was not silently assumed.

SourceStatusEvidence suppliedPathBytes
prediction reviewloadedofficial outcomes and scoring errors/app/output/reports/prediction_review_20261006.json19282
forensic deep auditloadedprobability, provenance, starter and decision contracts/app/output/reports/PREDICTION_SYSTEM_DEEP_AUDIT_20261006.json45953
continuous learningloadedpipeline-stage quality, calibration, probability lineage, score distribution, and official starter comparisons/app/output/learning/continuous_learning_daily_20261006.json280749
detailed reportloadedfull game and simulation rendering/app/output/reports/detailed_20261006.html57951
ultra detailed player auditloadedplayer-level prediction trace/app/output/reports/20261006_ultra_detailed_player_audit.html3509264
structural auditloadedall invariant findings/app/output/reports/audit_report_20261006.html240335
integrity revision auditloadedstructural audit of every post-start revision of the slate's games/app/output/reports/audit_report_20261006_integrity_revision.html824693

High-level causal issue register

Deterministic findings across data integrity, model validation, calibration, score distribution, pipeline stages, simulation, and coverage. Critical is reserved for broken evidence or an unexplained contract violation; high marks material model/process risk. Each row pairs the action to take (Do this) with the wrong conclusion to avoid (Don't conclude).

SeverityDomainFinding and evidenceAffectedAction & guardrail
CRITICALprobability_lineagePublished probability differs materially without a recorded transformation
1 game(s) have an unexplained ≥2pp calibrated-to-published delta
MIL@SD
Do thisBlock any promotion until the missing probability transformation is recorded and reconciled.
Don't concludeDo not assume the probability governor was bypassed until you have traced the pick-side math.
HIGHcalibrationPublished confidence buckets were poorly aligned on this slate
weighted absolute calibration error 0.4642 across 2 games
LAD@ATL, MIL@SD
Do thisWatch the same confidence buckets over the full rolling window before changing any calibration weight.
Don't concludeA single slate has far too few games to establish a stable calibration curve.
HIGHmodel_validationValidated run models explain very little holdout variance
home/away/total R² = 0.0021/0.0309/0.0024
LAD@ATL, MIL@SD
Do thisTreat exact run scores as low-confidence estimates, and look for stronger features or a better target before tuning the score tails.
Don't concludeA small positive R² only means the model beats guessing the average; it does not make the exact scores reliable.
INFOcoverageEvery settled game received structural QA
2/2 games structurally audited
LAD@ATL, MIL@SD
Do thisKeep the per-game audit receipt in every report.
Don't concludeFull audit coverage does not cancel the findings raised inside the audited games.
INFOsimulationSimulation produced no winner-direction intervention on this slate
flip candidates 0; published flips 0
LAD@ATL, MIL@SD
Do thisMeasure the simulation's contribution across rolling slates, separating score realization from winner flipping.
Don't concludeZero winner flips is not a defect and does not mean the simulation did no score-reconciliation work.

Cross-slate trends (persistent-pattern memory)

Window: 20260926, 20260927, , 20260929, 20260930, 20261001, , 20261003, 20261004, 20261005, 20261006 (10 prior slates loaded). Highest-confidence pick loss streak: 0 slate(s). Actionable pattern detected.

Escalated persistent patterns

A finding that has repeated at or beyond the escalation streak is no longer single-slate noise. It carries its target registered lever and an action-oriented guardrail.

FindingPersistenceTarget lever(s)DirectionGuardrail
simulation_inert_on_slate11 consecutive · 11 in windowsimulation.allow_scoreconfirm the simulation module is running, not silently no-opingsimulation_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.
single_slate_calibration_instability4 consecutive · 8 in windowconfidence.empirical_max_weight, confidence.base_cap, confidence.moderate_capincrease empirical shrinkagesingle_slate_calibration_instability has persisted 4 consecutive slates; this is no longer single-slate noise. Treat it as an actionable pattern and propose a bounded shadow experiment against a target lever.
weak_run_model_signal4 consecutive · 9 in windowtraining.xgb.n_estimators, training.xgb.max_depth, training.xgb.learning_rateinvestigate features/target via isolated training backtest (manual)weak_run_model_signal has persisted 4 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.

Finding streaks across the window

FindingConsecutive slatesIncidencePresent nowFix type
pipeline_winner_instability03/11nocode/diagnostic
score_margin_compression05/11noparam
simulation_inert_on_slate1111/11yescode/diagnostic
single_slate_calibration_instability48/11yesparam
weak_run_model_signal49/11yescode/diagnostic

Metric direction across the window

MetricDirectionSeries (old → new)
winner_accuracyimproving0.5385, 0.6429, –, 1.0, 0.75, 1.0, –, 1.0, 0.5, 0.0, 1.0
weighted_calibration_errorregressing0.1524, 0.1031, –, 0.4792, 0.2317, 0.4832, –, 0.4705, 0.4806, 0.5291, 0.4642
margin_biasimproving-3.0, -1.571, –, -4.25, -2.75, -3.0, –, -0.25, 0.0, -0.5, -0.5
team_run_error_on_lossesimproving6.167, 4.8, –, –, 2.0, –, –, –, 2.0, 3.5, –

Pipeline stage regression

Every stored stage is scored against the same official finals. A later recovery remains visible; it does not erase an unstable intermediate flip.

StageWinner hitsAccuracyTeam-run MAETotal-run MAEMargin MAE
historical_ml1/250%1.4182.8371.498
variance_applied1/250%1.753.51.5
enhanced_prediction2/2100%1.252.50.5
kpi_layer2/2100%1.252.50.5
embedded_savant_run_environment2/2100%1.252.50.5
fundamental_edge_target_review2/2100%1.252.50.5
capped_target2/2100%1.252.50.5
simulation_result2/2100%1.252.50.5
published_final2/2100%1.252.50.5
TransitionΔ accuracyΔ hitsΔ team-run MAEΔ margin MAEGames whose winner/tie changed
historical_ml → variance_applied000.33170.0021
variance_applied → enhanced_prediction0.51-0.5-1LAD@ATL: ATL → LAD
enhanced_prediction → kpi_layer0000
kpi_layer → embedded_savant_run_environment0000
embedded_savant_run_environment → fundamental_edge_target_review0000
fundamental_edge_target_review → capped_target0000
capped_target → simulation_result0000
simulation_result → published_final0000

Probability lineage and calibration

All columns are pick-side probabilities, so away favorites are not accidentally compared using home-side semantics.

GameOutcomeRaw modelCalibratedGovernorScore coherencePublishedExplanation
LAD@ATLhit0.50.50710.50710.50710.5052published probability matches the calibrated/governed value
MIL@SDhit0.62620.61420.61420.59330.5664no recorded transformation explains the publication delta
Pitcher versus batter: patterns across the whole slate

One blown start is noise. The same failure repeating across the slate is a model problem. These are the repeats.

Sides analyzedBroke on pitchingBroke on offenseBothVarianceMean starter ERA errorMean lineup runs vs proj
40103-1.4-1.25
Trained winner blend: does it reach the published number?

The blend mixes the trained win classifier with the margin-derived probability. It is only worth its weight if its decision survives the downstream reconciliation to the projected score.

1 of 2 games: the blend picked one side and the published number picked the other. The published probability is reconciled to the integer score after the blend runs, so a blend that disagrees with the score is overwritten before publication. On those games the trained classifier changes nothing a reader sees, even where the artifact records winner_changed.

GameTrained p(home)Blended p(home)Blend favouredPublished p(home)Published sideArtifact says winner changedOutcome
LAD@ATL0.6420.568home0.495awayyeshit

Blend side survived on 1 of 2 games; the blend flagged a winner change on 1.

Repeated bias across slates, and the lever that moves it

A bias on one slate is noise. The same sign across slates, large relative to how much it moves between them, is a model defect. Only the ones that pass both tests are turned into a named parameter change; the rest are held deliberately.

starter ERA error (actual minus projected)

Mean -0.23 over 10 slates (sign shared by 0.50 of them, z = -0.57).

starters beat their projection: the run model credits opposing offenses with more than they produced.

Hold: no change: this bias is not separable from slate-to-slate noise yet

5 of 10 slates share the sign, mean -0.23 +/- 0.4 standard error: not separable from noise

lineup runs actual minus projected

Mean -0.45 over 10 slates (sign shared by 0.60 of them, z = -1.39).

lineups scored below projection: the run environment is set too high.

Hold: no change: this bias is not separable from slate-to-slate noise yet

6 of 10 slates share the sign, mean -0.45 +/- 0.32 standard error: not separable from noise

SlateGamesWinner accMean starter ERA errorMean lineup runs vs projSides broke on pitchingSides broke on offense
2026100520.000-1.11-0.752
2026100420.500-1.24-2.002
2026100341.000-0.95-2.254
20261002———
2026100111.0000.000.50
2026093040.7500.780.121
2026092941.000-0.76-0.503
20260928———
20260927140.643-2.33-0.1125
20260926130.5380.550.6934
20260925170.6471.130.50810
20260924120.6671.68-0.67411

Score distribution and margin compression

Narrow predicted margins next to wide actual margins is the signature the score-variance tail is too tight.

Predicted margins ≤2: 2 · Actual margins ≥4: 0
GamePred marginActual marginPred − actual
LAD@ATL12-1
MIL@SD110

Per-game evidence coverage

Expected games
2
Artifacts loaded
2
Structural audits
2
Deep-audit games
2
Learning rows
2
Starter comparisons
2

Every game, in depth (2)

LAD@ATLHIT

Predicted: LAD 4-3 (conf -0.01, toss_up)Actual: LAD 3-1Brier 0.245total bias +3
Root cause: Toss-up that went our way
Evidence-backed diagnosis
Quantified contributing factors
TeamStarterProjectedActualER err
LADYoshinobu Yamamoto1 ER / 19 outs1 ER / 21 outs0
ATLChris Sale2 ER / 18 outs3 ER / 15 outs1
Decision internals: run factors home×0.919 / away×0.98; savant lineup adjustment applied

Player-level breakdown (projected vs actual)

Every value is actual / projected. Run impact approximates how far each hitter's real line moved run expectancy from its projection; it orders the movers and is not a published stat.

Top deviations that drove the game:

Pitcher versus batter: what actually broke this game

Per-pitch matchup fields are not populated in the current feeds, so this is reconstructed from the settled box: each starter's workload-adjusted ERA, the bullpen share behind him, and the opposing lineup's real production against its projection, with the hitters who beat that projection named.

AWAY pitching

Yoshinobu Yamamoto (LAD) threw 21 outs, 1 ER = 1.29 ERA against a projected 1.42 ERA (-0.13 ERA error)

Bullpen behind him: 0 ER over 0 outs.

The HOME lineup he faced produced 1 runs on 5 hits and 0 HR, against a projected 3 runs / 6 hits (-2 runs vs projection).

Who did the damage to him:

  • Lane Thomas: 1-for-3, 0 HR, 0 RBI [+0.47 runs vs projection] season xwOBA 0.311, average - a good day, not a model error
  • Ronald Acuña Jr.: 0-for-3, 0 HR, 0 RBI [+0.33 runs vs projection] season xwOBA 0.366, elite - a good day, not a model error
  • Ozzie Albies: 1-for-4, 0 HR, 0 RBI [+0.31 runs vs projection] season xwOBA 0.273, weak - a good day, not a model error

Verdict: neither side broke materially - the result is closer to variance

HOME pitching

Chris Sale (ATL) threw 15 outs, 3 ER = 5.4 ERA against a projected 3 ERA (2.4 ERA error)

Bullpen behind him: 0 ER over 6 outs.

The AWAY lineup he faced produced 3 runs on 8 hits and 2 HR, against a projected 4 runs / 9 hits (-1 runs vs projection).

Who did the damage to him:

  • Freddie Freeman: 1-for-4, 1 HR, 1 RBI [+1.26 runs vs projection] season xwOBA 0.363, elite - real projection error
  • Mookie Betts: 2-for-5, 0 HR, 0 RBI [+0.94 runs vs projection] season xwOBA 0.339, above average - real projection error
  • Andy Pages: 2-for-4, 0 HR, 0 RBI [+0.94 runs vs projection] season xwOBA 0.343, elite - real projection error

Verdict: offense: the lineup scored well below its projection

Starting pitchers & relievers: actual / projected + context (ERA is workload-aware: ER over 9 innings, so a short blow-up is not read like a quality start; ERA error in parentheses when material. exp BB and exp SO are the continuous rate expectations. The integer beside each is a simulation draw reconciled to the opposing simulated batting box, so it is not the line that ranks pitchers: on the 2026-09-07 slate the integers published 39 walks and 121 strikeouts against 51 and 130 real, while these expectations landed on 50.4 and 132.6.)

PitcherTeamOutsERAERHHRBBexp BBSOexp SOContext (as-of)
LADYoshinobu Yamamoto (Starter)21 / 191.29 / 1.421 / 14 / 30 / 01 / 11.3510 / 46.41venue away: 1.77 vs 3.12 ERA (ok) · opp run factor 0.92 (strong) · 28 prior appearances this season
ATLChris Sale (Starter)15 / 185.4 / 33 / 27 / 62 / 10 / 11.137 / 57.01venue home: 1.83 vs 2.74 ERA (ok) · opp run factor 0.98 (strong) · 29 prior appearances this season
ATLDylan Dodd (Middle Reliever)3 / 30 / 00 / 01 / 10 / 00 / 00.222 / 01.02
ATLDylan Lee (Middle Reliever (High Leverage))3 / 60 / 00 / 00 / 10 / 00 / 00.251 / 21.04

Hitters: actual / projected (sorted by run impact vs projection)

BatterTeamABH2B3BHRRBIRBBSORun impactSeason xwOBASignal
Freddie Freeman (1B)LAD4 / 51 / 10 / 00 / 01 / 01 / 01 / 01 / 01 / 21.260.363 eliteprojection too low
Miguel Rojas (2B)LAD3 / 50 / 20 / 10 / 00 / 00 / 00 / 00 / 01 / 1-1.250.309 averageno signal
Mookie Betts (SS)LAD5 / 52 / 00 / 00 / 00 / 00 / 00 / 10 / 01 / 00.940.339 above averageprojection too low
Andy Pages (CF)LAD4 / 42 / 00 / 00 / 00 / 00 / 01 / 10 / 01 / 10.940.343 eliteprojection too low
Matt Olson (1B)ATL4 / 51 / 10 / 00 / 00 / 10 / 20 / 10 / 02 / 1-0.930.351 elitebad day
Austin Riley (3B)ATL3 / 20 / 00 / 00 / 00 / 00 / 00 / 00 / 22 / 1-0.660.299 below averageprojection too high
Kyle Tucker (RF)LAD4 / 31 / 10 / 10 / 00 / 00 / 10 / 00 / 11 / 0-0.640.331 above averagebad day
Teoscar Hernández (LF)LAD4 / 50 / 10 / 00 / 00 / 00 / 00 / 10 / 00 / 1-0.470.332 above average—
Will Smith (C)LAD4 / 51 / 20 / 00 / 00 / 00 / 00 / 00 / 03 / 0-0.470.389 elite—
Mauricio Dubón (LF)ATL4 / 41 / 20 / 00 / 00 / 00 / 01 / 00 / 00 / 0-0.470.304 average—
Lane Thomas (RF)ATL3 / 31 / 00 / 00 / 00 / 00 / 10 / 00 / 02 / 10.470.311 average—
Ha-Seong Kim (SS)ATL1 / 30 / 10 / 00 / 00 / 00 / 00 / 10 / 00 / 1-0.470.222 weak—
Ronald Acuña Jr. (DH)ATL3 / 50 / 00 / 00 / 00 / 00 / 00 / 01 / 01 / 10.330.366 elite—
Ozzie Albies (2B)ATL4 / 41 / 11 / 00 / 00 / 00 / 00 / 00 / 02 / 10.310.273 weak—
Shohei Ohtani (DH)LAD2 / 50 / 10 / 00 / 00 / 00 / 10 / 01 / 01 / 1-0.140.397 elite—
Enrique Hernández (3B)LAD4 / 41 / 10 / 00 / 01 / 12 / 11 / 10 / 02 / 100.279 weak—
Drake Baldwin (C)ATL4 / 50 / 00 / 00 / 00 / 01 / 00 / 00 / 02 / 000.37 elite—
Michael Harris II (CF)ATL4 / 41 / 10 / 00 / 00 / 00 / 00 / 10 / 00 / 100.342 elite—
Full model trace, player evidence, and audit findings

Fundamental evidence entering the pick

SignalHome-away edgeMeaning
Season quality-0.61positive favors home; negative favors away
Recent form-0.314positive favors home; negative favors away
Starting-pitcher matchup-0.061positive favors home; negative favors away
Composite-0.728positive favors home; negative favors away

Score and confidence evolution

StageAway-home runsConfidenceWhat changed
historical_ml3.81-4.63n/aBase ML historical model prediction
variance_applied4-5n/aDeterministic baseline target (variance factor 1.0)
enhanced_prediction4-30.505Enhanced ML with recent form, H2H, low-score analysis (confidence shrunk by projected_margin_is_one_run, matchup_recency_guardrail)
kpi_layer4-3n/aSavant KPI blend applied to the model target
embedded_savant_run_environment4-3n/aTarget score adjusted by temporal Savant lineup quality versus opposing starter quality
fundamental_edge_target_review4-3n/aRefreshed score target and win probability after Savant/pitcher/team-strength adjustments
capped_target4-3n/aCapped at max 12 realistic runs
simulation_result4-3n/aFinal inning-by-inning simulation result

Official postgame stage attribution

StageBeforeAfterToward final pickWhat changed
variance_applied3.81-4.634-5-0.173Deterministic baseline target (variance factor 1.0)
enhanced_prediction4-54-32Enhanced ML with recent form, H2H, low-score analysis (confidence shrunk by projected_margin_is_one_run, matchup_recency_guardrail)
kpi_layer4-34-3-0Savant KPI blend applied to the model target
embedded_savant_run_environment4-34-3-0Target score adjusted by temporal Savant lineup quality versus opposing starter quality
fundamental_edge_target_review4-34-3-0Refreshed score target and win probability after Savant/pitcher/team-strength adjustments
capped_target4-34-3-0Capped at max 12 realistic runs
simulation_result4-34-3-0Final inning-by-inning simulation result

Largest player-level adjustments from the ultra-detailed trace

These are pregame model adjustments, not claims about actual postgame player error.

TeamPlayerRoleNet effectLargest change
LADYoshinobu Yamamotopitcher / Starterbetterpredicted_H -3
LADMiguel Rojasbatter / 2Bworsepredicted_AB 2.5
ATLChris Salepitcher / Starterworsepredicted_H 2
ATLAustin Rileybatter / 3Bworsepredicted_BB 1.687
LADEnrique Hernándezbatter / 3Bbetterpredicted_AB 1.5
ATLMichael Harris IIbatter / CFworsepredicted_AB -1.44
ATLMatt Olsonbatter / 1Bbetterpredicted_RBI 1.36
LADAlex Vesiapitcher / Middle Reliever (High Leverage)worsepredicted_IP 1.333

Structural audit findings

SeverityRuleFindingSubject
infoRECONCILIATION_PROPAGATIONNo score_target_reconciliation step was used for this game.

MIL@SDHIT

Predicted: SD 4-5 (conf +0.13, moderate)Actual: SD 3-4Brier 0.188total bias +2
Root cause: Strong correct call
Evidence-backed diagnosis
Quantified contributing factors
TeamStarterProjectedActualER err
MILDustin May5 ER / 12 outs2 ER / 9 outs-3
SDNick Pivetta3 ER / 12 outs2 ER / 13 outs-1
Decision internals: run factors home×0.994 / away×0.944; savant lineup adjustment applied

Player-level breakdown (projected vs actual)

Every value is actual / projected. Run impact approximates how far each hitter's real line moved run expectancy from its projection; it orders the movers and is not a published stat.

Top deviations that drove the game:

Starter miss: Dustin May (MIL) posted 6.00 ERA vs projected 11.25 (2 ER in 9 outs); he is materially worse pitching away (5.88 ERA there vs 3.94 on the other side), a venue-role weakness the model under-weighted.

What to do: Enable/raise the venue-split weight (context.venue_adjustment_weight) and validate in shadow; the split is credible for this starter.

Pitcher versus batter: what actually broke this game

Per-pitch matchup fields are not populated in the current feeds, so this is reconstructed from the settled box: each starter's workload-adjusted ERA, the bullpen share behind him, and the opposing lineup's real production against its projection, with the hitters who beat that projection named.

AWAY pitching

Dustin May (MIL) threw 9 outs, 2 ER = 6 ERA against a projected 11.25 ERA (-5.25 ERA error)

Bullpen behind him: 1 ER over 8 outs.

The HOME lineup he faced produced 4 runs on 6 hits and 1 HR, against a projected 5 runs / 10 hits (-1 runs vs projection).

Who did the damage to him:

  • Jake Cronenworth: 2-for-2, 1 HR, 1 RBI [+1.07 runs vs projection] season xwOBA 0.275, weak - a good day, not a model error
  • Manny Machado: 1-for-3, 0 HR, 1 RBI [+0.47 runs vs projection] season xwOBA 0.328, above average - a good day, not a model error

Verdict: neither side broke materially - the result is closer to variance

HOME pitching

Nick Pivetta (SD) threw 13 outs, 2 ER = 4.15 ERA against a projected 6.75 ERA (-2.6 ERA error) only 9 prior appearances in the covered season - the projection had little of his own record to stand on

Bullpen behind him: 1 ER over 5 outs.

The AWAY lineup he faced produced 3 runs on 10 hits and 1 HR, against a projected 4 runs / 8 hits (-1 runs vs projection).

Who did the damage to him:

  • William Contreras: 3-for-4, 1 HR, 1 RBI [+2.34 runs vs projection] season xwOBA 0.334, above average - real projection error
  • Cooper Pratt: 2-for-4, 0 HR, 0 RBI [+0.94 runs vs projection] season xwOBA 0.315, average - a good day, not a model error
  • Christian Yelich: 2-for-4, 0 HR, 1 RBI [+0.33 runs vs projection] season xwOBA 0.308, average - a good day, not a model error

Verdict: neither side broke materially - the result is closer to variance

Starting pitchers & relievers: actual / projected + context (ERA is workload-aware: ER over 9 innings, so a short blow-up is not read like a quality start; ERA error in parentheses when material. exp BB and exp SO are the continuous rate expectations. The integer beside each is a simulation draw reconciled to the opposing simulated batting box, so it is not the line that ranks pitchers: on the 2026-09-07 slate the integers published 39 walks and 121 strikeouts against 51 and 130 real, while these expectations landed on 50.4 and 132.6.)

PitcherTeamOutsERAERHHRBBexp BBSOexp SOContext (as-of)
MILDustin May (Starter)9 / 126 / 11.25 (-5.25)2 / 53 / 80 / 02 / 21.223 / 44.46venue away: 5.88 vs 3.94 ERA (worse here) · opp run factor 0.99 (average) · 31 prior appearances this season
MILJoJo Romero (Long Reliever)5 / 35.4 / 0 (+5.40)1 / 01 / 11 / 00 / 00.282 / 11.04
MILAntonio Senzatela (Middle Reliever (High Leverage))3 / 90 / 00 / 01 / 10 / 00 / 00.41 / 20.74
SDNick Pivetta (Starter)13 / 124.15 / 6.752 / 35 / 41 / 00 / 10.914 / 24.26venue home: 2.96 vs 2.63 ERA (ok) · opp run factor 0.94 (strong) · 9 prior appearances this season
SDBradgley Rodriguez (Middle Reliever (High Leverage))4 / 46.75 / 0 (+6.75)1 / 03 / 20 / 00 / 10.53 / 11.47
SDJason Adam (Setup Man)1 / 30 / 00 / 01 / 00 / 01 / 10.390 / 10.51

Hitters: actual / projected (sorted by run impact vs projection)

BatterTeamABH2B3BHRRBIRBBSORun impactSeason xwOBASignal
William Contreras (C)MIL4 / 43 / 00 / 00 / 01 / 01 / 02 / 01 / 10 / 02.340.334 above averageprojection too low
Dustin Harris (LF)SD2 / 40 / 20 / 00 / 10 / 00 / 20 / 10 / 01 / 1-1.560.314 averageno signal
Jake Bauers (1B)MIL4 / 40 / 20 / 00 / 00 / 10 / 10 / 11 / 04 / 0-1.540.371 elitebad day
Garrett Mitchell (CF)MIL4 / 30 / 10 / 10 / 00 / 00 / 20 / 10 / 13 / 0-1.110.353 elitebad day
Jake Cronenworth (2B)SD2 / 32 / 10 / 00 / 01 / 01 / 01 / 10 / 10 / 01.070.275 weakgood day
Cooper Pratt (SS)MIL4 / 42 / 00 / 00 / 00 / 00 / 01 / 00 / 00 / 30.940.315 averageno signal
Ethan Salas (C)SD3 / 40 / 20 / 00 / 00 / 00 / 00 / 11 / 01 / 1-0.610.227 weakprojection too high
Fernando Tatis Jr. (RF)SD4 / 50 / 10 / 00 / 00 / 01 / 10 / 10 / 01 / 1-0.470.379 elite—
Manny Machado (3B)SD3 / 21 / 00 / 00 / 00 / 01 / 10 / 01 / 10 / 00.470.328 above average—
Samad Taylor (DH)SD3 / 41 / 20 / 00 / 00 / 00 / 01 / 00 / 00 / 0-0.470.309 average—
Christian Yelich (DH)MIL4 / 42 / 20 / 00 / 00 / 01 / 00 / 11 / 00 / 00.330.308 average—
Jackson Merrill (CF)SD4 / 41 / 10 / 10 / 00 / 00 / 11 / 00 / 02 / 2-0.310.347 elite—
Jackson Chourio (LF)MIL4 / 50 / 00 / 00 / 00 / 01 / 00 / 00 / 01 / 200.344 elite—
Brice Turang (2B)MIL4 / 41 / 10 / 00 / 00 / 00 / 00 / 11 / 11 / 000.344 elite—
Sal Frelick (RF)MIL4 / 41 / 10 / 00 / 00 / 00 / 10 / 00 / 00 / 000.281 weak—
Joey Ortiz (3B)MIL2 / 41 / 10 / 00 / 00 / 00 / 00 / 00 / 00 / 000.297 below average—
Ty France (1B)SD4 / 40 / 00 / 00 / 00 / 00 / 00 / 00 / 01 / 200.327 above average—
Xander Bogaerts (SS)SD3 / 41 / 10 / 00 / 00 / 00 / 01 / 10 / 01 / 000.325 above average—
Full model trace, player evidence, and audit findings

Fundamental evidence entering the pick

SignalHome-away edgeMeaning
Season quality-0.723positive favors home; negative favors away
Recent form0.334positive favors home; negative favors away
Starting-pitcher matchup0.049positive favors home; negative favors away
Composite-0.025positive favors home; negative favors away

Score and confidence evolution

StageAway-home runsConfidenceWhat changed
historical_ml3.53-4.7n/aBase ML historical model prediction
variance_applied4-5n/aDeterministic baseline target (variance factor 1.0)
enhanced_prediction4-50.566Enhanced ML with recent form, H2H, low-score analysis (confidence shrunk by projected_margin_is_one_run)
kpi_layer4-5n/aSavant KPI blend applied to the model target
embedded_savant_run_environment4-5n/aTarget score adjusted by temporal Savant lineup quality versus opposing starter quality
fundamental_edge_target_review4-5n/aRefreshed score target and win probability after Savant/pitcher/team-strength adjustments
capped_target4-5n/aCapped at max 12 realistic runs
simulation_result4-5n/aFinal inning-by-inning simulation result

Official postgame stage attribution

StageBeforeAfterToward final pickWhat changed
variance_applied3.53-4.74-5-0.169Deterministic baseline target (variance factor 1.0)
enhanced_prediction4-54-50Enhanced ML with recent form, H2H, low-score analysis (confidence shrunk by projected_margin_is_one_run)
kpi_layer4-54-50Savant KPI blend applied to the model target
embedded_savant_run_environment4-54-50Target score adjusted by temporal Savant lineup quality versus opposing starter quality
fundamental_edge_target_review4-54-50Refreshed score target and win probability after Savant/pitcher/team-strength adjustments
capped_target4-54-50Capped at max 12 realistic runs
simulation_result4-54-50Final inning-by-inning simulation result

Largest player-level adjustments from the ultra-detailed trace

These are pregame model adjustments, not claims about actual postgame player error.

TeamPlayerRoleNet effectLargest change
SDNick Pivettapitcher / Starterworsepredicted_SO -5
MILDustin Maypitcher / Starterworsepredicted_H 4
MILAntonio Senzatelapitcher / Middle Reliever (High Leverage)betterpredicted_IP 2.9
MILCooper Prattbatter / SSworsepredicted_SO 2.333
SDAdrian Morejonpitcher / Middle Reliever (High Leverage)betterpredicted_BB -2
SDManny Machadobatter / 3Bworsepredicted_AB -1.75
MILGarrett Mitchellbatter / CFbetterpredicted_RBI 1.68
SDDustin Harrisbatter / LFboostedpredicted_RBI 1.58

Structural audit findings

SeverityRuleFindingSubject
infoRECONCILIATION_PROPAGATIONNo score_target_reconciliation step was used for this game.

Cross-game lever tension

Each candidate fix, and exactly which games it would help versus 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 · 0 helped vs 0 hurt
Would help
  • none
Would hurt / risk
  • none

player.pitcher.v4 form weights / player.pitcher_prior_games

Targets: starter_er_mae, starter_outs_mae · 1 helped vs 1 hurt
Would help
  • MIL@SD (hit): starter ER off by 3
Would hurt / risk
  • LAD@ATL (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 · 0 helped vs 1 hurt
Would help
  • none
Would hurt / risk
  • MIL@SD (hit): team runs already close (off 2); reweight risks disturbing it

Day over day: did it improve or worsen

Compared against packet 20261005. Last recorded change: v15.28.1 (2026-10-06) Every pitcher against every opposing hitter, published per game

MetricPriorCurrentΔResult
brier_score0.24590.2456-0.000355improved
accuracy0.57890.5877+0.0088improved
team_run_mae2.49562.4474-0.0482improved
total_run_mae3.6933.6316-0.0614improved
calibration_error0.08990.0992+0.0093regressed
starter_er_mae1.6871.6795-0.0075improved
starter_outs_mae4.27394.2393-0.0346improved

The adjustment the system made in response

Status: applied to production · APPLIED TO PRODUCTION. The champion changed from candidate-8133e99fc8d4e4c7 to candidate-668e4305abca59bc at 2026-10-07T09:21:41.221033+00:00. These values are now live. The previous champion is retained and the rollback monitor is armed: the next settled slates measure whether this improved or worsened predictions, and it reverts automatically on a measured regression.
Hypothesis: Reduce the maximum weight assigned to empirical confidence from 0.50 to 0.45 to increase shrinkage, as the escalated calibration-instability finding recommends. This bounded shadow test targets the regressing calibration error; the mixed calibration bucket results make the direction uncertain.
ParameterChangeExpected effectRiskEvidence
confidence.empirical_max_weight0.5 → 0.45calibration_error decreaselow riskcalibration.weighted_absolute_error, calibration.bucket.0.60-0.65, calibration.bucket.0.65-0.70

Luna deep post-mortem (full)

1. Evidence receipt and gaps

All 7 source_manifest entries are marked loaded:

The diagnosis says 2 expected, 2 reviewed, and 2 structurally audited games; it also reports 2 continuous-learning games and starter comparisons for both. The coverage matrix is complete on those counts. The per-game audits both pass, and the revision audit is reported as loaded. No source-manifest entry is marked missing.

Important limitations and inconsistencies in the supplied evidence:

2. Executive diagnosis

Winner accuracy: Both games were called correctly: 2/2 (100%). That is a slate result, not proof of reliable forecasting. The validated historical winner accuracy is 0.600414, with walk-forward accuracy 0.570149.

Calibration quality: The two published picks both won, while their pick-side published probabilities were 0.505154 and 0.56643. The slate-level weighted absolute calibration error is reported as 0.4642. The bucket table labels both observations underconfident because its definition is average published confidence minus observed hit rate; with one hit in each bucket, those two observations cannot establish a stable calibration curve. The MIL publication discrepancy is a separate critical lineage defect. A “lower confidence caps” action in the self-assessment should not be read as an established direction from these two outcomes: the current bucket observations are labelled underconfident, and the persistent calibration finding calls for a shadow experiment, not an untested production change.

Score accuracy: Both predicted totals were too high: LAD@ATL predicted 7, actual 4; MIL@SD predicted 9, actual 7. The supplied team-run absolute-error figures are 3 and 2, respectively. Both games had positive total-run bias, +3 and +2. The validated run models have near-zero holdout explanatory power: home-run R² 0.002143, away-run R² 0.030936, and total-run R² 0.002415 across 2,415 rows. Scores are weak estimates even when the winner is right.

Starter accuracy: All four starter identities matched. The two starters in LAD@ATL had ER errors of 0 and 1; the MIL@SD starters had ER errors of 3 and 1. The slate-level matchup pattern summarizes four starter comparisons as mean ERA error −1.4, with starter projections overall too pessimistic on this slate. Individual starter lines vary substantially, so that aggregate is not a basis for changing a starter lever by itself.

Artifact integrity: Both per-game structural audits pass with zero critical, error, or warning findings; each has one informational item. The overall structural summary is 0 critical, 0 error, 0 warning, and 2 info. The per-game diagnostics call both saved forecast artifacts clean. However, those clean file audits do not resolve the MIL probability-lineage contract failure. Audit coverage is complete, but the slate is not contract-clean.

Causal issue register reconciliation:

3. Every game

LAD@ATL
MIL@SD

4. Miss reconstruction

There were no final winner losses: both published winners were correct. Therefore there is no final loss for which to identify a wrong-result prediction stage. This must not be substituted for a claim of good score or probability quality.

The measured intermediate winner-direction regression is in LAD@ATL: historical ML and variance-applied stages were 0.5 winner-accurate, and variance-applied had no winner-hit improvement. The transition from variance-applied to enhanced prediction changed LAD@ATL ATL → LAD, improving the winner result; later stages retained that direction. This is a real intermediate direction change, but the diagnosis does not provide numeric per-stage score lines or enough evidence to assign it to a specific bad input, weighting, or player adjustment. Later recovery does not erase it.

Across the two games:

Pipeline stages and transitions, all audited (each stage has 2 games):

StageWinner hitsMargin MAETeam-run MAETotal-run MAE
historical_ml1/21.49791.41832.8366
variance_applied1/21.50001.75003.5000
enhanced_prediction2/20.50001.25002.5000
kpi_layer2/20.50001.25002.5000
embedded_savant_run_environment2/20.50001.25002.5000
fundamental_edge_target_review2/20.50001.25002.5000
capped_target2/20.50001.25002.5000
simulation_result2/20.50001.25002.5000
published_final2/20.50001.25002.5000

Variance application regressed team-run MAE by +0.3317 and total-run MAE by +0.6634 relative to historical ML; margin MAE increased by 0.0021. The later enhanced-prediction transition improved team-run MAE by 0.5 and margin MAE by 1.0 and changed one winner direction. All subsequent score-stage transitions were measured as unchanged. This later recovery does not erase the variance-stage regression. The simulation stage had no measured score-stage improvement on this slate.

5. Cross-game counterfactuals

Each listed tension entry is accounted for:

  1. score.variance_multiplier / score.variance_floor (widen run distributions): Helps: none recorded. Hurts: none recorded. Net slate evidence: 0 helped, 0 hurt. This entry does not establish that widening improves either game or fix their overprojected run means. The separate stage-quality comparison shows variance-applied run-error regression, so any variance experiment should be a shadow test, not a direct production change.
  2. player.pitcher.v4 form weights / player.pitcher_prior_games: Helps: MIL@SD, where the starter ER was off by 3. Hurts: LAD@ATL, where Yamamoto’s ER projection was exact and the starter projection was described as accurate within one ER. Net evidence: one help, one risk; no cross-game case for a global form-weight change.
  3. recent.* / season.* run-mean weighting: Helps: none recorded. Hurts: MIL@SD, where team runs were already close (off by 2 total supplied team-run absolute error) and reweighting could disturb them. Net evidence: no slate support for changing these weights.

Tempting one-game fixes to avoid: Do not globally raise or lower pitcher form weighting because of May alone; it risks disrupting the more accurate LAD starter estimate. Do not shift recent/season run means to chase LAD@ATL’s three-run overprojection when the tension record marks MIL@SD as a risk and reports no helped game. Do not lower confidence solely because both hits received a high two-game calibration error: the observed buckets are labelled underconfident, and the sample is one observation per bucket. Do not assert a governor bypass or alter its setting to explain MIL; the documented problem is the missing probability transformation. Do not tune player projections to one-game hit/miss deviations unsupported by the player’s own contact quality.

6. Data and contract defects

Coverage reconciliation: The coverage matrix reports all expected games loaded and structurally audited: 2 expected, 2 canonical artifacts, 2 forensic audits, 2 continuous-learning games, 2 starter comparisons, and 2 completed structural audits. Both game audits pass. Complete coverage is not a clean bill of health: MIL has a critical lineage finding.

Findings by severity:

Prediction-model defects versus presentation/contract issues:

Complete pick-side probability lineage from supplied records:

7. Cross-slate persistence

The cross-slate record covers 11 slates, with 10 prior slates loaded. Persistent escalations are established failures or patterns under the supplied guardrails; they should not be dismissed as noise from this one slate.

Every finding_streaks entry:

FindingConsecutive slatesPresent now?Incidence in windowTarget(s)
pipeline_winner_instability0No3None registered; accuracy, Brier
score_margin_compression0No5score.variance_multiplier, score.variance_floor
simulation_inert_on_slate11Yes11simulation.allow_score
single_slate_calibration_instability4Yes8confidence.empirical_max_weight, confidence.base_cap, confidence.moderate_cap
weak_run_model_signal4Yes9training.xgb.n_estimators, training.xgb.max_depth, training.xgb.learning_rate

Escalated findings and required interpretation:

Raw structural blocks:

Cross-slate bias and trends:

8. Adjustments for today

Ranked by persistence and severity first, then scope, expected metrics, affected games, and regression risk. These are recommendations for controlled work; no configuration or code is changed here.

  1. Persistent probability calibration pattern — bounded shadow experiment.

Exact parameter: confidence.empirical_max_weight. Direction and magnitude: increase by 0.02 absolute from the current registered value, within its valid range, in a shadow-only comparison; do not promote from this slate alone. Expected metric/direction: reduce rolling Brier score and calibration error if the escalation’s shrinkage diagnosis is causal. Games / tension: apply comparison to LAD@ATL and MIL@SD; neither game is explicitly marked as helped or hurt by this calibration lever in lever_tension. Both were hits, so the immediate regression risk is attenuating otherwise correct pick confidence; evaluate on the rolling window and retain the baseline. The shadow gate and rollback monitor, not this analysis, should determine whether the effect is causal.

  1. Persistent simulation inactivity — code/diagnostic action, not a forced parameter move.

Registered target: simulation.allow_score is listed, but the escalation and self-assessment say this is not parameter-actionable and explicitly call for confirming the module is running rather than forcing a parameter move. Action: instrument and repair the simulation distribution path so the win-probability distribution comes from an independent, unsteered draw batch or a supported closed-form distribution, does not early-exit after finding a score realization, and reports its contribution to score and winner outputs. Register any batch-size control if introduced. Expected metrics/direction: make simulation contribution measurable and assess team-run MAE and total-run MAE; no improvement is assumed before measurement. Games / tension: both slate games had zero simulation winner flips and no measured simulation-stage score change. The variance lever tension has no helped or hurt games, so there is no game-level evidence to claim a beneficial simulation adjustment. This is an 11-slate established failure pattern, not single-slate noise.

  1. Persistent weak run-model signal — isolated feature/target backtest, not a nightly parameter tweak.

Target levers listed: training.xgb.n_estimators, training.xgb.max_depth, and training.xgb.learning_rate; the escalation marks this finding non-actionable by parameter and calls for an isolated training investigation. Action: do not change those parameters as a stand-in for missing predictive signal. Test the shared feature contract and target in an isolated same-fingerprint backtest, with the specified candidate data such as properly source-labelled no-vig market probability, park/weather environment, bullpen rest/fatigue, and platoon-adjusted lineup quality; bump the model schema version if semantics change. Expected metric/direction: seek better holdout home/away/total run R² and team-run/total-run MAE; require measured improvement before use. Games / tension: the affected slate games are LAD@ATL and MIL@SD, both with total overprojection; the run-mean tension has no recorded helpful game and marks MIL@SD as a risk. Do not tune a feature from a single player or game.

  1. Strongest single-slate contract driver — repair MIL probability publication lineage before promotion.

Parameter: none is registered for the unexplained probability delta; forcing a confidence or governor adjustment would conceal rather than resolve the contract defect. Action: reconcile and record every pick-side transformation between calibrated/governed, score-coherence, starter-experience/other controls, and published probability, including the trace-versus-lineage raw values; add a reconciliation check that blocks publication or promotion when a material delta is unexplained. Expected metric/direction: eliminate unexplained material lineage deltas and restore auditable published probability, rather than claiming an immediate accuracy gain. Game / tension: MIL@SD is the affected game. No listed lever-tension entry supports changing a model weight for this defect. This is the safest immediate intervention because it addresses a critical evidence/contract failure.

9. Bottom line

Known: both published winners were correct, both predicted scores were too high, all starter identities matched, and the structural audit coverage is complete. The run models have near-zero holdout signal, variance application worsened run MAE relative to the historical stage before later stages recovered, and a material MIL@SD probability publication delta is not documented. Simulation inactivity and weak run-model signal are persistent escalations; calibration instability has persisted for four slates and merits a bounded shadow test.

Uncertain: two games cannot establish calibration direction or a stable run-environment bias; the listed per-game player deviations do not isolate a generalizable lineup or starter adjustment; and the supplied probability records do not fully reconcile several raw and intermediate values. Clean artifact checks do not resolve those uncertainties.

Single safest next action for the very next slate: block promotion until the MIL-style published-probability lineage has a complete, auditable transformation record and a check that rejects unexplained material deltas.