{
  "supported_modes": [
    "fixture",
    "live_no_call",
    "sample",
    "live"
  ],
  "row_count": 7,
  "provider_call_enabled_count": 2,
  "live_picks_allowed_count": 1,
  "default_safe_mode": "live_no_call",
  "rows": [
    {
      "label": "Fixture Mode",
      "mode": "fixture",
      "valid_config": true,
      "provider_calls_enabled": false,
      "live_publish_enabled": false,
      "live_picks_allowed": false,
      "live_switches": {
        "NFL_LIVE_PROVIDERS_APPROVED": false,
        "NFL_ALLOW_PROVIDER_CALLS": false,
        "NFL_ALLOW_LIVE_PUBLISH": false
      },
      "quota_state": {
        "odds": "unknown"
      },
      "allowed_actions": [
        "build adapters",
        "validate schema samples",
        "render readiness reports",
        "run fixture/sample QA"
      ],
      "blocked_actions": [
        "call live providers",
        "publish live picks"
      ],
      "notes": [
        "provider API calls disabled by runtime mode"
      ]
    },
    {
      "label": "Sample Mode",
      "mode": "sample",
      "valid_config": true,
      "provider_calls_enabled": false,
      "live_publish_enabled": false,
      "live_picks_allowed": false,
      "live_switches": {
        "NFL_LIVE_PROVIDERS_APPROVED": false,
        "NFL_ALLOW_PROVIDER_CALLS": false,
        "NFL_ALLOW_LIVE_PUBLISH": false
      },
      "quota_state": {
        "odds": "unknown"
      },
      "allowed_actions": [
        "build adapters",
        "validate schema samples",
        "render readiness reports",
        "run fixture/sample QA"
      ],
      "blocked_actions": [
        "call live providers",
        "publish live picks"
      ],
      "notes": [
        "provider API calls disabled by runtime mode"
      ]
    },
    {
      "label": "Live No-Call Mode",
      "mode": "live_no_call",
      "valid_config": true,
      "provider_calls_enabled": false,
      "live_publish_enabled": false,
      "live_picks_allowed": false,
      "live_switches": {
        "NFL_LIVE_PROVIDERS_APPROVED": false,
        "NFL_ALLOW_PROVIDER_CALLS": false,
        "NFL_ALLOW_LIVE_PUBLISH": false
      },
      "quota_state": {
        "odds": "exhausted"
      },
      "allowed_actions": [
        "build adapters",
        "validate schema samples",
        "render readiness reports",
        "run fixture/sample QA"
      ],
      "blocked_actions": [
        "call live providers",
        "publish live picks"
      ],
      "notes": [
        "provider API calls disabled by runtime mode"
      ]
    },
    {
      "label": "Live Mode Missing Env",
      "mode": "live",
      "valid_config": false,
      "provider_calls_enabled": false,
      "live_publish_enabled": false,
      "live_picks_allowed": false,
      "live_switches": {
        "NFL_LIVE_PROVIDERS_APPROVED": false,
        "NFL_ALLOW_PROVIDER_CALLS": false,
        "NFL_ALLOW_LIVE_PUBLISH": false
      },
      "quota_state": {
        "odds": "unknown"
      },
      "allowed_actions": [
        "build adapters",
        "validate schema samples",
        "render readiness reports",
        "run fixture/sample QA"
      ],
      "blocked_actions": [
        "invalid runtime mode/config",
        "call live providers",
        "publish live picks"
      ],
      "notes": [
        "Odds API quota must be explicitly marked available before live provider calls",
        "NFL_LIVE_PROVIDERS_APPROVED must be true before live provider calls",
        "NFL_ALLOW_PROVIDER_CALLS must be true before live provider calls",
        "NFL_ALLOW_LIVE_PUBLISH must be true before live picks can publish"
      ]
    },
    {
      "label": "Live Mode Calls Only",
      "mode": "live",
      "valid_config": true,
      "provider_calls_enabled": true,
      "live_publish_enabled": false,
      "live_picks_allowed": false,
      "live_switches": {
        "NFL_LIVE_PROVIDERS_APPROVED": true,
        "NFL_ALLOW_PROVIDER_CALLS": true,
        "NFL_ALLOW_LIVE_PUBLISH": false
      },
      "quota_state": {
        "odds": "available"
      },
      "allowed_actions": [
        "build adapters",
        "validate schema samples",
        "render readiness reports",
        "run fixture/sample QA",
        "call approved live providers"
      ],
      "blocked_actions": [
        "publish live picks"
      ],
      "notes": [
        "NFL_ALLOW_LIVE_PUBLISH must be true before live picks can publish",
        "V1 credential-gated providers are configured; free/manual providers require no API key"
      ]
    },
    {
      "label": "Live Mode Quota Available",
      "mode": "live",
      "valid_config": true,
      "provider_calls_enabled": true,
      "live_publish_enabled": true,
      "live_picks_allowed": true,
      "live_switches": {
        "NFL_LIVE_PROVIDERS_APPROVED": true,
        "NFL_ALLOW_PROVIDER_CALLS": true,
        "NFL_ALLOW_LIVE_PUBLISH": true
      },
      "quota_state": {
        "odds": "available"
      },
      "allowed_actions": [
        "build adapters",
        "validate schema samples",
        "render readiness reports",
        "run fixture/sample QA",
        "call approved live providers",
        "publish live picks"
      ],
      "blocked_actions": [],
      "notes": [
        "V1 credential-gated providers are configured; free/manual providers require no API key"
      ]
    },
    {
      "label": "Live Mode Quota Exhausted",
      "mode": "live",
      "valid_config": false,
      "provider_calls_enabled": false,
      "live_publish_enabled": false,
      "live_picks_allowed": false,
      "live_switches": {
        "NFL_LIVE_PROVIDERS_APPROVED": true,
        "NFL_ALLOW_PROVIDER_CALLS": true,
        "NFL_ALLOW_LIVE_PUBLISH": true
      },
      "quota_state": {
        "odds": "exhausted"
      },
      "allowed_actions": [
        "build adapters",
        "validate schema samples",
        "render readiness reports",
        "run fixture/sample QA"
      ],
      "blocked_actions": [
        "invalid runtime mode/config",
        "call live providers",
        "publish live picks"
      ],
      "notes": [
        "Odds API quota is exhausted; live provider calls are disabled",
        "V1 credential-gated providers are configured; free/manual providers require no API key"
      ]
    }
  ],
  "policy": "Only valid live mode with approved env, available quota, and explicit live switches may enable provider calls or publishing."
}