Deep slate report — 20260921

Generated 2026-09-22T05:07:24.623224-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
3 games vs official finals
2. Forensic deep audit
complete
per-game probability + pitcher impact
3. Deep diagnosis
built
2 losses attributed to a root cause
4. Luna post-mortem
received
9/8 sections; 3/3 games; 7/7 causes; 6/6 sources
5. Adjustment
quarantined_invalid_artifact
slate quarantined from new parameter proposals until critical/error artifact findings are corrected
6. Gating
shadow, manual + gated
production champion unchanged

Slate summary

Games
3
Hits
1
Misses
2
Winner accuracy
33%
Mean Brier (losses)
0.289
Mean total-run bias (losses)
2

What drove the losses

Starting-pitcher projection was wrong: 1Genuine toss-up that flipped: 1

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_20260921.json79110
forensic deep auditloadedprobability, provenance, starter and decision contracts/app/output/reports/PREDICTION_SYSTEM_DEEP_AUDIT_20260921.json60154
continuous learningloadedpipeline-stage quality, calibration, probability lineage, score distribution, and official starter comparisons/app/output/learning/continuous_learning_daily_20260921.json473280
detailed reportloadedfull game and simulation rendering/app/output/reports/detailed_20260921.html76436
ultra detailed player auditloadedplayer-level prediction trace/app/output/reports/20260921_ultra_detailed_player_audit.html6405727
structural auditloadedall invariant findings/app/output/reports/audit_report_20260921.html362566
integrity revision auditmissingpost-Luna remediation proof for immutable revision artifacts/app/output/reports/audit_report_20260921_integrity_revision.htmln/a

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
WAS@DET
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.
HIGHartifact_integrityBlocking canonical artifact error
structural audit totals: {'critical': 0, 'error': 2, 'warning': 0, 'info': 22}
20260921_WAS@DET
Do thisExclude this slate from parameter learning until the artifact-generation step that wrote the broken file is fixed.
Don't concludeA malformed artifact is a file bug, not proof the prediction model was wrong; do not blame accuracy changes on it.
HIGHpipeline_stagesAn intermediate stage materially degraded winner direction
historical_ml → variance_applied changed winner accuracy by -0.3333 (-1 hits)
WAS@DET
Do thisList the exact games whose winner flipped at this stage, and keep both the before-stage and after-stage picks in the trace.
Don't concludeEven if a later stage recovers the pick, this unstable step is still a risk; do not treat it as harmless.
HIGHcalibrationPublished confidence buckets were poorly aligned on this slate
weighted absolute calibration error 0.2028 across 3 games
MIN@SF, TOR@BAL, WAS@DET
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.0187/0.0317/0.0089
MIN@SF, TOR@BAL, WAS@DET
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
3/3 games structurally audited
MIN@SF, TOR@BAL, WAS@DET
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
MIN@SF, TOR@BAL, WAS@DET
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: 20260911, 20260912, 20260913, 20260914, 20260915, 20260916, 20260917, 20260918, 20260919, 20260920, 20260921 (10 prior slates loaded). Highest-confidence pick loss streak: 1 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
pipeline_winner_instability4 consecutive · 5 in windowcode/diagnostic — no parameterpreserve base_ml_winner before integer rounding (code fix)pipeline_winner_instability 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.
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_instability3 consecutive · 8 in windowconfidence.empirical_max_weight, confidence.base_cap, confidence.moderate_capincrease empirical shrinkagesingle_slate_calibration_instability has persisted 3 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_signal11 consecutive · 11 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 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.

Finding streaks across the window

FindingConsecutive slatesIncidencePresent nowFix type
high_raw_probability_cluster02/11noparam
pipeline_winner_instability45/11yescode/diagnostic
score_margin_compression01/11noparam
simulation_inert_on_slate1111/11yescode/diagnostic
single_slate_calibration_instability38/11yesparam
weak_run_model_signal1111/11yescode/diagnostic

Metric direction across the window

MetricDirectionSeries (old → new)
winner_accuracyregressing[0.6667, 0.5333, 0.6, 0.7, 0.4, 0.6667, 0.4444, 0.6667, 0.7333, 0.6, 0.3333]
weighted_calibration_errorflat[0.2091, 0.1711, 0.0827, 0.2812, 0.2795, 0.1661, 0.1016, 0.1247, 0.3458, 0.3184, 0.2028]
margin_biasregressing[-2.933, -2.667, -1.8, -0.4, -1.667, -1.133, -2.111, -2.0, -0.667, -1.533, -2.667]
team_run_error_on_lossesimproving[5.0, 6.143, 5.0, 6.333, 5.556, 6.4, 3.6, 5.2, 6.5, 6.5, 3.0]

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/333.3%1.9151.8763.791
variance_applied0/30%224
enhanced_prediction1/333.3%224
embedded_savant_run_environment1/333.3%224
fundamental_edge_target_review1/333.3%224
capped_target1/333.3%224
simulation_result1/333.3%224
published_final1/333.3%224
TransitionΔ accuracyΔ hitsΔ team-run MAEΔ margin MAEGames whose winner/tie changed
historical_ml → variance_applied-0.3333-10.08470.2087TOR@BAL: TOR → TIE; WAS@DET: DET → TIE
variance_applied → enhanced_prediction0.3333100TOR@BAL: TIE → TOR; WAS@DET: TIE → DET
enhanced_prediction → 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
MIN@SFmiss0.57020.58480.58480.57940.5675no recorded transformation explains the publication delta
TOR@BALmiss0.50.50730.50730.50730.5053published probability matches the calibrated/governed value
WAS@DEThit0.5720.57740.57740.57660.5358no 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
60024-1.08-0.5
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 3 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
TOR@BAL0.5220.507home0.495awayyesmiss

Blend side survived on 2 of 3 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.75 over 12 slates (sign shared by 0.58 of them, z = 1.26).

starters were hit harder than projected: the run model under-credits opposing offenses.

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

7 of 12 slates share the sign, mean 0.75 +/- 0.6 standard error: not separable from noise

lineup runs actual minus projected

Mean -0.18 over 12 slates (sign shared by 0.58 of them, z = -0.87).

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

7 of 12 slates share the sign, mean -0.18 +/- 0.21 standard error: not separable from noise

SlateGamesWinner accMean starter ERA errorMean lineup runs vs projSides broke on pitchingSides broke on offense
20260920150.600-0.89-1.00210
20260919150.7331.36-0.1087
20260918150.6673.950.3065
2026091790.4442.16-0.2223
20260916150.6672.09-0.2345
20260915150.400-1.58-0.70112
20260914100.700-0.48-0.2026
20260913150.600-0.070.0328
20260912150.5331.350.5767
20260911150.6670.990.0049
2026091050.600-3.19-1.708
20260909150.6673.361.0787

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: 3 · Actual margins ≥4: 1
GamePred marginActual marginPred − actual
MIN@SF13-2
TOR@BAL110
WAS@DET17-6

