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_20260928.json | 4003 |
| forensic deep audit | loaded | probability, provenance, starter and decision contracts | /app/output/reports/PREDICTION_SYSTEM_DEEP_AUDIT_20260928.json | 15888 |
| continuous learning | loaded | pipeline-stage quality, calibration, probability lineage, score distribution, and official starter comparisons | /app/output/learning/continuous_learning_daily_20260928.json | 6809 |
| detailed report | missing | full game and simulation rendering | /app/output/reports/detailed_20260928.html | n/a |
| ultra detailed player audit | missing | player-level prediction trace | /app/output/reports/20260928_ultra_detailed_player_audit.html | n/a |
| structural audit | missing | all invariant findings | /app/output/reports/audit_report_20260928.html | n/a |
| integrity revision audit | missing | post-Luna remediation proof for immutable revision artifacts | /app/output/reports/audit_report_20260928_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 | 2/11 | no | param |
| pipeline_winner_instability | 0 | 6/11 | no | code/diagnostic |
| score_margin_compression | 0 | 2/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 | 10/11 | no | code/diagnostic |
| Metric | Direction | Series (old → new) |
|---|---|---|
| winner_accuracy | improving | [0.6667, 0.7333, 0.6, 0.3333, 0.4, 0.5, 0.6667, 0.6471, 0.5385, 0.6429, None] |
| weighted_calibration_error | improving | [0.1247, 0.3458, 0.3184, 0.2028, 0.1881, 0.1108, 0.1701, 0.1302, 0.1524, 0.1031, None] |
| margin_bias | improving | [-2.0, -0.667, -1.533, -2.667, -1.867, -1.188, -1.083, -1.706, -3.0, -1.571, None] |
| team_run_error_on_losses | improving | [5.2, 6.5, 6.5, 3.0, 6.222, 5.75, 3.5, 5.333, 6.167, 4.8, 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.44 over 12 slates (sign shared by 0.58 of them, z = 0.69).
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.44 +/- 0.64 standard error: not separable from noise
lineup runs actual minus projected
Mean -0.24 over 12 slates (sign shared by 0.67 of them, z = -1.46).
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
8 of 12 slates share the sign, mean -0.25 +/- 0.17 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 |
|---|---|---|---|---|---|---|
| 20260927 | 14 | 0.643 | -4.85 | 0.17 | 1 | 3 |
| 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 |
| 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 |
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 20260927. 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.2462 | 0.2462 | +0 | flat |
| accuracy | 0.5726 | 0.5726 | +0 | flat |
| team_run_mae | 2.5684 | 2.5684 | +0 | flat |
| total_run_mae | 3.8034 | 3.8034 | +0 | flat |
| calibration_error | 0.0862 | 0.0862 | +0 | flat |
| starter_er_mae | 1.7965 | 1.7965 | +0 | flat |
| starter_outs_mae | 4.0442 | 4.0442 | +0 | flat |
All eight manifest entries were reviewed as untrusted evidence metadata:
| Source | Status | Evidence |
|---|---|---|
| Prediction review | Loaded | 4,003 bytes; intended to contain official outcomes and scoring errors |
| Forensic deep audit | Loaded | 15,888 bytes; intended to contain probability, provenance, starter, and decision contracts |
| Continuous learning | Loaded | 6,809 bytes; intended to contain stage quality, calibration, lineage, score distribution, and starter comparisons |
| Detailed report | Missing | /app/output/reports/detailed_20260928.html |
| Ultra-detailed player audit | Missing | /app/output/reports/20260928_ultra_detailed_player_audit.html |
| Structural audit | Missing | /app/output/reports/audit_report_20260928.html |
| Integrity revision audit | Missing | /app/output/reports/audit_report_20260928_integrity_revision.html |
No games were supplied:
date: blankgames_reviewed: 0hits: 0misses: 0continuous_learning_evidence.summary.games: 0settled: 0coverage_matrix.expected_games: 0canonical_artifacts_loaded: 0structural_audits_completed: 0forensic_deep_audit_games: 0continuous_learning_games: 0games_with_starter_comparisons: 0all_games_structurally_audited: falseThus, there is no game-level evidence from which to calculate winner accuracy, Brier score, run error, starter error, or score-path accuracy.
learning_eligibility.eligible is true with the reason that all artifacts passed structural gates, but the coverage matrix says zero canonical artifacts were loaded and zero games were audited. This is a contract inconsistency.
self_assessment.headline is "nominal", while needs_operator_action is true, operator_action_count is 1, and the causal register contains a critical coverage failure. “Nominal” should not be used for an unevaluated slate.
Four reports are missing, including the structural and integrity-revision audits. The available JSON explicitly says that player-level forensics, matchup breakdowns, probability reversions, and game artifacts are unavailable.
window_dates includes "", and the final per_slate top-pick record also has an empty date with result "unknown". This should be treated as a data-quality defect in the trend window.
Calibration has zero settled games; pipeline stages and transitions are empty; margin distribution is empty; high-raw-cluster count is zero; probability lineage is empty. These zeros mean “not measured,” not “no problem.”
---
No current-slate winner accuracy is measurable:
000nullThe cross-slate metric is reported as directionally improving, with mean winner accuracy 0.5729, and the series includes values from 0.3333 to 0.7333. That is historical context only; it does not validate this empty slate.
No current-slate calibration assessment is possible:
0[]null0nullThe cross-slate weighted calibration error is listed as 0.1846 and marked “improving,” but no current-slate probabilities exist. A correct or unavailable winner result cannot be treated as calibrated.
No score or run accuracy is measurable:
margin_distribution: zero rowspredicted_margins: emptyactual_margins: emptypipeline_stage_quality.status: "not_measurable"nullThe historical margin_bias is marked improving, with mean -1.7282, but it remains a cross-slate trend rather than current-slate evidence.
No starter comparisons were supplied:
0slate_player_metrics.available: falseThe cross-slate starter ERA-error finding has mean 0.441, with the same sign on 7 of 12 slates, but it is explicitly marked nonpersistent and held. No parameter change is justified from this slate.
Artifact integrity is not clean despite structural_audit_summary showing zero critical, error, info, and warning findings. That summary reflects no completed structural audit, not a successful audit.
The strongest integrity findings are:
incomplete_slate_audit_coverage — evidence says 0/0 games structurally audited; action is to run per-game QA before calling the slate clean.simulation_inert_on_slate — zero flip candidates and zero published flips; this is not itself a winner defect, but it is persistent across 11 slates and requires diagnostic action.incomplete_slate_audit_coverage0/0 games structurally auditedThis is a genuine evidence/contract failure. Critical is appropriate because the system cannot establish what was predicted or whether the artifacts are internally consistent.
simulation_inert_on_slateIts current-register severity is only informational, but the cross-slate section escalates it to an established 11-slate pattern requiring operator action.
---
There are no game records to review. Therefore, there are no hits, misses, or correct-winner/wrong-score cases.
The requested game-level fields are all unavailable:
Accordingly, no game should be labeled a hit, miss, correct-winner/wrong-score result, starter failure, offense failure, bullpen failure, or irreducible-variance event.
---
There are no current-slate losses to reconstruct:
misses: 0loss_primary_drivers: {}mean_team_run_error_on_losses: nullmean_total_run_bias_on_losses: nullgames: []It would be invalid to attribute any loss to bad inputs, weighting, calibration, starter error, offense, bullpen, run environment, or variance.
The explicit guardrail concerning a 0.12 home-away confidence edge is also relevant: if such an edge had appeared in a game artifact, it would be moderate—not a near coin flip. No such current-game edge was provided here.
No earliest wrong-direction stage can be identified because:
pipeline_stage_quality.stages: []pipeline_stage_quality.transitions: []A later recovery cannot erase an intermediate winner-direction regression, but there is no evidence here that any transition occurred.
The audit result is:
"not_measurable"nullTherefore:
The empty stage table is a measurement failure, not proof that the pipeline behaved correctly.
---
All three lever_tension entries have zero observed affected games.
score.variance_multiplier / score.variance_floor0 helped vs 0 hurtCross-slate evidence does show a historical score_margin_compression finding twice in an 11-slate window, but it is not present on this slate and is not escalated. A bounded shadow test may be reasonable only after restoring measurement, not as a production move based on this empty slate.
player.pitcher.v4 form weights / player.pitcher_prior_gamesThe cross-slate starter ERA signal is explicitly held because it is not separable from noise: mean 0.441, z-score 0.69, same sign on 7/12 slates.
recent.* / season.* run-mean weightingCross-slate lineup run delta is negative on 8/12 slates, with mean -0.245 and z-score -1.46, but the register marks it nonpersistent and recommends holding. It should not be converted into a one-game production adjustment.
Do not:
---
incomplete_slate_audit_coverage0/0 games structurally auditedNo findings are reported in structural_audit_summary, but this is not evidence that no errors exist. The structural audit report itself is missing, and zero artifacts were loaded.
No warnings are reported in the summary. Again, the absence is not probative because the audit was not executed over any current-game artifacts.
simulation_inert_on_slateaway_win_rate over approximately two selected draws is not a valid probability.The required lineage is:
raw model → calibrated → governor → score coherence/recency → published
The supplied probability_lineage is empty. Therefore:
A material bypass cannot be called because there is no lineage to compare. The correct finding is lineage unavailable, not “bypass confirmed.”
The coverage matrix is not slate-clean:
000false0The combination of zero expected games and a blank date appears to represent a missing or uninstantiated slate, not a completed slate with zero defects. The eligibility flag should be blocked until that distinction is resolved.
---
00[]No current-slate margin evidence exists.
not_measurablenullNo cross-stage current-slate conclusion is possible.
0nullNo current-slate calibration conclusion is possible.
00[]0.65No current-slate high-confidence cluster exists in the supplied evidence.
000P2diagnostic_only_without_independent_supportThis current-slate non-observation is reinforced by the persistent cross-slate finding below.
| Finding | Consecutive-slate count | Present now? | Interpretation |
|---|---|---|---|
high_raw_probability_cluster | 0 | No | Occurred on 2 of 11 window slates; not currently present |
pipeline_winner_instability | 0 | No | Occurred on 6 of 11; not currently present |
score_margin_compression | 0 | No | Occurred on 2 of 11; not currently present |
simulation_inert_on_slate | 11 | Yes | Established persistent failure pattern |
single_slate_calibration_instability | 0 | No | Occurred on 6 of 11; not currently present |
weak_run_model_signal | 0 | No | Occurred on 10 of 11; not currently present as a streak |
The simulation_inert_on_slate finding is escalated and must not be treated as single-slate noise.
simulation_inert_on_slatesimulation.allow_scoreThe self-assessment gives the proposed implementation direction:
_distribution_agreement.routers/team_router.py, including _build_simulation_distribution, the draw-loop early exits, and the simulation constants.The supplied trend directions are:
-1.72825.29720.18460.5729These “improving” labels do not overcome the fact that the current slate has no settled games and no measurable current-slate metrics.
0"unknown" record is not a valid settled observation.Therefore, the top-confidence pick does not show a current persistent loss streak in the supplied data. Its historical sequence includes misses but does not establish a consecutive loss streak.
---
Recommendations are ranked by evidence strength and constrained to registered levers.
simulation.allow_scoresimulation.allow_score or force simulation flips without proving the module is operating.There is no valid game-level model driver because the slate contains zero games. The strongest current operational driver is therefore the coverage/contract failure.
No bounded production adjustment is justified for:
context.opponent_strength_weightscore.variance_floorscore.variance_multiplierThe relevant findings are either nonpersistent, absent on the current slate, or unmeasurable due to missing games. A shadow experiment can be planned after artifact coverage is restored, but no live move is supported today.
---
learning_eligibility.eligible: true flag.Restore and validate the canonical per-game artifact set, then block learning and “nominal” reporting until every expected game passes structural QA and probability-lineage checks. In parallel, open the operator-level simulation diagnostic for the persistent 11-slate inertness finding, but do not promote a parameter change without an independently sampled, measurable simulation output.