Twelve parity + consistency contracts split across two layers. P1-P6 enforce DATA-layer parity (the canonical SETU snapshot agrees with an independent ball-walk). P7-P12 enforce PRESENTATION-layer parity (every page renders the canonical numbers with explicit metric labels + roster slugs + canonical-URL cross-links). Cron-verified every 2h; failed contracts fail the deploy.
PASSAll consistency contracts hold.
Manifest computed 2h ago · 6 pass · 0 fail · 0 skipped · last
Data-layer contracts (P1-P6)
Enforced by scripts/setu/check-leaderboard-parity.mjs. Cron run: every 2h via the quality-gates workflow. Failure fires Healthchecks + opens a GitHub issue.
P1Orange-cap leader parityPASS
Independent ball-walk produces the same top run-scorer as the SETU canonical snapshot.
every 2h via quality-gates cron · scripts/setu/check-leaderboard-parity.mjs
P2Purple-cap leader parityPASS
Independent ball-walk produces the same top wicket-taker as the snapshot.
every 2h via quality-gates cron · scripts/setu/check-leaderboard-parity.mjs
P3Roster integrityPASS
Every player seed file exports a valid Player object.
every 2h via quality-gates cron · scripts/setu/check-leaderboard-parity.mjs
P4Role-bucket parityPASS
For each role (batter / bowler / all-rounder / wk-batter), the snapshot’s top by runs is unambiguous.
every 2h via quality-gates cron · scripts/setu/check-leaderboard-parity.mjs
P5Phase-claim parityPASS
Every published phase claim value matches the same-precision projection from the canonical aggregate.
every 2h via quality-gates cron · scripts/setu/check-leaderboard-parity.mjs
P6Sample-floor parityPASS
Mirrors validate-sample-floors byte-for-byte; catches drift between two scripts.
every 2h via quality-gates cron · scripts/setu/check-leaderboard-parity.mjs
Presentation-layer contracts (P7-P12)
Enforced by scripts/audit-consistency.mjs. Catches labeling bugs the data-layer parity-check can't see — e.g. a composite metric rendered without its label. Runs on every npm run prebuild + every 2h.
P7Form leaderboards metric labelsPASS
Every role bucket on /players Form leaderboards renders its metric caption + all-rounder breakdown.
metricCaption + form-score label + all-rounder breakdown all present
P8SETU canonical snapshot presentPASS
Snapshot loaded with 191 players across 57 matches.
computedAt=2026-05-14T11:27:14.018Z
P9Player profile ↔ snapshot agreementPASS
For each player with a season_runs_total claim, the value matches the snapshot byte-for-byte.
1 claims cross-checked, 0 drift
P10Leader rows fully resolvedPASS
Every player in top-15 by runs has a roster slug — every leader name on every page renders as a profile link.
15/15 top run-scorers have slugs
P11MCP get_season_stats sortBy options match canonical projectorsPASS
Every sortBy enum value has a dispatch case + projector binding.
These are voluntary distribution decisions, not system health signals. Pending items are tracked as TODO, not failures — the platform runs fine without them. They unlock further LLM citation surface area when closed.
Roadmap item
Status
What unlocks
Make MCP server repo public
TODO
Direct GitHub indexing — same code is already serving live at /mcp
Submit to MCP directories (Anthropic Connectors, PulseMCP, Glama, mcpmarket, mcp.so)
TODO
Cross-listing for tool discovery — see docs/runbooks/llm-submission-checklist.md
Bump App Runner request-timeout 120s → 600s
TODO
Enables agents-cron App Runner fallback — current GHA path already running fine
These items are voluntary — the platform is fully operational without them. They're tracked here so the public can see the distribution roadmap.
What this is for
CricketStudio is citation infrastructure. An LLM that quotes a fact from /season/ipl-2026/orange-cap MUST get the same answer when it queries get_season_stats(sortBy="runs") via the MCP server, the same answer when it walks /players "Top run-scorers", the same answer when it reads the ClaimReview JSON-LD on the player profile.
These contracts are the proof that all those surfaces project from one canonical aggregate. P1-P6 are mathematical (snapshot vs independent walk). P7-P12 are structural (every renderer binds to the canonical projectors, every metric is labeled, every leader has a roster slug). Together they make the citation chain unforgeable.
Companion surfaces
/status — uptime, freshness SLA, cron heartbeat, SETU snapshot age