Per-game evidence coverage

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

Every game, in depth (3)

MIN@SFMISS

Predicted: MIN 5-4 (conf -0.14, moderate)Actual: SF 2-5Brier 0.322total bias +2
Root cause: Starting-pitcher projection was wrong
Evidence-backed diagnosis
Quantified contributing factors
TeamStarterProjectedActualER err
MINZebby Matthews1 ER / 17 outs5 ER / 15 outs4
SFBlade Tidwell3 ER / 16 outs1 ER / 10 outs-2
Decision internals: run factors home×0.928 / away×0.981; 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: Zebby Matthews (MIN) posted 9.00 ERA vs projected 1.59 (5 ER in 15 outs); he is materially worse pitching away (6.93 ERA there vs 2.57 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

Zebby Matthews (MIN) threw 15 outs, 5 ER = 9 ERA against a projected 1.59 ERA (7.41 ERA error)

Bullpen behind him: 0 ER over 4 outs.

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

Who did the damage to him:

  • Drew Gilbert: 3-for-4, 1 HR, 3 RBI [+1.23 runs vs projection] season xwOBA 0.332, above average - real projection error
  • Brett Harris: 2-for-4, 0 HR, 2 RBI [+0.94 runs vs projection] season xwOBA 0.25, weak - a good day, not a model error
  • Christian Koss: 1-for-3, 0 HR, 0 RBI [+0.31 runs vs projection] season xwOBA 0.249, weak - a good day, not a model error

Verdict: both: the starter was hit hard AND the lineup underproduced

HOME pitching

Blade Tidwell (SF) threw 10 outs, 1 ER = 2.7 ERA against a projected 5.06 ERA (-2.36 ERA error)

Bullpen behind him: 1 ER over 6 outs.

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

Who did the damage to him:

  • Emmanuel Rodriguez: 1-for-3, 1 HR, 1 RBI [+0.93 runs vs projection] season xwOBA 0.32, average - a good day, not a model error
  • Brooks Lee: 1-for-4, 1 HR, 1 RBI [+0.93 runs vs projection] season xwOBA 0.278, weak - a good day, not a model error
  • Alan Roden: 1-for-2, 0 HR, 0 RBI [+0.8 runs vs projection] season xwOBA 0.345, elite - real projection 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)
MINZebby Matthews (Starter)15 / 179 / 1.59 (+7.41)5 / 18 / 21 / 00 / 01.599 / 74.68venue away: 6.93 vs 2.57 ERA (worse here) · opp run factor 0.93 (weak) · 22 prior appearances this season
MINTaylor Rogers (Reliever)4 / 00 / n/a0 / 01 / 00 / 00 / 0n/a1 / 0n/a
SFBlade Tidwell (Starter)10 / 162.7 / 5.061 / 33 / 61 / 20 / 22.074 / 54.85venue home: 8.05 vs 2.42 ERA (worse here) · opp run factor 0.98 (average) · 16 prior appearances this season
SFTrent Harris (Setup Man)3 / 20 / 13.5 (-13.50)0 / 10 / 20 / 10 / 00.251 / 21.38
SFJason Foley (Middle Reliever (High Leverage))3 / 09 / n/a1 / 11 / 11 / 00 / 00.580 / 20.78

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

BatterTeamABH2B3BHRRBIRBBSORun impactSeason xwOBASignal
Kody Clemens (2B)MIN4 / 40 / 10 / 00 / 00 / 10 / 10 / 10 / 02 / 1-1.40.333 above averagebad day
Drew Gilbert (CF)SF4 / 43 / 10 / 10 / 01 / 03 / 12 / 00 / 11 / 01.230.332 above averageprojection too low
Ryan Jeffers (C)MIN4 / 40 / 10 / 10 / 00 / 00 / 10 / 00 / 13 / 1-1.110.349 elitebad day
Brett Harris (1B)SF4 / 32 / 00 / 00 / 00 / 02 / 00 / 00 / 01 / 10.940.25 weakgood day
Emmanuel Rodriguez (LF)MIN3 / 41 / 10 / 00 / 01 / 01 / 01 / 00 / 01 / 10.930.32 averageno signal
Brooks Lee (3B)MIN4 / 41 / 10 / 00 / 01 / 01 / 11 / 10 / 00 / 10.930.278 weakgood day
Luke Keaschall (RF)MIN4 / 40 / 10 / 00 / 00 / 00 / 00 / 10 / 11 / 0-0.80.317 averageno signal
Alan Roden (DH)MIN2 / 31 / 00 / 00 / 00 / 00 / 00 / 01 / 00 / 00.80.345 eliteprojection too low
Drew Cavanaugh (C)SF2 / 30 / 10 / 00 / 00 / 00 / 00 / 00 / 10 / 1-0.80.307 averageno signal
Jonah Cox (2B)SF4 / 41 / 11 / 00 / 00 / 10 / 10 / 10 / 03 / 1-0.620.265 weakprojection too high
Aaron Sabato (1B)MIN3 / 30 / 10 / 00 / 00 / 00 / 00 / 00 / 01 / 1-0.47——
Marcelo Mayer (DH)SF4 / 30 / 10 / 00 / 00 / 00 / 10 / 00 / 04 / 1-0.470.259 weak—
Walker Jenkins (CF)MIN4 / 41 / 10 / 00 / 00 / 00 / 10 / 10 / 10 / 1-0.330.309 average—
Bo Davidson (RF)SF4 / 41 / 10 / 00 / 00 / 00 / 11 / 10 / 11 / 1-0.33——
Christian Koss (SS)SF3 / 31 / 11 / 00 / 00 / 00 / 01 / 10 / 01 / 10.310.249 weak—
Ryan Kreidler (SS)MIN3 / 30 / 00 / 00 / 00 / 00 / 00 / 00 / 00 / 100.294 below average—
Osleivis Basabe (3B)SF3 / 31 / 10 / 00 / 00 / 00 / 01 / 00 / 00 / 100.28 weak—
Scott Bandura (LF)SF3 / 30 / 00 / 00 / 00 / 00 / 00 / 00 / 02 / 100.131 weak—
Full model trace, player evidence, and audit findings

Fundamental evidence entering the pick

SignalHome-away edgeMeaning
Season quality-0.162positive favors home; negative favors away
Recent form-0.064positive favors home; negative favors away
Starting-pitcher matchup-0.053positive favors home; negative favors away
Composite-0.402positive favors home; negative favors away

Score and confidence evolution

StageAway-home runsConfidenceWhat changed
historical_ml4.7-4.34n/aBase ML historical model prediction
variance_applied5-4n/aDeterministic baseline target (variance factor 1.0)
enhanced_prediction5-40.568Enhanced ML with recent form, H2H, low-score analysis (confidence shrunk by projected_margin_is_one_run)
embedded_savant_run_environment5-4n/aTarget score adjusted by temporal Savant lineup quality versus opposing starter quality
fundamental_edge_target_review5-4n/aRefreshed score target and win probability after Savant/pitcher/team-strength adjustments
capped_target5-4n/aCapped at max 12 realistic runs
simulation_result5-4n/aFinal inning-by-inning simulation result

