Skip to content

Reconcile Round 3 pipeline with main and restore reproducible tests - #3

Merged
tdub29 merged 3 commits into
mainfrom
round3-finish
Oct 28, 2026
Merged

tdub29 merged 3 commits into
mainfrom
round3-finish

Conversation

@tdub29

@tdub29 tdub29 commented Oct 28, 2026

Copy link
Copy Markdown
Owner

Merges main into the reproducible pipeline branch, restores full offline test suite passing 22/22, and preserves historical reports and week 8 predictions.

…m with code

Work in progress: README.md and METHOD.md still carry the old numbers and
are rewritten in the next commit, once the bake-off is rerun on this build.

Data
- fourth_down.py fetches every play-by-play season from 2015 instead of
  reading whatever was cached; a fresh clone used to build 4 of 12 seasons
  and median-impute the two coach features without a warning.
- games.csv comes from nflverse/nfldata over HTTPS. Downloads are atomic
  with a timeout. Parity and season coverage now fail the build instead
  of printing. reports/data_manifest.json records the input hashes.

Evaluation
- backtest.py gets a real offline --self-check (it used to run the full
  backtest and overwrite the tracked CSV), a per-season feature coverage
  assert, and new tracked outputs: component skill (FG/PAT R2 and
  within-week rho), variance decomposition, season-level tests (t, df 7;
  Wilcoxon; sign; cluster bootstrap) and binned calibration with Brier
  skill, slope and AUC.
- New score_boards.py scores the published 2026 boards against results,
  with commit and push provenance per game. Weeks 3 and 4 are restored to
  their first-committed versions.
- New experiments: ridge re-test of the three feature families with
  noise and shuffled controls, and the 50+ willingness analysis, which
  previously had no code.

Weekly board
- predict_week.py no longer hard-codes a Windows path (it crashed on
  import on Linux/macOS); the site file is opt-in via --site-out or
  KICKER_SITE_JS. Regenerated weeks train only on earlier games, and an
  existing board is never overwritten without --force.
- weekly-board.yml commits each board before Thursday kickoff.

Repo
- pyproject.toml, requirements matching the real imports, pytest over every
  module's self-check with network blocked, repo hygiene tests, CI.
- scripts/run_pipeline.py runs the current pipeline (it raised ImportError).
- Legacy R script, its CSVs, the old config and the v1-harness outputs
  move to legacy/. Feature-family scripts and logs move to experiments/.
- Docstrings: retracted claims, dead CLI flags and process chatter removed;
  the multiple-testing family split is described as decided after the
  first run. The orphaned infographic is removed.
- docs/ describe the current pipeline. MIT license.
@tdub29
tdub29 merged commit 9f97e3d into main Oct 28, 2026
6 checks passed
@tdub29
tdub29 deleted the round3-finish branch October 28, 2026 07:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant