---
title: Show forward coverage per run in the game path explorer
type: task
status: completed
description: >-
  Add a per-run view to the game path explorer that places a settled game's actuals in the run's own
  distributions per quantity family (PIT, outside p10-p90, refusal mass), so a draw change can be
  read game by game.
base_uri: user:task/league/show-forward-coverage-per-run-in-game-path-explorer.md
created_at: '2026-10-30T04:20:53.064Z'
entity_id: 213e0276-cce5-4931-b395-9ac358762ab5
finished_at: '2026-10-31T04:55:32.468Z'
observations:
  - ████████████████████████████████████████████████
owner_identity_uri: █████████████████████████
priority: Medium
public_read: true
relations:
  - relates [[█████████████████████-███-████-█████-████-█████████-████████]]
  - relates [[██████████████████████-███-████-████-█████████]]
tags:
  - user:tag/league-xo-football.md
  - user:tag/nfl-betting.md
updated_at: '2026-10-31T04:55:32.468Z'
visibility_analyzed_at: '2026-11-05T23:50:25.697Z'
---

# Show forward coverage per run in the game path explorer

Draft. Operator ask, 2026-10-30: continue developing the game path explorer, starting with a forward-coverage view per run (ruled as recommended over a per-branch player-curve view).

## Intent

- For a run of a settled game, show where each actual landed in the run's own distribution, per quantity family: team points, game total, margin, plays, pass rate, explosive rate, series success, and each player's rushing yards, receiving yards, receptions, passing yards and touchdowns.
- Show each actual's PIT and whether it fell outside p10-p90, so a draw change can be read game by game as it lands, beside the aggregate gate.
- Show the run's refusal mass and, once the archetype-role touch draw merges, its unroutable usage and each stage's source shares from `stage_trace`.

## What exists

- `scripts/report-nfl-game-path-coverage.mjs` computes the same placement over many games with `measure_game_path_coverage` (`libs-shared/nfl-game-path-simulation/summarize-game-path-coverage.mjs`), from path summaries and the settled game's derived actuals.
- The explorer, operator-only at `/game-paths`, reads runs through `libs-server/nfl-game-path-simulation/read-game-path-explorer.mjs` and `/api/game-paths`. A forecast run stores `path_summaries` with team and player measures.
- [[████████████████████-████-████-█████████]] describes the run store and the gate.

## Outcome

Built in league ed3d73028:
- `GET /game-paths/runs/{run_id}/coverage` (`read_game_path_explorer_run_coverage` in `read-game-path-explorer.mjs`) computes coverage when read, from the run's stored path summaries and the game's own plays, through the same `measure_game_path_coverage` the gate report uses. Nothing is stored.
- Kickoff forecasts of settled games qualify. A review sub-run answers `not_kickoff_forecast` and an unfinished game `unsettled`, each with no rows.
- The forecast page shows per-family count, mean PIT and outside shares, every actual with its p10-p90 band, and the run's refusal mass, unroutable usage mass, archetype-fallback yard share and routing and touch-source shares.
- Verified by `test/api.game-paths.spec.mjs`. The one recorded settled 2026 forecast (CAR @ GB) holds its files on league-production, so the served page reads it after the next deploy.