Official postgame stage attribution

StageBeforeAfterToward final pickWhat changed
variance_applied4.7-4.345-40.646Deterministic baseline target (variance factor 1.0)
enhanced_prediction5-45-4-0Enhanced ML with recent form, H2H, low-score analysis (confidence shrunk by projected_margin_is_one_run)
embedded_savant_run_environment5-45-4-0Target score adjusted by temporal Savant lineup quality versus opposing starter quality
fundamental_edge_target_review5-45-4-0Refreshed score target and win probability after Savant/pitcher/team-strength adjustments
capped_target5-45-4-0Capped at max 12 realistic runs
simulation_result5-45-4-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
MINAlan Rodenbatter / DHbetterpredicted_AB 2.429
SFChristian Kossbatter / SSworsepredicted_SO 2.237
MINRyan Kreidlerbatter / SSworsepredicted_AB 2.214
SFJonah Coxbatter / 2Bworsepredicted_AB 2.178
MINWalker Jenkinsbatter / CFworsepredicted_SO 2.056
SFMarcelo Mayerbatter / DHbetterpredicted_AB 1.985
SFBrett Harrisbatter / 1Bbetterpredicted_H 1.63
MINKody Clemensbatter / 2Bworsepredicted_RBI 1.49

Structural audit findings

SeverityRuleFindingSubject
infoCURRENT_PITCHER_DUPLICATIONMIN pitcher list appears in both predicted_performance.pitchers and player_predictions_by_position.pitchers; IDs match and were de-duplicated in this audit.MIN
infoCURRENT_PITCHER_DUPLICATIONSF pitcher list appears in both predicted_performance.pitchers and player_predictions_by_position.pitchers; IDs match and were de-duplicated in this audit.SF
infoCURRENT_FINALIZED_MATCH_BOXMIN model pitcher projections differ from final simulation pitching box score (HR: current=0, sim=1).MIN
infoCURRENT_FINALIZED_MATCH_BOXMIN model-prediction batting totals differ from final simulation box score (AB: current=33, sim=41; H: current=7, sim=11; 2B: current=1, sim=4; HR: current=1, sim=3; RBI: current=4, sim=5; R: current=4, sim=5; BB: current=3, sim=4; SO: current=7, sim=11).MIN
infoCURRENT_PLAYER_MATCH_BOXMIN current finalized hitter lines are model predictions and differ from the simulation box score: Luke Keaschall: H current=1 box=2, SO current=0 box=1; Ryan Jeffers: AB current=4 box=5, H current=1 box=2, HR current=0 box=1, R current=0 box=1; Alan Roden: AB current=3 box=5, H current=0 box=2, 2B current=0 box=1, HR current=0 box=1; Aaron Sabato: AB current=3 box=4, H current=1 box=0, BB current=0 box=1; Emmanuel Rodriguez: AB current=4 box=5, 2B current=0 box=1, RBI current=0 box=1, R current=0 box=1; Brooks Lee: RBI current=1 box=0, R current=1 box=0, BB current=0 box=1; Walker Jenkins: 2B current=0 box=1, RBI current=1 box=0, R current=1 box=0, SO current=1 box=3; Kody Clemens: AB current=4 box=5, RBI current=1 box=2MIN
infoCURRENT_FINALIZED_MATCH_BOXSF model-prediction batting totals differ from final simulation box score (AB: current=30, sim=36; H: current=7, sim=6; 2B: current=1, sim=3; R: current=3, sim=4; BB: current=3, sim=4; SO: current=8, sim=10).SF
infoCURRENT_PLAYER_MATCH_BOXSF current finalized hitter lines are model predictions and differ from the simulation box score: Marcelo Mayer: AB current=3 box=5, 2B current=0 box=1, R current=0 box=1, SO current=1 box=0; Jonah Cox: AB current=4 box=5, H current=1 box=0, HR current=1 box=0, RBI current=1 box=0; Bo Davidson: H current=1 box=2, 2B current=0 box=1, RBI current=1 box=0, R current=1 box=0; Brett Harris: AB current=3 box=4, H current=0 box=2, 2B current=0 box=1, RBI current=0 box=1; Osleivis Basabe: HR current=0 box=1, RBI current=0 box=1, R current=0 box=1, BB current=0 box=1; Christian Koss: AB current=3 box=4, H current=1 box=0, R current=1 box=0, SO current=1 box=3; Drew Gilbert: H current=1 box=0, 2B current=1 box=0, R current=0 box=1, SO current=0 box=1; Scott Bandura: BB current=0 box=1, SO current=1 box=0SF
infoRECONCILIATION_PROPAGATIONNo score_target_reconciliation step was used for this game.

TOR@BALMISS

Predicted: TOR 5-4 (conf -0.01, toss_up)Actual: BAL 3-4Brier 0.255total bias +2
Root cause: Genuine toss-up that flipped
Evidence-backed diagnosis
Quantified contributing factors

No large single-factor errors.

TeamStarterProjectedActualER err
TORTrey Yesavage3 ER / 15 outs1 ER / 6 outs-2
BALShane Baz4 ER / 17 outs3 ER / 20 outs-1
Decision internals: run factors home×1.003 / away×1.056; 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

Trey Yesavage (TOR) threw 6 outs, 1 ER = 4.5 ERA against a projected 5.4 ERA (-0.9 ERA error)

Bullpen behind him: 1 ER over 1 outs.

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

Who did the damage to him:

  • Gunnar Henderson: 3-for-4, 1 HR, 1 RBI [+2.16 runs vs projection] season xwOBA 0.319, average - a good day, not a model error
  • Pete Alonso: 2-for-4, 2 HR, 3 RBI [+2 runs vs projection] season xwOBA 0.395, elite - real projection error

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

HOME pitching

Shane Baz (BAL) threw 20 outs, 3 ER = 4.05 ERA against a projected 6.35 ERA (-2.3 ERA error)

Bullpen behind him: 0 ER over 7 outs.

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

Who did the damage to him:

  • Nathan Lukes: 1-for-3, 0 HR, 1 RBI [+0.33 runs vs projection] season xwOBA 0.287, below 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)
TORTrey Yesavage (Starter)6 / 154.5 / 5.41 / 31 / 41 / 10 / 12.613 / 44.68venue away: 3.14 vs 4.2 ERA (ok) · opp run factor 1 (average) · 18 prior appearances this season
TORTyler Rogers (Setup Man)1 / 327 / 0 (+27.00)1 / 02 / 01 / 00 / 10.250 / 10.5
BALShane Baz (Starter)20 / 174.05 / 6.353 / 45 / 70 / 13 / 22.122 / 45.42venue home: 3.92 vs 4.29 ERA (ok) · opp run factor 1.06 (weak) · 30 prior appearances this season
BALRico Garcia (Setup Man)3 / 50 / 00 / 00 / 00 / 00 / 00.342 / 11.21
BALYennier Cano (Middle Reliever (High Leverage))4 / 20 / 13.5 (-13.50)0 / 11 / 10 / 10 / 00.191 / 10.69

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

BatterTeamABH2B3BHRRBIRBBSORun impactSeason xwOBASignal
Gunnar Henderson (SS)BAL4 / 43 / 10 / 01 / 01 / 01 / 01 / 10 / 10 / 12.160.319 averageno signal
Pete Alonso (1B)BAL4 / 42 / 10 / 00 / 02 / 03 / 12 / 10 / 11 / 120.395 eliteprojection too low
Coby Mayo (DH)BAL4 / 40 / 10 / 00 / 00 / 10 / 10 / 10 / 02 / 1-1.40.338 above averagebad day
Dylan Beavers (LF)BAL4 / 40 / 10 / 10 / 00 / 00 / 10 / 00 / 12 / 1-1.110.296 below averageprojection too high
Kazuma Okamoto (3B)TOR4 / 41 / 10 / 00 / 00 / 10 / 10 / 10 / 01 / 1-0.930.328 above averagebad day
Sean Keys (1B)TOR3 / 30 / 10 / 00 / 00 / 01 / 10 / 00 / 02 / 1-0.470.259 weak—
Brett Bateman (CF)TOR1 / 40 / 10 / 00 / 00 / 00 / 01 / 11 / 10 / 1-0.470.303 average—
Ernie Clement (2B)TOR3 / 30 / 10 / 00 / 00 / 00 / 00 / 00 / 00 / 0-0.470.26 weak—
José Barrero (2B)BAL2 / 30 / 10 / 00 / 00 / 00 / 00 / 00 / 02 / 1-0.47——
Samuel Basallo (C)BAL2 / 40 / 10 / 00 / 00 / 00 / 00 / 00 / 02 / 1-0.470.32 average—
Nathan Lukes (RF)TOR3 / 41 / 10 / 00 / 00 / 01 / 01 / 11 / 00 / 10.330.287 below average—
George Springer (DH)TOR4 / 42 / 10 / 10 / 00 / 01 / 00 / 10 / 11 / 1-0.170.303 average—
Alejandro Kirk (C)TOR3 / 41 / 10 / 00 / 00 / 00 / 11 / 01 / 10 / 000.309 average—
Josh Smith (LF)TOR4 / 30 / 00 / 00 / 00 / 00 / 00 / 00 / 01 / 100.28 weak—
Andrés Giménez (SS)TOR3 / 31 / 10 / 00 / 00 / 00 / 10 / 00 / 00 / 100.273 weak—
Christian Encarnacion-Strand (3B)BAL3 / 41 / 10 / 00 / 00 / 00 / 10 / 10 / 00 / 100.336 above average—
Rece Hinds (RF)BAL3 / 30 / 00 / 00 / 00 / 00 / 00 / 00 / 00 / 200.196 weak—
Colton Cowser (CF)BAL1 / 30 / 00 / 00 / 00 / 00 / 00 / 01 / 11 / 100.314 average—
Full model trace, player evidence, and audit findings

Fundamental evidence entering the pick

SignalHome-away edgeMeaning
Season quality0.091positive favors home; negative favors away
Recent form-0.046positive favors home; negative favors away
Starting-pitcher matchup-0.053positive favors home; negative favors away
Composite-0.258positive favors home; negative favors away

Score and confidence evolution

StageAway-home runsConfidenceWhat changed
historical_ml4.3-4.06n/aBase ML historical model prediction
variance_applied4-4n/aDeterministic baseline target (variance factor 1.0)
enhanced_prediction5-40.505Enhanced ML with recent form, H2H, low-score analysis (confidence shrunk by projected_margin_is_one_run, matchup_recency_guardrail)
embedded_savant_run_environment5-4n/aTarget score adjusted by temporal Savant lineup quality versus opposing starter quality
fundamental_edge_target_review5-4n/aRefreshed score target and win probability after Savant/pitcher/team-strength adjustments
capped_target5-4n/aCapped at max 12 realistic runs
simulation_result5-4n/aFinal inning-by-inning simulation result

Official postgame stage attribution

StageBeforeAfterToward final pickWhat changed
variance_applied4.3-4.064-4-0.238Deterministic baseline target (variance factor 1.0)
enhanced_prediction4-45-41Enhanced ML with recent form, H2H, low-score analysis (confidence shrunk by projected_margin_is_one_run, matchup_recency_guardrail)
embedded_savant_run_environment5-45-4-0Target score adjusted by temporal Savant lineup quality versus opposing starter quality
fundamental_edge_target_review5-45-4-0Refreshed score target and win probability after Savant/pitcher/team-strength adjustments
capped_target5-45-4-0Capped at max 12 realistic runs
simulation_result5-45-4-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
BALGunnar Hendersonbatter / SSworsepredicted_SO 2.02
TORBrett Batemanbatter / CFworsepredicted_RBI 1.68
TORErnie Clementbatter / 2Bworsepredicted_SO 1.629
BALRece Hindsbatter / RFworsepredicted_AB 1.5
BALCoby Mayobatter / DHbetterpredicted_RBI 1.475
BALJosé Barrerobatter / 2Bdeboostedpredicted_AB -1.369
TORSean Keysbatter / 1Bworsepredicted_AB 1.333
TORAndrés Giménezbatter / SSworsepredicted_H 1.3

Structural audit findings

