{
  "online_prep_ready": true,
  "live_enablement_ready": false,
  "gate_count": 21,
  "passed_count": 17,
  "blocked_count": 4,
  "online_prep_gate_count": 14,
  "live_enablement_gate_count": 7,
  "gates": [
    {
      "key": "online_prep_ready",
      "label": "Online prep remains ready",
      "passed": true,
      "lane": "online_prep",
      "evidence": "mode=live_no_call"
    },
    {
      "key": "provider_calls_disabled",
      "label": "Provider calls are disabled in current mode",
      "passed": true,
      "lane": "online_prep",
      "evidence": "provider_calls_enabled=False"
    },
    {
      "key": "provider_dry_run_blocked",
      "label": "Provider dry run makes no live calls",
      "passed": true,
      "lane": "online_prep",
      "evidence": "would_call_count=0"
    },
    {
      "key": "env_readiness_safe",
      "label": "Environment readiness is secret-safe and documented",
      "passed": true,
      "lane": "online_prep",
      "evidence": "required=ODDS_API_KEY; missing_from_example=0"
    },
    {
      "key": "quota_readiness_safe",
      "label": "Quota readiness is no-call safe and documented",
      "passed": true,
      "lane": "online_prep",
      "evidence": "odds_quota=unknown"
    },
    {
      "key": "live_switch_audit_safe",
      "label": "Live enablement switches are declared and default-off",
      "passed": true,
      "lane": "online_prep",
      "evidence": "declared=True; default_false=True; calls_only=True"
    },
    {
      "key": "network_guard_clean",
      "label": "Network guard audit has zero findings",
      "passed": true,
      "lane": "online_prep",
      "evidence": "finding_count=0"
    },
    {
      "key": "provider_sample_review_ready",
      "label": "Provider sample review summary is ready",
      "passed": true,
      "lane": "online_prep",
      "evidence": "next_review_action=review provider sample cross-family consistency"
    },
    {
      "key": "runtime_matrix_default_safe",
      "label": "Runtime matrix defaults to live_no_call",
      "passed": true,
      "lane": "online_prep",
      "evidence": "default_safe_mode=live_no_call"
    },
    {
      "key": "odds_api_request_plan_safe",
      "label": "Odds API request plan is no-call safe",
      "passed": true,
      "lane": "online_prep",
      "evidence": "request_groups=2"
    },
    {
      "key": "provider_sample_bundle_complete",
      "label": "Provider sample bundle covers all V1 source families",
      "passed": true,
      "lane": "online_prep",
      "evidence": "complete_count=7/7"
    },
    {
      "key": "manual_injury_overrides_ready",
      "label": "Manual injury override sample is normalized and ready",
      "passed": true,
      "lane": "online_prep",
      "evidence": "valid=3; invalid=0"
    },
    {
      "key": "docs_publish_ready",
      "label": "Static docs payload is publish-ready",
      "passed": true,
      "lane": "release",
      "evidence": "blockers=0"
    },
    {
      "key": "release_ready",
      "label": "Fixture release bundle is ready",
      "passed": true,
      "lane": "release",
      "evidence": "missing_paths=0"
    },
    {
      "key": "season_live_available",
      "label": "Season allows live picks",
      "passed": false,
      "lane": "live_enablement",
      "evidence": "season_phase=OFFSEASON"
    },
    {
      "key": "providers_approved",
      "label": "Live provider calls are explicitly approved",
      "passed": false,
      "lane": "live_enablement",
      "evidence": "approval_state=adapter_planning_only; adapter_planning_approved=7; live_approval_required=7"
    },
    {
      "key": "schema_samples_ready",
      "label": "Sanitized provider schema samples are ready",
      "passed": true,
      "lane": "live_enablement",
      "evidence": "ready_count=7/7"
    },
    {
      "key": "provider_samples_validated",
      "label": "Provider samples validate and have no redaction findings",
      "passed": true,
      "lane": "live_enablement",
      "evidence": "missing=0; invalid=0; redaction_findings=0"
    },
    {
      "key": "provider_sample_core_data_complete",
      "label": "Provider samples include all core data fields",
      "passed": true,
      "lane": "live_enablement",
      "evidence": "status=complete; missing_core_families=none"
    },
    {
      "key": "current_live_ready",
      "label": "Current live readiness is fully green",
      "passed": false,
      "lane": "live_enablement",
      "evidence": "blockers=2"
    },
    {
      "key": "quota_available",
      "label": "Current Odds API quota is available",
      "passed": false,
      "lane": "live_enablement",
      "evidence": "odds_quota=unknown"
    }
  ],
  "next_action": "Keep building in live_no_call until live enablement gates are approved and quota is available."
}