# NFL Picks Build Status

Last updated: 2026-06-27

## Antigravity Handoff

Use `docs/ANTIGRAVITY_HANDOFF.md` when continuing this work in Antigravity. It identifies the correct local repo (`C:\Users\eball\Documents\Codex\nfl-picks`), summarizes the current Codex-built state, calls out the nested-repo caveat before publishing to `sacboyz/nfl-picks`, and lists the validation commands and live-data guardrails Antigravity should preserve.

## Completed

- Planning document: `docs/NFL_FRAMEWORK_PLAN.md`
- Build backlog: `docs/NFL_BUILD_BACKLOG.md`
- Python project skeleton and package setup.
- Config constants for V1 markets, deferred markets, baby-line thresholds, edge thresholds, states, confidence tiers, and market lifecycle.
- Core contracts: `SlateContext`, `MarketBlend`, `ModelProjection`, `EngineSignal`, `EngineCandidate`, `CandidateBet`.
- Odds helpers: American odds implied probability, projected side, diff percentage, book lean, books agree.
- Foundational gates:
  - data completeness
  - inactive state
  - publish-time line movement
  - confidence tier
  - team-market Lean / Review / No Play restriction
- Static mock slate fixture covering A, Lean, Review, Abstain, stale projection, pre-inactives, and moved-line cases.
- Static runner that evaluates mock player props and team markets.
- HTML report prototype with team context, player props, Review/Fade/Abstain sections, best-line display, risk flags, and correlation warnings.
- Tracker CSV and audit JSON artifacts.
- Role / Injury / Opportunity classifier.
- Defensive matchup color and injury-delta helpers.
- Correlation group and contradiction hard-gate helpers.
- Six visible check skeleton:
  - Baby Line
  - Projection Edge
  - Books Agree
  - Defensive Matchup
  - Role / Injury / Opportunity
  - Game Script