SeverityRuleFindingSubject
infoCURRENT_PITCHER_DUPLICATIONBAL pitcher list appears in both predicted_performance.pitchers and player_predictions_by_position.pitchers; IDs match and were de-duplicated in this audit.BAL
infoCURRENT_PITCHER_DUPLICATIONTOR pitcher list appears in both predicted_performance.pitchers and player_predictions_by_position.pitchers; IDs match and were de-duplicated in this audit.TOR
infoCURRENT_FINALIZED_MATCH_BOXBAL model-prediction batting totals differ from final simulation box score (AB: current=33, sim=32; H: current=7, sim=5; HR: current=1, sim=2; BB: current=4, sim=2; SO: current=10, sim=6).BAL
infoCURRENT_PLAYER_MATCH_BOXBAL current finalized hitter lines are model predictions and differ from the simulation box score: Coby Mayo: RBI current=1 box=2, SO current=1 box=0; Dylan Beavers: H current=1 box=0, 2B current=1 box=0, RBI current=1 box=0, BB current=1 box=0; Christian Encarnacion-Strand: H current=1 box=0, RBI current=1 box=0, R current=1 box=0; Gunnar Henderson: 2B current=0 box=1, RBI current=0 box=1, BB current=1 box=0, SO current=1 box=3; Pete Alonso: AB current=4 box=3, H current=1 box=0, RBI current=1 box=0, R current=1 box=0; José Barrero: AB current=3 box=2, R current=0 box=1, BB current=0 box=1, SO current=1 box=0; Rece Hinds: AB current=3 box=4, SO current=2 box=0; Colton Cowser: H current=0 box=1, HR current=0 box=1, RBI current=0 box=1, R current=0 box=1BAL
infoCURRENT_FINALIZED_MATCH_BOXTOR model-prediction batting totals differ from final simulation box score (AB: current=32, sim=36; H: current=8, sim=9; HR: current=1, sim=2; RBI: current=4, sim=5; R: current=4, sim=5; BB: current=3, sim=2).TOR
infoCURRENT_PLAYER_MATCH_BOXTOR current finalized hitter lines are model predictions and differ from the simulation box score: Alejandro Kirk: AB current=4 box=5, HR current=0 box=1, RBI current=1 box=2, R current=0 box=1; Sean Keys: AB current=3 box=4, RBI current=1 box=0, SO current=1 box=2; George Springer: 2B current=1 box=0, R current=1 box=0, BB current=1 box=0; Josh Smith: H current=0 box=1, 2B current=0 box=1, RBI current=0 box=1, R current=0 box=1; Brett Bateman: AB current=4 box=5, HR current=0 box=1, RBI current=0 box=2, BB current=1 box=0; Nathan Lukes: H current=1 box=2, SO current=1 box=0; Kazuma Okamoto: H current=1 box=0, HR current=1 box=0, RBI current=1 box=0, R current=1 box=0; Andrés Giménez: H current=1 box=2, RBI current=1 box=0, R current=0 box=1, BB current=0 box=1TOR
infoRECONCILIATION_PROPAGATIONNo score_target_reconciliation step was used for this game.

WAS@DETHIT

Predicted: DET 4-5 (conf +0.07, lean)Actual: DET 2-9Brier 0.215total bias -2
Root cause: Right winner, wrong score
Evidence-backed diagnosis
Quantified contributing factors
TeamStarterProjectedActualER err
WASDJ Herz1 ER / 7 outs4 ER / 12 outs3
DETRiver Ryan1 ER / 2 outs0 ER / 9 outs-1
Decision internals: run factors home×1 / away×1; 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: River Ryan (DET) posted 0.00 ERA vs projected 13.50 (0 ER in 9 outs); no credible venue, opponent-strength or experience signal explains it — an outlier start (variance).

What to do: Variance — no model change is warranted for this start.

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

DJ Herz (WAS) threw 12 outs, 4 ER = 9 ERA against a projected 3.86 ERA (5.14 ERA error)

Bullpen behind him: 5 ER over 6 outs.

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

Who did the damage to him:

  • Hao-Yu Lee: 3-for-5, 0 HR, 1 RBI [+1.56 runs vs projection] season xwOBA 0.3, below average - a good day, not a model error
  • Spencer Torkelson: 1-for-4, 1 HR, 2 RBI [+0.93 runs vs projection] season xwOBA 0.314, average - a good day, not a model error

Verdict: both: the starter was hit hard AND the lineup underproduced

HOME pitching

River Ryan (DET) threw 9 outs, 0 ER = 0 ERA against a projected 13.5 ERA (-13.5 ERA error)

Bullpen behind him: 2 ER over 3 outs.

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

Who did the damage to him:

  • Jacob Young: 2-for-3, 0 HR, 0 RBI [+0.78 runs vs projection] season xwOBA 0.315, average - a good day, not a model error
  • Dylan Crews: 1-for-3, 0 HR, 0 RBI [+0.33 runs vs projection] season xwOBA 0.316, 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)
WASDJ Herz (Starter)12 / 79 / 3.86 (+5.14)4 / 15 / 41 / 02 / 00.34 / 74.16opp run factor 1 (average)
WASLuis Perales (Middle Reliever (High Leverage))6 / 322.5 / 0 (+22.50)5 / 05 / 22 / 02 / 11.842 / 11.9
DETRiver Ryan (Starter)9 / 20 / 13.5 (-13.50)0 / 12 / 50 / 01 / 20.373 / 24.57opp run factor 1 (strong)
DETDrew Sommers (Middle Reliever (High Leverage))3 / 418 / 0 (+18.00)2 / 02 / 01 / 00 / 10.32 / 21.49

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

BatterTeamABH2B3BHRRBIRBBSORun impactSeason xwOBASignal
CJ Abrams (C)WAS3 / 40 / 10 / 00 / 00 / 10 / 10 / 10 / 12 / 1-1.730.329 above averagebad day
Hao-Yu Lee (SS)DET5 / 43 / 12 / 00 / 00 / 01 / 11 / 00 / 00 / 11.560.3 below averagegood day
Spencer Torkelson (2B)DET4 / 31 / 10 / 00 / 01 / 02 / 01 / 00 / 02 / 10.930.314 averageno signal
Nasim Nuñez (1B)WAS1 / 30 / 10 / 00 / 00 / 00 / 00 / 00 / 10 / 1-0.80.267 weakprojection too high
Jacob Young (DH)WAS3 / 32 / 11 / 00 / 00 / 00 / 00 / 10 / 01 / 10.780.315 averageno signal
Keibert Ruiz (SS)WAS3 / 40 / 10 / 10 / 00 / 00 / 10 / 00 / 00 / 0-0.780.289 below averageprojection too high
Riley Greene (LF)DET3 / 40 / 10 / 10 / 00 / 00 / 11 / 11 / 11 / 1-0.780.374 elitebad day
Abimelec Ortiz (2B)WAS3 / 40 / 10 / 00 / 00 / 00 / 00 / 00 / 00 / 1-0.470.276 weak—
Brady House (3B)WAS4 / 40 / 10 / 00 / 00 / 00 / 10 / 00 / 02 / 1-0.470.338 above average—
Daylen Lile (CF)WAS4 / 30 / 10 / 00 / 00 / 00 / 10 / 10 / 01 / 1-0.470.328 above average—
Gleyber Torres (C)DET3 / 40 / 10 / 00 / 00 / 00 / 01 / 11 / 10 / 1-0.470.324 above average—
Brett Callahan (RF)DET1 / 30 / 10 / 00 / 00 / 00 / 00 / 00 / 00 / 1-0.470.314 average—
Dylan Crews (LF)WAS3 / 41 / 10 / 00 / 00 / 00 / 00 / 11 / 01 / 10.330.316 average—
Dillon Dingler (3B)DET3 / 42 / 11 / 00 / 00 / 10 / 12 / 11 / 01 / 10.180.34 elite—
Jorbit Vivas (RF)WAS3 / 30 / 00 / 00 / 00 / 00 / 00 / 01 / 11 / 000.295 below average—
Full model trace, player evidence, and audit findings

Fundamental evidence entering the pick

SignalHome-away edgeMeaning
Season quality0.282positive favors home; negative favors away
Recent form0.14positive favors home; negative favors away
Starting-pitcher matchup0positive favors home; negative favors away
Composite0.37positive favors home; negative favors away

