Skip to content

Keep Explore useful while historical publication stays closed - #34

Merged
utkuvibing merged 2 commits into
mainfrom
codex/explore-open-data-playground
Aug 27, 2026
Merged

Keep Explore useful while historical publication stays closed#34
utkuvibing merged 2 commits into
mainfrom
codex/explore-open-data-playground

Conversation

@utkuvibing

Copy link
Copy Markdown
Owner

What

The Explore route no longer collapses into a publication refusal when
historical_publication_state is closed. The gate is untouched (zero backend
changes in this PR); what changed is what surrounds it.

  • Ungated recorded-shot workspace over the public /shots API (WC2022 only):
    full-pitch map, 7 exact-match filters, list/detail for rows without
    coordinates, /baseline strip
  • Model playground over /model/predict: contract-driven context selects,
    pointer + keyboard placement, provenance-echo verification against /model,
    field-level 422 mapping
  • Gate refusal reduced to a secondary boundary note; provenance disputes and
    contract mismatches still withhold every historical probability
  • Cohort-integrity audit fix: the two denominators (1,494 recorded vs 1,430
    eligible non-penalty) are labelled and reconciled on screen

Verification

  • lint, typecheck, 63/63 vitest, next build green locally
  • Live production evidence for cohort scoping: /shots total=1494 across 64
    matches / 23 dates in the tournament window; /baseline=1430/152 with the
    (43,106) scope in its own cohort text; /model cross-check
  • e2e smoke spec updated to the new /explore surface

The route used to collapse into a page-sized refusal whenever
historical_publication_state was closed. The gate itself is untouched; what
changed is what surrounds it.

Ungated recorded-shot workspace (public /shots API, WC2022 only):
- full-pitch map over recorded source facts, uniform markers, fill encodes
  the recorded outcome, nothing encodes a probability
- exact-match filters for match, team, player, outcome, body part,
  technique, shot type
- rows without coordinates stay visible in the list and detail with an
  explicit disclosure instead of vanishing
- /baseline tournament strip with its own caveat collapsed in place
- per-shot model-probability field reads "Not published", keeping the
  boundary visible at the row level

Model playground (/model/predict, live inference only):
- shot placement on an attacking-half picker plus labelled number inputs,
  context selects built strictly from the served input contract
- the response carries artifact provenance; the page verifies the echo
  against /model metadata and warns instead of showing a number that has
  no verified home
- 422 validation details map to the offending inputs; network failures
  surface with their machine codes and a retry path

The old gate refusal is reduced to a secondary boundary note. A provenance
mismatch or a published-but-refusing contract still withholds every
historical probability, but recorded facts stay available in all states
because they are not part of that dispute.

Shared internals extracted (pitch markings, FilterBar, ShotList) so the
historical and recorded workspaces cannot drift apart visually.
Cohort-integrity audit outcome: /shots and /baseline are both scoped to
WC2022 (competition 43, season 106) by the same SQL predicate, verified
against production (1,494 recorded rows across 64 matches and 23 dates in
the tournament window; baseline 1,430/152). The one real finding was
presentational: the strip labelled the baseline denominator "Recorded
shots" (1,430) next to a workspace that says "1,494 recorded shots",
reading as a contradiction.

- BaselineStrip now labels cohort facts by their meaning, states the scope
  in its own fact, and discloses the two-denominator design with a
  data-driven difference (1,494 - 1,430 = 64 rows outside the cohort).
  No number is hardcoded; both totals come from the served endpoints.
- Tests pin the reconciled labels against production-shaped fixtures
  (1,494 recorded / 1,430 eligible / 152 goals).
@vercel

vercel Bot commented Aug 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
touchline-intelligence Ready Ready Preview Aug 27, 2026 3:49pm

@utkuvibing
utkuvibing merged commit eea35ec into main Aug 27, 2026
5 checks passed
@utkuvibing
utkuvibing deleted the codex/explore-open-data-playground branch August 27, 2026 23:52
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