# FOOTO PREDICTO 3.24.9 — Contextual player model

**Built:** 2026-10-29. **Input cutoff:** team/roster scouting through 2026-10-25/26. **Status:** implemented; player-level forecast accuracy NOT yet validated in a time-held-out evaluation. The live site was not updated.

## What actually changed in the simulator

1. **Game-specific offensive plans:** the game's pass/run preference is sampled once from the team's recorded 2026 tendencies, documented pass-block/pass-rush and run-block/run-stop matchups, score-model edge, and bounded coaching uncertainty. The model does not claim to know a coach's upcoming playbook.
2. **The real game state drives the call:** score difference, actual quarter and remaining game clock govern pass/run and tempo at each snap. Previous scouting-enabled code supplied synthetic first-and-five inputs to the dynamic tactic function. Scouted baseline already distinguishes third downs and red-zone conditions; the new state logic avoids adding their prior a second time.
3. **Pass-rush/protection/route family:** existing 2026 defensive rush win / offensive pass-block win rates and estimated blitz/pressure enter play-by-play, before target selection. Deep and play-action calls require relatively more release time than screens or short passes. Conditional pocket-time risk slightly changes sacks and completion probability. This is a bounded simulation of interaction, **not** tracking-derived actual time-to-pressure or a claim that slower time to throw is inherently bad.
4. **Individual QB and opponent:** 2026 NFL Next Gen Stats qualifying time-to-throw through Week 7 is used with sample shrinkage; current 2026 play-by-play passer YPA and CPOE through 2026-10-25 enter with additional shrinkage. Data are only eligible for games strictly after their cutoff, and become neutral when more than 21 days old. The defense's historical coverage shells, projected defenders, and QB coverage/pressure profiles already in 3.24.8 remain active. Receiver-specific quarterback target-share tendencies remain active. QB effects are deliberately capped to avoid double-counting the existing fitted team passing baseline.
5. **Target routing under actual simulated pressure:** receiver selection can favor short outlets (TE/RB and slot receivers) without inventing current snap-to-snap routes. Defender assignments are still modeled from historical alignments; none are advertised as a real Week 8 shadow plan.
6. **Auditable outcome:** each sample game now includes team-specific `contextual.byTeam` with the sampled plan, quarterback data basis, and called-pass counts while leading/trailing by seven or more in the fourth quarter. Results expose the first game's context in an expandable details panel. Existing stat distributions, player roles, calibrated game probabilities, touchdowns and box-score reconciliation are retained.

## Evidence provenance

- QB release times: NFL Next Gen Stats via nflverse through Week 7, read from https://muffed.ai/stats/time-to-throw on 2026-10-29. 34 qualifying quarterbacks; 125 recorded attempts, 2.91 seconds for Kyler Murray. A 2.82-second neutral prior and 130-attempt shrinkage are candidate parameters, **not** a validated fit.
- QB 2026 YPA and CPOE: `research/matchups-2026-10-26/pbp-2026.csv.gz` filtered to dates through 2026-10-25, regular-season pass attempts. 44 qualifying passers with at least 20 passing attempts. For Kyler Murray: 137 attempts, 5.35 yards/attempt, +2.90 completion percentage points over expectation. The league YPA was 6.17. Descriptive season CPOE does not prove that a particular receiver will gain more or fewer yards.
- Pass-block / rush interaction: existing ESPN win-rate snapshot in `scouting.json`, last sourced through 2026-10-12. No invented player-level matchup rates for unlisted blockers or defenders.
- Coverage: existing projected player alignment and 2025 exact coverage history; **no confirmed live 2026 exact coverage shell or assignments**.
- Injury, special teams, penalties, weather, target shares, red-zone and formations remain inherited from 3.24.8. This feature does not fix gaps in missing current player routes or snaps.
- Source freshness: nflverse on-season updates cover player statistics, weekly NGS, snap counts, rosters, injuries, and play-by-play, while complete 2026 snap-by-snap participation is not published during the season. See https://nflreadr.nflverse.com/articles/nflverse_data_schedule.html.

## Validation performed

- `node validate_contextual.mjs` passed: source age/temporal leakage guard, qualified Kyler sample shrinkage, late deficit => more passes, late lead => more runs, pressure => relative increase in TE/RB outlet weights, deterministic once-per-game plan, 360 simulation games, player-team passing/receiving and rushing yardage reconciliation.
- Scores in 180 MIN@DET sample games: original-context mode DET 25.278 / MIN 22.122, new-context mode DET 24.289 / MIN 22.422. **This is a small seeded diagnostic, not a claim of better score accuracy.**
- `node validate_fullrun.mjs` passed complete 40-game simulation with simulated player milestones, fitted scoring, uncertainty, and roster handling.
- `node test_repro.mjs` passed deterministic seeded replay.
- `node validate_player_ui.mjs` passed player milestone markup checks. All modified JS files passed syntax checks.
- Full graphical browser acceptance attempt blocked by `ERR_BLOCKED_BY_ADMINISTRATOR` navigation policy. Not advertised as a passed browser test.

## What is still missing / not guaranteed

The model does **not** have ground-truth upcoming offensive playbooks, receiver separation per route, true live shadow assignments, measured time-to-pressure for each future snap, reliable same-week routes, personnel package combinations or medical readiness for every player. These are unknowns, not factors that can be fully simulated with certainty. It also has not been proven that the new parameters reduce WR/TE/RB/QB yardage MAE or calibrate touchdown probabilities out of sample. To demonstrate that, freeze all player forecasts and game-time participation *before kickoff*, then compare MAE, Brier/log loss, and 10–90% range coverage over multiple weeks and tune only on older data. Previous weekly game-scorecard forecasts are intentionally unchanged.
