{
  "as_of": "2026-10-19",
  "primary_test_cycles": [
    2016,
    2018,
    2020,
    2022,
    2024
  ],
  "residual_cases": {
    "controls": [],
    "cook": [
      "cook_scaled"
    ],
    "sabato": [
      "sabato_scaled"
    ],
    "inside_elections": [
      "inside_elections_scaled"
    ],
    "consensus": [
      "consensus_scaled"
    ],
    "consensus_curve": [
      "consensus_scaled",
      "consensus_curved"
    ],
    "all_three": [
      "cook_scaled",
      "sabato_scaled",
      "inside_elections_scaled"
    ],
    "consensus_and_candidates": [
      "consensus_scaled",
      "incumbent_prior_scaled",
      "incumbent_prior_missing",
      "nonincumbent_prior_scaled",
      "nonincumbent_prior_missing",
      "nonincumbent_experience",
      "career_missing_advantage",
      "appointed_advantage",
      "multiple_elections_advantage",
      "news_scaled"
    ]
  },
  "index_cases": {
    "experts_only": [
      "consensus_scaled"
    ],
    "lean_reference": [
      "pvi_scaled",
      "incumbency_advantage"
    ],
    "candidate_reference": [
      "pvi_scaled",
      "incumbency_advantage",
      "incumbent_prior_scaled",
      "incumbent_prior_missing",
      "nonincumbent_prior_scaled",
      "nonincumbent_prior_missing",
      "nonincumbent_experience",
      "career_missing_advantage",
      "appointed_advantage",
      "multiple_elections_advantage",
      "news_scaled"
    ],
    "experts_and_lean": [
      "pvi_scaled",
      "incumbency_advantage",
      "consensus_scaled"
    ],
    "experts_and_candidates": [
      "pvi_scaled",
      "incumbency_advantage",
      "incumbent_prior_scaled",
      "incumbent_prior_missing",
      "nonincumbent_prior_scaled",
      "nonincumbent_prior_missing",
      "nonincumbent_experience",
      "career_missing_advantage",
      "appointed_advantage",
      "multiple_elections_advantage",
      "news_scaled",
      "consensus_scaled"
    ]
  },
  "sources": "User explicitly authorized final predictions on Wikipedia Senate election pages for prior cycles. Historical revisions supply a separate cutoff-valid sensitivity; current ratings must be dated by the source cutoff.",
  "modes": [
    "final",
    "cutoff",
    "final_on_cutoff_scope"
  ],
  "final_warning": "Final historical ratings often postdate the frozen sixteen-day-out polling forecast; their apparent gain is an optimistic benchmark, not a clean simulation of ratings known then.",
  "matched_timing": "final_on_cutoff_scope retains exactly the same available predictor/race membership as cutoff, so timing can also be compared without changing that cohort.",
  "scale": "Signed ordinal labels, not assumed vote shares or probabilities. Safe/solid +/-4, likely +/-3, lean +/-2, tilt +/-1, tossup 0, then divide by four. Consensus averages at least two available raters; missing is not tossup. Rothenberg and IE form one series.",
  "residual": "Use identical existing-factor controls, cycle-centered ridge and +/-2-point cap as prior candidate-family comparisons. Fit only earlier elections with at least three prior environments and eight races. Compare each addition to both the frozen forecast and a control-only refit on the identical cohort.",
  "index": "Pure election-margin index contains no current polling inputs. For each outer election, select ridge and polling blend from earlier validation elections, then refit only earlier outcomes. Fixed 25% blends are separate diagnostic alternatives; preserve prior index shrinkage and +/-3-point cap.",
  "probabilities": "Inherited per-cycle uncertainty stays fixed for paired diagnostics. Experts use overlapping polls and are not independent polling samples; agreement does not automatically narrow intervals.",
  "inference": "Paired whole-election sign-flip diagnostics with cycle-bootstrap intervals. Development reuse, few cycles and final-rating timing constrain formal inference. No automatic activation from an isolated nominal result.",
  "production_changed": false
}