Which reports actually fed the diagnosis. A source shown as missing was not silently assumed.
| Source | Status | Evidence supplied | Path | Bytes |
|---|---|---|---|---|
| prediction review | loaded | official outcomes and scoring errors | /app/output/reports/prediction_review_20260921.json | 79110 |
| forensic deep audit | loaded | probability, provenance, starter and decision contracts | /app/output/reports/PREDICTION_SYSTEM_DEEP_AUDIT_20260921.json | 60154 |
| continuous learning | loaded | pipeline-stage quality, calibration, probability lineage, score distribution, and official starter comparisons | /app/output/learning/continuous_learning_daily_20260921.json | 473280 |
| detailed report | loaded | full game and simulation rendering | /app/output/reports/detailed_20260921.html | 76436 |
| ultra detailed player audit | loaded | player-level prediction trace | /app/output/reports/20260921_ultra_detailed_player_audit.html | 6405727 |
| structural audit | loaded | all invariant findings | /app/output/reports/audit_report_20260921.html | 362566 |
| integrity revision audit | missing | post-Luna remediation proof for immutable revision artifacts | /app/output/reports/audit_report_20260921_integrity_revision.html | n/a |
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).
| Severity | Domain | Finding and evidence | Affected | Action & guardrail |
|---|---|---|---|---|
| CRITICAL | probability_lineage | Published 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. |
| HIGH | artifact_integrity | Blocking 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. |
| HIGH | pipeline_stages | An 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. |
| HIGH | calibration | Published 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. |
| HIGH | model_validation | Validated 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. |
| INFO | coverage | Every 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. |
| INFO | simulation | Simulation 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. |
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.
| Finding | Persistence | Target lever(s) | Direction | Guardrail |
|---|---|---|---|---|
| pipeline_winner_instability | 4 consecutive · 5 in window | code/diagnostic — no parameter | preserve 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_slate | 11 consecutive · 11 in window | simulation.allow_score | confirm the simulation module is running, not silently no-oping | simulation_inert_on_slate has persisted 11 consecutive slates; this is no longer single-slate noise. Treat it as an actionable pattern and raise the code/diagnostic action named; do not force a parameter move. |
| single_slate_calibration_instability | 3 consecutive · 8 in window | confidence.empirical_max_weight, confidence.base_cap, confidence.moderate_cap | increase empirical shrinkage | single_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_signal | 11 consecutive · 11 in window | training.xgb.n_estimators, training.xgb.max_depth, training.xgb.learning_rate | investigate 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 | Consecutive slates | Incidence | Present now | Fix type |
|---|---|---|---|---|
| high_raw_probability_cluster | 0 | 2/11 | no | param |
| pipeline_winner_instability | 4 | 5/11 | yes | code/diagnostic |
| score_margin_compression | 0 | 1/11 | no | param |
| simulation_inert_on_slate | 11 | 11/11 | yes | code/diagnostic |
| single_slate_calibration_instability | 3 | 8/11 | yes | param |
| weak_run_model_signal | 11 | 11/11 | yes | code/diagnostic |
| Metric | Direction | Series (old → new) |
|---|---|---|
| winner_accuracy | regressing | [0.6667, 0.5333, 0.6, 0.7, 0.4, 0.6667, 0.4444, 0.6667, 0.7333, 0.6, 0.3333] |
| weighted_calibration_error | flat | [0.2091, 0.1711, 0.0827, 0.2812, 0.2795, 0.1661, 0.1016, 0.1247, 0.3458, 0.3184, 0.2028] |
| margin_bias | regressing | [-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_losses | improving | [5.0, 6.143, 5.0, 6.333, 5.556, 6.4, 3.6, 5.2, 6.5, 6.5, 3.0] |
Every stored stage is scored against the same official finals. A later recovery remains visible; it does not erase an unstable intermediate flip.
| Stage | Winner hits | Accuracy | Team-run MAE | Total-run MAE | Margin MAE |
|---|---|---|---|---|---|
| historical_ml | 1/3 | 33.3% | 1.915 | 1.876 | 3.791 |
| variance_applied | 0/3 | 0% | 2 | 2 | 4 |
| enhanced_prediction | 1/3 | 33.3% | 2 | 2 | 4 |
| embedded_savant_run_environment | 1/3 | 33.3% | 2 | 2 | 4 |
| fundamental_edge_target_review | 1/3 | 33.3% | 2 | 2 | 4 |
| capped_target | 1/3 | 33.3% | 2 | 2 | 4 |
| simulation_result | 1/3 | 33.3% | 2 | 2 | 4 |
| published_final | 1/3 | 33.3% | 2 | 2 | 4 |
| Transition | Δ accuracy | Δ hits | Δ team-run MAE | Δ margin MAE | Games whose winner/tie changed |
|---|---|---|---|---|---|
| historical_ml → variance_applied | -0.3333 | -1 | 0.0847 | 0.2087 | TOR@BAL: TOR → TIE; WAS@DET: DET → TIE |
| variance_applied → enhanced_prediction | 0.3333 | 1 | 0 | 0 | TOR@BAL: TIE → TOR; WAS@DET: TIE → DET |
| enhanced_prediction → embedded_savant_run_environment | 0 | 0 | 0 | 0 | |
| embedded_savant_run_environment → fundamental_edge_target_review | 0 | 0 | 0 | 0 | |
| fundamental_edge_target_review → capped_target | 0 | 0 | 0 | 0 | |
| capped_target → simulation_result | 0 | 0 | 0 | 0 | |
| simulation_result → published_final | 0 | 0 | 0 | 0 |
All columns are pick-side probabilities, so away favorites are not accidentally compared using home-side semantics.
| Game | Outcome | Raw model | Calibrated | Governor | Score coherence | Published | Explanation |
|---|---|---|---|---|---|---|---|
| MIN@SF | miss | 0.5702 | 0.5848 | 0.5848 | 0.5794 | 0.5675 | no recorded transformation explains the publication delta |
| TOR@BAL | miss | 0.5 | 0.5073 | 0.5073 | 0.5073 | 0.5053 | published probability matches the calibrated/governed value |
| WAS@DET | hit | 0.572 | 0.5774 | 0.5774 | 0.5766 | 0.5358 | no recorded transformation explains the publication delta |
One blown start is noise. The same failure repeating across the slate is a model problem. These are the repeats.
| Sides analyzed | Broke on pitching | Broke on offense | Both | Variance | Mean starter ERA error | Mean lineup runs vs proj |
|---|---|---|---|---|---|---|
| 6 | 0 | 0 | 2 | 4 | -1.08 | -0.5 |
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.
| Game | Trained p(home) | Blended p(home) | Blend favoured | Published p(home) | Published side | Artifact says winner changed | Outcome |
|---|---|---|---|---|---|---|---|
| TOR@BAL | 0.522 | 0.507 | home | 0.495 | away | yes | miss |
Blend side survived on 2 of 3 games; the blend flagged a winner change on 1.
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
| Slate | Games | Winner acc | Mean starter ERA error | Mean lineup runs vs proj | Sides broke on pitching | Sides broke on offense |
|---|---|---|---|---|---|---|
| 20260920 | 15 | 0.600 | -0.89 | -1.00 | 2 | 10 |
| 20260919 | 15 | 0.733 | 1.36 | -0.10 | 8 | 7 |
| 20260918 | 15 | 0.667 | 3.95 | 0.30 | 6 | 5 |
| 20260917 | 9 | 0.444 | 2.16 | -0.22 | 2 | 3 |
| 20260916 | 15 | 0.667 | 2.09 | -0.23 | 4 | 5 |
| 20260915 | 15 | 0.400 | -1.58 | -0.70 | 1 | 12 |
| 20260914 | 10 | 0.700 | -0.48 | -0.20 | 2 | 6 |
| 20260913 | 15 | 0.600 | -0.07 | 0.03 | 2 | 8 |
| 20260912 | 15 | 0.533 | 1.35 | 0.57 | 6 | 7 |
| 20260911 | 15 | 0.667 | 0.99 | 0.00 | 4 | 9 |
| 20260910 | 5 | 0.600 | -3.19 | -1.70 | 8 | |
| 20260909 | 15 | 0.667 | 3.36 | 1.07 | 8 | 7 |
Narrow predicted margins next to wide actual margins is the signature the score-variance tail is too tight.
| Game | Pred margin | Actual margin | Pred − actual |
|---|---|---|---|
| MIN@SF | 1 | 3 | -2 |
| TOR@BAL | 1 | 1 | 0 |
| WAS@DET | 1 | 7 | -6 |
| Team | Starter | Projected | Actual | ER err |
|---|---|---|---|---|
| MIN | Zebby Matthews | 1 ER / 17 outs | 5 ER / 15 outs | 4 |
| SF | Blade Tidwell | 3 ER / 16 outs | 1 ER / 10 outs | -2 |
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:
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:
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.)
| Pitcher | Team | Outs | ERA | ER | H | HR | BB | exp BB | SO | exp SO | Context (as-of) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| MIN | Zebby Matthews (Starter) | 15 / 17 | 9 / 1.59 (+7.41) | 5 / 1 | 8 / 2 | 1 / 0 | 0 / 0 | 1.59 | 9 / 7 | 4.68 | venue away: 6.93 vs 2.57 ERA (worse here) · opp run factor 0.93 (weak) · 22 prior appearances this season |
| MIN | Taylor Rogers (Reliever) | 4 / 0 | 0 / n/a | 0 / 0 | 1 / 0 | 0 / 0 | 0 / 0 | n/a | 1 / 0 | n/a | |
| SF | Blade Tidwell (Starter) | 10 / 16 | 2.7 / 5.06 | 1 / 3 | 3 / 6 | 1 / 2 | 0 / 2 | 2.07 | 4 / 5 | 4.85 | venue home: 8.05 vs 2.42 ERA (worse here) · opp run factor 0.98 (average) · 16 prior appearances this season |
| SF | Trent Harris (Setup Man) | 3 / 2 | 0 / 13.5 (-13.50) | 0 / 1 | 0 / 2 | 0 / 1 | 0 / 0 | 0.25 | 1 / 2 | 1.38 | |
| SF | Jason Foley (Middle Reliever (High Leverage)) | 3 / 0 | 9 / n/a | 1 / 1 | 1 / 1 | 1 / 0 | 0 / 0 | 0.58 | 0 / 2 | 0.78 |
Hitters: actual / projected (sorted by run impact vs projection)
| Batter | Team | AB | H | 2B | 3B | HR | RBI | R | BB | SO | Run impact | Season xwOBA | Signal |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Kody Clemens (2B) | MIN | 4 / 4 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 1 | 0 / 1 | 0 / 1 | 0 / 0 | 2 / 1 | -1.4 | 0.333 above average | bad day |
| Drew Gilbert (CF) | SF | 4 / 4 | 3 / 1 | 0 / 1 | 0 / 0 | 1 / 0 | 3 / 1 | 2 / 0 | 0 / 1 | 1 / 0 | 1.23 | 0.332 above average | projection too low |
| Ryan Jeffers (C) | MIN | 4 / 4 | 0 / 1 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 1 | 0 / 0 | 0 / 1 | 3 / 1 | -1.11 | 0.349 elite | bad day |
| Brett Harris (1B) | SF | 4 / 3 | 2 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 2 / 0 | 0 / 0 | 0 / 0 | 1 / 1 | 0.94 | 0.25 weak | good day |
| Emmanuel Rodriguez (LF) | MIN | 3 / 4 | 1 / 1 | 0 / 0 | 0 / 0 | 1 / 0 | 1 / 0 | 1 / 0 | 0 / 0 | 1 / 1 | 0.93 | 0.32 average | no signal |
| Brooks Lee (3B) | MIN | 4 / 4 | 1 / 1 | 0 / 0 | 0 / 0 | 1 / 0 | 1 / 1 | 1 / 1 | 0 / 0 | 0 / 1 | 0.93 | 0.278 weak | good day |
| Luke Keaschall (RF) | MIN | 4 / 4 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 1 | 0 / 1 | 1 / 0 | -0.8 | 0.317 average | no signal |
| Alan Roden (DH) | MIN | 2 / 3 | 1 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 1 / 0 | 0 / 0 | 0.8 | 0.345 elite | projection too low |
| Drew Cavanaugh (C) | SF | 2 / 3 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 1 | 0 / 1 | -0.8 | 0.307 average | no signal |
| Jonah Cox (2B) | SF | 4 / 4 | 1 / 1 | 1 / 0 | 0 / 0 | 0 / 1 | 0 / 1 | 0 / 1 | 0 / 0 | 3 / 1 | -0.62 | 0.265 weak | projection too high |
| Aaron Sabato (1B) | MIN | 3 / 3 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 1 / 1 | -0.47 | — | — |
| Marcelo Mayer (DH) | SF | 4 / 3 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 1 | 0 / 0 | 0 / 0 | 4 / 1 | -0.47 | 0.259 weak | — |
| Walker Jenkins (CF) | MIN | 4 / 4 | 1 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 1 | 0 / 1 | 0 / 1 | 0 / 1 | -0.33 | 0.309 average | — |
| Bo Davidson (RF) | SF | 4 / 4 | 1 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 1 | 1 / 1 | 0 / 1 | 1 / 1 | -0.33 | — | — |
| Christian Koss (SS) | SF | 3 / 3 | 1 / 1 | 1 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 1 / 1 | 0 / 0 | 1 / 1 | 0.31 | 0.249 weak | — |
| Ryan Kreidler (SS) | MIN | 3 / 3 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 1 | 0 | 0.294 below average | — |
| Osleivis Basabe (3B) | SF | 3 / 3 | 1 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 1 / 0 | 0 / 0 | 0 / 1 | 0 | 0.28 weak | — |
| Scott Bandura (LF) | SF | 3 / 3 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 2 / 1 | 0 | 0.131 weak | — |
| Signal | Home-away edge | Meaning |
|---|---|---|
| Season quality | -0.162 | positive favors home; negative favors away |
| Recent form | -0.064 | positive favors home; negative favors away |
| Starting-pitcher matchup | -0.053 | positive favors home; negative favors away |
| Composite | -0.402 | positive favors home; negative favors away |
| Stage | Away-home runs | Confidence | What changed |
|---|---|---|---|
| historical_ml | 4.7-4.34 | n/a | Base ML historical model prediction |
| variance_applied | 5-4 | n/a | Deterministic baseline target (variance factor 1.0) |
| enhanced_prediction | 5-4 | 0.568 | Enhanced ML with recent form, H2H, low-score analysis (confidence shrunk by projected_margin_is_one_run) |
| embedded_savant_run_environment | 5-4 | n/a | Target score adjusted by temporal Savant lineup quality versus opposing starter quality |
| fundamental_edge_target_review | 5-4 | n/a | Refreshed score target and win probability after Savant/pitcher/team-strength adjustments |
| capped_target | 5-4 | n/a | Capped at max 12 realistic runs |
| simulation_result | 5-4 | n/a | Final inning-by-inning simulation result |
| Stage | Before | After | Toward final pick | What changed |
|---|---|---|---|---|
| variance_applied | 4.7-4.34 | 5-4 | 0.646 | Deterministic baseline target (variance factor 1.0) |
| enhanced_prediction | 5-4 | 5-4 | -0 | Enhanced ML with recent form, H2H, low-score analysis (confidence shrunk by projected_margin_is_one_run) |
| embedded_savant_run_environment | 5-4 | 5-4 | -0 | Target score adjusted by temporal Savant lineup quality versus opposing starter quality |
| fundamental_edge_target_review | 5-4 | 5-4 | -0 | Refreshed score target and win probability after Savant/pitcher/team-strength adjustments |
| capped_target | 5-4 | 5-4 | -0 | Capped at max 12 realistic runs |
| simulation_result | 5-4 | 5-4 | -0 | Final inning-by-inning simulation result |
These are pregame model adjustments, not claims about actual postgame player error.
| Team | Player | Role | Net effect | Largest change |
|---|---|---|---|---|
| MIN | Alan Roden | batter / DH | better | predicted_AB 2.429 |
| SF | Christian Koss | batter / SS | worse | predicted_SO 2.237 |
| MIN | Ryan Kreidler | batter / SS | worse | predicted_AB 2.214 |
| SF | Jonah Cox | batter / 2B | worse | predicted_AB 2.178 |
| MIN | Walker Jenkins | batter / CF | worse | predicted_SO 2.056 |
| SF | Marcelo Mayer | batter / DH | better | predicted_AB 1.985 |
| SF | Brett Harris | batter / 1B | better | predicted_H 1.63 |
| MIN | Kody Clemens | batter / 2B | worse | predicted_RBI 1.49 |
| Severity | Rule | Finding | Subject |
|---|---|---|---|
| info | CURRENT_PITCHER_DUPLICATION | MIN pitcher list appears in both predicted_performance.pitchers and player_predictions_by_position.pitchers; IDs match and were de-duplicated in this audit. | MIN |
| info | CURRENT_PITCHER_DUPLICATION | SF pitcher list appears in both predicted_performance.pitchers and player_predictions_by_position.pitchers; IDs match and were de-duplicated in this audit. | SF |
| info | CURRENT_FINALIZED_MATCH_BOX | MIN model pitcher projections differ from final simulation pitching box score (HR: current=0, sim=1). | MIN |
| info | CURRENT_FINALIZED_MATCH_BOX | MIN 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 |
| info | CURRENT_PLAYER_MATCH_BOX | MIN 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=2 | MIN |
| info | CURRENT_FINALIZED_MATCH_BOX | SF 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 |
| info | CURRENT_PLAYER_MATCH_BOX | SF 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=0 | SF |
| info | RECONCILIATION_PROPAGATION | No score_target_reconciliation step was used for this game. |
No large single-factor errors.
| Team | Starter | Projected | Actual | ER err |
|---|---|---|---|---|
| TOR | Trey Yesavage | 3 ER / 15 outs | 1 ER / 6 outs | -2 |
| BAL | Shane Baz | 4 ER / 17 outs | 3 ER / 20 outs | -1 |
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:
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:
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.)
| Pitcher | Team | Outs | ERA | ER | H | HR | BB | exp BB | SO | exp SO | Context (as-of) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| TOR | Trey Yesavage (Starter) | 6 / 15 | 4.5 / 5.4 | 1 / 3 | 1 / 4 | 1 / 1 | 0 / 1 | 2.61 | 3 / 4 | 4.68 | venue away: 3.14 vs 4.2 ERA (ok) · opp run factor 1 (average) · 18 prior appearances this season |
| TOR | Tyler Rogers (Setup Man) | 1 / 3 | 27 / 0 (+27.00) | 1 / 0 | 2 / 0 | 1 / 0 | 0 / 1 | 0.25 | 0 / 1 | 0.5 | |
| BAL | Shane Baz (Starter) | 20 / 17 | 4.05 / 6.35 | 3 / 4 | 5 / 7 | 0 / 1 | 3 / 2 | 2.12 | 2 / 4 | 5.42 | venue home: 3.92 vs 4.29 ERA (ok) · opp run factor 1.06 (weak) · 30 prior appearances this season |
| BAL | Rico Garcia (Setup Man) | 3 / 5 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0.34 | 2 / 1 | 1.21 | |
| BAL | Yennier Cano (Middle Reliever (High Leverage)) | 4 / 2 | 0 / 13.5 (-13.50) | 0 / 1 | 1 / 1 | 0 / 1 | 0 / 0 | 0.19 | 1 / 1 | 0.69 |
Hitters: actual / projected (sorted by run impact vs projection)
| Batter | Team | AB | H | 2B | 3B | HR | RBI | R | BB | SO | Run impact | Season xwOBA | Signal |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Gunnar Henderson (SS) | BAL | 4 / 4 | 3 / 1 | 0 / 0 | 1 / 0 | 1 / 0 | 1 / 0 | 1 / 1 | 0 / 1 | 0 / 1 | 2.16 | 0.319 average | no signal |
| Pete Alonso (1B) | BAL | 4 / 4 | 2 / 1 | 0 / 0 | 0 / 0 | 2 / 0 | 3 / 1 | 2 / 1 | 0 / 1 | 1 / 1 | 2 | 0.395 elite | projection too low |
| Coby Mayo (DH) | BAL | 4 / 4 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 1 | 0 / 1 | 0 / 1 | 0 / 0 | 2 / 1 | -1.4 | 0.338 above average | bad day |
| Dylan Beavers (LF) | BAL | 4 / 4 | 0 / 1 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 1 | 0 / 0 | 0 / 1 | 2 / 1 | -1.11 | 0.296 below average | projection too high |
| Kazuma Okamoto (3B) | TOR | 4 / 4 | 1 / 1 | 0 / 0 | 0 / 0 | 0 / 1 | 0 / 1 | 0 / 1 | 0 / 0 | 1 / 1 | -0.93 | 0.328 above average | bad day |
| Sean Keys (1B) | TOR | 3 / 3 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 1 / 1 | 0 / 0 | 0 / 0 | 2 / 1 | -0.47 | 0.259 weak | — |
| Brett Bateman (CF) | TOR | 1 / 4 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 1 / 1 | 1 / 1 | 0 / 1 | -0.47 | 0.303 average | — |
| Ernie Clement (2B) | TOR | 3 / 3 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | -0.47 | 0.26 weak | — |
| José Barrero (2B) | BAL | 2 / 3 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 2 / 1 | -0.47 | — | — |
| Samuel Basallo (C) | BAL | 2 / 4 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 2 / 1 | -0.47 | 0.32 average | — |
| Nathan Lukes (RF) | TOR | 3 / 4 | 1 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 1 / 0 | 1 / 1 | 1 / 0 | 0 / 1 | 0.33 | 0.287 below average | — |
| George Springer (DH) | TOR | 4 / 4 | 2 / 1 | 0 / 1 | 0 / 0 | 0 / 0 | 1 / 0 | 0 / 1 | 0 / 1 | 1 / 1 | -0.17 | 0.303 average | — |
| Alejandro Kirk (C) | TOR | 3 / 4 | 1 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 1 | 1 / 0 | 1 / 1 | 0 / 0 | 0 | 0.309 average | — |
| Josh Smith (LF) | TOR | 4 / 3 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 1 / 1 | 0 | 0.28 weak | — |
| Andrés Giménez (SS) | TOR | 3 / 3 | 1 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 1 | 0 | 0.273 weak | — |
| Christian Encarnacion-Strand (3B) | BAL | 3 / 4 | 1 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 1 | 0 / 1 | 0 / 0 | 0 / 1 | 0 | 0.336 above average | — |
| Rece Hinds (RF) | BAL | 3 / 3 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 2 | 0 | 0.196 weak | — |
| Colton Cowser (CF) | BAL | 1 / 3 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 1 / 1 | 1 / 1 | 0 | 0.314 average | — |
| Signal | Home-away edge | Meaning |
|---|---|---|
| Season quality | 0.091 | positive favors home; negative favors away |
| Recent form | -0.046 | positive favors home; negative favors away |
| Starting-pitcher matchup | -0.053 | positive favors home; negative favors away |
| Composite | -0.258 | positive favors home; negative favors away |
| Stage | Away-home runs | Confidence | What changed |
|---|---|---|---|
| historical_ml | 4.3-4.06 | n/a | Base ML historical model prediction |
| variance_applied | 4-4 | n/a | Deterministic baseline target (variance factor 1.0) |
| enhanced_prediction | 5-4 | 0.505 | Enhanced ML with recent form, H2H, low-score analysis (confidence shrunk by projected_margin_is_one_run, matchup_recency_guardrail) |
| embedded_savant_run_environment | 5-4 | n/a | Target score adjusted by temporal Savant lineup quality versus opposing starter quality |
| fundamental_edge_target_review | 5-4 | n/a | Refreshed score target and win probability after Savant/pitcher/team-strength adjustments |
| capped_target | 5-4 | n/a | Capped at max 12 realistic runs |
| simulation_result | 5-4 | n/a | Final inning-by-inning simulation result |
| Stage | Before | After | Toward final pick | What changed |
|---|---|---|---|---|
| variance_applied | 4.3-4.06 | 4-4 | -0.238 | Deterministic baseline target (variance factor 1.0) |
| enhanced_prediction | 4-4 | 5-4 | 1 | Enhanced ML with recent form, H2H, low-score analysis (confidence shrunk by projected_margin_is_one_run, matchup_recency_guardrail) |
| embedded_savant_run_environment | 5-4 | 5-4 | -0 | Target score adjusted by temporal Savant lineup quality versus opposing starter quality |
| fundamental_edge_target_review | 5-4 | 5-4 | -0 | Refreshed score target and win probability after Savant/pitcher/team-strength adjustments |
| capped_target | 5-4 | 5-4 | -0 | Capped at max 12 realistic runs |
| simulation_result | 5-4 | 5-4 | -0 | Final inning-by-inning simulation result |
These are pregame model adjustments, not claims about actual postgame player error.
| Team | Player | Role | Net effect | Largest change |
|---|---|---|---|---|
| BAL | Gunnar Henderson | batter / SS | worse | predicted_SO 2.02 |
| TOR | Brett Bateman | batter / CF | worse | predicted_RBI 1.68 |
| TOR | Ernie Clement | batter / 2B | worse | predicted_SO 1.629 |
| BAL | Rece Hinds | batter / RF | worse | predicted_AB 1.5 |
| BAL | Coby Mayo | batter / DH | better | predicted_RBI 1.475 |
| BAL | José Barrero | batter / 2B | deboosted | predicted_AB -1.369 |
| TOR | Sean Keys | batter / 1B | worse | predicted_AB 1.333 |
| TOR | Andrés Giménez | batter / SS | worse | predicted_H 1.3 |
| Severity | Rule | Finding | Subject |
|---|---|---|---|
| info | CURRENT_PITCHER_DUPLICATION | BAL pitcher list appears in both predicted_performance.pitchers and player_predictions_by_position.pitchers; IDs match and were de-duplicated in this audit. | BAL |
| info | CURRENT_PITCHER_DUPLICATION | TOR pitcher list appears in both predicted_performance.pitchers and player_predictions_by_position.pitchers; IDs match and were de-duplicated in this audit. | TOR |
| info | CURRENT_FINALIZED_MATCH_BOX | BAL 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 |
| info | CURRENT_PLAYER_MATCH_BOX | BAL 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=1 | BAL |
| info | CURRENT_FINALIZED_MATCH_BOX | TOR 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 |
| info | CURRENT_PLAYER_MATCH_BOX | TOR 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=1 | TOR |
| info | RECONCILIATION_PROPAGATION | No score_target_reconciliation step was used for this game. |
| Team | Starter | Projected | Actual | ER err |
|---|---|---|---|---|
| WAS | DJ Herz | 1 ER / 7 outs | 4 ER / 12 outs | 3 |
| DET | River Ryan | 1 ER / 2 outs | 0 ER / 9 outs | -1 |
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:
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:
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.)
| Pitcher | Team | Outs | ERA | ER | H | HR | BB | exp BB | SO | exp SO | Context (as-of) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| WAS | DJ Herz (Starter) | 12 / 7 | 9 / 3.86 (+5.14) | 4 / 1 | 5 / 4 | 1 / 0 | 2 / 0 | 0.3 | 4 / 7 | 4.16 | opp run factor 1 (average) |
| WAS | Luis Perales (Middle Reliever (High Leverage)) | 6 / 3 | 22.5 / 0 (+22.50) | 5 / 0 | 5 / 2 | 2 / 0 | 2 / 1 | 1.84 | 2 / 1 | 1.9 | |
| DET | River Ryan (Starter) | 9 / 2 | 0 / 13.5 (-13.50) | 0 / 1 | 2 / 5 | 0 / 0 | 1 / 2 | 0.37 | 3 / 2 | 4.57 | opp run factor 1 (strong) |
| DET | Drew Sommers (Middle Reliever (High Leverage)) | 3 / 4 | 18 / 0 (+18.00) | 2 / 0 | 2 / 0 | 1 / 0 | 0 / 1 | 0.3 | 2 / 2 | 1.49 |
Hitters: actual / projected (sorted by run impact vs projection)
| Batter | Team | AB | H | 2B | 3B | HR | RBI | R | BB | SO | Run impact | Season xwOBA | Signal |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CJ Abrams (C) | WAS | 3 / 4 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 1 | 0 / 1 | 0 / 1 | 0 / 1 | 2 / 1 | -1.73 | 0.329 above average | bad day |
| Hao-Yu Lee (SS) | DET | 5 / 4 | 3 / 1 | 2 / 0 | 0 / 0 | 0 / 0 | 1 / 1 | 1 / 0 | 0 / 0 | 0 / 1 | 1.56 | 0.3 below average | good day |
| Spencer Torkelson (2B) | DET | 4 / 3 | 1 / 1 | 0 / 0 | 0 / 0 | 1 / 0 | 2 / 0 | 1 / 0 | 0 / 0 | 2 / 1 | 0.93 | 0.314 average | no signal |
| Nasim Nuñez (1B) | WAS | 1 / 3 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 1 | 0 / 1 | -0.8 | 0.267 weak | projection too high |
| Jacob Young (DH) | WAS | 3 / 3 | 2 / 1 | 1 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 1 | 0 / 0 | 1 / 1 | 0.78 | 0.315 average | no signal |
| Keibert Ruiz (SS) | WAS | 3 / 4 | 0 / 1 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | -0.78 | 0.289 below average | projection too high |
| Riley Greene (LF) | DET | 3 / 4 | 0 / 1 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 1 | 1 / 1 | 1 / 1 | 1 / 1 | -0.78 | 0.374 elite | bad day |
| Abimelec Ortiz (2B) | WAS | 3 / 4 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 1 | -0.47 | 0.276 weak | — |
| Brady House (3B) | WAS | 4 / 4 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 1 | 0 / 0 | 0 / 0 | 2 / 1 | -0.47 | 0.338 above average | — |
| Daylen Lile (CF) | WAS | 4 / 3 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 1 | 0 / 1 | 0 / 0 | 1 / 1 | -0.47 | 0.328 above average | — |
| Gleyber Torres (C) | DET | 3 / 4 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 1 / 1 | 1 / 1 | 0 / 1 | -0.47 | 0.324 above average | — |
| Brett Callahan (RF) | DET | 1 / 3 | 0 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 1 | -0.47 | 0.314 average | — |
| Dylan Crews (LF) | WAS | 3 / 4 | 1 / 1 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 1 | 1 / 0 | 1 / 1 | 0.33 | 0.316 average | — |
| Dillon Dingler (3B) | DET | 3 / 4 | 2 / 1 | 1 / 0 | 0 / 0 | 0 / 1 | 0 / 1 | 2 / 1 | 1 / 0 | 1 / 1 | 0.18 | 0.34 elite | — |
| Jorbit Vivas (RF) | WAS | 3 / 3 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 | 1 / 1 | 1 / 0 | 0 | 0.295 below average | — |
| Signal | Home-away edge | Meaning |
|---|---|---|
| Season quality | 0.282 | positive favors home; negative favors away |
| Recent form | 0.14 | positive favors home; negative favors away |
| Starting-pitcher matchup | 0 | positive favors home; negative favors away |
| Composite | 0.37 | positive favors home; negative favors away |
| Stage | Away-home runs | Confidence | What changed |
|---|---|---|---|
| historical_ml | 4.27-4.49 | n/a | Base ML historical model prediction |
| variance_applied | 4-4 | n/a | Deterministic baseline target (variance factor 1.0) |
| enhanced_prediction | 4-5 | 0.536 | Enhanced 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_environment | 4-5 | n/a | Target score adjusted by temporal Savant lineup quality versus opposing starter quality |
| fundamental_edge_target_review | 4-5 | n/a | Refreshed score target and win probability after Savant/pitcher/team-strength adjustments |
| capped_target | 4-5 | n/a | Capped at max 12 realistic runs |
| simulation_result | 4-5 | n/a | Final inning-by-inning simulation result |
| Stage | Before | After | Toward final pick | What changed |
|---|---|---|---|---|
| variance_applied | 4.27-4.49 | 4-4 | -0.218 | Deterministic baseline target (variance factor 1.0) |
| enhanced_prediction | 4-4 | 4-5 | 1 | Enhanced 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_environment | 4-5 | 4-5 | 0 | Target score adjusted by temporal Savant lineup quality versus opposing starter quality |
| fundamental_edge_target_review | 4-5 | 4-5 | 0 | Refreshed score target and win probability after Savant/pitcher/team-strength adjustments |
| capped_target | 4-5 | 4-5 | 0 | Capped at max 12 realistic runs |
| simulation_result | 4-5 | 4-5 | 0 | Final inning-by-inning simulation result |
These are pregame model adjustments, not claims about actual postgame player error.
| Team | Player | Role | Net effect | Largest change |
|---|---|---|---|---|
| WAS | Abimelec Ortiz | batter / 2B | better | predicted_RBI 3.675 |
| DET | River Ryan | pitcher / Starter | neutral | predicted_SO -3 |
| DET | Jacob Waguespack | pitcher / Middle Reliever (High Leverage) | neutral | predicted_SO 3 |
| DET | Riley Greene | batter / LF | better | predicted_RBI 2.432 |
| DET | Hao-Yu Lee | batter / SS | better | predicted_H 2.2 |
| WAS | DJ Herz | pitcher / Starter | better | predicted_IP 2 |
| DET | Max Clark | batter / 1B | worse | predicted_AB 1.5 |
| DET | Brett Callahan | batter / RF | better | predicted_AB 1.5 |
| Severity | Rule | Finding | Subject |
|---|---|---|---|
| error | PITCHING_REALISM | current:DET has implausible starter workload/result line(s): River Ryan: 0.2 IP starter outing | DET |
| error | PITCHING_REALISM | simulation:DET has implausible starter workload/result line(s): River Ryan: 0.2 IP starter outing | DET |
| info | CURRENT_PITCHER_DUPLICATION | DET pitcher list appears in both predicted_performance.pitchers and player_predictions_by_position.pitchers; IDs match and were de-duplicated in this audit. | DET |
| info | CURRENT_PITCHER_DUPLICATION | WAS pitcher list appears in both predicted_performance.pitchers and player_predictions_by_position.pitchers; IDs match and were de-duplicated in this audit. | WAS |
| info | CURRENT_FINALIZED_MATCH_BOX | DET 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 |
| info | CURRENT_PLAYER_MATCH_BOX | DET 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=1 | DET |
| info | CURRENT_FINALIZED_MATCH_BOX | WAS 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 |
| info | CURRENT_PLAYER_MATCH_BOX | WAS 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=0 | WAS |
| info | RECONCILIATION_PROPAGATION | No score_target_reconciliation step was used for this game. |
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.
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.
| Metric | Prior | Current | Δ | Result |
|---|---|---|---|---|
| brier_score | 0.2393 | 0.2409 | +0.001597 | regressed |
| accuracy | 0.6 | 0.5833 | -0.0167 | regressed |
| team_run_mae | 2.5042 | 2.4917 | -0.0125 | improved |
| total_run_mae | 3.3583 | 3.2833 | -0.075 | improved |
| calibration_error | 0.0885 | 0.0887 | +0.0002 | regressed |
| starter_er_mae | 1.6855 | 1.6969 | +0.0114 | regressed |
| starter_outs_mae | 3.4839 | 3.5276 | +0.0437 | regressed |
All manifest entries were checked against the supplied evidence:
| Source | Status | Purpose |
|---|---|---|
prediction review — /app/output/reports/prediction_review_20260921.json | Loaded, 79,110 bytes | Official outcomes and scoring errors |
forensic deep audit — /app/output/reports/PREDICTION_SYSTEM_DEEP_AUDIT_20260921.json | Loaded, 60,154 bytes | Probability, provenance, starter, and decision contracts |
continuous learning — /app/output/learning/continuous_learning_daily_20260921.json | Loaded, 473,280 bytes | Stage quality, calibration, lineage, score distribution, and starter comparisons |
detailed report — /app/output/reports/detailed_20260921.html | Loaded, 76,436 bytes | Full game and simulation rendering |
ultra detailed player audit — /app/output/reports/20260921_ultra_detailed_player_audit.html | Loaded, 6,405,727 bytes | Player-level prediction trace |
structural audit — /app/output/reports/audit_report_20260921.html | Loaded, 362,566 bytes | Invariant findings |
integrity revision audit — /app/output/reports/audit_report_20260921_integrity_revision.html | Missing | Post-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.
Coverage is complete for the three-game slate:
MIN@SFTOR@BALWAS@DETThe coverage matrix reports:
trueThe slate was therefore game-complete, although not artifact-complete because the integrity-revision audit is missing.
WAS@DET has a calibrated-to-published difference of -0.041591, with unexplained_material_delta: true.MIN@SF also says "transformation":"no recorded transformation explains the publication delta", although its delta is only -0.017297 and is marked non-material.TOR@BAL has a small published-minus-calibrated difference of -0.002043, while the record says the published value matches the calibrated/governed value. The numerical values are not identical, but the difference is small and not material under the stated threshold.WAS@DET.0.2 IP, nine outs, and a projected 0.2 IP; the structural audit flags this as an implausible starter workload.MIN@SF record calls the home-minus-away edge -0.135, while the diagnostic describes a 0.14-confidence away commitment. This is directionally consistent: the away probability was approximately 0.568, but the edge is not close to certainty.0.12 home-away confidence edge must be treated as moderate, not near-even and not high conviction.---
The slate finished:
1/3 = 33.33%MIN@SF, TOR@BALWAS@DET57.018%59.188%false; the slate is quarantined from new parameter proposals because of critical/error artifact findingsThis is a poor slate, but the causes differ by game.
Winner accuracy was poor: 33.3%, with only WAS@DET correct.
The quality of the winner path was not stable:
historical_ml: 1/3 winnersvariance_applied: 0/3enhanced_prediction: 1/3published_final: 1/3The variance stage caused a measurable winner-direction regression:
0.3333WAS@DET changed from Detroit to tie at that stageTOR@BAL changed from Toronto to tieThe enhanced stage later recovered the WAS@DET direction, but that recovery does not erase the intermediate regression.
Calibration was weak and overconfident on this slate:
0.20280.50–0.55 bucket: average confidence 0.5205, observed hit rate 0.5000, two games, one hit0.55–0.60 bucket: average confidence 0.5675, observed hit rate 0.0000, one game, zero hitsThe 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:
0.5675030.32206TOR@BAL was essentially a toss-up:
0.5052570.255285WAS@DET was a correct lean:
0.5358090.215473A correct winner does not make the probability well calibrated; it only records that the selected side won.
Score accuracy was materially poor:
1, 1, 13, 1, 74.0-4.0The run models have almost no validated holdout signal:
0.0316810.0187350.008918The 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 projection was the primary cause of MIN@SF:
1 ER, actual 5 ER; projected ERA 1.59, actual ERA 9.00+4 ER, +7.41 ERA points6.93 ERA on the relevant side versus 2.57 on the other sideStarter projection contributed materially to WAS@DET as well:
1 ER, actual 4 ER3.86, actual ERA 9.00+3 ER, +5.14 ERA pointsHowever, Detroit still won, and the extreme River Ryan line was favorable to the pick:
1 ER, actual 0 ER13.50, actual ERA 0.00TOR@BAL did not show a decisive starter failure:
Artifact integrity is not clean:
0.2 IP starter outing0.2 IP starter outingWAS@DET audit risk score: 80, status ERRORMIN@SF and TOR@BAL: structural status PASS, zero defectsThis 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.
unexplained_probability_publication_deltaWAS@DET0.5774; published probability 0.535809; difference -0.041591This is the only critical finding and is correctly classified as an evidence/contract failure.
artifact_integrity_failure20260921_WAS@DETpipeline_winner_instabilityWAS@DEThistorical_ml → variance_applied reduced winner accuracy by one hit, or -0.3333single_slate_calibration_instability0.2028 over three settled gamesBecause this finding has since escalated to a three-slate streak, it now supports a bounded shadow experiment, discussed below.
weak_run_model_signal0.0187/0.0317/0.0089complete_slate_audit_coveragesimulation_inert_on_slate---
MIN@SF — wrong winner and wrong score0.5675030.432497-0.1350.14 toward Minnesota0.322064+24| Starter | Projected | Actual | Error |
|---|---|---|---|
| Zebby Matthews, MIN | 1 ER, 17 outs, ERA 1.59 | 5 ER, 15 outs, ERA 9.00 | +4 ER, -2 outs, +7.41 ERA |
| Blade Tidwell, SF | 3 ER, 16 outs, ERA 5.06 | 1 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.
-0.162-0.064-0.053-0.4015 / approximately -0.402-11, 3.7 runs scored, 4.8 allowed-11, 4.6 runs scored, 5.7 allowedThe directional evidence favored Minnesota, but the edge was not large enough to justify treating the 0.14 confidence difference as near-certainty.
0.98090.9280.5206The 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.
4.697, SF 4.3435, SF 45, SF 45, SF 4+0.1928-0.2595The simulation did not provide an independent correction; it merely preserved the narrow target.
There were 25 material player changes. Important listed adjustments included:
2.4292.2372.2142.1782.0561.9851.6301.490Important realized deviations:
-1.4-1.11+1.23 for SF+0.94+0.93The matchup verdict was:
PASS0---
TOR@BAL — toss-up miss and wrong score0.5052570.494743-0.01050.01 toward Toronto0.2552852+22This was a close, low-conviction game. It should not be grouped with the moderate-confidence MIN@SF miss.
| Starter | Projected | Actual | Error |
|---|---|---|---|
| Trey Yesavage, TOR | 3 ER, 15 outs, ERA 5.40 | 1 ER, 6 outs, ERA 4.50 | -2 ER, -9 outs, -0.90 ERA |
| Shane Baz, BAL | 4 ER, 17 outs, ERA 6.35 | 3 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.
+0.0907-0.046-0.0531-0.2584+0.164+0.0513The inputs conflicted: season quality favored Baltimore, while recent and pitcher edges leaned Toronto. The composite favored Toronto, but only weakly.
Recent form:
-5, 4.0 runs scored, 4.5 allowed0, 4.1 runs scored, 4.1 allowed1.05581.00270.52064.297, BAL 4.0594, BAL 45, BAL 45, BAL 4-0.2485+0.0277The 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.
This game contains the only recorded blend-stage side reversal:
0.5220780.5067950.494743This is not automatically a defect, but it is a decision-path instability worth tracing alongside the broader winner-instability finding.
There were 23 material player changes. Notable adjustments included:
2.021.681.6291.51.475-1.3691.3331.3Important realized contributions:
+2.16+2.0-1.4-1.11-0.93The forensic conclusion was a genuine toss-up, with no starter or one-sided team breakdown.
PASS0---
WAS@DET — correct winner, wrong score0.535809+0.07160.07This 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.
0.2154736-26win_quality: right_winner_wrong_score| Starter | Projected | Actual | Error |
|---|---|---|---|
| DJ Herz, WAS | 1 ER, 7 outs, ERA 3.86 | 4 ER, 12 outs, ERA 9.00 | +3 ER, +5 outs, +5.14 ERA |
| River Ryan, DET | 1 ER, 2 outs, ERA 13.50 | 0 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.
+0.2823+0.1400.000+0.3703+0.359The 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.
1.0The unavailable starter experience and venue fields are important data gaps for this matchup, particularly because the actual starter outcomes were extreme.
4.697, DET 4.3434, DET 5The final score path never represented the possibility of Detroit winning by a wide margin.
Important realized contributors:
-1.73+1.56+0.93-0.80+0.78The slate-level player audit also identifies Keibert Ruiz as a below-average hitter who was over-projected, with run impact -0.78.
Two structural errors were recorded:
DET River Ryan has an implausible 0.2 IP starter outingPITCHING_REALISM0.2 IP starter outingPITCHING_REALISMSummary:
80ERRORThe errors are presentation/data-contract defects. They should not be treated as proof that the Detroit winner was incorrectly modeled.
---
MIN@SFThe earliest evidence that moved the model toward the wrong result was already present in the pregame directional inputs:
-0.162-0.064-0.053-0.4015Those 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:
context.venue_adjustment_weight in shadow testing.0.5675 away probability was too strong for a miss, though the primary error was not solely calibration.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@BALThe 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.
0.255285 is much less concerning than the MIN miss.The blend-stage reversal is a pipeline-quality concern:
0.5067950.505257This should be traced, but it is not evidence that Baltimore should simply have been selected.
| Stage | Winner accuracy | Winner hits | Team-run MAE | Total-run MAE | Margin MAE |
|---|---|---|---|---|---|
| Historical ML | 33.33% | 1/3 | 1.9153 | 1.8757 | 3.7913 |
| Variance applied | 0% | 0/3 | 2.0000 | 2.0000 | 4.0000 |
| Enhanced prediction | 33.33% | 1/3 | 2.0000 | 2.0000 | 4.0000 |
| Embedded Savant environment | 33.33% | 1/3 | 2.0000 | 2.0000 | 4.0000 |
| Fundamental edge review | 33.33% | 1/3 | 2.0000 | 2.0000 | 4.0000 |
| Capped target | 33.33% | 1/3 | 2.0000 | 2.0000 | 4.0000 |
| Simulation result | 33.33% | 1/3 | 2.0000 | 2.0000 | 4.0000 |
| Published final | 33.33% | 1/3 | 2.0000 | 2.0000 | 4.0000 |
Transitions:
TOR → TIEDET → TIEWAS@DET is recorded as the regression-0.3333-1+0.0847+0.2087TOR@BAL: TIE → TORWAS@DET: TIE → DETThe 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.
---
score.variance_multiplier / score.variance_floorMIN@SFplayer.pitcher.v4 form weights / player.pitcher_prior_gamesMIN@SF: Matthews was four ER worse than projectedWAS@DET: Herz was three ER worse than projected1.26recent.* / season.* run-mean weightingMIN@SF: team-run error of 4WAS@DET: team-run error of 6TOR@BAL: team-run error was only 2; reweighting could disturb this close game-0.1827/12 = 0.583-0.87TOR@BAL.0.505 Toronto probability and no decisive starter breakdown.31.8%, were supported by the hitter’s own season contact quality.---
WAS@DET0.5930310.57740.5358090.5774-0.041591The data do not establish a governor bypass. They establish an unexplained material transformation.
Two error-level findings, both in WAS@DET:
0.2 IP starter outing as implausible.0.2 IP starter outing.These are artifact/presentation or data-contract defects. They are not direct evidence of an incorrect Detroit winner.
022 totalMIN@SF: 8TOR@BAL: 7WAS@DET: 7The slate is not “clean” merely because coverage is complete.
Positive coverage facts:
Negative integrity facts:
WAS@DET contains two structural errors.MIN@SF0.57020.5996070.58480.58480.5794150.567503-0.017297This is not a material bypass under the registered threshold, but the transformation record is incomplete.
TOR@BAL0.50000.50130.50730.50730.5072760.505257-0.002043The numerical difference is small, but the record should still state whether the score-coherence value or another final-stage transformation produced 0.505257.
WAS@DET0.57200.5930310.57740.57740.5765970.535809-0.041591This is the only clear material lineage bypass/gap in the supplied evidence.
0.008918WAS@DETThese categories must remain separate.
---
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.
Current slate:
1, 3, 71, 1, 1WAS@DET signed margin error: -6MIN@SF signed margin error: -2TOR@BAL signed margin error: 0This is consistent with margin compression.
The current slate shows a material intermediate regression:
33.3% to 0%This confirms that the pipeline instability finding is present now.
Current slate:
0.20280.50–0.55 bucket, one hit0.55–0.60 bucket, zero hits0.6500| Finding | Consecutive-slate count | Present now? | Interpretation |
|---|---|---|---|
high_raw_probability_cluster | 0 | No | Not persistent now; do not tune from this slate |
pipeline_winner_instability | 4 | Yes | Established recurring winner-direction regression |
score_margin_compression | 0 | No | Current slate shows compression, but the registered streak is not active |
simulation_inert_on_slate | 11 | Yes | Established recurring simulation failure |
single_slate_calibration_instability | 3 | Yes | Persistent enough for a bounded shadow experiment |
weak_run_model_signal | 11 | Yes | Established structural modeling failure |
simulation.allow_scoreconfidence.empirical_max_weightconfidence.base_capconfidence.moderate_captraining.xgb.n_estimatorstraining.xgb.max_depthtraining.xgb.learning_rateEach supplied trend direction:
-1.77985.38470.20750.5768The top-confidence-pick loss streak is:
120260921: miss20260911, 20260912, 20260914, and 20260919, but the streak is not currently longer than one.---
Recommendations are ranked by persistence, scope, expected metric impact, affected games, and regression risk.
pipeline_winner_instabilityWAS@DET-type cases where variance changed a correct directional base pick to a tiesimulation_inert_on_slatesimulation.allow_scoreMIN@SF and WAS@DETsingle_slate_calibration_instabilityconfidence.moderate_cap0.02, in shadow only0.55–0.60 bucketMIN@SF, the moderate-confidence missWAS@DET, where the correct lean could be slightly underconfident; TOR@BAL should be minimally affected because it is a toss-upA larger simultaneous change to confidence.empirical_max_weight, confidence.base_cap, and confidence.moderate_cap is not recommended; use one bounded shadow lever first.
weak_run_model_signaltraining.xgb.n_estimators, training.xgb.max_depth, training.xgb.learning_rateWAS@DET and MIN@SFMIN@SFplayer.pitcher.v4 form weights+0.05 relative to its current registered weight, shadow onlyMIN@SF and WAS@DET, where starters were materially worse than projectedTOR@BAL, where both starters were better than projected and the result was a toss-up0.7541.26This is a bounded experiment, not a conclusion that all starter projections are systematically wrong.
recent.* / season.* run-mean weighting today:score.variance_floor or score.variance_multiplier until the simulation and run-model diagnostics are repaired. The slate supports wider tails, but the persistent run-model signal failure means a variance change could mask rather than solve the underlying problem.---
WAS@DET was a correct-winner/wrong-score game, not a good exact prediction.MIN@SF was the clearest substantive miss: a moderate-confidence Minnesota pick was undermined by a badly under-projected Zebby Matthews start, an underperforming Minnesota lineup, and compressed score tails.TOR@BAL was a genuine toss-up, not a strong-model failure.historical_ml → variance_applied and has persisted four slates.WAS@DET has a critical unexplained published-probability transformation.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.