Score and confidence evolution

StageAway-home runsConfidenceWhat changed
historical_ml4.27-4.49n/aBase ML historical model prediction
variance_applied4-4n/aDeterministic baseline target (variance factor 1.0)
enhanced_prediction4-50.536Enhanced ML with recent form, H2H, low-score analysis (confidence shrunk by winner_starter_has_no_reliable_baseline, projected_margin_is_one_run)
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_applied4.27-4.494-4-0.218Deterministic baseline target (variance factor 1.0)
enhanced_prediction4-44-51Enhanced ML with recent form, H2H, low-score analysis (confidence shrunk by winner_starter_has_no_reliable_baseline, projected_margin_is_one_run)
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
WASAbimelec Ortizbatter / 2Bbetterpredicted_RBI 3.675
DETRiver Ryanpitcher / Starterneutralpredicted_SO -3
DETJacob Waguespackpitcher / Middle Reliever (High Leverage)neutralpredicted_SO 3
DETRiley Greenebatter / LFbetterpredicted_RBI 2.432
DETHao-Yu Leebatter / SSbetterpredicted_H 2.2
WASDJ Herzpitcher / Starterbetterpredicted_IP 2
DETMax Clarkbatter / 1Bworsepredicted_AB 1.5
DETBrett Callahanbatter / RFbetterpredicted_AB 1.5

Structural audit findings

SeverityRuleFindingSubject
errorPITCHING_REALISMcurrent:DET has implausible starter workload/result line(s): River Ryan: 0.2 IP starter outingDET
errorPITCHING_REALISMsimulation:DET has implausible starter workload/result line(s): River Ryan: 0.2 IP starter outingDET
infoCURRENT_PITCHER_DUPLICATIONDET pitcher list appears in both predicted_performance.pitchers and player_predictions_by_position.pitchers; IDs match and were de-duplicated in this audit.DET
infoCURRENT_PITCHER_DUPLICATIONWAS pitcher list appears in both predicted_performance.pitchers and player_predictions_by_position.pitchers; IDs match and were de-duplicated in this audit.WAS
infoCURRENT_FINALIZED_MATCH_BOXDET model-prediction batting totals differ from final simulation box score (AB: current=33, sim=35; H: current=8, sim=9; RBI: current=4, sim=5; SO: current=8, sim=9).DET
infoCURRENT_PLAYER_MATCH_BOXDET current finalized hitter lines are model predictions and differ from the simulation box score: Gleyber Torres: H current=1 box=2, BB current=1 box=0, SO current=1 box=0; Max Clark: AB current=4 box=5, H current=1 box=0, R current=1 box=0, SO current=1 box=2; Spencer Torkelson: AB current=3 box=4, H current=1 box=0, SO current=1 box=0; Dillon Dingler: AB current=4 box=3, H current=1 box=0, HR current=1 box=0, RBI current=1 box=0; Hao-Yu Lee: H current=1 box=3, RBI current=1 box=0, R current=0 box=1, SO current=1 box=0; Riley Greene: AB current=4 box=3, 2B current=1 box=0, HR current=0 box=1, RBI current=1 box=3; Colt Keith: AB current=3 box=4, SO current=1 box=2; Brett Callahan: AB current=3 box=4, H current=1 box=2, 2B current=0 box=1, RBI current=0 box=1DET
infoCURRENT_FINALIZED_MATCH_BOXWAS model-prediction batting totals differ from final simulation box score (AB: current=32, sim=35; 2B: current=1, sim=2; HR: current=1, sim=0; BB: current=3, sim=4; SO: current=7, sim=9; HBP: current=0, sim=1).WAS
infoCURRENT_PLAYER_MATCH_BOXWAS current finalized hitter lines are model predictions and differ from the simulation box score: Jacob Young: AB current=3 box=4, H current=1 box=2, BB current=0 box=1; CJ Abrams: AB current=4 box=5, HR current=1 box=0, RBI current=1 box=0, R current=1 box=0; Nasim Nuñez: R current=0 box=1, HBP current=0 box=1; Abimelec Ortiz: H current=1 box=2, 2B current=0 box=2, RBI current=0 box=4, R current=0 box=1; Brady House: AB current=4 box=3, RBI current=1 box=0, R current=0 box=1, BB current=0 box=1; Keibert Ruiz: H current=1 box=0, 2B current=1 box=0, RBI current=1 box=0, SO current=0 box=1; Dylan Crews: H current=1 box=0, R current=1 box=0, SO current=1 box=2; Daylen Lile: AB current=3 box=4, RBI current=1 box=0, R current=1 box=0WAS
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 · 1 helped vs 0 hurt
Would help
  • MIN@SF (miss): lost a 0.14-confidence pick; wider tails lower overconfidence
Would hurt / risk
  • none

player.pitcher.v4 form weights / player.pitcher_prior_games

Targets: starter_er_mae, starter_outs_mae · 2 helped vs 0 hurt
Would help
  • MIN@SF (miss): starter ER off by 4
  • WAS@DET (hit): starter ER off by 3
Would hurt / risk
  • none

recent.* / season.* run-mean weighting

Targets: team_run_mae, total_run_mae, accuracy · 2 helped vs 1 hurt
Would help
  • MIN@SF (miss): team runs off by 4
  • WAS@DET (hit): team runs off by 6
Would hurt / risk
  • TOR@BAL (miss): team runs already close (off 2); reweight risks disturbing it

Day over day: did it improve or worsen

Compared against packet 20260920. Last recorded change: v4.30.0 (2026-09-08) Hitter shrinkage is derived from the between-hitter spread rather than fitted to slate error, so an established extreme profile is no longer flattened toward the league.

MetricPriorCurrentΔResult
brier_score0.23930.2409+0.001597regressed
accuracy0.60.5833-0.0167regressed
team_run_mae2.50422.4917-0.0125improved
total_run_mae3.35833.2833-0.075improved
calibration_error0.08850.0887+0.0002regressed
starter_er_mae1.68551.6969+0.0114regressed
starter_outs_mae3.48393.5276+0.0437regressed

The adjustment the system made in response

Status: quarantined invalid artifact. No candidate was created because a critical/error artifact finding must be corrected first. slate quarantined from new parameter proposals until critical/error artifact findings are corrected

Luna deep post-mortem (full)

1. Evidence receipt and gaps

Sources received

All manifest entries were checked against the supplied evidence:

SourceStatusPurpose
prediction review — /app/output/reports/prediction_review_20260921.jsonLoaded, 79,110 bytesOfficial outcomes and scoring errors
forensic deep audit — /app/output/reports/PREDICTION_SYSTEM_DEEP_AUDIT_20260921.jsonLoaded, 60,154 bytesProbability, provenance, starter, and decision contracts
continuous learning — /app/output/learning/continuous_learning_daily_20260921.jsonLoaded, 473,280 bytesStage quality, calibration, lineage, score distribution, and starter comparisons
detailed report — /app/output/reports/detailed_20260921.htmlLoaded, 76,436 bytesFull game and simulation rendering
ultra detailed player audit — /app/output/reports/20260921_ultra_detailed_player_audit.htmlLoaded, 6,405,727 bytesPlayer-level prediction trace
structural audit — /app/output/reports/audit_report_20260921.htmlLoaded, 362,566 bytesInvariant findings
integrity revision audit — /app/output/reports/audit_report_20260921_integrity_revision.htmlMissingPost-Luna remediation proof for immutable revision artifacts

