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_20261009.json | 4003 |
| forensic deep audit | loaded | probability, provenance, starter and decision contracts | /app/output/reports/PREDICTION_SYSTEM_DEEP_AUDIT_20261009.json | 15973 |
| continuous learning | loaded | pipeline-stage quality, calibration, probability lineage, score distribution, and official starter comparisons | /app/output/learning/continuous_learning_daily_20261009.json | 6809 |
| detailed report | missing | full game and simulation rendering | /app/output/reports/detailed_20261009.html | n/a |
| ultra detailed player audit | missing | player-level prediction trace | /app/output/reports/20261009_ultra_detailed_player_audit.html | n/a |
| structural audit | missing | all invariant findings | /app/output/reports/audit_report_20261009.html | n/a |
| integrity revision audit | not_applicable | structural audit of every post-start revision of the slate's games | /app/output/reports/audit_report_20261009_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 |
|---|---|---|---|---|
| pipeline_winner_instability | 0 | 3/11 | no | code/diagnostic |
| score_margin_compression | 0 | 4/11 | no | param |
| simulation_inert_on_slate | 11 | 11/11 | yes | code/diagnostic |
| single_slate_calibration_instability | 0 | 9/11 | no | param |
| weak_run_model_signal | 0 | 9/11 | no | code/diagnostic |
| Metric | Direction | Series (old → new) |
|---|---|---|
| winner_accuracy | improving | 1.0, 0.75, 1.0, –, 1.0, 0.5, 0.0, 1.0, 0.75, 1.0, – |
| weighted_calibration_error | regressing | 0.4792, 0.2317, 0.4832, –, 0.4705, 0.4806, 0.5291, 0.4642, 0.2272, 0.495, – |
| margin_bias | regressing | -4.25, -2.75, -3.0, –, -0.25, 0.0, -0.5, -0.5, -1.75, -3.0, – |
| team_run_error_on_losses | improving | –, 2.0, –, –, –, 2.0, 3.5, –, 2.0, –, – |
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.39 over 10 slates (sign shared by 0.60 of them, z = -0.89).
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 10 slates share the sign, mean -0.38 +/- 0.43 standard error: not separable from noise
lineup runs actual minus projected
Mean -0.56 over 10 slates (sign shared by 0.70 of them, z = -1.71).
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 10 slates share the sign, mean -0.56 +/- 0.33 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 |
|---|---|---|---|---|---|---|
| 20261008 | 1 | 1.000 | 2.31 | 1.00 | ||
| 20261007 | 4 | 0.750 | 0.85 | -0.38 | 1 | 2 |
| 20261006 | 2 | 1.000 | -1.40 | -1.25 | 1 | |
| 20261005 | 2 | 0.000 | -1.11 | -0.75 | 2 | |
| 20261004 | 2 | 0.500 | -1.24 | -2.00 | 2 | |
| 20261003 | 4 | 1.000 | -0.95 | -2.25 | 4 | |
| 20261002 | — | — | — | |||
| 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.33 | -0.11 | 2 | 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 20261008. Last recorded change: v15.28.3 (2026-10-07) Audit the confidence blend against the adaptive cap actually in force.
| Metric | Prior | Current | Δ | Result |
|---|---|---|---|---|
| brier_score | 0.2453 | 0.2453 | +0 | flat |
| accuracy | 0.6106 | 0.6106 | +0 | flat |
| team_run_mae | 2.3982 | 2.3982 | +0 | flat |
| total_run_mae | 3.5929 | 3.5929 | +0 | flat |
| calibration_error | 0.1238 | 0.1238 | +0 | flat |
| starter_er_mae | 1.6402 | 1.6402 | +0 | flat |
| starter_outs_mae | 4.2383 | 4.2383 | +0 | flat |
The supplied diagnosis identifies a slate date of "" and reports games: [], games_reviewed: 0, hits: 0, and misses: 0 (date, top level). Thus no individual game or game outcome is present to review. The zero counts do not establish that the actual slate had no games; the expected-game count is itself zero, and the audit reports that coverage is incomplete.
Source manifest, entry by entry:
| Source | Status | Forensic significance |
|---|---|---|
prediction review — /app/output/reports/prediction_review_20261009.json | loaded, 4,003 bytes | Identified as the source for official outcomes and scoring errors, but its game-level contents are not included in this evidence payload. |
forensic deep audit — /app/output/reports/PREDICTION_SYSTEM_DEEP_AUDIT_20261009.json | loaded, 15,973 bytes | Identified as covering probability, provenance, starter, and decision contracts; no per-game contents are supplied here. |
continuous learning — /app/output/learning/continuous_learning_daily_20261009.json | loaded, 6,809 bytes | Its summarized fields are present in this JSON, but the game-level comparisons and pipeline rows are empty. |
detailed report — /app/output/reports/detailed_20261009.html | missing | Full game and simulation rendering unavailable. |
ultra detailed player audit — /app/output/reports/20261009_ultra_detailed_player_audit.html | missing | Player-level prediction trace unavailable. |
structural audit — /app/output/reports/audit_report_20261009.html | missing | The underlying all-invariant audit report is unavailable. |
integrity revision audit — /app/output/reports/audit_report_20261009_integrity_revision.html | not_applicable; note says no post-start revisions | No post-start revision audit was expected for this slate. This does not substitute for the missing structural audit. |
Coverage and internal consistency gaps:
coverage_matrix reports expected_games: 0, canonical_artifacts_loaded: 0, structural_audits_completed: 0, forensic_deep_audit_games: 0, continuous_learning_games: 0, and games_with_starter_comparisons: 0; all_games_structurally_audited is false.learning_eligibility.eligible is true because “all game artifacts passed critical/error structural gates,” despite zero canonical artifacts loaded and zero structural audits completed. That eligibility claim is not supported by substantive per-game QA; it appears compatible with a vacuous pass, not proof of a clean slate.structural_audit_summary reports zero critical, error, info, and warning findings, while the causal register explicitly records a critical coverage issue and an info simulation issue. These summaries have different apparent scopes or are inconsistent; the missing structural-audit artifact prevents reconciliation.20261009. The supplied JSON does not resolve that discrepancy.Bottom line on evidence receipt: the manifest records three sources as loaded, but this payload contains no game records and the coverage matrix says no canonical game artifacts were loaded. The actual slate’s game count, game identities, picks, outcomes, probabilities, scores, starters, and player adjustments cannot be independently confirmed from the supplied evidence.
| Dimension | Finding |
|---|---|
| Winner accuracy | Not measurable. The top-level hits and misses are both zero because games_reviewed is zero; they do not establish 0% or 100% accuracy. continuous_learning_evidence.summary.accuracy is null, and the self-assessment’s slate_winner_accuracy is also null. |
| Calibration quality | Not measurable on this slate. calibration_monitoring.settled_games is 0, its buckets are empty, and weighted absolute calibration error is null. No slate-specific published probabilities are supplied. |
| Score accuracy | Not measurable. No actual or predicted scores, run errors, margins, or pipeline-stage score rows are supplied. |
| Starter accuracy | Not measurable. The coverage matrix reports zero starter comparisons; no projected-versus-actual starter lines are present. |
| Artifact integrity / auditability | Material evidence and process failure. The causal register marks incomplete slate-audit coverage critical. No canonical artifacts were loaded and no games were structurally audited, while learning eligibility is reported as true. This is a contract/coverage concern, not evidence that the model’s picks were good or bad. |
Causal issue register reconciliation:
incomplete_slate_audit_coverage — severity: critical; domain: coverage.causal_issue_register[0].evidence).[]; with no game manifest or game rows, the affected games cannot be named.simulation_inert_on_slate — severity: info; domain: simulation.[]; no game-specific simulation record is provided.No game-level outcome, probability, or scoring claim can be made from these summaries.
No games are present in the supplied games array. Consequently, there are no identifiable games to enumerate, and no per-game predicted/actual score or winner, probability, confidence edge, conviction bucket, Brier score, run error, starter line, season/recent/pitcher/composite edge, control, score path, player adjustment, audit finding, or cause can be reported.
| Requested per-game field | Evidence available |
|---|---|
| Predicted and actual score/winner | None |
| Published probability and system confidence edge | None |
| Conviction bucket | None |
| Brier score, team-run error, total error | None |
| Projected-versus-actual starter lines | None |
| Season, recent, pitcher, and composite edges | None |
| Confidence/recency controls | None |
| Score path and player-level adjustments | None |
| Per-game audit findings and primary/secondary causes | None |
Correct-winner/wrong-score games: cannot be identified. This is not evidence that there were none; no game results or predictions are supplied.
There are no observable loss records to reconstruct: games is empty, misses is zero as a count over zero reviewed games, and loss_primary_drivers is {}. Therefore it would be incorrect to say there were no losses on the actual slate. No earliest wrong-direction model stage, bad input, bad weighting, calibration effect, starter error, offense/bullpen miss, run-environment miss, or irreducible-variance contribution can be assigned to a specific game.
The instruction that a 0.12 home-away confidence edge is moderate rather than near a coin flip is noted, but this payload contains no confidence edges to assess.
Pipeline-stage and transition audit:
pipeline_stage_quality.status is not_measurable.stages and transitions are both empty; the largest team-run regression versus baseline is null.Persistent simulation evidence, distinguished from game-level reconstruction: the cross-slate escalation says simulation_inert_on_slate occurred for 11 consecutive slates, with zero flip candidates and zero published flips in the current register entry. The self-assessment provides a specific hypothesized mechanism: the score-realization search and win-probability distribution use the same draws, and the loop may stop once it finds a target-realizing path, leaving an estimated win rate based on roughly two selected draws. That mechanism is a supplied diagnosis and merits investigation; it is not independently verifiable from the missing per-game traces here.
All supplied lever_tension entries have empty helps and hurts lists. With no games or game-level outcomes, no affected-game counterfactual can be named.
| Lever tension | Games it helps | Games it hurts | Evidence-based conclusion |
|---|---|---|---|
score.variance_multiplier / score.variance_floor (widen run distributions); targets brier_score, calibration_error | None supplied | None supplied | No game-level net evidence. The persistent margin pattern may justify a bounded shadow test, but the listed cross-game tension supplies no help/hurt sample. |
player.pitcher.v4 form weights / player.pitcher_prior_games; targets starter_er_mae, starter_outs_mae | None supplied | None supplied | No starter comparisons or game tensions; do not tune from this payload. |
recent.* / season.* run-mean weighting; targets team_run_mae, total_run_mae, accuracy | None supplied | None supplied | No game-level edge or result evidence; do not tune from this payload. |
Tempting one-game fixes not justified: changing pitcher-form weights, recent-versus-season weighting, or run-variance parameters based on a purported game-level miss would be unsupported because no game-level miss is provided. These are not shown to damage a particular game here; rather, their cross-game effects are unobserved, so no such one-game fix is evidence-based.
incomplete_slate_audit_coverage (causal register). No canonical game artifacts were loaded and no games were structurally audited; the register records “0/0 games structurally audited.” The required action is per-game QA on every canonical artifact. The game IDs and actual coverage denominator are missing.simulation_inert_on_slate (causal register). The register reports zero flip candidates and published flips. Its own guardrail says this does not prove the simulation did no score-reconciliation work. Cross-slate evidence separately establishes a persistent issue, discussed in Sections 7–8.structural_audit_summary counts are all zero, but because the structural audit HTML is missing and coverage is zero, those counts cannot certify that all games had zero errors or warnings.learning_eligibility.eligible: true (“all game artifacts passed critical/error structural gates”) conflicts with the zero artifacts and zero structural audits in coverage_matrix. Treat eligibility as unsubstantiated until complete coverage is demonstrated.date is blank, while the manifest paths identify the 20261009 reports.The slate is not cleanly covered: all_games_structurally_audited is false, and all artifact/game audit counts are zero. The manifest’s missing detailed, player-audit, and structural-audit reports further limit verification. A structural summary of zero findings does not reconcile that absence.
probability_lineage is an empty array. There is no trace for any game through:
Therefore it is not possible to audit the full lineage or quantify any stage delta. No material delta is demonstrated, so a probability-lineage bypass cannot responsibly be asserted; it is also not possible to rule one out. probability_reversions is explicitly unavailable because no game artifacts were supplied. Calibration monitoring has zero settled games, empty buckets, and null weighted error.
margin_distribution: no rows, predicted margins, or actual margins; counts for actual margins of at least 4 and predicted margins of at most 2 are both zero. It cannot be evaluated from this slate’s supplied structural rows.pipeline_stage_quality.transitions: empty; no transition-level regression or recovery can be checked.calibration_monitoring: zero settled games, empty buckets, and null weighted absolute calibration error.high_raw_cluster: threshold 0.65, with zero games, zero hits, and no rows. No high-raw-confidence cluster can be assessed on this slate.simulation_control: key simulation_flip_control; zero observed games, zero simulation flip candidates, zero published flips, priority P2, status diagnostic_only_without_independent_support. This current-slate record is consistent with the informational causal-register entry; the persistent diagnosis comes from the cross-slate streak below.| Finding | Consecutive-slate count | Present now? | Interpretation |
|---|---|---|---|
pipeline_winner_instability | 0 | No | Incidence in the 11-slate window is 3; it is not currently on a consecutive streak. Targets accuracy and Brier score; no registered parameter lever. |
score_margin_compression | 0 | No | Incidence is 4 in 11; not currently consecutive. Registered targets are score.variance_multiplier and score.variance_floor, for team- and total-run MAE. |
simulation_inert_on_slate | 11 | Yes | Incidence is 11 in 11. This is an established persistent failure, not single-slate noise. The escalated guardrail calls for confirming the simulation runs rather than silently no-oping. |
single_slate_calibration_instability | 0 | No | Incidence is 9 in 11, but not currently consecutive. Registered targets: confidence.empirical_max_weight, confidence.base_cap, confidence.moderate_cap. |
weak_run_model_signal | 0 | No | Incidence is 9 in 11, but not currently consecutive. Registered training levers are training.xgb.n_estimators, training.xgb.max_depth, and training.xgb.learning_rate. |
simulation_inert_on_slate — 11 consecutive slates.simulation.allow_score; target metrics: team_run_mae, total_run_mae.param_actionable is false. The recommended direction is to confirm that the simulation module is running and not silently no-oping._distribution_agreement. The stated suspected issue is reuse of target-seeking draws that may stop after roughly two selected draws.margin_bias: regressing, mean -1.7778. The series includes null entries; the supplied direction should be reported, but the underlying margin rows are absent from this slate payload.mean_team_run_error_on_losses: improving, mean 2.375. The series is sparse, so this summary is not a per-game explanation.weighted_calibration_error: regressing, mean 0.429. This is a cross-slate trend; current-slate calibration itself is unmeasured.winner_accuracy: improving, mean 0.7778. This trend does not override the missing current-slate accuracy or establish score quality.Top-confidence-pick loss streak: loss_streak: 0. The listed results include misses on 20261005 and 20261007, but hits on 20261006 and 20261008, with two entries marked unknown and blank dates. Thus the reported consecutive loss streak is zero; the list is not a complete, cleanly dated record for every window slot.
Cross-slate bias holds, not escalations: context.opponent_strength_weight has negative starter ERA error over 10 slates (mean -0.385, same sign 6/10, z=-0.89) and is explicitly held as not separable from noise. score.variance_floor has negative lineup run delta over 10 slates (mean -0.562, same sign 7/10, z=-1.71) and is also explicitly held. These do not warrant overriding their stated no-change actions based on this evidence.
The trend window says 11 slates, while cross_slate_bias.lookback_slates is 12; the per-slate listing includes a zero-game date, and window_dates contains blank entries. These are additional limits on interpreting the rollups.
Recommendations are ranked by evidence strength and scope. None is a promotion or a claim that a change has been validated.
0 audited games to the full canonical game count; eligibility should only be claimed after that coverage is demonstrated.simulation_inert_on_slate, present for 11 consecutive slates; target metrics are team_run_mae and total_run_mae; param_actionable: false.simulation.allow_score, but the supplied root-cause/action says this is a code-path issue, not a parameter-tuning action. Do not blindly toggle simulation.allow_score; verify its behavior and instrument it. The registered draw-count control described by the action plan should be exposed for the shadow test.team_run_mae and total_run_mae; improvement is a hypothesis to test, not a guaranteed effect.canonical_artifacts_loaded, structural_audits_completed, and forensic_deep_audit_games should move from zero to the verified game count; calibration and prediction metrics should become measurable rather than null.No confidence, pitcher, run-mean, or variance parameter retune is recommended from the absent game-level records. Persistent but nonconsecutive findings and cross-slate bias holds do not justify a speculative change here. A bounded score-margin shadow test could be considered in a later, fully covered review, but this payload cannot identify which games it helps or hurts.
Known: there are no game rows or canonical game artifacts in the supplied evidence; the slate is not structurally covered; calibration, score, starter, and winner accuracy are not measurable from this payload. The cross-slate record reports improving winner-accuracy trend, regressing margin-bias and weighted-calibration-error trends, and an escalated simulation-inert pattern persisting for 11 consecutive slates.
Uncertain: the number of actual games reviewed, every game’s prediction and result, whether any winner or score prediction was correct, the game-level probability lineage, and whether the simulation issue caused any specific miss or score error.
Safest next action for the very next slate: ensure every canonical game artifact is loaded and structurally audited before interpreting eligibility or making model changes. In parallel, develop the independent simulation win-probability calculation as a shadow diagnostic; do not promote it or tune unrelated model levers on the basis of this incomplete slate.