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_20261002.json | 4003 |
| forensic deep audit | loaded | probability, provenance, starter and decision contracts | /app/output/reports/PREDICTION_SYSTEM_DEEP_AUDIT_20261002.json | 15888 |
| continuous learning | loaded | pipeline-stage quality, calibration, probability lineage, score distribution, and official starter comparisons | /app/output/learning/continuous_learning_daily_20261002.json | 6809 |
| detailed report | missing | full game and simulation rendering | /app/output/reports/detailed_20261002.html | n/a |
| ultra detailed player audit | missing | player-level prediction trace | /app/output/reports/20261002_ultra_detailed_player_audit.html | n/a |
| structural audit | missing | all invariant findings | /app/output/reports/audit_report_20261002.html | n/a |
| integrity revision audit | missing | post-Luna remediation proof for immutable revision artifacts | /app/output/reports/audit_report_20261002_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 | coverage | Not every settled game received structural QA 0/0 games structurally audited | slate-wide | Do thisDo not call the slate clean; run per-game QA on every canonical artifact first. Don't concludeA clean subset of games cannot certify the games that were never audited. |
| INFO | simulation | Simulation produced no winner-direction intervention on this slate flip candidates 0; published flips 0 | slate-wide | 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 |
|---|---|---|---|---|
| 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. |
| Finding | Consecutive slates | Incidence | Present now | Fix type |
|---|---|---|---|---|
| high_raw_probability_cluster | 0 | 1/11 | no | param |
| pipeline_winner_instability | 0 | 4/11 | no | code/diagnostic |
| score_margin_compression | 0 | 5/11 | no | param |
| simulation_inert_on_slate | 11 | 11/11 | yes | code/diagnostic |
| single_slate_calibration_instability | 0 | 6/11 | no | param |
| weak_run_model_signal | 0 | 9/11 | no | code/diagnostic |
| Metric | Direction | Series (old → new) |
|---|---|---|
| winner_accuracy | improving | [0.4, 0.5, 0.6667, 0.6471, 0.5385, 0.6429, None, 1.0, 0.75, 1.0, None] |
| weighted_calibration_error | regressing | [0.1881, 0.1108, 0.1701, 0.1302, 0.1524, 0.1031, None, 0.4792, 0.2317, 0.4832, None] |
| margin_bias | regressing | [-1.867, -1.188, -1.083, -1.706, -3.0, -1.571, None, -4.25, -2.75, -3.0, None] |
| team_run_error_on_losses | improving | [6.222, 5.75, 3.5, 5.333, 6.167, 4.8, None, None, 2.0, None, None] |
Every stored stage is scored against the same official finals. A later recovery remains visible; it does not erase an unstable intermediate flip.
Not computed for this slate. no game carried a matchup breakdown. The per-player feed (data/all_players_stats.csv) is refreshed on its own schedule and regularly lands after official finals, so a slate reviewed promptly can be published before its player box exists.
Once the feed carries the slate, rebuild it offline with python -m services.forensics_backfill. The nightly cycle runs the same sweep at the start of every run, so this repairs itself on the next cycle.
no game artifacts supplied
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.14 over 11 slates (sign shared by 0.55 of them, z = -0.42).
starters beat their projection: the run model credits opposing offenses with more than they produced.
Hold: no change: this bias is not separable from slate-to-slate noise yet
6 of 11 slates share the sign, mean -0.14 +/- 0.33 standard error: not separable from noise
lineup runs actual minus projected
Mean -0.26 over 11 slates (sign shared by 0.64 of them, z = -1.36).
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 11 slates share the sign, mean -0.26 +/- 0.19 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 |
|---|---|---|---|---|---|---|
| 20261001 | 1 | 1.000 | 0.00 | 0.50 | ||
| 20260930 | 4 | 0.750 | 0.78 | 0.12 | 1 | |
| 20260929 | 4 | 1.000 | -0.76 | -0.50 | 3 | |
| 20260928 | — | — | — | |||
| 20260927 | 14 | 0.643 | -2.16 | -0.11 | 2 | 5 |
| 20260926 | 13 | 0.538 | 0.55 | 0.69 | 3 | 4 |
| 20260925 | 17 | 0.647 | 1.13 | 0.50 | 8 | 10 |
| 20260924 | 12 | 0.667 | 1.68 | -0.67 | 4 | 11 |
| 20260923 | 16 | 0.500 | -0.49 | -0.91 | 4 | 11 |
| 20260922 | 15 | 0.400 | -0.32 | -0.97 | 3 | 11 |
| 20260921 | 3 | 0.333 | -1.08 | -0.50 | ||
| 20260920 | 15 | 0.600 | -0.89 | -1.00 | 2 | 10 |
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 20261001. 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.2435 | 0.2435 | +0 | flat |
| accuracy | 0.5877 | 0.5877 | +0 | flat |
| team_run_mae | 2.5351 | 2.5351 | +0 | flat |
| total_run_mae | 3.6316 | 3.6316 | +0 | flat |
| calibration_error | 0.0896 | 0.0896 | +0 | flat |
| starter_er_mae | 1.7243 | 1.7243 | +0 | flat |
| starter_outs_mae | 4.2103 | 4.2103 | +0 | flat |
All manifest entries were checked against the supplied JSON:
| Source | Status | Purpose | Assessment |
|---|---|---|---|
/app/output/reports/prediction_review_20261002.json | Loaded, 4,003 bytes | Official outcomes and scoring errors | Present in manifest, but no game records were propagated into this diagnosis |
/app/output/reports/PREDICTION_SYSTEM_DEEP_AUDIT_20261002.json | Loaded, 15,888 bytes | Probability, provenance, starter, and decision contracts | Present in manifest, but no per-game audit rows are present here |
/app/output/learning/continuous_learning_daily_20261002.json | Loaded, 6,809 bytes | Pipeline-stage quality, calibration, probability lineage, score distribution, and starter comparisons | Present, but all current-slate game-dependent structures are empty |
/app/output/reports/detailed_20261002.html | Missing | Full game and simulation rendering | Gap |
/app/output/reports/20261002_ultra_detailed_player_audit.html | Missing | Player-level prediction trace | Gap |
/app/output/reports/audit_report_20261002.html | Missing | All invariant findings | Gap |
/app/output/reports/audit_report_20261002_integrity_revision.html | Missing | Post-remediation immutable revision proof | Gap |
date is empty.games is an empty array.games_reviewed: 0.hits: 0, misses: 0.continuous_learning_evidence.summary: settled: 0, games: 0, hits: 0, misses: 0.coverage_matrix: expected_games: 0, canonical_artifacts_loaded: 0, forensic_deep_audit_games: 0, structural_audits_completed: 0, games_with_starter_comparisons: 0, continuous_learning_games: 0.learning_eligibility.eligible is true with the reason "all game artifacts passed critical/error structural gates", but the causal register states "0/0 games structurally audited" and explicitly identifies incomplete_slate_audit_coverage as critical.
structural_audit_summary.critical is 0, while causal_issue_register contains a critical issue: incomplete_slate_audit_coverage. This is an internal reporting inconsistency.
This may reflect a missing or malformed date/game payload, but the evidence does not establish which.
probability_lineage: []; probability_reversions.available: false because no game artifacts were supplied.
pipeline_stage_quality.stages: [] and transitions: [], with status not_measurable.
Calibration buckets are empty; settled games are zero; weighted absolute calibration error is null.
slate_player_metrics.available: false; matchup patterns are unavailable because no game carried a matchup breakdown.
The detailed, player audit, structural audit, and integrity-revision reports are all missing.
---
Current-slate winner accuracy is unknown, not zero and not perfect:
winner_accuracy: null.summary.accuracy: null.The historical cross-slate series reports a mean winner accuracy of 0.6828 and an improving direction, but that is not evidence of current-slate accuracy.
Current-slate calibration is not measurable:
calibration_monitoring.buckets: [].settled_games: 0.weighted_absolute_calibration_error: null.The cross-slate metric is nevertheless marked regressing, with mean weighted calibration error 0.2276; the series includes 0.4792 and 0.4832. That is a historical trend, not a current-slate result.
Current-slate score accuracy is not measurable:
margin_distribution contains zero rows.pipeline_stage_quality is not_measurable.The cross-slate margin_bias trend is marked regressing, with mean -2.2683. This indicates a persistent historical margin-direction concern, but no current game can be assigned that error.
Starter accuracy is not measurable:
games_with_starter_comparisons: 0.starter_era_error finding is explicitly held: mean -0.142, same-sign share 6/11, z-score -0.42, and persistent: false.Artifact integrity is the most serious current issue.
The causal register contains:
incomplete_slate_audit_coverage"0/0 games structurally audited".This is a critical evidence/contract failure, not a model-quality finding.
simulation_inert_on_slateflip candidates 0; published flips 0.However, cross-slate evidence escalates this issue to an established operational pattern; see Sections 7 and 8.
The current slate cannot support a winner, calibration, score, starter, or player-level diagnosis. The primary known failure is missing or unpropagated evidence coverage, not demonstrated predictive failure on particular games. Separately, the simulation-inert behavior is an established cross-slate code/diagnostic concern.
A correct winner, if one had been reported, would not by itself establish a good prediction. No such current-slate winner result exists here.
---
There are no game records to enumerate.
Accordingly, the requested per-game fields are unavailable for every game:
There are therefore:
The absence of game rows must not be interpreted as a perfect slate, a failed slate, or a slate with no games. It is an evidence-coverage failure.
---
No loss can be reconstructed because games is empty and misses: 0 reflects absence of reviewed misses, not verified predictive success.
It is impossible to identify, for any game, whether the earliest wrong-direction movement came from:
No current-slate primary or secondary loss drivers are recorded: loss_primary_drivers: {}.
The confidence guardrail remains important: a 0.12 home-away confidence edge would be moderate, not a near-coin-flip or near-certainty signal. No such current-slate edge is supplied.
All required stages and transitions are absent:
pipeline_stage_quality.status: "not_measurable".stages: [].transitions: [].largest_team_run_regression_vs_base: null.Therefore:
The historical self-assessment identifies a specific simulation mechanism: selected draws were reportedly reused for win-probability estimation, with early exit after finding a target-realizing play-by-play. The diagnosis says this can leave away_win_rate based on roughly two selected draws, making the flip/agreement signal vacuous. That is a cross-slate implementation hypothesis supported by the stated 11-slate persistence, not a reconstructed event in a current game.
---
The current lever_tension object contains three entries. None has game assignments because there are no current games.
score.variance_multiplier / score.variance_floor0 helped vs 0 hurt.Historical context is mixed: score_margin_compression occurred in 5 of 11 window slates, but its current streak is zero and it is not currently escalated.
player.pitcher.v4 form weights / player.pitcher_prior_games0 helped vs 0 hurt.The cross-slate starter ERA bias is held, not persistent: 6 of 11 slates share the sign, with z -0.42.
recent.* / season.* run-mean weighting0 helped vs 0 hurt.No current probabilities, hits, misses, or Brier outcomes exist.
No current predicted or actual margins exist.
No starter comparisons exist, and the historical starter bias is explicitly nonpersistent.
The lever-tension matrix contains no affected games, and the historical lineup-run bias is held as noise.
The causal register explicitly says zero winner flips is not itself proof of a defect, although the 11-slate persistence warrants code diagnosis.
---
incomplete_slate_audit_coveragestructural_audit_summary.critical, which remains zero.No findings are listed with severity error.
This does not mean the slate is error-free. It means no error-severity rows were supplied.
No findings are listed with severity warning.
Again, this is not evidence of a clean slate because the canonical audit population is empty.
simulation_inert_on_slateThe coverage matrix is not clean:
all_games_structurally_audited: false.expected_games: 0.canonical_artifacts_loaded: 0.forensic_deep_audit_games: 0.structural_audits_completed: 0.games_with_starter_comparisons: 0.continuous_learning_games: 0.The false value for all_games_structurally_audited is decisive. A zero-denominator audit cannot establish complete coverage.
The required lineage is:
The supplied object contains no lineage rows:
probability_lineage: [].probability_reversions.available: false.Accordingly, no bypass can be formally declared. A bypass requires a material delta between stages with no recorded transformation; there are no stages to compare. The correct finding is lineage absent, not “lineage bypass proven.”
---
A single slate is absent here, but the supplied historical blocks provide persistence evidence.
simulation_inert_on_slatesimulation.allow_score.team_run_mae, total_run_mae.The registered self-assessment gives the proposed code-level remedy:
final_prediction_policy._distribution_agreement.routers/team_router.py, including _build_simulation_distribution, the draw-loop early exit, and NUM_SIMULATIONS / MIN_DRAWS_BEFORE_CLOSE_EXIT.| Finding | Consecutive slates | Present now | Interpretation |
|---|---|---|---|
high_raw_probability_cluster | 0 | No | Occurred once in the 11-slate window; not persistent |
pipeline_winner_instability | 0 | No | Incidence 4/11, but no current streak |
score_margin_compression | 0 | No | Incidence 5/11, not currently present |
simulation_inert_on_slate | 11 | Yes | Established persistent failure |
single_slate_calibration_instability | 0 | No | Incidence 6/11, not currently present |
weak_run_model_signal | 0 | No | Incidence 9/11, but no registered consecutive streak in this object |
The escalation_streak: 3 is also present, but the explicit finding-level persistence for simulation is 11 consecutive slates.
Each registered trend is:
regressing; mean -2.2683.improving; mean 4.8246.regressing; mean 0.2276.improving; mean 0.6828.These trends must not be conflated. Improving winner accuracy does not cancel regressing calibration or margin bias.
loss_streak: 0.20260922 and 20260926, hits on 20260923, 20260924, 20260925, 20260927, 20260929, 20260930, and 20261001, plus two unknown-date entries.margin_distribution: zero games, zero actual margins, zero predicted margins.pipeline_stage_quality: no stages or transitions; not measurable.calibration_monitoring: zero settled games and null weighted calibration error.high_raw_cluster: zero games and zero hits; threshold 0.65.simulation_control: observed games 0, published flips 0, candidates 0, status diagnostic_only_without_independent_support.The cross-slate simulation persistence is therefore the only established actionable pattern in the supplied evidence.
---
Recommendations are ranked by evidence strength and operational safety.
simulation_inert_on_slate, persistent for 11 consecutive slates.simulation.allow_score.param_actionable: false; do not force simulation.allow_score upward or downward.simulation.allow_score reaches the simulation path, remove the probability-batch early exit, and create an independent fixed-size probability batch.team_run_mae and total_run_mae; improve the validity of winner-probability and score-coherence diagnostics.incomplete_slate_audit_coverage.canonical_artifacts_loaded, forensic_deep_audit_games, structural_audits_completed, continuous_learning_games, and games_with_starter_comparisons from zero to the actual slate counts; resolve the eligibility/audit-summary contradiction.No current-slate predictive driver can be established because there are no games, scores, probabilities, or losses. The strongest current-slate driver is therefore evidence absence, not offense, pitching, calibration, or variance.
Do not make a confidence-cap, score-variance, pitcher-weight, or recent/season-weight change from this payload. No registered lever is supported by current-slate observations.
---
Restore and validate complete per-game artifact coverage before changing model parameters: load the canonical game records, run structural QA for every game, and independently verify that the simulation probability path executes rather than early-exiting. Do not promote any confidence, variance, pitcher, or run-weight adjustment until that evidence exists.