{
  "family_count": 7,
  "ready_count": 7,
  "core_data_ready": true,
  "data_completeness_status": "complete",
  "missing_core_data_count": 0,
  "missing_core_families": [],
  "missing_sample_count": 0,
  "invalid_sample_count": 0,
  "invalid_json_count": 0,
  "unsupported_shape_count": 0,
  "non_object_record_count": 0,
  "missing_required_record_count": 0,
  "invalid_timestamp_record_count": 0,
  "normalization_error_record_count": 0,
  "normalized_missing_required_record_count": 0,
  "sample_record_count": 22,
  "provider_specific_sample_count": 7,
  "normalized_record_count": 22,
  "normalizer_configured_count": 7,
  "all_normalizers_configured": true,
  "live_enablement_allowed": false,
  "fixture_mode_requires_credentials": false,
  "families": [
    {
      "source_key": "schedule",
      "label": "Game Metadata",
      "directory_exists": true,
      "required_fields": [
        "game_id",
        "season",
        "week",
        "kickoff_time",
        "home_team",
        "away_team",
        "game_window"
      ],
      "optional_fields": [
        "venue",
        "surface",
        "roof",
        "international_or_holiday"
      ],
      "sample_file_count": 2,
      "provider_specific_sample_count": 1,
      "valid_file_count": 2,
      "record_count": 3,
      "normalized_record_count": 3,
      "missing_sample": false,
      "ready_for_adapter_review": true,
      "data_completeness_status": "complete",
      "core_missing_fields": [],
      "files": [
        {
          "file_name": "nflverse_schedule_sample.json",
          "provider_id": "nflverse_nflreadpy",
          "parse_status": "ok",
          "normalization_status": "ok",
          "record_count": 1,
          "normalized_record_count": 1,
          "valid": true,
          "missing_by_record": [],
          "invalid_timestamps_by_record": [],
          "normalization_errors_by_record": [],
          "normalized_missing_by_record": []
        },
        {
          "file_name": "schedule_sample.json",
          "provider_id": "",
          "parse_status": "ok",
          "normalization_status": "ok",
          "record_count": 2,
          "normalized_record_count": 2,
          "valid": true,
          "missing_by_record": [],
          "invalid_timestamps_by_record": [],
          "normalization_errors_by_record": [],
          "normalized_missing_by_record": []
        }
      ]
    },
    {
      "source_key": "odds",
      "label": "Market Lines",
      "directory_exists": true,
      "required_fields": [
        "game_id",
        "market",
        "side",
        "line",
        "odds",
        "sportsbook",
        "odds_updated_at"
      ],
      "optional_fields": [
        "over_odds",
        "under_odds",
        "book_count",
        "best_book",
        "best_line",
        "best_odds"
      ],
      "sample_file_count": 2,
      "provider_specific_sample_count": 1,
      "valid_file_count": 2,
      "record_count": 4,
      "normalized_record_count": 4,
      "missing_sample": false,
      "ready_for_adapter_review": true,
      "data_completeness_status": "complete",
      "core_missing_fields": [],
      "files": [
        {
          "file_name": "odds_sample.json",
          "provider_id": "",
          "parse_status": "ok",
          "normalization_status": "ok",
          "record_count": 2,
          "normalized_record_count": 2,
          "valid": true,
          "missing_by_record": [],
          "invalid_timestamps_by_record": [],
          "normalization_errors_by_record": [],
          "normalized_missing_by_record": []
        },
        {
          "file_name": "the_odds_api_nfl_sample.json",
          "provider_id": "the_odds_api",
          "parse_status": "ok",
          "normalization_status": "ok",
          "record_count": 2,
          "normalized_record_count": 2,
          "valid": true,
          "missing_by_record": [],
          "invalid_timestamps_by_record": [],
          "normalization_errors_by_record": [],
          "normalized_missing_by_record": []
        }
      ]
    },
    {
      "source_key": "usage",
      "label": "Usage and Role",
      "directory_exists": true,
      "required_fields": [
        "player_id",
        "player_name",
        "team",
        "position",
        "role_context_available"
      ],
      "optional_fields": [
        "snap_share",
        "route_share",
        "target_share",
        "rush_share",
        "red_zone_role",
        "goal_line_role"
      ],
      "sample_file_count": 2,
      "provider_specific_sample_count": 1,
      "valid_file_count": 2,
      "record_count": 3,
      "normalized_record_count": 3,
      "missing_sample": false,
      "ready_for_adapter_review": true,
      "data_completeness_status": "complete",
      "core_missing_fields": [],
      "files": [
        {
          "file_name": "nflverse_usage_sample.json",
          "provider_id": "nflverse_nflreadpy",
          "parse_status": "ok",
          "normalization_status": "ok",
          "record_count": 1,
          "normalized_record_count": 1,
          "valid": true,
          "missing_by_record": [],
          "invalid_timestamps_by_record": [],
          "normalization_errors_by_record": [],
          "normalized_missing_by_record": []
        },
        {
          "file_name": "usage_sample.json",
          "provider_id": "",
          "parse_status": "ok",
          "normalization_status": "ok",
          "record_count": 2,
          "normalized_record_count": 2,
          "valid": true,
          "missing_by_record": [],
          "invalid_timestamps_by_record": [],
          "normalization_errors_by_record": [],
          "normalized_missing_by_record": []
        }
      ]
    },
    {
      "source_key": "injuries",
      "label": "Injuries and Inactives",
      "directory_exists": true,
      "required_fields": [
        "inactive_state",
        "injury_news_timestamp",
        "projection_includes_injury_news"
      ],
      "optional_fields": [
        "player_injury_status",
        "player_injury_designation",
        "teammate_absence_boost",
        "next_man_up_role"
      ],
      "sample_file_count": 2,
      "provider_specific_sample_count": 1,
      "valid_file_count": 2,
      "record_count": 3,
      "normalized_record_count": 3,
      "missing_sample": false,
      "ready_for_adapter_review": true,
      "data_completeness_status": "complete",
      "core_missing_fields": [],
      "files": [
        {
          "file_name": "injuries_sample.json",
          "provider_id": "",
          "parse_status": "ok",
          "normalization_status": "ok",
          "record_count": 2,
          "normalized_record_count": 2,
          "valid": true,
          "missing_by_record": [],
          "invalid_timestamps_by_record": [],
          "normalization_errors_by_record": [],
          "normalized_missing_by_record": []
        },
        {
          "file_name": "manual_csv_injuries_sample.json",
          "provider_id": "manual_csv_overrides",
          "parse_status": "ok",
          "normalization_status": "ok",
          "record_count": 1,
          "normalized_record_count": 1,
          "valid": true,
          "missing_by_record": [],
          "invalid_timestamps_by_record": [],
          "normalization_errors_by_record": [],
          "normalized_missing_by_record": []
        }
      ]
    },
    {
      "source_key": "team_context",
      "label": "Team Context",
      "directory_exists": true,
      "required_fields": [
        "team_context_available",
        "team_total",
        "spread",
        "game_total",
        "implied_team_points"
      ],
      "optional_fields": [
        "pace",
        "proe",
        "efficiency",
        "rest_days",
        "travel_spot",
        "off_bye"
      ],
      "sample_file_count": 2,
      "provider_specific_sample_count": 1,
      "valid_file_count": 2,
      "record_count": 3,
      "normalized_record_count": 3,
      "missing_sample": false,
      "ready_for_adapter_review": true,
      "data_completeness_status": "complete",
      "core_missing_fields": [],
      "files": [
        {
          "file_name": "derived_team_context_sample.json",
          "provider_id": "derived_nflverse_odds",
          "parse_status": "ok",
          "normalization_status": "ok",
          "record_count": 1,
          "normalized_record_count": 1,
          "valid": true,
          "missing_by_record": [],
          "invalid_timestamps_by_record": [],
          "normalization_errors_by_record": [],
          "normalized_missing_by_record": []
        },
        {
          "file_name": "team_context_sample.json",
          "provider_id": "",
          "parse_status": "ok",
          "normalization_status": "ok",
          "record_count": 2,
          "normalized_record_count": 2,
          "valid": true,
          "missing_by_record": [],
          "invalid_timestamps_by_record": [],
          "normalization_errors_by_record": [],
          "normalized_missing_by_record": []
        }
      ]
    },
    {
      "source_key": "matchup",
      "label": "Defensive Matchup",
      "directory_exists": true,
      "required_fields": [
        "defensive_rank",
        "matchup_sample_games"
      ],
      "optional_fields": [
        "sos_adjusted",
        "defensive_injury_matchup_delta",
        "opponent_secondary_injury_count"
      ],
      "sample_file_count": 2,
      "provider_specific_sample_count": 1,
      "valid_file_count": 2,
      "record_count": 3,
      "normalized_record_count": 3,
      "missing_sample": false,
      "ready_for_adapter_review": true,
      "data_completeness_status": "complete",
      "core_missing_fields": [],
      "files": [
        {
          "file_name": "matchup_sample.json",
          "provider_id": "",
          "parse_status": "ok",
          "normalization_status": "ok",
          "record_count": 2,
          "normalized_record_count": 2,
          "valid": true,
          "missing_by_record": [],
          "invalid_timestamps_by_record": [],
          "normalization_errors_by_record": [],
          "normalized_missing_by_record": []
        },
        {
          "file_name": "nflverse_matchup_sample.json",
          "provider_id": "nflverse_nflreadpy",
          "parse_status": "ok",
          "normalization_status": "ok",
          "record_count": 1,
          "normalized_record_count": 1,
          "valid": true,
          "missing_by_record": [],
          "invalid_timestamps_by_record": [],
          "normalization_errors_by_record": [],
          "normalized_missing_by_record": []
        }
      ]
    },
    {
      "source_key": "weather",
      "label": "Weather",
      "directory_exists": true,
      "required_fields": [
        "game_id",
        "wind_speed",
        "wind_direction",
        "precipitation",
        "temperature"
      ],
      "optional_fields": [
        "roof_status",
        "field_condition"
      ],
      "sample_file_count": 2,
      "provider_specific_sample_count": 1,
      "valid_file_count": 2,
      "record_count": 3,
      "normalized_record_count": 3,
      "missing_sample": false,
      "ready_for_adapter_review": true,
      "data_completeness_status": "complete",
      "core_missing_fields": [],
      "files": [
        {
          "file_name": "open_meteo_weather_sample.json",
          "provider_id": "open_meteo",
          "parse_status": "ok",
          "normalization_status": "ok",
          "record_count": 1,
          "normalized_record_count": 1,
          "valid": true,
          "missing_by_record": [],
          "invalid_timestamps_by_record": [],
          "normalization_errors_by_record": [],
          "normalized_missing_by_record": []
        },
        {
          "file_name": "weather_sample.json",
          "provider_id": "",
          "parse_status": "ok",
          "normalization_status": "ok",
          "record_count": 2,
          "normalized_record_count": 2,
          "valid": true,
          "missing_by_record": [],
          "invalid_timestamps_by_record": [],
          "normalization_errors_by_record": [],
          "normalized_missing_by_record": []
        }
      ]
    }
  ]
}