{
  "prepared": "2026-09-05",
  "purpose": "Annual observed-station benchmark and model stress-case inventory",
  "sourceFiles": [
    {
      "station": "airport",
      "climate_identifier": "10476F0",
      "path": "work/hourly_2025_raw.json",
      "bytes": 8995049,
      "sha256": "7dce82761cef7f9584ecb329fb8f19fa971fc591214bc5d3844dedd8bf57fcb2",
      "providerResponseTime": "2026-09-05T15:38:43.006726Z",
      "sourceUrl": "https://api.weather.gc.ca/collections/climate-hourly/items?f=json&limit=10000&CLIMATE_IDENTIFIER=10476F0&LOCAL_YEAR=2025",
      "records": 8741,
      "paginationComplete": true,
      "stationMetadataInFirstRecord": {
        "STATION_NAME": "SQUAMISH AIRPORT",
        "STN_ID": 336,
        "LONGITUDE_DECIMAL_DEGREES": -123.16119444444445,
        "LATITUDE_DECIMAL_DEGREES": 49.783208333333334
      }
    },
    {
      "station": "pam_rocks",
      "climate_identifier": "10459NN",
      "path": "work/annual-winds/pam-rocks-2025-original.json",
      "bytes": 9051888,
      "sha256": "e5b546620e6bb66d68f0bcf7a3f596bfabefdea01a2b8837c9f304f4df4e3874",
      "providerResponseTime": "2026-09-05T17:07:59.427002Z",
      "sourceUrl": "https://api.weather.gc.ca/collections/climate-hourly/items?f=json&limit=10000&CLIMATE_IDENTIFIER=10459NN&LOCAL_YEAR=2025",
      "records": 8748,
      "paginationComplete": true,
      "stationMetadataInFirstRecord": {
        "STATION_NAME": "HOWE SOUND - PAM ROCKS",
        "STN_ID": 6817,
        "LONGITUDE_DECIMAL_DEGREES": -123.29945277777777,
        "LATITUDE_DECIMAL_DEGREES": 49.48778027777778
      }
    }
  ],
  "protocolSha256": "cd9192db8f1386d2b1cdac626f1f0b88331da9d1b79c06c62bcd27602a604126",
  "scheduledPstHours": 8760,
  "utcPstOffsetChecks": 17489,
  "duplicateStationTimes": 0,
  "stationSummaries": [
    {
      "station": "airport",
      "rows": 8741,
      "absent_scheduled_rows": 19,
      "eligible_vectors": 8741,
      "reported_calm_eligible_rows": 3509,
      "ineligibility_reasons": {}
    },
    {
      "station": "pam_rocks",
      "rows": 8748,
      "absent_scheduled_rows": 12,
      "eligible_vectors": 8748,
      "reported_calm_eligible_rows": 419,
      "ineligibility_reasons": {}
    }
  ],
  "eligibleSimultaneousPairs": 8730,
  "meanObservedVectorDifferenceMs": 4.308802576099632,
  "rootMeanSquareObservedVectorDifferenceMs": 5.466425494686244,
  "airportCalmPamAtLeast5MsPairs": 914,
  "directionCutoffSensitivity": [
    {
      "speed_cutoff_m_s": 0.5,
      "eligible_pairs": 5039,
      "mean_circular_difference_degrees": 49.400674737051006,
      "median_circular_difference_degrees": 30.0,
      "pairs_at_least_90_degrees_apart": 983
    },
    {
      "speed_cutoff_m_s": 1,
      "eligible_pairs": 4204,
      "mean_circular_difference_degrees": 47.61417697431018,
      "median_circular_difference_degrees": 30.0,
      "pairs_at_least_90_degrees_apart": 766
    },
    {
      "speed_cutoff_m_s": 2,
      "eligible_pairs": 1981,
      "mean_circular_difference_degrees": 39.2781423523473,
      "median_circular_difference_degrees": 20.0,
      "pairs_at_least_90_degrees_apart": 253
    }
  ],
  "componentCutoffSensitivity": [
    {
      "northward_component_cutoff_m_s": 0.5,
      "counts_over_8760_scheduled_hours": {
        "both_southward": 1967,
        "other_valid_pairs": 4077,
        "opposed_northward_components": 633,
        "both_northward": 2053,
        "unavailable": 30
      }
    },
    {
      "northward_component_cutoff_m_s": 1,
      "counts_over_8760_scheduled_hours": {
        "other_valid_pairs": 5254,
        "both_southward": 1208,
        "opposed_northward_components": 411,
        "both_northward": 1857,
        "unavailable": 30
      }
    },
    {
      "northward_component_cutoff_m_s": 2,
      "counts_over_8760_scheduled_hours": {
        "other_valid_pairs": 7149,
        "both_southward": 199,
        "opposed_northward_components": 100,
        "both_northward": 1282,
        "unavailable": 30
      }
    }
  ],
  "qualifyingEpisodeCount": 356,
  "selectedEpisodeCount": 12,
  "earlierMaySeedComparison": {
    "fieldComparisons": 705,
    "differences": []
  },
  "interpretation": {
    "vectorDifference": "Observed spatial difference, not model error.",
    "categories": "Two-station northward components, not verified whole-fjord flow regimes.",
    "episodes": "Observation-selected stress cases; numerical-weather availability not established.",
    "clock": "Fixed PST year, supplied UTC checked. Near-hour observations are not full-hour averages.",
    "quality": "Native flags preserved. Null flags alone do not establish final validation.",
    "scope": "One calendar year; no long-term climatology, vertical structure, inversion, source-site wind or concentration validation."
  },
  "licence": "https://eccc-msc.github.io/open-data/licence/readme_en/"
}