- BetScore calculation from visible checks, hidden gates, market confirmation, publish-time edge, and confidence.
- Best-line selection for Over/Under offers.
- Game-window line freshness gate.
- Report check notes and hidden-gate details.
- Conservative baseline projection helper and runner fallback for records without a provided projection.
- Mock fixtures for contradictory same-game cards and defensive injury matchup boosts.
- Defensive injury boost signals now survive offensive injury/review gates so both sides of the injury context are visible.
- Data-source contract map for schedule, odds, usage, injuries, team context, matchup, and weather feeds.
- Report filter controls for state, market, confidence, team, book agreement, and injury concern.
- Weekly game-window summary rollups for NFL cadence.
- Export validation for required candidate/context fields in audit artifacts.
- GitHub Actions CI for tests and mock report artifact generation.
- Cloudflare Pages-ready docs index.
- Team-market V1 lean explanations and anti-circular team-total gate.
- Report-side sorting for edge, BetScore, confidence, and game window.
- Provider adapter boundaries for fixture, nflreadpy usage, odds, weather, and injury/inactives feeds.
- Derived implied team-total context from spread and game total.
- Mock runner CLI arguments for fixture mode, output directory, and report date placeholder.
- Settlement helpers for win/loss/push/no-action and correlated backtest weighting.
- Provider payload normalizers for odds, weather, injuries/inactives, and usage records.
- Season/week/generated/publish metadata in SlateContext, audit JSON, and report header.
- Source-health report/audit rollups for feed completeness and missing fields.
- Settlement import path from result rows to tracker-compatible settled rows.
- Backtest summaries with raw and correlation-weighted win rates.
- Optional nflverse/nflreadpy baseline loader boundary behind fixture mode.
- Sanitized nflverse-style local sample-mode baseline loader for offline projection-boundary testing.
- `run_mock.py --mode sample` now renders sanitized sample-baseline artifacts under `docs/mock/sample_baseline/`.
- Full fixture builds now include sample-baseline report, results, tracker, audit, summary, and rankings artifacts.
- Cold-start projection metadata now caps early-season unstable baselines at Medium confidence.
- Sample baseline loader tests cover local payload loading, missing sample fail-closed behavior, cold-start Review, and missing-projection Abstain.
- Settlement CLI and sample fixture result/settled tracker artifacts.
- CI now exercises tests, mock report generation, and settled tracker generation.
- Source-health freshness timestamps and freshness status fields.
- Weather fixture data and weather hidden gate for wind-sensitive markets.
- Anytime TD high-variance module, fixture, report treatment, and settlement sample.
- Historical backtest result fixture sets and coverage summary loader.
- Historical coverage in SlateContext, audit JSON, and report output.
- Injury timeline fixtures, loader, stale-projection helper, context/audit/report summary.
- Matchup recent-window sample floor, blowout distortion, and off-bye hidden gate.
- Backtest summary CLI/artifact with overall and market-level raw/weighted rates.
- CI now generates mock report, settled tracker, and backtest summary artifacts.
- Source-specific freshness thresholds with Fresh/Stale/Unknown/Missing statuses.
- Product copy guardrails for education-first language.
- Multi-book Over/Under odds normalizer tied to best-line selection.
- Artifact validators and validation CLI for report, audit, tracker, settled tracker, and backtest summary.
- Cloudflare Pages-ready docs headers and pages-readiness workflow.
- Market-health CLI/artifact with market, confidence, and state rollups from settled tracker output.
- End-to-end local fixture build wrapper with artifact validation.
- Configurable sportsbook priority as final best-line tie-breaker.
- Official inactive-report normalizer for active/inactive player lists.
- MarketBlend coverage-quality scoring from sportsbook depth and major-book count.
- Config-driven market lifecycle promotion recommendations in market-health output.
- Weekly schedule-window classification helpers for kickoff timestamps.
- Market-health HTML report for lifecycle recommendation cards.
- Daily-run helpers for upcoming games, named windows, and next window selection.
- Main report summary band and jump navigation.
- Run manifest artifact for full fixture builds.
- Human-readable build summary Markdown artifact.
- Optional live-provider environment config validation and documentation.
- Artifact index JSON for generated docs/mock outputs.
- Release notes Markdown generated from build status and run manifest.
- Docs index link validation for generated static pages and artifacts.
- Static docs site map JSON for publishing review.
- Release bundle JSON for standalone repo handoff checks.
- Source-health status/freshness badges in the main report.
- Source-health gate summary now classifies source readiness as PASS, REVIEW, or ABSTAIN for audit handoff.
- Source-health gate summary now surfaces in report summary JSON and the main static report.
- Provider sample validation now rejects malformed timestamp-shaped fields before adapter review.
- Provider sample validation and review-summary artifacts now roll up invalid JSON, unsupported shapes, non-object rows, missing required rows, and bad timestamp rows.
- Review packet, collection packet, and next-action queue now surface provider sample diagnostics for offline fixes.
- Main report print stylesheet for human review exports.
- Compact report summary JSON for external status surfaces.
- Dashboard-style summary cards on the docs landing page.
- `.env.example` fixture/live placeholder config with no committed secrets.
- Local development handoff docs for fixture mode and release safety.
- One-command local quality gate for tests, fixture build, and artifact validation.
- Provider decision register for approving future live data sources.
- Git ignore protection for local `.env` files while preserving `.env.example`.
- Build backlog refreshed with fixture-build status and production provider issues.
- GitHub issue templates for build slices, provider decisions, and calibration reviews.
- Pull request template for quality-gate evidence and product safety checks.
- Security policy for secrets, live-provider enablement, and product safety.
- Future injury/inactives provider env placeholder aligned to the inactive state machine.
- Remote setup checklist for GitHub Actions and Cloudflare Pages publishing.
- EditorConfig for consistent formatting across agents and local editors.
- Docs landing page validation now includes product copy guardrails.
- Release bundle validation now checks individual required path rows.
- Provider schema fixture placeholder directory for approved future data sources.
- Quality gate command labels flush before subprocess output.
- Architecture map for core modules and runtime entrypoints.
- Expanded report summary JSON with state, market, window, confidence, inactive, risk, and hidden-gate breakdowns.
- Docs landing page dashboard panels for summary breakdowns.
- Game-window staleness policy aligned with Sunday Night, Monday Night, International, and Holiday labels.
- Structured game-script type derived from spread and total, surfaced in team context.
- Candidate-level structured game-script alignment for passing and rushing volume markets.
- Audit export validation now requires favorite, underdog, and structured script fields.
- Candidate rankings JSON artifact for compact sorted UI/API feeds.
- Quality gate now builds fixture artifacts before tests that validate generated docs.
- Candidate rankings include a compact primary reason for UI explanation.
- Docs landing page surfaces top candidates from candidate rankings JSON.
- Product copy guardrails expanded for betting-hype phrases while allowing policy language.
- Full build wrapper now performs final artifact validation after all handoff artifacts are written.
- Package `__version__` exported and tested against `pyproject.toml`.
- Provider decision document validator for required live-source categories.
- Adapter registry payload for fixture and future live-provider boundaries.
- Adapter registry JSON artifact for static docs handoff.
- Lightweight repo secret scan wired into the quality gate.
- GitHub Actions workflows simplified to use the local quality gate.
- Provider decision documentation CLI wired into the quality gate.
- Contributing guide for quality-gate, provider, secret, and product-language rules.
- Calibration review JSON artifact with small-sample warnings and threshold-review dimensions.
- Calibration HTML report for readable threshold-review cards.
- Data dictionary for tracker, audit, rankings, and calibration artifacts.
- Six-check schema JSON artifact for report and UI consumers.
- Threshold schema JSON artifact for baby-line and edge-threshold review.
- Market scope JSON artifact for V1, team, and deferred market boundaries.
- Run manifest artifact count and byte-size metadata.
- Full build avoids stale optional-artifact validation before final artifact refresh.
- Release readiness JSON combining bundle, provider, secret, and artifact validation status.
- Release readiness HTML report for readable handoff status.
- Repository inventory JSON for handoff review.
- Build status JSON artifact for machine-readable handoff status.
- Quality gate plan JSON artifact for CI and handoff command review.
- Data source contracts JSON artifact for future live-provider adapter wiring.
- Handoff summary JSON artifact for compact release-review status.
- Backlog summary JSON artifact for machine-readable issue planning.
- Final run-manifest refresh so late-stage handoff artifacts are included in generated artifact metadata.
- Run manifest now includes original fixture outputs: mock slate results, tracker, audit, and sample results.
- Run manifest validation now checks artifact paths, counts, and positive byte metadata.
- Artifact index validation now checks count, file set, paths, and non-self artifact sizes.
- GitHub issue seed JSON artifact generated from the build backlog for future remote issue creation.
- GitHub label seed JSON artifact generated from the build backlog label taxonomy.
- GitHub milestone seed JSON artifact generated from the build backlog milestone taxonomy.
- GitHub backlog bundle JSON artifact combining labels, milestones, and issues for remote setup.
- Handoff summary now includes remote-backlog import counts.
- GitHub backlog report HTML artifact for readable remote-import review.
- Season readiness JSON/HTML artifacts for offseason live-pick availability guardrails.
- Handoff summary now includes season-readiness state.
- Provider sample folders and README placeholders for schedule, odds, usage, injuries, team context, matchup, and weather feeds.
- Provider fixture status JSON/HTML artifacts for schema-sample readiness before live adapters.
- Handoff summary now includes provider-fixture readiness counts.
- Live readiness JSON/HTML artifacts for season, provider, fixture, and environment blockers.
- Handoff summary now includes live-readiness blockers.
- Provider schema template JSON/HTML artifacts derived from data-source contracts without approving providers.
- Provider sample request JSON/HTML artifacts turn schema templates into sanitized, credential-free sample requests for future provider review.
- Provider sample intake JSON/HTML artifacts map provider approval and sample-folder readiness into offline collection actions.
- Provider sample validation JSON/HTML artifacts inspect sanitized sample JSON files against required source-contract fields.
- Provider sample redaction audit JSON/HTML artifacts inspect sanitized sample JSON files for forbidden keys and secret-shaped values.
- Provider sample review summary JSON/HTML artifacts combine sample request, intake, validation, and redaction status into one handoff surface.
- Provider sample collection packet Markdown artifact provides a copy-ready checklist for future sanitized sample collection.
- Live adapter placeholders now cover schedule, team context, and matchup in addition to odds, usage, weather, and injuries.
- Adapter readiness JSON/HTML artifacts summarize live-adapter and normalizer coverage gaps.
- Live readiness now evaluates adapter and normalizer coverage before future live enablement.
- Schedule, team context, and matchup normalizers added, completing normalizer coverage for all data-source families.
- Fixture scenario coverage JSON/HTML artifacts verify no-live-data coverage across states, gates, and review paths.
- Handoff summary now includes fixture scenario coverage counts for release review.
- Docs landing page now surfaces fixture scenario coverage counts alongside candidate summary panels.
- Provider selection rubric JSON/HTML artifacts document approval proof needed before future live-provider enablement.
- Handoff summary now includes provider selection rubric counts for release review.
- Next action queue JSON/HTML artifacts separate safe fixture-mode work from provider, live-data, and repo-setup dependencies.
- Handoff summary now includes next action queue counts for release review.
- Release bundle now requires the latest offline review scripts and critical generated handoff artifacts.
- Release bundle JSON now includes path counts, missing counts, path-type rollups, and missing-path details.
- Handoff summary now includes release bundle path and missing-path counts.
- Release readiness JSON/HTML now surfaces release bundle path counts and missing-path details.
- Review packet Markdown artifact now rolls up release readiness, live blockers, scenario coverage, provider review, and next actions.
- Artifact summary JSON now rolls up generated artifact counts, bytes, file types, and largest outputs for release review.
- Repo setup status JSON/HTML artifacts now inspect standalone Git and remote-publish readiness without mutating local Git state.
- Handoff summary and review packet now surface repo setup status for remote handoff planning.
- Docs publish readiness JSON/HTML artifacts now validate the Cloudflare Pages static docs payload without contacting GitHub or Cloudflare.
- Handoff summary and review packet now surface docs publish readiness for release review.
- `live_no_call` runtime mode now supports online-prep readiness while keeping provider API calls disabled.
- Provider runtime guardrails now fail closed before future network-backed calls when mode or quota is not live-ready.
- Provider runtime action guard now blocks live publishing and provider calls outside valid live mode while allowing offline QA.
- Provider dry-run JSON/HTML artifacts now show per-source no-call status before any future live-provider network work.
- Network guard audit JSON/HTML artifacts now scan Python source for direct network-call primitives and surface zero-call evidence in handoff review.
- Runtime mode matrix JSON/HTML artifacts now document fixture, sample, live-no-call, live, and quota-exhausted behavior.
- Live enablement checklist JSON/HTML artifacts now combine prep, release, provider, quota, and season gates before any future live-call enablement.
- Handoff summary and review packet now surface provider sample request counts and approval blockers.
- Handoff summary and review packet now surface provider sample intake readiness and pending sample counts.
- Handoff summary and review packet now surface provider sample validation readiness, missing samples, and invalid samples.
- Handoff summary and review packet now surface provider sample redaction audit validity and finding counts.
- Handoff summary and review packet now surface the provider sample review summary and next review action.
- Live enablement checklist now includes provider sample review readiness and sample validation/redaction gates.
- Antigravity continuation handoff now documents the correct local repo, current Codex-built state, nested-repo caveat, validation commands, and live-data guardrails.
- Release bundle now requires the Antigravity handoff so the continuation instructions travel with the standalone repo handoff.
- Fixture scenario coverage now verifies 17/17 no-live-data scenarios, including B-grade candidates, publish-time line Abstain, isolated defensive injury boost, and opportunity-boost A-grade paths.
- Test coverage now includes additional grading, visible-check, scoring, correlation, daily-window, and fixture-scenario edge cases.
- GitHub backlog labels, milestones, and 23 generated issue seeds have been imported into `sacboyz/nfl-picks`.
- Provider-neutral schema samples now exist for schedule, odds, usage, injuries, team context, matchup, and weather without approving live providers.
- Provider sample fixture tests now validate sample completeness, redaction cleanliness, and normalizer compatibility.
- Next-action queue now separates completed local sample/repo readiness from provider approval and live-mode blockers.
- Provider sample consistency JSON/HTML artifacts now compare shared IDs and team/player coverage across sanitized provider sample families.
- Fixture-vs-sample baseline comparison JSON/HTML artifacts now compare candidate, state, market, and source-health output across offline lanes.
- Release bundle required paths now include the latest baseline comparison and provider sample consistency scripts and generated artifacts.
- Docs landing page now links directly to baseline comparison and provider sample consistency artifacts.
- Provider sample consistency checks now include explicit explanations and review classifications; the current weather sample review is documented as expected sample diversity, not a fixture gap.
- Sanitized nflverse baseline source-health now normalizes game-level weather fields and recent matchup samples into the shared source-health contracts without weakening fail-closed gates.
- Fixture scenario coverage now verifies 20/20 no-live-data scenarios, including post-inactives confirmed opportunity, clean next-man-up opportunity, and stale/outlier best-line review.
- Settlement/backtest outputs now de-weight correlated groups by actual group size, with mixed correlated sample outcomes included in fixture results.
- Release bundle mirroring now requires every generated `docs/mock/` artifact from the run manifest to appear in the release bundle.
- Quality gate tests now assert default offline-safe behavior and `live_no_call` provider dry-run with all provider calls blocked.
- Data dictionary now documents provider consistency explanations, sample-baseline source-health normalization, scenario coverage, release mirroring, and quality-gate no-live guardrails.
- Repo setup status next actions are now conditional, so configured standalone repos stop showing stale initialize/add-remote guidance.
- Baseline comparison now carries source-health detail for fixture and sample lanes, including stale/future source families.
- Provider sample review summary and review packet now surface consistency classifications and expected sample diversity explanations.
- Backtest summary now exposes correlation group count, correlated counted rows, and weighted de-weight delta for transparent market-health review.
- Release bundle artifact validation now rejects duplicate path rows in addition to missing paths.
- Run manifest now includes Git branch, commit, and dirty-worktree provenance for generated docs payloads.
- Provider sample validation now reports sample records, normalized records, normalizer coverage, and per-file normalized throughput.
- Calibration JSON/HTML now surfaces threshold review readiness and a hold/review threshold action.
- Docs publish readiness now reports local link counts, missing link counts, artifact-index count, and site-map count.
- Market-health JSON now includes explicit research-only lifecycle policy and trusted-inheritance guardrails.

## Current Verification

```powershell
python -m pytest -q
```

Current result:

```text
658 passed
```

Full local quality gate:

```powershell
python run_quality_gate.py
```

Runs:

- tests
- full fixture artifact build
- artifact validation

Mock artifact generation:

```powershell
python run_mock.py
```

Writes:

- `docs/mock/index.html`
- `docs/mock/mock_slate_results.json`
- `docs/mock/tracker.csv`
- `docs/mock/audit.json`

## Recommended Next Issues

1. Add provider-specific live implementation once provider/API choices are approved.
2. Add provider-specific schema fixtures after vendors are approved.
3. Add additional UI polish after live-provider decisions.
4. Add Cloudflare Pages repository settings after the repo exists on GitHub.