The missing integrity-revision audit is a material evidence gap for remediation verification. It does not prevent review of the game outcomes or the supplied structural findings, but it prevents confirming that a corrected immutable artifact was generated and validated.

Games reviewed

Coverage is complete for the three-game slate:

The coverage matrix reports:

The slate was therefore game-complete, although not artifact-complete because the integrity-revision audit is missing.

Internal contradictions and limitations

  1. Published probability lineage is not uniformly reconciled.
  1. Starter-line data are internally unusual in WAS@DET.
  1. The confidence terminology is potentially misleading.
  1. No market cross-check was available.
  1. The provided data do not include the exact text of all 22 informational audit findings.

---

2. Executive diagnosis

Outcome summary

The slate finished:

This is a poor slate, but the causes differ by game.

Winner accuracy

Winner accuracy was poor: 33.3%, with only WAS@DET correct.

The quality of the winner path was not stable:

The variance stage caused a measurable winner-direction regression:

The enhanced stage later recovered the WAS@DET direction, but that recovery does not erase the intermediate regression.

Calibration quality

Calibration was weak and overconfident on this slate:

The second bucket is especially unstable, but it contains only one game. The correct conclusion is that the slate exhibited poor calibration, not that a stable calibration curve has been proven.

MIN@SF was the clearest confidence problem:

TOR@BAL was essentially a toss-up:

WAS@DET was a correct lean:

A correct winner does not make the probability well calibrated; it only records that the selected side won.

Score accuracy

Score accuracy was materially poor:

The run models have almost no validated holdout signal:

The model therefore should not be treated as an exact-score system. The weak_run_model_signal finding is appropriately high severity, not critical: it is a serious modeling limitation, but not itself an evidence-contract failure.

Starter accuracy

Starter projection was the primary cause of MIN@SF:

Starter projection contributed materially to WAS@DET as well:

However, Detroit still won, and the extreme River Ryan line was favorable to the pick:

TOR@BAL did not show a decisive starter failure:

Artifact integrity

Artifact integrity is not clean:

This is a high-severity process/artifact issue, not proof that the model’s Detroit winner was wrong. The causal register correctly says not to attribute accuracy changes to the malformed file.

Causal issue register reconciliation

Critical: unexplained published probability delta

This is the only critical finding and is correctly classified as an evidence/contract failure.

High: artifact integrity failure
High: pipeline winner instability
High: calibration instability

Because this finding has since escalated to a three-slate streak, it now supports a bounded shadow experiment, discussed below.

High: weak run-model signal
Informational: complete audit coverage
Informational: simulation inertness

---

3. Every game

MIN@SF — wrong winner and wrong score

Prediction versus outcome
Errors
Starter projection versus actual
StarterProjectedActualError
Zebby Matthews, MIN1 ER, 17 outs, ERA 1.595 ER, 15 outs, ERA 9.00+4 ER, -2 outs, +7.41 ERA
Blade Tidwell, SF3 ER, 16 outs, ERA 5.061 ER, 10 outs, ERA 2.70-2 ER, -6 outs, -2.36 ERA

The principal starter failure was Matthews. The audit specifically identifies his venue weakness as credible and says the model underweighted it.

Pregame edges

The directional evidence favored Minnesota, but the edge was not large enough to justify treating the 0.14 confidence difference as near-certainty.

Controls

The no-change volatility decision did not protect against the eventual wide outcome. This is consistent with the broader finding that the score model’s tails are too compressed.

Score path
  1. Historical ML: MIN 4.697, SF 4.343
  2. Variance-applied deterministic target: MIN 5, SF 4
  3. Enhanced prediction: MIN 5, SF 4
  4. Embedded Savant environment: MIN 5, SF 4
  1. Fundamental edge review: unchanged
  2. Capped target: unchanged
  3. Simulation result: unchanged

The simulation did not provide an independent correction; it merely preserved the narrow target.

Player-level adjustments and outcome

There were 25 material player changes. Important listed adjustments included:

Important realized deviations:

The matchup verdict was:

Audit findings
Causes

---

TOR@BAL — toss-up miss and wrong score

Prediction versus outcome
Errors

This was a close, low-conviction game. It should not be grouped with the moderate-confidence MIN@SF miss.

Starter projection versus actual
StarterProjectedActualError
Trey Yesavage, TOR3 ER, 15 outs, ERA 5.401 ER, 6 outs, ERA 4.50-2 ER, -9 outs, -0.90 ERA
Shane Baz, BAL4 ER, 17 outs, ERA 6.353 ER, 20 outs, ERA 4.05-1 ER, +3 outs, -2.30 ERA

Both starters allowed fewer earned runs than projected. No decisive starter-direction failure is identified.

Pregame edges

The inputs conflicted: season quality favored Baltimore, while recent and pitcher edges leaned Toronto. The composite favored Toronto, but only weakly.

Recent form:

Controls
Score path
  1. Historical ML: TOR 4.297, BAL 4.059
  2. Variance-applied: TOR 4, BAL 4
  3. Enhanced prediction: TOR 5, BAL 4
  4. Embedded Savant environment: TOR 5, BAL 4
  1. Fundamental review: unchanged
  2. Capped target: unchanged
  3. Simulation result: unchanged

The model promoted Toronto from a near-even historical projection to a five-run target while maintaining a one-run margin. The actual game remained close but favored Baltimore.

Probability reversion

This game contains the only recorded blend-stage side reversal:

This is not automatically a defect, but it is a decision-path instability worth tracing alongside the broader winner-instability finding.

Player-level adjustments and outcome

There were 23 material player changes. Notable adjustments included:

Important realized contributions:

The forensic conclusion was a genuine toss-up, with no starter or one-sided team breakdown.

Audit findings
Causes

---

WAS@DET — correct winner, wrong score

Prediction versus outcome

This is the required example showing that winner correctness does not imply a good prediction. The winner was right, but the six-run team-score error and seven-run actual margin were badly missed.

Errors
Starter projection versus actual
StarterProjectedActualError
DJ Herz, WAS1 ER, 7 outs, ERA 3.864 ER, 12 outs, ERA 9.00+3 ER, +5 outs, +5.14 ERA
River Ryan, DET1 ER, 2 outs, ERA 13.500 ER, 9 outs, ERA 0.00-1 ER, +7 outs, -13.50 ERA

The Herz projection understated Detroit’s scoring opportunity. River Ryan’s actual performance was unusually good relative to the very low projected workload, but the record explicitly classifies this as an outlier and says no model change is warranted from this one start.

