{
  "schemaVersion": "club-football-release-status-v1",
  "updatedAt": "2026-07-02T00:00:00.000Z",
  "purpose": "Machine-readable release status for Kickoff Lens club-football expansion. This prevents thin club, player, matchweek, or copied-fixture pages from entering search before evidence gates are met.",
  "overallStatus": "framework-public-data-private",
  "publicVisitorLayer": {
    "worldCup": {
      "route": "#matches",
      "status": "live",
      "evidence": "World Cup match, team, player, venue, ranking, knockout, and recap data are live through the verified data package."
    },
    "homeGateway": {
      "route": "#home",
      "status": "live-structured",
      "evidence": "Clean visitor gateway links the live World Cup section to independent release-gated five-league data rooms."
    },
    "fiveLeagueCockpit": {
      "route": "#league/<league>",
      "status": "framework-only",
      "evidence": "The page shows schedule framework, club style notes, player-role layers, and automation gates. It does not publish official copied fixture tables or invented matchups."
    }
  },
  "competitionStatus": [
    {
      "key": "premier-league",
      "name": "Premier League",
      "visitorRoute": "#league/premier-league",
      "seoRoute": "/european-leagues/premier-league/",
      "dataMaturity": "framework",
      "nextGate": "source-timestamped club dossier modules"
    },
    {
      "key": "la-liga",
      "name": "La Liga",
      "visitorRoute": "#league/la-liga",
      "seoRoute": "/european-leagues/la-liga/",
      "dataMaturity": "framework",
      "nextGate": "source-timestamped club dossier modules"
    },
    {
      "key": "serie-a",
      "name": "Serie A",
      "visitorRoute": "#league/serie-a",
      "seoRoute": "/european-leagues/serie-a/",
      "dataMaturity": "framework",
      "nextGate": "source-timestamped club dossier modules"
    },
    {
      "key": "bundesliga",
      "name": "Bundesliga",
      "visitorRoute": "#league/bundesliga",
      "seoRoute": "/european-leagues/bundesliga/",
      "dataMaturity": "framework",
      "nextGate": "source-timestamped club dossier modules"
    },
    {
      "key": "ligue-1",
      "name": "Ligue 1",
      "visitorRoute": "#league/ligue-1",
      "seoRoute": "/european-leagues/ligue-1/",
      "dataMaturity": "framework",
      "nextGate": "source-timestamped club dossier modules"
    },
    {
      "key": "champions-league",
      "name": "Champions League",
      "visitorRoute": "/competitions/champions-league/",
      "seoRoute": "/competitions/champions-league/",
      "dataMaturity": "framework",
      "nextGate": "source-timestamped cross-league matchup modules"
    }
  ],
  "routeTypeStatus": [
    {
      "type": "themePages",
      "status": "indexable",
      "examples": [
        "/european-leagues/",
        "/european-leagues/premier-league/",
        "/club-football/",
        "/club-comparison-lab/",
        "/football-style-taxonomy/"
      ],
      "minimumEvidence": [
        "original radar dimensions",
        "rights boundary",
        "release rules",
        "source policy",
        "reader workflow"
      ],
      "sitemapAllowed": true
    },
    {
      "type": "clubPages",
      "status": "noindex-until-release-gate",
      "examples": [
        "/clubs/premier-league/arsenal/"
      ],
      "minimumEvidence": [
        "club name as text",
        "competition",
        "style profile",
        "radar axes",
        "squad depth note",
        "player-dependency note",
        "source timestamp",
        "rights boundary"
      ],
      "sitemapAllowed": false
    },
    {
      "type": "matchweekPages",
      "status": "not-generated-until-release-gate",
      "examples": [],
      "minimumEvidence": [
        "home club",
        "away club",
        "kickoff window",
        "venue or city",
        "table implication",
        "rotation/rest context",
        "strength comparison",
        "source timestamp"
      ],
      "sitemapAllowed": false
    },
    {
      "type": "clubPlayerPages",
      "status": "not-generated-until-release-gate",
      "examples": [],
      "minimumEvidence": [
        "role",
        "club",
        "availability context",
        "contribution trend",
        "source note",
        "rights-safe image policy"
      ],
      "sitemapAllowed": false
    },
    {
      "type": "postMatchRecaps",
      "status": "not-generated-until-release-gate",
      "examples": [],
      "minimumEvidence": [
        "final score",
        "result confirmation source",
        "event availability note",
        "table effect",
        "model-read comparison",
        "correction timestamp"
      ],
      "sitemapAllowed": false
    }
  ],
  "releaseCandidateSummary": {
    "status": "pre-index-noindex",
    "count": 5,
    "routes": [
      "/clubs/premier-league/arsenal/",
      "/clubs/la-liga/real-madrid/",
      "/clubs/serie-a/inter/",
      "/clubs/bundesliga/bayern-munich/",
      "/clubs/ligue-1/paris-saint-germain/"
    ],
    "rule": "These candidate club dossiers may be shown on blueprint and league pages as structured release candidates, but their individual routes stay noindex and outside sitemap until all release gates pass."
  },
  "automationChecklist": [
    "Fetch public schedule and result sources with visible source timestamps.",
    "Keep club and matchweek long-tail pages noindex until release gates pass.",
    "Reject official logos, club crests, kit artwork, trophy art, broadcast screenshots, copied article text, and bulk copied fixture databases.",
    "Create post-match recap tasks automatically without inventing event timelines.",
    "Sync sitemap, feed, IndexNow, and operations health only after reviewed updates."
  ]
}