Pregame edges

The directional evidence consistently favored Detroit, albeit not with a large enough probability to support a blowout score.

Recent form details were not separately included in this game’s trace, but the model had a coherent positive home-side composite.

Controls

The unavailable starter experience and venue fields are important data gaps for this matchup, particularly because the actual starter outcomes were extreme.

Score path
  1. Historical ML: WAS 4.697, DET 4.343
  2. Variance-applied: WAS 4, DET 5
  3. Enhanced prediction: unchanged
  4. Embedded Savant environment: unchanged
  5. Fundamental review: unchanged
  6. Capped target: unchanged
  7. Simulation result: unchanged
  8. Published final: unchanged

The final score path never represented the possibility of Detroit winning by a wide margin.

Player-level adjustments and outcome

Important realized contributors:

The slate-level player audit also identifies Keibert Ruiz as a below-average hitter who was over-projected, with run impact -0.78.

Audit findings

Two structural errors were recorded:

  1. Current artifact:
  1. Simulation artifact:

Summary:

The errors are presentation/data-contract defects. They should not be treated as proof that the Detroit winner was incorrectly modeled.

Causes

---

4. Miss reconstruction

MIN@SF

Earliest wrong-direction stage

The earliest evidence that moved the model toward the wrong result was already present in the pregame directional inputs:

Those inputs led to the away pick. The critical model error was not a later score-stage reversal; it was insufficiently discounting Minnesota’s vulnerable starter profile, especially Matthews’ credible away split.

The score pipeline then reinforced the wrong side:

Cause classification

The 0.14 edge is moderate. It does not mean Minnesota was a near-certain selection; it means the published probability was about 56.8%, which still implies a substantial loss probability.

TOR@BAL

Earliest wrong-direction stage

The historical stage favored Toronto slightly:

At variance_applied, the winner direction regressed to a tie:

The enhanced stage then restored Toronto:

The model therefore never found a strong evidence-based Baltimore direction. It ended as a one-run Toronto pick with a probability of only 0.505257.

Cause classification

The blend-stage reversal is a pipeline-quality concern:

This should be traced, but it is not evidence that Baltimore should simply have been selected.

Pipeline-stage quality across all stages and transitions

StageWinner accuracyWinner hitsTeam-run MAETotal-run MAEMargin MAE
Historical ML33.33%1/31.91531.87573.7913
Variance applied0%0/32.00002.00004.0000
Enhanced prediction33.33%1/32.00002.00004.0000
Embedded Savant environment33.33%1/32.00002.00004.0000
Fundamental edge review33.33%1/32.00002.00004.0000
Capped target33.33%1/32.00002.00004.0000
Simulation result33.33%1/32.00002.00004.0000
Published final33.33%1/32.00002.00004.0000

Transitions:

  1. Historical ML → variance applied
  1. Variance applied → enhanced prediction
  1. All later transitions

The simulation did not materially intervene. Its zero-flip behavior is not automatically a single-slate defect, but it is an established cross-slate diagnostic failure.

---

5. Cross-game counterfactuals

Lever tension entries

score.variance_multiplier / score.variance_floor
player.pitcher.v4 form weights / player.pitcher_prior_games
recent.* / season.* run-mean weighting

Tempting one-game fixes that must not be made

  1. Do not force Baltimore in future games merely because it won TOR@BAL.
  1. Do not increase Detroit confidence simply because Detroit won by seven.
  1. Do not tune directly to River Ryan’s result.
  1. Do not globally increase starter pessimism or decrease starter projections.
  1. Do not use player-level deviations as broad training targets.
  1. Do not interpret zero simulation flips as proof that simulation is unnecessary.
  1. Do not promote the slate or learn parameters from it while the critical probability-lineage and error-level artifact findings remain unresolved.

---

6. Data and contract defects

Critical findings

Unexplained probability publication delta

The data do not establish a governor bypass. They establish an unexplained material transformation.

Error findings

Two error-level findings, both in WAS@DET:

  1. Current artifact flags River Ryan’s 0.2 IP starter outing as implausible.
  2. Simulation artifact flags the same 0.2 IP starter outing.

These are artifact/presentation or data-contract defects. They are not direct evidence of an incorrect Detroit winner.

Warning findings

Informational findings

Coverage reconciliation

The slate is not “clean” merely because coverage is complete.

Positive coverage facts:

Negative integrity facts:

Probability-lineage audit

MIN@SF

This is not a material bypass under the registered threshold, but the transformation record is incomplete.

TOR@BAL

The numerical difference is small, but the record should still state whether the score-coherence value or another final-stage transformation produced 0.505257.

WAS@DET

This is the only clear material lineage bypass/gap in the supplied evidence.

Presentation/artifact defects versus model defects

Model/process defects
Artifact/presentation defects

These categories must remain separate.

---

7. Cross-slate persistence

A single slate is insufficient for many inferences, but the escalated findings are explicitly established failures and must not be dismissed as single-slate noise.

Raw structural blocks

Margin distribution

Current slate:

This is consistent with margin compression.

Pipeline-stage quality and transitions

The current slate shows a material intermediate regression:

This confirms that the pipeline instability finding is present now.

Calibration monitoring

Current slate:

High-raw cluster
Simulation control

Finding streaks

FindingConsecutive-slate countPresent now?Interpretation
high_raw_probability_cluster0NoNot persistent now; do not tune from this slate
pipeline_winner_instability4YesEstablished recurring winner-direction regression
score_margin_compression0NoCurrent slate shows compression, but the registered streak is not active
simulation_inert_on_slate11YesEstablished recurring simulation failure
single_slate_calibration_instability3YesPersistent enough for a bounded shadow experiment
weak_run_model_signal11YesEstablished structural modeling failure

Escalated findings

Pipeline winner instability
Simulation inertness
Calibration instability
Weak run-model signal

Metric trends

Each supplied trend direction:

The top-confidence-pick loss streak is:

---

8. Adjustments for today

Recommendations are ranked by persistence, scope, expected metric impact, affected games, and regression risk.

1. Fix winner-stage instability — highest priority

2. Repair or isolate the simulation module

3. Run a bounded calibration shadow experiment

A larger simultaneous change to confidence.empirical_max_weight, confidence.base_cap, and confidence.moderate_cap is not recommended; use one bounded shadow lever first.

4. Address weak run-model signal through isolated training work

5. Shadow-test starter venue/form weighting as the strongest single-slate driver

This is a bounded experiment, not a conclusion that all starter projections are systematically wrong.

Parameter abstentions

---

9. Bottom line

Known

Uncertain

Single safest next action

Do not promote or learn from this slate. First repair and trace the artifact and probability contracts: preserve pre/post winner picks, reconcile the WAS@DET published probability transformation, and correct the River Ryan workload artifact. Then run the calibration-cap and simulation fixes in shadow mode with rollback monitors before changing production parameters.