{
  "title": "Woodfibre meteorology, background air and terrain data catalogue",
  "verifiedDate": "2026-09-05",
  "statusDefinitions": {
    "actually_acquired": "Observation, terrain or forecast values saved locally; acquisition alone does not imply validation.",
    "metadata_acquired": "Inventory or headers saved; not underlying values",
    "documented_available": "Primary provider documents access; values not fetched",
    "access_unverified": "Evidence exists but raw access, period or current operation unresolved",
    "daily_report_tables_acquired_hourly_series_unavailable": "Dated numeric daily report tables acquired and checked; original hourly logger records unavailable in checked public files."
  },
  "scope": {
    "centerLonLat": [
      -123.22,
      49.703
    ],
    "domainKm": [
      20,
      20
    ],
    "purpose": "Research prioritization toward validated prediction; no claim current exploratory engine is predictive"
  },
  "datasets": [
    {
      "id": "eccc_surface",
      "title": "ECCC historical hourly surface weather",
      "status": "actually_acquired",
      "dataType": "observation",
      "verticalType": "surface",
      "provider": "Environment and Climate Change Canada",
      "variables": [
        "wind speed/direction",
        "temperature",
        "humidity",
        "station pressure",
        "precipitation",
        "provider flags"
      ],
      "resolution": "Hourly records; sensor heights and individual wind averaging periods require station history review",
      "coverage": "Squamish Airport plus Pam Rocks / Pemberton sample; additional nearby station inventory acquired",
      "period": "Airport 1982\u2013present catalogue; full 2025 acquired. Other station dates in stationInventory. Paired sample May 1\u20133 2025. January and June2023 Airport/Pam monthly records additionally acquired and compared with fixed WRF cells.",
      "access": {
        "stationApi": "https://api.weather.gc.ca/collections/climate-stations/items",
        "hourlyApi": "https://api.weather.gc.ca/collections/climate-hourly/items",
        "documentation": "https://eccc-msc.github.io/open-data/msc-geomet/readme_en/"
      },
      "quality": "Original nulls/flags preserved; inspect each variable rather than treating present rows as complete observations.",
      "license": "ECCC MSC end-use licence / Open Government Licence \u2013 Canada",
      "gapClosed": "Observed wind regime timing, weather validation, inflow/outflow context",
      "limitations": "Airport is not representative of all Howe Sound or plume height; Pemberton pressure and wind come from separate stations.",
      "localFiles": [
        "squamish-airport-hourly-2025.csv",
        "howe-sound-surface-weather-2025-05-01-to-03.csv",
        "howe-sound-surface-weather-sample-provenance.json"
      ],
      "stationHistoryFollowthrough": {
        "nominalWindHeightM": 10.0,
        "nominalDeploymentStart": "2016-04-29",
        "endDateRecorded": false,
        "referenceSurfaceSpecified": false,
        "actualJanuaryJune2023SetupResolved": false,
        "methods": "woodfibre-wrf-wind-january2023-methods.md"
      }
    },
    {
      "id": "bc_verified",
      "title": "BC verified ambient and meteorological archive",
      "status": "actually_acquired",
      "dataType": "observation",
      "verticalType": "surface",
      "provider": "BC Ministry of Environment and Parks; network owner varies",
      "variables": [
        "NO",
        "NO2",
        "NOx",
        "O3",
        "PM2.5",
        "SO2",
        "other station-dependent pollutants and meteorology"
      ],
      "resolution": "Native hour-ending ambient means: DATE/TIME 24:00 normalizes to next-day DATE_PST 00:00. Exact meteorological averaging intervals and sensor heights require station metadata.",
      "coverage": "Complete E304570 hourly station records for 2023\u20132025, six pollutants; other stations remain metadata-only here.",
      "period": "Verified air pollutants through 2025; meteorology through 2024 stated by current catalogue. Station opened date is not proof every parameter exists continuously.",
      "access": {
        "catalogue": "https://catalogue.data.gov.bc.ca/dataset/77eeadf4-0c19-48bf-a47a-fa9eef01f409",
        "archive": "ftp://ftp.env.gov.bc.ca/pub/outgoing/AIR/AnnualSummary/",
        "stationMetadata": "ftp://ftp.env.gov.bc.ca/pub/outgoing/AIR/AnnualSummary/2025/bc_air_monitoring_stations.csv"
      },
      "quality": "Provider-verified annual archive; no per-row QA flag supplied. 157,824 native rows, 149,871 numeric, 7,953 NA. No absent timestamps or duplicates. All 432 previous May calendar sample rows exactly reconfirmed. No filling or source attribution.",
      "license": "Open Government Licence \u2013 British Columbia",
      "gapClosed": "Three-year station chronology, hourly/daily/monthly observations and independently reproduced current B.C. station objective comparison. Model-background spatial/source representativeness remains unresolved.",
      "limitations": "One monitor is not a uniform 20\u00d720km background or source-attribution dataset. Current station metadata under annual directories is not historical siting/calibration evidence. Partial-source byte-window hashes do not identify unacquired full provincial files.",
      "localFiles": [
        "squamish-elementary-verified-calendar-days-2025-05-01-to-03.csv",
        "squamish-elementary-calendar-sample-provenance.json",
        "woodfibre-observed-air-intervals.csv",
        "woodfibre-observed-case-findings.md",
        "woodfibre-observed-case-audit.json",
        "squamish-elementary-2023-native.csv",
        "squamish-elementary-2024-native.csv",
        "squamish-elementary-2025-native.csv",
        "woodfibre-ambient-baseline-2023-2025-findings.md",
        "woodfibre-ambient-baseline-2023-2025-results.json",
        "woodfibre-ambient-baseline-2023-2025-coverage.json"
      ],
      "currentSample": {
        "status": "actually_acquired",
        "nativeCalendarDays": [
          "2025-05-01",
          "2025-05-02",
          "2025-05-03"
        ],
        "measurementIntervalPst": [
          "2025-05-01 00:00",
          "2025-05-04 00:00"
        ],
        "hourEndingTimestampsPst": [
          "2025-05-01 01:00",
          "2025-05-04 00:00"
        ],
        "rows": 432,
        "numericReadings": 417,
        "originalRowsReconfirmed": 426,
        "additionalBoundaryRows": 6,
        "csvSha256": "2c71061e69699ee1a6a557fbaf3b56a049e930017d6e991e0b9a77b749eb1d1f",
        "primaryTimeConvention": "https://www2.gov.bc.ca/assets/gov/environment/air-land-water/air/reports-pub/aqhi_network_review.pdf"
      },
      "originalSamplePreserved": {
        "csv": "squamish-elementary-verified-2025-05-01-to-03.csv",
        "json": "squamish-elementary-verified-sample.json",
        "hourEndingTimestampsPst": [
          "2025-05-01 00:00",
          "2025-05-03 23:00"
        ],
        "actualMeasurementIntervalPst": [
          "2025-04-30 23:00",
          "2025-05-03 23:00"
        ],
        "note": "Original extraction selected normalized DATE_PST end timestamps:includes final hour of30April and omits final hour of3May. Preserved unchanged, superseded for complete calendar-day use."
      },
      "fullStationYears": {
        "years": [
          2023,
          2024,
          2025
        ],
        "parameters": [
          "PM25",
          "NO",
          "NO2",
          "NOx",
          "O3",
          "SO2"
        ],
        "nativeRows": 157824,
        "numericValues": 149871,
        "missingValues": 7953,
        "clock": "Fixed PST hour-ending; native DATE/TIME 24 belongs to the labelled day",
        "primaryObjectiveChecks": 23538,
        "sensitivityChecks": 15672,
        "findings": "woodfibre-ambient-baseline-2023-2025-findings.md",
        "results": "woodfibre-ambient-baseline-2023-2025-results.json",
        "archive": "woodfibre-ambient-baseline-2023-2025-pack.zip"
      },
      "currentSampleSupersededBy": "fullStationYears; earlier sample retained for reproducibility"
    },
    {
      "id": "bc_preliminary",
      "title": "BC current raw ambient feeds",
      "status": "sample_header_acquired",
      "dataType": "observation",
      "verticalType": "surface",
      "provider": "BC Ministry of Environment and Parks",
      "variables": [
        "NO2 and other parameter-specific CSVs"
      ],
      "resolution": "Hourly rolling files",
      "coverage": "Provincial network; station IDs/coordinates in CSV",
      "period": "Near real time, rolling; exact retention not verified",
      "access": {
        "example": "https://www.env.gov.bc.ca/epd/bcairquality/aqo/csv/Hourly_Raw_Air_Data/Air_Quality/NO2.csv"
      },
      "quality": "Preliminary/unverified: not interchangeable with verified annual data.",
      "license": "Open Government Licence \u2013 British Columbia",
      "gapClosed": "Current situational observations",
      "limitations": "Do not use as finalized QA baseline; acquisition checked header only.",
      "localFiles": []
    },
    {
      "id": "wlng_met",
      "title": "Woodfibre onsite station and monthly AQMS reports",
      "status": "daily_report_tables_acquired_hourly_series_unavailable",
      "dataType": "observation",
      "verticalType": "surface",
      "provider": "Woodfibre LNG / Stantec",
      "variables": [
        "wind m/s and degrees",
        "temperature degC",
        "relative humidity percent",
        "pressure hPa",
        "rain mm",
        "PM2.5/PM10/TSP/NO2 continuous",
        "SO2/VOC passive monthly"
      ],
      "resolution": "June2026 daily air and meteorological tables acquired; hourly pollutant plots and aggregate wind roses do not supply numeric hourly wind direction. Sensor heights remain unverified.",
      "coverage": "Met UTM 481610,5501369 NAD83 zone10N; adjacent AQMS481569,5501374",
      "period": "June2026 full daily tables acquired; May2025 and January2026 formats also checked; complete raw hourly archive unavailable in checked public files.",
      "access": {
        "exampleReport": "https://woodfibrelng.ca/wp-content/uploads/2025/07/WLNG-AQMS-Monthly-Report-2025-05-May-2025_v.01.pdf",
        "juneReport": "https://woodfibrelng.ca/wp-content/uploads/2026/08/WLNG-AQMS-Monthly-Report-2026-06-June-2026.pdf"
      },
      "quality": "Report says Level0 validation for presented air quality data; request final QA and meteorological flag descriptions.",
      "license": "Public report; raw-data reuse terms not established",
      "gapClosed": "Recoverable daily onsite observations are now acquired; they do not close hourly wind, timing, sensor-height or vertical-profile gaps.",
      "limitations": "Do not digitize wind roses into hourly records. Monthly passive samples cannot resolve a flare episode. Report station coordinates are not flare coordinates.",
      "localFiles": [
        "outputs/woodfibre-onsite-june2026-observations.json",
        "outputs/woodfibre-onsite-june2026-air.csv",
        "outputs/woodfibre-onsite-june2026-weather.csv",
        "outputs/woodfibre-onsite-data-availability.md"
      ],
      "acquisition": {
        "airDailyRows": 30,
        "weatherDailyRows": 30,
        "sourceQuality": "Air values Level0; separate met QA level unestablished",
        "timezoneConfirmed": false,
        "hourlyWindDirectionsAcquired": false,
        "sourceReportSha256": "0e1f83192626a227b559b5ae8a38f244e19f1423b521802fed8d03eb2d27626e"
      },
      "dailyStudyUpdate": {
        "onsiteDailyYear": 2025,
        "fullYearComparisonComplete": true,
        "findings": "woodfibre-onsite-town-2025-findings.md",
        "nativeHourlyMeteorologyAcquired": false,
        "dailyJune2026Rows": 30
      }
    },
    {
      "id": "squamish_profiler",
      "title": "Historical Squamish wind profiler / RASS",
      "status": "published_existence_verified_raw_access_unverified",
      "dataType": "observation",
      "verticalType": "upper_air",
      "provider": "Environment Canada; Vancouver2010 / SNOW-V10 researchers",
      "variables": [
        "horizontal/vertical wind",
        "RASS virtual temperature",
        "signal-to-noise and quality diagnostics"
      ],
      "resolution": "2006 installation: low-mode winds to about3km; RASS about1.5km. Research averaging varies (15/30min winds, hourly RASS).",
      "coverage": "Squamish Airport",
      "period": "Documented Vancouver2010 campaign and later published analysis; current operation and raw archive availability unverified",
      "access": {
        "governmentReport": "https://publications.gc.ca/collections/collection_2013/ec/En4-110-1-2013-eng.pdf",
        "research": "https://doi.org/10.1080/07055900.2016.1233094"
      },
      "quality": "Request original height gates, consensus/SNR filters, missing profiles, calibration and time convention.",
      "license": "Raw-data licence must be established with custodian",
      "gapClosed": "Direct local wind shear, return flow and inversion/cold-pool structure",
      "limitations": "A paper or library PDF record is not an accessible operational profiler feed. Historical episodes cannot establish present profile.",
      "localFiles": [],
      "additionalDistinctStudy": {
        "title": "Mariani et al.2020, Squamish Halo Doppler lidar from May2016",
        "doi": "https://doi.org/10.3390/rs12020323",
        "dataRoute": "Paper page18 says ECCC products via former obrs.ca or upon request; hostname failed DNS at this check.",
        "rawProfilesAcquired": false,
        "currentOperationVerified": false,
        "scopeNote": "Distinct from2010 radar/RASS; later CAWS dataset links forIqaluit/Whitehorse do not establish a Squamish download.",
        "evidence": "outputs/woodfibre-onsite-data-availability.md"
      },
      "archiveFollowthrough": {
        "snowV10MembersAudited": 160,
        "localWindOrRassProfilesRecovered": false,
        "contents": "surface/scalar observations",
        "laterInstitutionalSearches": "bounded searches did not recover local measured profiles; no global absence claim",
        "historicalCampaignsOverlapAcquiredWRF2019To2023": false,
        "requestStatus": "drafts unsent"
      }
    },
    {
      "id": "igra",
      "title": "NOAA IGRA2.2 radiosonde archive",
      "status": "station_inventory_acquired_profiles_not_acquired",
      "dataType": "observation",
      "verticalType": "upper_air",
      "provider": "NOAA NCEI; soundings originate national services",
      "variables": [
        "pressure",
        "temperature",
        "height",
        "humidity",
        "wind direction/speed",
        "launch elapsed time"
      ],
      "resolution": "Sounding levels irregular; nominal synoptic launches, exact station/time availability must be checked",
      "coverage": "Port Hardy and Quillayute are regional context outside Howe Sound; Vancouver archive ended1996",
      "period": "Station inventory current to2026; recent1\u20133year files and full-period files documented",
      "access": {
        "documentation": "https://www.ncei.noaa.gov/products/weather-balloon/integrated-global-radiosonde-archive",
        "stationList": "https://www.ncei.noaa.gov/pub/data/igra/igra2-station-list.txt",
        "recent": "https://www.ncei.noaa.gov/pub/data/igra/data-y2d/"
      },
      "quality": "NCEI removes gross errors; preserve source and level flags. Not homogenized for all instrument/site changes.",
      "license": "NOAA public access; retain station/provider and IGRA citation",
      "gapClosed": "Large-scale vertical forcing and independent regional profile checks",
      "limitations": "Distant stations cannot measure a shallow Squamish inversion or local wind reversal.",
      "localFiles": []
    },
    {
      "id": "hrdps_2p5",
      "title": "HRDPS 2.5km:one archived operational forecast acquired and compared",
      "status": "actually_acquired",
      "dataType": "numerical_forecast",
      "verticalType": "surface_and_upper_air",
      "provider": "ECCC",
      "variables": [
        "temperature",
        "u/v wind",
        "geopotential height",
        "humidity",
        "surface/AGL diagnostics"
      ],
      "resolution": "2500m grid; hourly; cycles [0, 6, 12, 18] UTC; lead 48h",
      "coverage": "Howe Sound lies within Canadian/western domain; terrain smoothed at grid scale",
      "period": "Acquired cycle2026-09-02T00:00:00Z,leads1\u201324,valid2026-09-02T01:00:00Z through2026-09-03T00:00:00Z. Public Datamart retention30days at retrieval; not a multi-episode hindcast/reanalysis archive.",
      "access": {
        "liveDirectory": "https://dd.weather.gc.ca/today/model_hrdps/continental/2.5km/00/000/",
        "example925hPaTemperature": "https://dd.weather.gc.ca/today/model_hrdps/continental/2.5km/00/000/20260905T00Z_MSC_HRDPS_TMP_ISBL_0925_RLatLon0.0225_PT000H.grib2",
        "datedEpisodeDirectory": "https://dd.weather.gc.ca/20260902/WXO-DD/model_hrdps/continental/2.5km/00/001/",
        "liveLinksNote": "Original Sep5 listing URLs retained as historical inventory references; actual Sep2 file URLs and hashes are in episode manifest."
      },
      "quality": "All92 exact dated filenames verified,initialization/validity/units decoded,raw hashes retained. Grid-relative winds rotated to true east/north and checked against9 WDIR/WIND samples.48 timestamped station pairs audited. This verifies processing, not atmospheric or dispersion prediction.",
      "license": "ECCC MSC end-use licence",
      "gapClosed": "First reproducible24-hour operational forecast versus surface-weather comparison, demonstrating station-dependent wind error and source-grid terrain mismatch.",
      "limitations": "One late-summer forecast cycle,two stations,nearest native grid points,no bias/elevation correction. Exact observation wind averaging intervals unresolved; instant forecast fields are not full-hour means. Woodfibre proxy nearest gridpoint orography568.4m at1.15km distance;985/950hPa are below its model surface. No source-site wind observation,no local profile validation,no hindcast/reanalysis programme or dispersion validation.",
      "localFiles": [
        "woodfibre-hrdps-comparison-2026-09-02.md",
        "woodfibre-hrdps-comparison-2026-09-02.png",
        "woodfibre-hrdps-observed-comparison-2026-09-02.csv",
        "woodfibre-hrdps-point-forecast-2026-09-02.csv",
        "woodfibre-hrdps-low-level-profiles-2026-09-02.csv",
        "woodfibre-hrdps-comparison-provenance-2026-09-02.json",
        "woodfibre-hrdps-raw-manifest-2026-09-02.json",
        "woodfibre-hrdps-station-metadata-2026-09-02.json",
        "woodfibre-forecast-processing-audit.json",
        "woodfibre-hrdps-resolution-findings-2026-09-05.md",
        "woodfibre-hrdps-resolution-comparison-2026-09-05.png",
        "woodfibre-hrdps-resolution-comparison-2026-09-05.csv",
        "woodfibre-hrdps-resolution-point-forecasts-2026-09-05.csv",
        "woodfibre-hrdps-resolution-observations-2026-09-05.csv",
        "woodfibre-hrdps-resolution-profiles-2026-09-05.csv",
        "woodfibre-hrdps-resolution-provenance-2026-09-05.json",
        "woodfibre-hrdps-resolution-raw-manifest-2026-09-05.json"
      ],
      "variablesActuallyAcquired": [
        "10m grid-relative U/V and2m temperature hourly leads1\u201324",
        "10m WDIR/WIND independent checks at leads1,12,24",
        "temperature/geopotential height/U/V at985/950/925hPa at lead12",
        "surface orography and pressure at lead12"
      ],
      "additionalEpisode": "2026-09-05 00UTC leads1\u20136 acquired for same-hours comparison with experimental West1km; September2 episode remains separate."
    },
    {
      "id": "rdps_10",
      "title": "RDPS 10",
      "status": "directory_and_file_inventory_acquired_no_grib_values",
      "dataType": "numerical_forecast",
      "verticalType": "surface_and_upper_air",
      "provider": "ECCC",
      "variables": [
        "temperature",
        "u/v wind",
        "geopotential height",
        "humidity",
        "surface/AGL diagnostics"
      ],
      "resolution": "10000m grid; hourly; cycles [0, 6, 12, 18] UTC; lead 84h",
      "coverage": "Howe Sound lies within Canadian/western domain; terrain smoothed at grid scale",
      "period": "30 days on main Datamart as of retrieval; capacity dependent",
      "access": {
        "liveDirectory": "https://dd.weather.gc.ca/today/model_rdps/10km/00/000/",
        "example925hPaTemperature": "https://dd.weather.gc.ca/today/model_rdps/10km/00/000/20260905T00Z_MSC_RDPS_AirTemp_IsbL-0925_RLatLon0.09_PT000H.grib2"
      },
      "quality": "Forecasts have model uncertainty, not observation QA flags. Preserve cycle, lead, valid time, model version and GRIB metadata.",
      "license": "ECCC MSC end-use licence",
      "gapClosed": "3D meteorological forcing / boundaries and prospective comparison",
      "limitations": "Rotated-grid winds require coordinate verification; remove below-ground pressure levels. Dense model vertical levels are not the same as publicly distributed pressure levels. Forecast does not equal observed local wind.",
      "localFiles": []
    },
    {
      "id": "hrdps_west_1",
      "title": "Experimental HRDPS West 1 km: matched six-hour diagnostic acquired",
      "status": "actually_acquired",
      "dataType": "numerical_forecast",
      "verticalType": "surface_and_upper_air",
      "provider": "ECCC",
      "variables": [
        "temperature",
        "u/v wind",
        "geopotential height",
        "humidity",
        "surface/AGL diagnostics"
      ],
      "resolution": "1000m grid; hourly; cycles [0, 12] UTC; lead 48h",
      "coverage": "Howe Sound lies within Canadian/western domain; terrain smoothed at grid scale",
      "period": "Acquired 2026-09-05 00 UTC cycle, leads 1\u20136, compared with the same operational 2.5 km cycle and 12 observed station timestamps. West September 2 first-hour U-wind URL returned HTTP404; DD-Alpha documentation specifies 24-hour retention.",
      "access": {
        "liveDirectory": "https://dd.alpha.weather.gc.ca/model_hrdps/west/1km/grib2/00/000/",
        "example925hPaTemperature": "https://dd.alpha.weather.gc.ca/model_hrdps/west/1km/grib2/00/000/CMC_hrdps_west_TMP_ISBL_0925_rotated_latlon0.009x0.009_20260905T00Z_P000-00.grib2",
        "episodeManifest": "woodfibre-hrdps-resolution-raw-manifest-2026-09-05.json",
        "originalListingNote": "Original September5 00UTC inventory retained; exact acquired leads1\u20136 files and hashes are in the new manifest."
      },
      "quality": "Exact listed files acquired and hashed; initialization/validity and units checked. Each model uses its own pole for rotation, with independent WDIR/WIND checks; below-ground levels masked. Processing checks do not establish model suitability.",
      "license": "ECCC MSC end-use licence",
      "gapClosed": "Actual finer-grid terrain and matched local forecast comparison. Woodfibre proxy nearest point improves from 1.15 km/568.4 m to 170 m/135 m, while remaining elevated above the shoreline.",
      "limitations": "Experimental model differs in configuration as well as resolution. Six same hours show worse airport errors and slightly smaller but still large Pam Rocks errors. No onsite measured weather, no accepted source forcing, no general skill ranking or downscaling. Source proxy is not a flare location.",
      "localFiles": [
        "woodfibre-hrdps-resolution-findings-2026-09-05.md",
        "woodfibre-hrdps-resolution-comparison-2026-09-05.png",
        "woodfibre-hrdps-resolution-comparison-2026-09-05.csv",
        "woodfibre-hrdps-resolution-point-forecasts-2026-09-05.csv",
        "woodfibre-hrdps-resolution-observations-2026-09-05.csv",
        "woodfibre-hrdps-resolution-profiles-2026-09-05.csv",
        "woodfibre-hrdps-resolution-provenance-2026-09-05.json",
        "woodfibre-hrdps-resolution-raw-manifest-2026-09-05.json"
      ],
      "variablesActuallyAcquired": [
        "10 m U/V and 2 m temperature, hourly leads 1\u20136",
        "10 m WDIR/WIND independent checks at leads 1,3,6",
        "surface orography at lead1; surface pressure at lead6",
        "U/V, temperature and geopotential height at 985/950 hPa at lead6"
      ]
    },
    {
      "id": "eccc_nwp_archive",
      "title": "ECCC older NWP archive retrieval",
      "status": "service_documented_request_not_made",
      "dataType": "numerical_forecast_archive",
      "verticalType": "surface_and_upper_air",
      "provider": "ECCC MSC",
      "variables": [
        "requested HRDPS/RDPS model fields and points"
      ],
      "resolution": "Depends on historical model configuration",
      "coverage": "Requested Howe Sound domain or points",
      "period": "Beyond public retention: case-specific archive availability must be confirmed",
      "access": {
        "service": "https://eccc-msc.github.io/open-data/cost-recovered/readme_en/"
      },
      "quality": "Need model version/cycle/level availability and original metadata; historical upgrades can create discontinuities.",
      "license": "Service retrieval may incur cost; no request or payment made",
      "gapClosed": "Reconstruct weather for emissions episodes outside rolling forecast archive",
      "limitations": "Do not claim historical HRDPS download access until ECCC confirms requested years/fields.",
      "localFiles": []
    },
    {
      "id": "era5",
      "title": "ERA5 hourly reanalysis",
      "status": "documented_available_not_acquired",
      "dataType": "reanalysis",
      "verticalType": "surface_and_upper_air",
      "provider": "ECMWF / Copernicus C3S",
      "variables": [
        "u/v wind",
        "temperature",
        "geopotential",
        "humidity",
        "surface/radiation/flux parameters"
      ],
      "resolution": "0.25degree regular grid; hourly;37pressure levels. Native137model levels via separate access.",
      "coverage": "Global; far coarser than Howe Sound",
      "period": "1940\u2013present; preliminary ERA5T about5days behind real time, final about2\u20133months later",
      "access": {
        "officialOverview": "https://www.ecmwf.int/en/forecasts/datasets/era5-hourly-data-pressure-levels-1940-present",
        "data": "https://cds.climate.copernicus.eu/datasets/reanalysis-era5-pressure-levels"
      },
      "quality": "Reanalysis assimilates observations but remains a model estimate. Account for changing observations and provisional updates.",
      "license": "Copernicus licence; CDS account/API and acceptance may be required",
      "gapClosed": "Long historical forcing when event-specific local NWP archive is unavailable",
      "limitations": "Cannot resolve valley flow/inversion by simply sampling one grid cell. Pressure-level product may miss shallow inversions.",
      "localFiles": []
    },
    {
      "id": "legacy_cdem",
      "title": "NRCan CDEM092G used by current exploratory grid",
      "status": "actually_acquired",
      "dataType": "terrain",
      "verticalType": "ground_elevation",
      "provider": "NRCan",
      "variables": [
        "elevation"
      ],
      "resolution": "Native0.75arcsecond; storedterrain100\u00d7100at200m; currentbrowser solver resamples64\u00d764at312.5m.",
      "coverage": "Exact20x20km local AEQD domain",
      "period": "Legacy multivintage1945\u20132011; native creation2012; not current construction terrain",
      "access": {
        "tile": "https://ftp.maps.canada.ca/pub/nrcan_rncan/elevation/cdem_mnec/092/cdem_dem_092G_tif.zip"
      },
      "quality": "No output missing cells; documented sampling and four point checks; mixed source surface/ground characteristics.",
      "license": "Open Government Licence \u2013 Canada",
      "gapClosed": "Actual large valley geometry",
      "limitations": "CGVD28 heights; do not combine blindly with CGVD2013 or present-day engineering elevations.",
      "localFiles": [
        "woodfibre-terrain-grid.json",
        "woodfibre-terrain-evidence.md"
      ],
      "terrainProcessorCheck": {
        "processor": "AERMAP24142",
        "horizontalOperation": "EPSG1946: NAD83(CSRS) to WGS84(2), approximate, time-independent",
        "heightReference": "CGVD28 unchanged",
        "independentChecks": 1516,
        "discrepancies": 0,
        "groundComparisons": 18,
        "maximumArithmeticErrorM": 0.0040216354720996605,
        "surveyAccuracyEstablished": false,
        "hillDomainAdequacyEstablished": false,
        "report": "woodfibre-canadian-terrain-check.md"
      }
    },
    {
      "id": "hrdem",
      "title": "NRCan1m/2m lidar DTM/DSM",
      "status": "metadata_and_project_extents_acquired_rasters_not_acquired",
      "dataType": "terrain",
      "verticalType": "ground_and_surface_elevation",
      "provider": "NRCan",
      "variables": [
        "DTM bare earth",
        "DSM surface",
        "coverage metadata"
      ],
      "resolution": "1m/2m; EPSG3979; CGVD2013",
      "coverage": "Intersecting projects and mosaic asset inventory below; two actual project extents checked",
      "period": "Squamish2016, SunshineCoast2020 and other projects; dates vary",
      "access": {
        "stac": "https://datacube.services.geo.ca/stac/api/collections/hrdem-lidar",
        "query": "https://datacube.services.geo.ca/stac/api/search?collections=hrdem-mosaic-1m,hrdem-mosaic-2m,hrdem-lidar&bbox=-123.36,49.612,-123.08,49.794&limit=10"
      },
      "quality": "Check detailed coverage, per-pixel nodata, point density/accuracy, survey year and seams; provider notes projects not edge-matched.",
      "license": "Open Government Licence \u2013 Canada",
      "gapClosed": "Better terrain channel geometry and surface/building/canopy height candidates",
      "limitations": "Project rectangle is not complete coverage; preconstruction DSM cannot provide as-built flare downwash geometry.",
      "localFiles": [
        "woodfibre-lidar-project-extents.geojson"
      ]
    },
    {
      "id": "mrdem",
      "title": "NRCan MRDEM30m mosaic",
      "status": "metadata_acquired_raster_not_acquired",
      "dataType": "terrain",
      "verticalType": "ground_and_surface_elevation",
      "provider": "NRCan",
      "variables": [
        "DTM",
        "DSM",
        "source raster"
      ],
      "resolution": "30m; current STAC EPSG3979; CGVD2013",
      "coverage": "National mosaic intersects whole domain",
      "period": "STAC item2026-06-22; source observation ages differ",
      "access": {
        "stac": "https://datacube.services.geo.ca/stac/api/collections/mrdem-30"
      },
      "quality": "Inspect source layer to distinguish lidar and other source terrain; product update date is not survey date.",
      "license": "Open Government Licence \u2013 Canada",
      "gapClosed": "Consistent current terrain distribution and gap fill",
      "limitations": "Does not ensure current construction surface or local lidar everywhere.",
      "localFiles": []
    },
    {
      "id": "lidarbc",
      "title": "LidarBC provincial portal",
      "status": "documented_available_local_tiles_not_downloaded",
      "dataType": "terrain",
      "verticalType": "ground_and_surface_elevation",
      "provider": "GeoBC",
      "variables": [
        "LAZ point clouds",
        "DEM",
        "DSM"
      ],
      "resolution": "Portal lists1m/10mDEMs; product-specific survey metadata",
      "coverage": "British Columbia; use discovery map for local tiles",
      "period": "Varies by acquisition project",
      "access": {
        "portal": "https://lidar.gov.bc.ca/",
        "guide": "https://storymaps.arcgis.com/stories/a461de7f8ac243cb847468a90269a23f"
      },
      "quality": "Use tile accuracy/classification metadata; verify acquisitiondate/verticaldatum.",
      "license": "Open Government Licence \u2013 British Columbia",
      "gapClosed": "Alternate source for pointclouds and detailed survey metadata",
      "limitations": "No claim of complete local coverage from portal alone.",
      "localFiles": []
    },
    {
      "id": "worldcover",
      "title": "ESA WorldCover2021v200",
      "status": "documented_available_not_acquired",
      "dataType": "land_cover",
      "verticalType": "surface",
      "provider": "ESA WorldCover consortium",
      "variables": [
        "11 categorical land-cover classes",
        "input-quality product"
      ],
      "resolution": "10m;3degreeCOG tiles;EPSG4326",
      "coverage": "Global",
      "period": "2021v200;2020v100 separatealgorithm",
      "access": {
        "access": "https://esa-worldcover.org/en/data-access",
        "manual": "https://worldcover2021.esa.int/data/docs/WorldCover_PUM_V2.0.pdf"
      },
      "quality": "Categorical classification uncertainty and local changes; use quality layers and inspect imagery.",
      "license": "CC BY4.0",
      "gapClosed": "Land/water/forest/built-up classes for surface-property assignment",
      "limitations": "Land-cover class is not measured roughness/Bowen ratio/albedo. Update construction clearing and buildings separately.",
      "localFiles": []
    },
    {
      "id": "hrrr_conus_3km",
      "title": "NOAA HRRR CONUS archive: two preselected 2025 six-hour forecast windows acquired and tested",
      "status": "actually_acquired",
      "dataType": "archived_operational_forecast",
      "verticalType": "surface_and_limited_pressure_levels",
      "provider": "NOAA / NCEP via NOAA Open Data Dissemination on AWS",
      "variables": [
        "10 m grid-relative U/V winds",
        "2 m temperature",
        "native surface orography",
        "surface pressure at lead six",
        "975/950 hPa U/V, temperature and geopotential height at lead six"
      ],
      "resolution": "Actual decoded 3,000 m Lambert grid, 1,799 by 1,059 points; hourly forecast output. Tangent latitude 38.5 degrees, central meridian -97.5 degrees, sphere radius 6,371,229 m.",
      "coverage": "Airport, Pam Rocks, Woodfibre map proxy and all four 20 by 20 km display corners verified inside both acquired grids; nearest projected edge is about 63 km from the airport.",
      "period": "Only 2025-02-02 18 UTC and 2025-07-25 12 UTC initializations, leads 1\u20136, acquired. Provider documents an archive since 2014; completeness of other dates is not established by these two checks.",
      "access": {
        "archiveRegistry": "https://registry.opendata.aws/noaa-hrrr-pds/",
        "publicBucket": "https://noaa-hrrr-bdp-pds.s3.amazonaws.com/",
        "winterExampleIndex": "https://noaa-hrrr-bdp-pds.s3.amazonaws.com/hrrr.20250202/conus/hrrr.t18z.wrfsfcf01.grib2.idx",
        "summerExampleIndex": "https://noaa-hrrr-bdp-pds.s3.amazonaws.com/hrrr.20250725/conus/hrrr.t12z.wrfsfcf01.grib2.idx",
        "method": "Anonymous HTTPS: actual S3 listings and original .idx files verified before HTTP 206 byte-range extraction. No account, payment or external message.",
        "inventoryDocumentation": "https://www.nco.ncep.noaa.gov/pmb/products/hrrr/",
        "rotationDocumentation": "https://rapidrefresh.noaa.gov/faq/HRRR.faq.html"
      },
      "quality": "All 56 original GRIB hashes, index byte ranges, Content-Range responses and internal lengths verified. Lambert grid-to-earth rotation independently checked by projection derivatives and separate spherical equations. All 24 native observation UTC/wind/temperature joins and four score groups checked; 12 pressure-level rows pass ground masks. These are processing checks, not weather or dispersion validation.",
      "license": "NOAA NODD data are public; attribute NOAA, do not imply endorsement, and distinguish derived products from unchanged source messages. ECCC comparison observations retain their own MSC Data Servers End-use Licence.",
      "gapClosed": "A working archived forecast acquisition route for two 2025 observational stress cases, with demonstrated local-wind failures and native terrain metadata.",
      "limitations": "Partial coverage of two of twelve selected episodes: six hourly times each, no full episode or annual forecast coverage. Forecasts are instantaneous versus near-hour station observations; source-site instruments and vertical observations unavailable. The only listed 10 m WIND field is an interval maximum, so no instantaneous WDIR/WIND check is claimed. HRRR scores cannot be ranked against September 2026 HRDPS scores on different dates. No source-site forcing acceptance.",
      "localFiles": [
        "woodfibre-hrrr-2025-findings.md",
        "woodfibre-hrrr-2025-comparison.png",
        "woodfibre-hrrr-2025-comparison.svg",
        "woodfibre-hrrr-2025-comparison.csv",
        "woodfibre-hrrr-2025-point-forecasts.csv",
        "woodfibre-hrrr-2025-profiles.csv",
        "woodfibre-hrrr-2025-matched-observations.json",
        "woodfibre-hrrr-2025-provenance.json",
        "woodfibre-hrrr-2025-raw-manifest.json",
        "woodfibre-hrrr-2025-processing-audit.json",
        "woodfibre-hrrr-2025-source-pack.zip",
        "woodfibre-hrrr-2025-source-pack-manifest.json",
        "woodfibre-hrrr-2025-source-pack-check.json"
      ],
      "acquisition": {
        "retrievedDate": "2026-09-05",
        "rawFileCount": 56,
        "rawBytes": 88001957,
        "originalIndexFiles": 14,
        "archiveListings": 4,
        "officialDocumentationPages": 3,
        "matchedStationHours": 24,
        "pressureLevelPointRows": 12,
        "aboveGroundProfileRows": 12,
        "episodeIds": [
          "hrrr_3km_20250202T18Z_001_006",
          "hrrr_3km_20250725T12Z_001_006"
        ]
      },
      "nativePointTerrain": [
        {
          "pointId": "10476F0",
          "nativeLat": 49.78073059626634,
          "nativeLon": -123.17176339338255,
          "distanceKm": 0.8073296546202474,
          "modelOrographyM": 50.357139587402344,
          "stationMetadataElevationM": 53.7
        },
        {
          "pointId": "10459NN",
          "nativeLat": 49.48280475544761,
          "nativeLon": -123.29453656995645,
          "distanceKm": 0.6574486294344664,
          "modelOrographyM": 0.01338958740234375,
          "stationMetadataElevationM": 7.1
        },
        {
          "pointId": "woodfibre_proxy",
          "nativeLat": 49.65723549548948,
          "nativeLon": -123.24457394186658,
          "distanceKm": 1.1284127293733404,
          "modelOrographyM": 38.263389587402344,
          "stationMetadataElevationM": null
        }
      ],
      "observedTestFailures": {
        "winterPamRocks": "Observed wind remains from 0\u201310 degrees at 6.94\u201310.0 m/s, but HRRR predicts winds from roughly 152\u2013184 degrees at 21\u201323 UTC. The 23 UTC forecast is 0.82 m/s and excluded from direction scoring.",
        "winterVectorRmseMs": {
          "airport": 2.6358246996579657,
          "pamRocks": 10.118161290245641
        },
        "summerVectorRmseMs": {
          "airport": 1.7756638147607435,
          "pamRocks": 2.2853945599268815
        },
        "terrainCaveat": "Woodfibre nearest point is 1.128 km away at 38.26 m; other surrounding model points are 613\u2013764 m high. A small elevation difference at one selected cell does not establish representative coastal winds."
      },
      "nextWeatherSteps": [
        "Extend both acquired windows through the longer observed runs and test additional initialization times without changing dates in response to errors.",
        "Acquire archived forecasts for the remaining ten selected episodes; define separate held-out representative cases before tuning.",
        "Evaluate wind components, temperature and vertical structure against local observations, including the demonstrated winter reversal failure; do not substitute unvalidated model profiles for source-site measurements.",
        "Keep matching-model/date comparisons separate from comparisons across different dates; no HRRR-versus-HRDPS ranking from the existing nonmatching episodes."
      ]
    },
    {
      "id": "bc_wrf_d06_2019_2023",
      "title": "B.C.2019\u20132023 WRF archive, selected d06 tiles",
      "status": "actually_acquired",
      "dataType": "archived_numerical_weather",
      "verticalType": "40_native_model_levels",
      "provider": "B.C. provincial WRF archive",
      "variables": [
        "surface winds",
        "surface weather",
        "native wind/temperature/pressure profiles",
        "terrain and vertical coordinates"
      ],
      "resolution": "d06 1.333km, hourly,40native levels; tile headers identify WRF_ARW V4.6.0 and CALWRF2.0.3 Level190426",
      "coverage": "Selected native10x10 tiles around Woodfibre/Squamish, Airport and Pam Rocks; not a complete accepted forcing domain",
      "period": "January and June2023 tiles; June2source/town profile sample; complete January/JunePST-month Airport/Pam comparisons",
      "access": {
        "retainedNativeExample": "https://nrs.objectstore.gov.bc.ca/wrfdel/calpuff/3ddat/202301/d06/0308/x031y081x040y090.202301.10x10.d06.m3d"
      },
      "quality": "Native structure and independent calculations verified; observation-operator, station exposure, assimilation participation and source-site/vertical skill unresolved",
      "license": "Consult the provider release terms; acquiring public data does not grant third-party model software access",
      "gapClosed": "Actual access to dated native model fields and reproducible local surface consistency checks",
      "limitations": "Not measured profiles, independently validated forcing, or current plume prediction; January/June2023 do not fill2025HRRR episode coverage",
      "localFiles": [
        "woodfibre-corridor-wrf-findings.md",
        "woodfibre-wrf-wind-january2023-findings.md",
        "woodfibre-wrf-wind-june2023-findings.md"
      ]
    },
    {
      "id": "bc_road_winds",
      "title": "B.C. road-weather corridor candidates",
      "status": "actually_acquired",
      "dataType": "observation",
      "verticalType": "surface",
      "provider": "B.C. Weather Archive",
      "variables": [
        "wind speed",
        "wind direction",
        "maximum gust",
        "wind standard deviation",
        "other native station fields"
      ],
      "resolution": "Nominal hourly labels; current FAQ describes preceding-hour vector winds. Clock and detailed historical operator unresolved.",
      "coverage": "Tantalus11092 and EagleRidge11191; currentinventory locations outside20kmcommunityview",
      "period": "Retained2025annual exports and June2023monthly files; June audit preserves720labels per station",
      "access": {
        "archive": "https://wa.th.gov.bc.ca/"
      },
      "quality": "Native fields and calendar-label integrity checked; sensor/QC/operator qualification and assimilation status unresolved",
      "license": "Public archive source attribution retained; source-specific terms should accompany reuse",
      "gapClosed": "Additional retained near-surface observations and checked native data, not accepted local forcing",
      "limitations": "No UTC assignment or FROM/TO assumption; zero-speed bearing interpretation and anemometer height unknown; cannot validate inversion or flare-height flow",
      "localFiles": [
        "woodfibre-road-wind-june2023-findings.md",
        "woodfibre-road-wind-june2023-native.csv",
        "woodfibre-road-wind-june2023-checks.json"
      ]
    }
  ],
  "stationInventory": [
    {
      "provider": "ECCC",
      "stationId": 336,
      "climateIdentifier": "10476F0",
      "name": "SQUAMISH AIRPORT",
      "coordinates": [
        -123.16119444444445,
        49.783208333333334
      ],
      "elevationM": "53.70",
      "hourlyFirst": "1982-05-17 15:00:00",
      "hourlyLast": "2026-09-03 12:30:10",
      "timeZone": "PST"
    },
    {
      "provider": "ECCC",
      "stationId": 536,
      "climateIdentifier": "1086082",
      "name": "PEMBERTON AIRPORT CS",
      "coordinates": [
        -122.73408888888889,
        50.30564611111111
      ],
      "elevationM": "204.30",
      "hourlyFirst": "1988-06-01 07:00:00",
      "hourlyLast": "2026-09-03 12:30:10",
      "timeZone": "PST"
    },
    {
      "provider": "ECCC",
      "stationId": 6817,
      "climateIdentifier": "10459NN",
      "name": "HOWE SOUND - PAM ROCKS",
      "coordinates": [
        -123.29945277777777,
        49.48778027777778
      ],
      "elevationM": "7.10",
      "hourlyFirst": "1994-02-01 00:00:00",
      "hourlyLast": "2026-09-03 12:30:10",
      "timeZone": "PST"
    },
    {
      "provider": "ECCC",
      "stationId": 6833,
      "climateIdentifier": "1108824",
      "name": "WEST VANCOUVER AUT",
      "coordinates": [
        -123.19330833333333,
        49.34704166666667
      ],
      "elevationM": "170.20",
      "hourlyFirst": "1994-02-01 00:00:00",
      "hourlyLast": "2026-09-03 12:30:10",
      "timeZone": "PST"
    },
    {
      "provider": "ECCC",
      "stationId": 43443,
      "climateIdentifier": "1100875",
      "name": "WHISTLER - NESTERS",
      "coordinates": [
        -122.9546111111111,
        50.12894444444444
      ],
      "elevationM": "659.00",
      "hourlyFirst": "2005-01-17 12:00:00",
      "hourlyLast": "2026-09-03 12:30:10",
      "timeZone": "PST"
    },
    {
      "provider": "ECCC",
      "stationId": 46747,
      "climateIdentifier": "1086081",
      "name": "PEMBERTON AIRPORT (WIND)",
      "coordinates": [
        -122.73805555555556,
        50.30222222222222
      ],
      "elevationM": "203.00",
      "hourlyFirst": "2007-11-27 23:00:00",
      "hourlyLast": "2026-09-03 12:30:10",
      "timeZone": "PST"
    },
    {
      "provider": "ECCC",
      "stationId": 52178,
      "climateIdentifier": "1048899",
      "name": "WHISTLER A",
      "coordinates": [
        -122.95472222222222,
        50.12888888888889
      ],
      "elevationM": "657.80",
      "hourlyFirst": "2014-04-29 06:00:00",
      "hourlyLast": "2026-09-03 12:30:10",
      "timeZone": "PST"
    }
  ],
  "bcStationMetadata": [
    {
      "STATION_NAME_FULL": "Langdale Elementary",
      "STATION_NAME": "Langdale Elementary",
      "EMS_ID": "E222778",
      "SERIAL": "86",
      "ADDRESS": "1551 Johnson Road",
      "CITY": "Langdale",
      "LAT": "49.438848",
      "LONG": "-123.479185",
      "ELEVATION": "90",
      "STATUS_DESCRIPTION": "OPERATIONAL",
      "OWNER": "INDUSTRY",
      "REGION": "02 - Lower Mainland",
      "STATUS": "ON",
      "OPENED": "1995-01-12 00:00:00",
      "CLOSED": "NA",
      "NAPS_ID": "105301"
    },
    {
      "STATION_NAME_FULL": "Port Mellon_15",
      "STATION_NAME": "Port Mellon",
      "EMS_ID": "E226338",
      "SERIAL": "116",
      "ADDRESS": "Howe Sound Pulp & Paper",
      "CITY": "Gibsons",
      "LAT": "49.5228",
      "LONG": "-123.4822",
      "ELEVATION": "3",
      "STATUS_DESCRIPTION": "OPERATIONAL",
      "OWNER": "INDUSTRY",
      "REGION": "02 - Lower Mainland",
      "STATUS": "ON",
      "OPENED": "1997-05-27 00:00:00",
      "CLOSED": "NA",
      "NAPS_ID": "10"
    },
    {
      "STATION_NAME_FULL": "Port Mellon_60",
      "STATION_NAME": "Port Mellon",
      "EMS_ID": "E226338",
      "SERIAL": "117",
      "ADDRESS": "Howe Sound Pulp & Paper",
      "CITY": "Gibsons",
      "LAT": "49.5228",
      "LONG": "-123.4822",
      "ELEVATION": "3",
      "STATUS_DESCRIPTION": "OPERATIONAL",
      "OWNER": "INDUSTRY",
      "REGION": "02 - Lower Mainland",
      "STATUS": "ON",
      "OPENED": "1997-05-27 00:00:00",
      "CLOSED": "NA",
      "NAPS_ID": "10"
    },
    {
      "STATION_NAME_FULL": "Squamish Elementary",
      "STATION_NAME": "Squamish Elementary",
      "EMS_ID": "E304570",
      "SERIAL": "491",
      "ADDRESS": "38370 Buckley Avenue",
      "CITY": "Squamish",
      "LAT": "49.70516",
      "LONG": "-123.15133",
      "ELEVATION": "6",
      "STATUS_DESCRIPTION": "OPERATIONAL",
      "OWNER": "ENV",
      "REGION": "02 - Lower Mainland",
      "STATUS": "ON",
      "OPENED": "2015-12-17 00:00:00",
      "CLOSED": "NA",
      "NAPS_ID": "101603"
    },
    {
      "STATION_NAME_FULL": "Squamish Elementary_15",
      "STATION_NAME": "Squamish Elementary",
      "EMS_ID": "E304570",
      "SERIAL": "492",
      "ADDRESS": "Next to playing field at the school",
      "CITY": "Squamish",
      "LAT": "49.70516",
      "LONG": "-123.15133",
      "ELEVATION": "6",
      "STATUS_DESCRIPTION": "OPERATIONAL",
      "OWNER": "ENV",
      "REGION": "02 - Lower Mainland",
      "STATUS": "OFF",
      "OPENED": "2015-12-17 00:00:00",
      "CLOSED": "NA",
      "NAPS_ID": "101603"
    },
    {
      "STATION_NAME_FULL": "Squamish Elementary_60",
      "STATION_NAME": "Squamish Elementary",
      "EMS_ID": "E304570",
      "SERIAL": "493",
      "ADDRESS": "Next to playing field at the school",
      "CITY": "Squamish",
      "LAT": "49.70516",
      "LONG": "-123.15133",
      "ELEVATION": "6",
      "STATUS_DESCRIPTION": "OPERATIONAL",
      "OWNER": "ENV",
      "REGION": "02 - Lower Mainland",
      "STATUS": "OFF",
      "OPENED": "2015-12-17 00:00:00",
      "CLOSED": "NA",
      "NAPS_ID": "101603"
    }
  ],
  "ambientSampleSummary": [
    {
      "parameter": "NO",
      "records": 72,
      "validNumeric": 69,
      "unit": "ppb",
      "missingHourEndingPst": [
        "2025-05-01 15:00",
        "2025-05-02 14:00",
        "2025-05-03 13:00"
      ],
      "min": 0.164052,
      "max": 8.011304
    },
    {
      "parameter": "NO2",
      "records": 72,
      "validNumeric": 69,
      "unit": "ppb",
      "missingHourEndingPst": [
        "2025-05-01 15:00",
        "2025-05-02 14:00",
        "2025-05-03 13:00"
      ],
      "min": 0.844744,
      "max": 17.604908
    },
    {
      "parameter": "NOx",
      "records": 72,
      "validNumeric": 69,
      "unit": "ppb",
      "missingHourEndingPst": [
        "2025-05-01 15:00",
        "2025-05-02 14:00",
        "2025-05-03 13:00"
      ],
      "min": 1.101508,
      "max": 19.73793
    },
    {
      "parameter": "O3",
      "records": 72,
      "validNumeric": 69,
      "unit": "ppb",
      "missingHourEndingPst": [
        "2025-05-01 14:00",
        "2025-05-02 13:00",
        "2025-05-03 12:00"
      ],
      "min": 1.944934,
      "max": 46.27735
    },
    {
      "parameter": "PM25",
      "records": 72,
      "validNumeric": 72,
      "unit": "ug/m3",
      "missingHourEndingPst": [],
      "min": 0.83116,
      "max": 10.0561295
    },
    {
      "parameter": "SO2",
      "records": 72,
      "validNumeric": 69,
      "unit": "ppb",
      "missingHourEndingPst": [
        "2025-05-01 15:00",
        "2025-05-02 14:00",
        "2025-05-03 13:00"
      ],
      "min": 0.043843,
      "max": 2.033541
    }
  ],
  "surfaceWeatherSampleSummary": [
    {
      "stationName": "HOWE SOUND - PAM ROCKS",
      "climateIdentifier": "10459NN",
      "records": 71,
      "missingHoursPst": [
        "2025-05-01 04:00:00"
      ],
      "validCounts": {
        "TEMP": 71,
        "RELATIVE_HUMIDITY": 71,
        "STATION_PRESSURE": 71,
        "WIND_SPEED": 71,
        "WIND_DIRECTION": 71
      },
      "nonNullFlags": {}
    },
    {
      "stationName": "SQUAMISH AIRPORT",
      "climateIdentifier": "10476F0",
      "records": 70,
      "missingHoursPst": [
        "2025-05-01 13:00:00",
        "2025-05-03 03:00:00"
      ],
      "validCounts": {
        "TEMP": 70,
        "RELATIVE_HUMIDITY": 70,
        "STATION_PRESSURE": 70,
        "WIND_SPEED": 70,
        "WIND_DIRECTION": 70
      },
      "nonNullFlags": {}
    },
    {
      "stationName": "PEMBERTON AIRPORT (WIND)",
      "climateIdentifier": "1086081",
      "records": 72,
      "missingHoursPst": [],
      "validCounts": {
        "TEMP": 72,
        "RELATIVE_HUMIDITY": 0,
        "STATION_PRESSURE": 0,
        "WIND_SPEED": 72,
        "WIND_DIRECTION": 72
      },
      "nonNullFlags": {
        "DEW_POINT_TEMP_FLAG": [
          "M"
        ]
      }
    },
    {
      "stationName": "PEMBERTON AIRPORT CS",
      "climateIdentifier": "1086082",
      "records": 72,
      "missingHoursPst": [],
      "validCounts": {
        "TEMP": 72,
        "RELATIVE_HUMIDITY": 72,
        "STATION_PRESSURE": 72,
        "WIND_SPEED": 0,
        "WIND_DIRECTION": 0
      },
      "nonNullFlags": {}
    }
  ],
  "forecastInventory": [
    {
      "id": "hrdps_2p5",
      "status": "actually_acquired",
      "provider": "ECCC",
      "observationType": "numerical_forecast",
      "listingUrl": "https://dd.weather.gc.ca/today/model_hrdps/continental/2.5km/00/000/",
      "horizontalGridM": 2500,
      "initializationHoursUtc": [
        0,
        6,
        12,
        18
      ],
      "outputIntervalHours": 1,
      "maximumLeadHours": 48,
      "retention": "30 days on main Datamart as of retrieval; capacity dependent",
      "temperaturePressureLevelsHpaActuallyListed": [
        50,
        100,
        150,
        175,
        200,
        225,
        250,
        275,
        300,
        350,
        400,
        450,
        500,
        550,
        600,
        650,
        700,
        750,
        800,
        850,
        875,
        900,
        925,
        950,
        970,
        985,
        1000,
        1015
      ],
      "example925hPaTemperatureUrl": "https://dd.weather.gc.ca/today/model_hrdps/continental/2.5km/00/000/20260905T00Z_MSC_HRDPS_TMP_ISBL_0925_RLatLon0.0225_PT000H.grib2",
      "listedGribCount": 350,
      "validCycle": "2026-09-05T00:00:00Z",
      "recordRole": "historical_listing_snapshot",
      "snapshotRetrievedDate": "2026-09-05",
      "historicalAcquisitionStatus": "directory_and_file_inventory_acquired_no_grib_values",
      "statusScope": "Current dataset status updated by separate Sep2 episode record; all listed file/level/cycle fields below remain the original Sep5 inventory snapshot.",
      "supersededForAcquisitionStatusBy": "hrdps_2p5_20260902T00Z_001_024"
    },
    {
      "id": "rdps_10",
      "status": "directory_and_file_inventory_acquired_no_grib_values",
      "provider": "ECCC",
      "observationType": "numerical_forecast",
      "listingUrl": "https://dd.weather.gc.ca/today/model_rdps/10km/00/000/",
      "horizontalGridM": 10000,
      "initializationHoursUtc": [
        0,
        6,
        12,
        18
      ],
      "outputIntervalHours": 1,
      "maximumLeadHours": 84,
      "retention": "30 days on main Datamart as of retrieval; capacity dependent",
      "temperaturePressureLevelsHpaActuallyListed": [
        1,
        5,
        10,
        20,
        30,
        50,
        100,
        150,
        175,
        200,
        225,
        250,
        275,
        300,
        350,
        400,
        450,
        500,
        550,
        600,
        650,
        700,
        750,
        800,
        850,
        875,
        900,
        925,
        950,
        970,
        985,
        1000,
        1015
      ],
      "example925hPaTemperatureUrl": "https://dd.weather.gc.ca/today/model_rdps/10km/00/000/20260905T00Z_MSC_RDPS_AirTemp_IsbL-0925_RLatLon0.09_PT000H.grib2",
      "listedGribCount": 383,
      "validCycle": "2026-09-05T00:00:00Z",
      "recordRole": "historical_listing_snapshot",
      "snapshotRetrievedDate": "2026-09-05"
    },
    {
      "id": "hrdps_west_1",
      "status": "actually_acquired",
      "provider": "ECCC",
      "observationType": "numerical_forecast",
      "listingUrl": "https://dd.alpha.weather.gc.ca/model_hrdps/west/1km/grib2/00/000/",
      "horizontalGridM": 1000,
      "initializationHoursUtc": [
        0,
        12
      ],
      "outputIntervalHours": 1,
      "maximumLeadHours": 48,
      "retention": "24 hours documented for experimental DD-Alpha product",
      "temperaturePressureLevelsHpaActuallyListed": [
        50,
        100,
        150,
        175,
        200,
        225,
        250,
        275,
        300,
        350,
        400,
        450,
        500,
        550,
        600,
        650,
        700,
        750,
        800,
        850,
        875,
        900,
        925,
        950,
        970,
        985,
        1000,
        1015
      ],
      "example925hPaTemperatureUrl": "https://dd.alpha.weather.gc.ca/model_hrdps/west/1km/grib2/00/000/CMC_hrdps_west_TMP_ISBL_0925_rotated_latlon0.009x0.009_20260905T00Z_P000-00.grib2",
      "listedGribCount": 333,
      "validCycle": "2026-09-05T00:00:00Z",
      "recordRole": "historical_listing_snapshot",
      "snapshotRetrievedDate": "2026-09-05",
      "historicalAcquisitionStatus": "directory_and_file_inventory_acquired_no_grib_values",
      "statusScope": "Current dataset status now includes actual September5 leads1\u20136 acquisition. All original listed filename/level/cycle fields remain the earlier inventory snapshot.",
      "supersededForAcquisitionStatusBy": "hrdps_west_1_20260905T00Z_001_006"
    }
  ],
  "terrainAssetInventory": [
    {
      "id": "2_4-mosaic-1m",
      "collection": "hrdem-mosaic-1m",
      "datetime": "2024-09-13T12:00:00Z",
      "updated": "2026-05-25T13:49:03.394626Z",
      "bbox": [
        -126.852867,
        49.392567,
        -117.040404,
        55.396741
      ],
      "horizontalCrs": "EPSG:3979",
      "assets": {
        "dsm": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-mosaic-1m/2_4-mosaic-1m-dsm.tif",
        "dtm": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-mosaic-1m/2_4-mosaic-1m-dtm.tif",
        "extent": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-mosaic-1m/2_4-mosaic-1m-extent.geojson",
        "coverage": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-mosaic-1m/2_4-mosaic-1m-coverage.gpkg"
      },
      "status": "metadata_acquired_raster_not_acquired"
    },
    {
      "id": "2_4-mosaic-2m",
      "collection": "hrdem-mosaic-2m",
      "datetime": "2024-09-13T12:00:00Z",
      "updated": "2026-05-25T13:52:27.096394Z",
      "bbox": [
        -126.852867,
        49.392567,
        -117.040404,
        55.396741
      ],
      "horizontalCrs": "EPSG:3979",
      "assets": {
        "dsm": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-mosaic-2m/2_4-mosaic-2m-dsm.tif",
        "dtm": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-mosaic-2m/2_4-mosaic-2m-dtm.tif",
        "extent": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-mosaic-2m/2_4-mosaic-2m-extent.geojson",
        "coverage": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-mosaic-2m/2_4-mosaic-2m-coverage.gpkg"
      },
      "status": "metadata_acquired_raster_not_acquired"
    },
    {
      "id": "BC-Sunshine_Coast_2020-1m",
      "collection": "hrdem-lidar",
      "datetime": "2020-11-08T12:00:00Z",
      "updated": "2026-01-20T20:08:26.163786Z",
      "bbox": [
        -125.1862402032543,
        49.292915278957636,
        -122.89367868739497,
        51.19482868047874
      ],
      "horizontalCrs": "EPSG:3979",
      "assets": {
        "dsm": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-Sunshine_Coast_2020-1m-dsm.tif",
        "dtm": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-Sunshine_Coast_2020-1m-dtm.tif",
        "extent": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-Sunshine_Coast_2020-1m-extent.geojson",
        "coverage": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-Sunshine_Coast_2020-1m-coverage.gpkg"
      },
      "status": "metadata_acquired_raster_not_acquired"
    },
    {
      "id": "BC-Vancouver_Island_Sunshine_Coast_2018-1m",
      "collection": "hrdem-lidar",
      "datetime": "2019-10-01T12:00:00Z",
      "updated": "2026-01-21T15:35:25.033239Z",
      "bbox": [
        -128.65559554461427,
        47.40395746144002,
        -122.1866383984861,
        52.09735563210113
      ],
      "horizontalCrs": "EPSG:3979",
      "assets": {
        "dsm": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-Vancouver_Island_Sunshine_Coast_2018-1m-dsm.tif",
        "dtm": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-Vancouver_Island_Sunshine_Coast_2018-1m-dtm.tif",
        "extent": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-Vancouver_Island_Sunshine_Coast_2018-1m-extent.geojson",
        "coverage": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-Vancouver_Island_Sunshine_Coast_2018-1m-coverage.gpkg"
      },
      "status": "metadata_acquired_raster_not_acquired"
    },
    {
      "id": "BC-BCTS_Chinook_Kamloops_UTM10_2018-1m",
      "collection": "hrdem-lidar",
      "datetime": "2018-09-01T12:00:00Z",
      "updated": "2026-01-21T00:46:50.069010Z",
      "bbox": [
        -124.344077,
        49.337668,
        -120.352205,
        51.279208
      ],
      "horizontalCrs": "EPSG:3979",
      "assets": {
        "dsm": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-BCTS_Chinook_Kamloops_UTM10_2018-1m-dsm.tif",
        "dtm": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-BCTS_Chinook_Kamloops_UTM10_2018-1m-dtm.tif",
        "extent": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-BCTS_Chinook_Kamloops_UTM10_2018-1m-extent.geojson",
        "coverage": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-BCTS_Chinook_Kamloops_UTM10_2018-1m-coverage.gpkg"
      },
      "status": "metadata_acquired_raster_not_acquired"
    },
    {
      "id": "BC-BCTS_Chinook_Kamloops_UTM10_2017-1m",
      "collection": "hrdem-lidar",
      "datetime": "2017-10-31T12:00:00Z",
      "updated": "2026-01-21T00:46:00.266425Z",
      "bbox": [
        -123.564054,
        49.000226,
        -121.210793,
        50.755412
      ],
      "horizontalCrs": "EPSG:3979",
      "assets": {
        "dsm": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-BCTS_Chinook_Kamloops_UTM10_2017-1m-dsm.tif",
        "dtm": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-BCTS_Chinook_Kamloops_UTM10_2017-1m-dtm.tif",
        "extent": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-BCTS_Chinook_Kamloops_UTM10_2017-1m-extent.geojson",
        "coverage": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-BCTS_Chinook_Kamloops_UTM10_2017-1m-coverage.gpkg"
      },
      "status": "metadata_acquired_raster_not_acquired"
    },
    {
      "id": "BC-Squamish_2016-1m",
      "collection": "hrdem-lidar",
      "datetime": "2016-09-12T12:00:00Z",
      "updated": "2026-01-20T20:04:05.535788Z",
      "bbox": [
        -123.317549,
        49.655616,
        -122.577196,
        50.516116
      ],
      "horizontalCrs": "EPSG:3979",
      "assets": {
        "dsm": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-Squamish_2016-1m-dsm.tif",
        "dtm": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-Squamish_2016-1m-dtm.tif",
        "extent": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-Squamish_2016-1m-extent.geojson",
        "coverage": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/hrdem-lidar/BC-Squamish_2016-1m-coverage.gpkg"
      },
      "status": "metadata_acquired_raster_not_acquired"
    },
    {
      "id": "mrdem",
      "collection": "mrdem-30",
      "datetime": "2026-06-22T12:00:00Z",
      "updated": "2026-06-25T14:14:39.214381Z",
      "bbox": [
        -178.634083456441,
        33.63960835766788,
        -8.498079497441832,
        85.14750471001705
      ],
      "horizontalCrs": "EPSG:3979",
      "assets": {
        "dsm": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/mrdem-30/mrdem-30-dsm.tif",
        "dtm": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/mrdem-30/mrdem-30-dtm.tif",
        "source": "https://canelevation-dem.s3.ca-central-1.amazonaws.com/mrdem-30/mrdem-30-source.tif"
      },
      "status": "metadata_acquired_raster_not_acquired"
    }
  ],
  "lidarProjectExtentChecks": [
    {
      "id": "BC-Squamish_2016-1m",
      "domainIntersectionKm2": 48.271,
      "woodfibreProxyInsideExtent": true,
      "squamishElementaryInsideExtent": true,
      "caution": "Project extent coverage is not a per-pixel validity check. Gaps and acquisition vintage remain relevant."
    },
    {
      "id": "BC-Sunshine_Coast_2020-1m",
      "domainIntersectionKm2": 51.732,
      "woodfibreProxyInsideExtent": false,
      "squamishElementaryInsideExtent": false,
      "caution": "Project extent coverage is not a per-pixel validity check. Gaps and acquisition vintage remain relevant."
    }
  ],
  "regionalUpperAirStationInventory": [
    {
      "name": "Port Hardy",
      "id": "CAM00071109",
      "coordinates": [
        -127.3666,
        50.6806
      ],
      "firstYear": 1951,
      "lastYear": 2026,
      "distanceKmFromWoodfibreProxy": 314.7
    },
    {
      "name": "Quillayute",
      "id": "USM00072797",
      "coordinates": [
        -124.5602,
        47.9339
      ],
      "firstYear": 1966,
      "lastYear": 2026,
      "distanceKmFromWoodfibreProxy": 215.1
    },
    {
      "name": "Vancouver International historical",
      "id": "CAM00071892",
      "coordinates": [
        -123.167,
        49.2
      ],
      "firstYear": 1973,
      "lastYear": 1996,
      "distanceKmFromWoodfibreProxy": 52.1
    },
    {
      "name": "Kelowna historical",
      "id": "CAM00071203",
      "coordinates": [
        -119.3777,
        49.9572
      ],
      "firstYear": 1994,
      "lastYear": 2017,
      "distanceKmFromWoodfibreProxy": 280.9
    }
  ],
  "researchReferences": [
    {
      "title": "Along-Channel Winds in Howe Sound: Climatological Analysis and Case Studies",
      "url": "https://doi.org/10.1080/07055900.2016.1233094",
      "use": "Along-channel surface and vertical variation; event-specific outflow depth; raw dataset access unresolved"
    },
    {
      "title": "Gap Winds in a Fjord. Part I: Observations and Numerical Simulation",
      "url": "https://journals.ametsoc.org/view/journals/mwre/122/12/1520-0493_1994_122_2645_gwiafp_2_0_co_2.xml",
      "use": "Howe Sound gap-wind structure; motivation for spatial/vertical validation"
    }
  ],
  "noExternalRequestsSent": true,
  "ambientSampleSummaryOriginal": [
    {
      "parameter": "NO",
      "records": 72,
      "validNumeric": 69,
      "unit": "ppb",
      "missingPst": [
        "2025-05-01 15:00",
        "2025-05-02 14:00",
        "2025-05-03 13:00"
      ],
      "min": 0.164052,
      "max": 8.011304
    },
    {
      "parameter": "NO2",
      "records": 72,
      "validNumeric": 69,
      "unit": "ppb",
      "missingPst": [
        "2025-05-01 15:00",
        "2025-05-02 14:00",
        "2025-05-03 13:00"
      ],
      "min": 0.844744,
      "max": 17.604908
    },
    {
      "parameter": "NOx",
      "records": 72,
      "validNumeric": 69,
      "unit": "ppb",
      "missingPst": [
        "2025-05-01 15:00",
        "2025-05-02 14:00",
        "2025-05-03 13:00"
      ],
      "min": 1.101508,
      "max": 19.73793
    },
    {
      "parameter": "O3",
      "records": 72,
      "validNumeric": 69,
      "unit": "ppb",
      "missingPst": [
        "2025-05-01 14:00",
        "2025-05-02 13:00",
        "2025-05-03 12:00"
      ],
      "min": 1.944934,
      "max": 46.27735
    },
    {
      "parameter": "PM25",
      "records": 72,
      "validNumeric": 72,
      "unit": "ug/m3",
      "missingPst": [],
      "min": 0.83116,
      "max": 10.0561295
    },
    {
      "parameter": "SO2",
      "records": 72,
      "validNumeric": 69,
      "unit": "ppb",
      "missingPst": [
        "2025-05-01 15:00",
        "2025-05-02 14:00",
        "2025-05-03 13:00"
      ],
      "min": 0.043843,
      "max": 2.033541
    }
  ],
  "ambientSampleSummarySource": "squamish-elementary-verified-calendar-days-2025-05-01-to-03.csv",
  "forecastEpisodeAcquisitions": [
    {
      "id": "hrdps_2p5_20260902T00Z_001_024",
      "datasetId": "hrdps_2p5",
      "status": "actually_acquired",
      "dataType": "archived_operational_forecast",
      "initializationUtc": "2026-09-02T00:00:00Z",
      "validTimeRangeUtc": [
        "2026-09-02T01:00:00Z",
        "2026-09-03T00:00:00Z"
      ],
      "forecastLeadHours": [
        1,
        24
      ],
      "rawFileCount": 92,
      "rawBytes": 219461500,
      "rawDirectory": "work/hindcast-2026",
      "manifest": "woodfibre-hrdps-raw-manifest-2026-09-02.json",
      "provenance": "woodfibre-hrdps-comparison-provenance-2026-09-02.json",
      "comparison": "woodfibre-hrdps-comparison-2026-09-02.md",
      "comparisonPairs": 48,
      "summary": {
        "10476F0": {
          "stationName": "Squamish Airport",
          "n": 24,
          "temperatureC": {
            "n": 24,
            "bias": 0.4452054036458619,
            "mae": 1.1424554036458454,
            "rmse": 1.3917889018578107
          },
          "windSpeedMs": {
            "n": 24,
            "bias": -0.12810029990277402,
            "mae": 1.0740564037969473,
            "rmse": 1.2098279683791524
          },
          "vectorWindMs": {
            "n": 24,
            "meanMagnitudeError": 1.5494695009924164,
            "rmse": 1.7429149641757895
          },
          "directionDeg": {
            "minimumSpeedBothMs": 1,
            "n": 19,
            "mae": 30.773907564991795,
            "circularBiasDeg": 3.4790345040435064
          },
          "observedCalmHours": 2,
          "observedSpeedRangeMs": [
            0.0,
            3.888888888888889
          ]
        },
        "10459NN": {
          "stationName": "Howe Sound \u2013 Pam Rocks",
          "n": 24,
          "temperatureC": {
            "n": 24,
            "bias": 0.9727887369791931,
            "mae": 1.095872070312514,
            "rmse": 1.3206990679176918
          },
          "windSpeedMs": {
            "n": 24,
            "bias": -0.9176151523257826,
            "mae": 2.166380315150882,
            "rmse": 2.7413747953947443
          },
          "vectorWindMs": {
            "n": 24,
            "meanMagnitudeError": 5.9620052774380605,
            "rmse": 6.313985661040893
          },
          "directionDeg": {
            "minimumSpeedBothMs": 1,
            "n": 23,
            "mae": 104.56703017844124,
            "circularBiasDeg": -127.97664398916633
          },
          "observedCalmHours": 0,
          "observedSpeedRangeMs": [
            0.8333333333333333,
            8.055555555555555
          ]
        }
      },
      "scopeLimit": "One forecast test,not reanalysis,not multi-episode hindcast,and not local atmospheric/dispersion validation."
    },
    {
      "id": "hrdps_west_1_20260905T00Z_001_006",
      "datasetId": "hrdps_west_1",
      "status": "actually_acquired",
      "dataType": "experimental_forecast",
      "initializationUtc": "2026-09-05T00:00:00Z",
      "validTimeRangeUtc": [
        "2026-09-05T01:00:00Z",
        "2026-09-05T06:00:00Z"
      ],
      "forecastLeadHours": [
        1,
        6
      ],
      "rawFileCount": 34,
      "rawBytes": 35274767,
      "rawDirectory": "work/hrdps-resolution-2026",
      "manifest": "woodfibre-hrdps-resolution-raw-manifest-2026-09-05.json",
      "provenance": "woodfibre-hrdps-resolution-provenance-2026-09-05.json",
      "comparison": "woodfibre-hrdps-resolution-findings-2026-09-05.md",
      "comparisonPairs": 12,
      "commonComparisonId": "hrdps_resolution_20260905T00Z_001_006",
      "sharedObservationRecordCount": 12,
      "summary": [
        {
          "model": "west1km",
          "stationId": "10476F0",
          "stationName": "Squamish Airport",
          "n": 6,
          "temperatureC": {
            "n": 6,
            "bias": 0.7516666666666895,
            "mae": 0.7516666666666895,
            "rmse": 0.7713300201600055
          },
          "windSpeedMs": {
            "n": 6,
            "bias": 0.9538556290596195,
            "mae": 1.1577684137144115,
            "rmse": 1.411282315702023
          },
          "vectorWindRmseMs": 1.5436590044832155,
          "directionMAEDegCommonHours": 20.40638992196918,
          "commonDirectionHours": 4
        },
        {
          "model": "west1km",
          "stationId": "10459NN",
          "stationName": "Pam Rocks",
          "n": 6,
          "temperatureC": {
            "n": 6,
            "bias": 0.23833333333336112,
            "mae": 0.36833333333335655,
            "rmse": 0.4095322535120781
          },
          "windSpeedMs": {
            "n": 6,
            "bias": -5.34906472667804,
            "mae": 5.743679337695696,
            "rmse": 6.817872537226782
          },
          "vectorWindRmseMs": 7.092727299411484,
          "directionMAEDegCommonHours": 25.33003406533942,
          "commonDirectionHours": 2
        }
      ],
      "scopeLimit": "Same six observed hours at two stations; no comparison of skill across dates, no general ranking, no source-site forcing acceptance."
    },
    {
      "id": "hrdps_2p5_20260905T00Z_001_006",
      "datasetId": "hrdps_2p5",
      "status": "actually_acquired",
      "dataType": "operational_forecast",
      "initializationUtc": "2026-09-05T00:00:00Z",
      "validTimeRangeUtc": [
        "2026-09-05T01:00:00Z",
        "2026-09-05T06:00:00Z"
      ],
      "forecastLeadHours": [
        1,
        6
      ],
      "rawFileCount": 34,
      "rawBytes": 77132033,
      "rawDirectory": "work/hrdps-resolution-2026",
      "manifest": "woodfibre-hrdps-resolution-raw-manifest-2026-09-05.json",
      "provenance": "woodfibre-hrdps-resolution-provenance-2026-09-05.json",
      "comparison": "woodfibre-hrdps-resolution-findings-2026-09-05.md",
      "comparisonPairs": 12,
      "commonComparisonId": "hrdps_resolution_20260905T00Z_001_006",
      "sharedObservationRecordCount": 12,
      "summary": [
        {
          "model": "operational2p5km",
          "stationId": "10476F0",
          "stationName": "Squamish Airport",
          "n": 6,
          "temperatureC": {
            "n": 6,
            "bias": 0.18050000000002875,
            "mae": 0.1911666666666824,
            "rmse": 0.22924186644969818
          },
          "windSpeedMs": {
            "n": 6,
            "bias": 0.30577899971493794,
            "mae": 0.7920988732154223,
            "rmse": 1.068851816123897
          },
          "vectorWindRmseMs": 1.1475629436387296,
          "directionMAEDegCommonHours": 13.362538431132862,
          "commonDirectionHours": 4
        },
        {
          "model": "operational2p5km",
          "stationId": "10459NN",
          "stationName": "Pam Rocks",
          "n": 6,
          "temperatureC": {
            "n": 6,
            "bias": 0.3961666666666949,
            "mae": 0.5295000000000206,
            "rmse": 0.5688258374347638
          },
          "windSpeedMs": {
            "n": 6,
            "bias": -5.948231729660584,
            "mae": 6.062005384099758,
            "rmse": 7.139618492865247
          },
          "vectorWindRmseMs": 7.512524948365752,
          "directionMAEDegCommonHours": 36.47920830071058,
          "commonDirectionHours": 2
        }
      ],
      "scopeLimit": "Same six observed hours at two stations; no comparison of skill across dates, no general ranking, no source-site forcing acceptance."
    },
    {
      "id": "hrrr_3km_20250202T18Z_001_006",
      "datasetId": "hrrr_conus_3km",
      "status": "actually_acquired",
      "dataType": "archived_operational_forecast",
      "episode": "winter",
      "initializationUtc": "2025-02-02T18:00:00Z",
      "validTimeRangeUtc": [
        "2025-02-02T19:00:00Z",
        "2025-02-03T00:00:00Z"
      ],
      "forecastLeadHours": [
        1,
        6
      ],
      "hourlyForecastTimesAcquired": 6,
      "rawFileCount": 28,
      "rawBytes": 44828659,
      "rawDirectory": "work/hrrr-2025",
      "manifest": "woodfibre-hrrr-2025-raw-manifest.json",
      "provenance": "woodfibre-hrrr-2025-provenance.json",
      "comparison": "woodfibre-hrrr-2025-findings.md",
      "processingAudit": "woodfibre-hrrr-2025-processing-audit.json",
      "comparisonPairs": 12,
      "observationSelectedRun": {
        "season": "DJF",
        "category": "both_southward",
        "startUtc": "2025-02-02T17:00:00Z",
        "endUtc": "2025-02-06T23:00:00Z",
        "consecutiveObservedPairs": 103,
        "wholeRunWeatherAcquired": false
      },
      "selection": "First six-hourly initialization after the previously selected run start; cycle and leads prescribed before forecast-error inspection.",
      "summary": [
        {
          "episode": "winter",
          "pointId": "10476F0",
          "pointName": "Squamish Airport",
          "scheduledPairs": 6,
          "eligibleVectorPairs": 6,
          "vectorRmseMs": 2.6358246996579657,
          "speedErrorMs": {
            "n": 6,
            "bias": 0.4372050031553245,
            "mae": 0.5981627642995638,
            "rmse": 0.8266979462893589
          },
          "eastErrorMs": {
            "n": 6,
            "bias": 2.460163334683922,
            "mae": 2.460163334683922,
            "rmse": 2.4892607618398777
          },
          "northErrorMs": {
            "n": 6,
            "bias": -0.2569876583194483,
            "mae": 0.6221994095227523,
            "rmse": 0.8666906638999614
          },
          "temperatureErrorC": {
            "n": 6,
            "bias": 1.6936808268229393,
            "mae": 1.6936808268229393,
            "rmse": 1.7700237276488138
          },
          "directionEligiblePairs": 6,
          "directionMaeDegrees": 69.95403347607592
        },
        {
          "episode": "winter",
          "pointId": "10459NN",
          "pointName": "Pam Rocks",
          "scheduledPairs": 6,
          "eligibleVectorPairs": 6,
          "vectorRmseMs": 10.118161290245641,
          "speedErrorMs": {
            "n": 6,
            "bias": -4.124208060748225,
            "mae": 4.741153822643721,
            "rmse": 5.52564430518117
          },
          "eastErrorMs": {
            "n": 6,
            "bias": 0.08134668274444648,
            "mae": 0.9938861793735191,
            "rmse": 1.2213644862676512
          },
          "northErrorMs": {
            "n": 6,
            "bias": 8.248177058597484,
            "mae": 8.857196385175369,
            "rmse": 10.0441752616683
          },
          "temperatureErrorC": {
            "n": 6,
            "bias": 1.0645141601562726,
            "mae": 1.0645141601562726,
            "rmse": 1.2544056071649798
          },
          "directionEligiblePairs": 5,
          "directionMaeDegrees": 73.20133492228331
        }
      ],
      "scopeLimit": "Only six hourly forecast times in this longer observation-selected run; not full-run coverage, annual weather, seasonal skill, source-site forcing or dispersion validation."
    },
    {
      "id": "hrrr_3km_20250725T12Z_001_006",
      "datasetId": "hrrr_conus_3km",
      "status": "actually_acquired",
      "dataType": "archived_operational_forecast",
      "episode": "summer",
      "initializationUtc": "2025-07-25T12:00:00Z",
      "validTimeRangeUtc": [
        "2025-07-25T13:00:00Z",
        "2025-07-25T18:00:00Z"
      ],
      "forecastLeadHours": [
        1,
        6
      ],
      "hourlyForecastTimesAcquired": 6,
      "rawFileCount": 28,
      "rawBytes": 43173298,
      "rawDirectory": "work/hrrr-2025",
      "manifest": "woodfibre-hrrr-2025-raw-manifest.json",
      "provenance": "woodfibre-hrrr-2025-provenance.json",
      "comparison": "woodfibre-hrrr-2025-findings.md",
      "processingAudit": "woodfibre-hrrr-2025-processing-audit.json",
      "comparisonPairs": 12,
      "observationSelectedRun": {
        "season": "JJA",
        "category": "both_northward",
        "startUtc": "2025-07-25T08:00:00Z",
        "endUtc": "2025-07-26T05:00:00Z",
        "consecutiveObservedPairs": 22,
        "wholeRunWeatherAcquired": false
      },
      "selection": "First six-hourly initialization after the previously selected run start; cycle and leads prescribed before forecast-error inspection.",
      "summary": [
        {
          "episode": "summer",
          "pointId": "10476F0",
          "pointName": "Squamish Airport",
          "scheduledPairs": 6,
          "eligibleVectorPairs": 6,
          "vectorRmseMs": 1.7756638147607435,
          "speedErrorMs": {
            "n": 6,
            "bias": -0.3699877578740561,
            "mae": 0.5776804359175232,
            "rmse": 0.7688912587557886
          },
          "eastErrorMs": {
            "n": 6,
            "bias": -0.9309686607036061,
            "mae": 0.9309686607036061,
            "rmse": 1.08686118448386
          },
          "northErrorMs": {
            "n": 6,
            "bias": -1.1891932786583275,
            "mae": 1.1891932786583275,
            "rmse": 1.4041776058294824
          },
          "temperatureErrorC": {
            "n": 6,
            "bias": 0.46888631184898105,
            "mae": 1.1511474609375156,
            "rmse": 1.3823744469126156
          },
          "directionEligiblePairs": 6,
          "directionMaeDegrees": 32.35277214693297
        },
        {
          "episode": "summer",
          "pointId": "10459NN",
          "pointName": "Pam Rocks",
          "scheduledPairs": 6,
          "eligibleVectorPairs": 6,
          "vectorRmseMs": 2.2853945599268815,
          "speedErrorMs": {
            "n": 6,
            "bias": -0.4914161275425161,
            "mae": 1.7687767546217592,
            "rmse": 1.8621313172281357
          },
          "eastErrorMs": {
            "n": 6,
            "bias": 0.1503541080118138,
            "mae": 0.8280462194038599,
            "rmse": 0.9136431431993974
          },
          "northErrorMs": {
            "n": 6,
            "bias": -0.34402699444762547,
            "mae": 1.9469584463587724,
            "rmse": 2.0948232625756544
          },
          "temperatureErrorC": {
            "n": 6,
            "bias": -0.40819702148435216,
            "mae": 0.40819702148435216,
            "rmse": 0.4518480232273152
          },
          "directionEligiblePairs": 6,
          "directionMaeDegrees": 23.158262063392087
        }
      ],
      "scopeLimit": "Only six hourly forecast times in this longer observation-selected run; not full-run coverage, annual weather, seasonal skill, source-site forcing or dispersion validation."
    }
  ],
  "forecastInventoryInterpretation": "Original September5 00UTC listing inventories retained as historical snapshots. HRDPS2.5km now has September2 and September5 acquired episodes; West1km has September5 leads1\u20136. RDPS remains inventory-only. Episode records supersede acquisition statuses without rewriting the snapshot file lists. Separate HRRR records now document two actually acquired 2025 cycles, six hourly forecast times each; original September listing snapshots and RDPS inventory status are unchanged.",
  "updateNote": "Updated5September2026 with completedJanuary/June2023WRF comparisons, full2025onsite-town study, station/profile follow-through and Canadianterrainprocessing. Earlier2025HRRRpartialcoverage remains unchanged. No source-siteforcing accepted. June2023road observations now have independent native-token checks; no clock/bearing interpretation assigned.",
  "forecastResolutionComparisons": [
    {
      "id": "hrdps_resolution_20260905T00Z_001_006",
      "datasets": [
        "hrdps_2p5",
        "hrdps_west_1"
      ],
      "modelObservationPairs": 24,
      "distinctObservationRecords": 12,
      "totalRawFiles": 68,
      "totalRawBytes": 112406800,
      "findings": "woodfibre-hrdps-resolution-findings-2026-09-05.md",
      "sourceProxyModelOrographyM": {
        "operational2p5km": 568.3948959960937,
        "west1km": 135.0
      },
      "sourceProxyNearestGridDistanceKm": {
        "operational2p5km": 1.1497198293082485,
        "west1km": 0.1702201567665504
      },
      "interpretation": "Finer source-area grid improves proximity/elevation but retains a substantial shoreline mismatch; mixed wind results in a short diagnostic."
    }
  ],
  "annualSurfaceWindBenchmark2025": {
    "status": "actually_acquired_and_processed",
    "pairedUsableObservations": 8730,
    "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": {}
      }
    ],
    "nativeCalendar": "2025 fixed PST",
    "selectedObservationEpisodes": 12,
    "matchingNumericalWeatherAcquired": "partial",
    "sourceSiteWeatherAcquired": false,
    "inversionDiagnosed": false,
    "files": [
      "woodfibre-annual-wind-benchmark-2025.md",
      "woodfibre-annual-wind-audit-2025.json",
      "woodfibre-two-station-winds-2025.csv",
      "woodfibre-paired-winds-2025.csv",
      "woodfibre-selected-wind-episodes-2025.csv",
      "woodfibre-hrrr-2025-findings.md",
      "woodfibre-hrrr-2025-comparison.csv",
      "woodfibre-hrrr-2025-provenance.json"
    ],
    "matchingNumericalWeatherCoverage": {
      "datasetId": "hrrr_conus_3km",
      "selectedObservationEpisodesTotal": 12,
      "selectedEpisodesWithPartialForecastCoverage": 2,
      "selectedEpisodesFullyCovered": 0,
      "selectedEpisodesWithoutAcquiredMatchingForecasts": 10,
      "hourlyForecastTimesPerAcquiredEpisode": 6,
      "uniqueValidUtcTimesAcquired": 12,
      "matchedStationHours": 24,
      "wholeAnnualForecastAcquired": false,
      "wholeTwelveEpisodeSetAcquired": false,
      "acquisitionIds": [
        "hrrr_3km_20250202T18Z_001_006",
        "hrrr_3km_20250725T12Z_001_006"
      ],
      "windows": [
        {
          "episode": "winter",
          "selectedObservedRun": {
            "season": "DJF",
            "category": "both_southward",
            "startUtc": "2025-02-02T17:00:00Z",
            "endUtc": "2025-02-06T23:00:00Z",
            "consecutiveObservedPairs": 103,
            "wholeRunWeatherAcquired": false
          },
          "initializationUtc": "2025-02-02T18:00:00Z",
          "validTimeRangeUtc": [
            "2025-02-02T19:00:00Z",
            "2025-02-03T00:00:00Z"
          ]
        },
        {
          "episode": "summer",
          "selectedObservedRun": {
            "season": "JJA",
            "category": "both_northward",
            "startUtc": "2025-07-25T08:00:00Z",
            "endUtc": "2025-07-26T05:00:00Z",
            "consecutiveObservedPairs": 22,
            "wholeRunWeatherAcquired": false
          },
          "initializationUtc": "2025-07-25T12:00:00Z",
          "validTimeRangeUtc": [
            "2025-07-25T13:00:00Z",
            "2025-07-25T18:00:00Z"
          ]
        }
      ],
      "note": "Only six instantaneous hourly forecast times from each longer run. No full-run, full twelve-case or annual meteorological coverage."
    }
  },
  "forecastArchivePreservation": [
    {
      "datasetId": "hrrr_conus_3km",
      "archive": "woodfibre-hrrr-2025-source-pack.zip",
      "archiveBytes": 72161945,
      "archiveSha256": "74ba719038ca540fa9787f0df282cb90d41a0241b8d133dfbf76e05b37a74e81",
      "memberCount": 102,
      "allMemberHashesVerified": 102,
      "rawMessagesVerified": 56,
      "zipCrcResult": "passed; no corrupt members",
      "manifest": "woodfibre-hrrr-2025-source-pack-manifest.json",
      "archiveCheck": "woodfibre-hrrr-2025-source-pack-check.json",
      "companionObservationArchive": "woodfibre-annual-wind-evidence-pack.zip",
      "contains": "Original selected messages, indices/listings/docs, scripts/protocol, 24 native matched observation properties and derived results; no installed decoder libraries.",
      "scope": "New frozen archive; preceding annual-observation and September 2026 forecast archives unchanged."
    }
  ],
  "ambientBaselineAcquisition": {
    "years": [
      2023,
      2024,
      2025
    ],
    "parameters": [
      "PM25",
      "NO",
      "NO2",
      "NOx",
      "O3",
      "SO2"
    ],
    "nativeRows": 157824,
    "numericValues": 149871,
    "missingValues": 7953,
    "clock": "Fixed PST hour-ending; native DATE/TIME 24 belongs to the labelled day",
    "primaryObjectiveChecks": 23538,
    "sensitivityChecks": 15672,
    "findings": "woodfibre-ambient-baseline-2023-2025-findings.md",
    "results": "woodfibre-ambient-baseline-2023-2025-results.json",
    "archive": "woodfibre-ambient-baseline-2023-2025-pack.zip"
  },
  "candidateBackgroundPreparation": {
    "status": "independently checked candidate inputs; spatial representativeness unresolved; not applied to map",
    "candidateYear": 2025,
    "sensitivityYears": [
      2023,
      2024
    ],
    "methodReview": "woodfibre-background-methods.md",
    "findings": "woodfibre-background-selection-2025-findings.md",
    "fixedValues": "woodfibre-background-selection-2025-fixed.csv",
    "no2HourOfDay": "woodfibre-background-selection-2025-no2-hours.csv",
    "ozonePrepared": "woodfibre-background-selection-2025-ozone.csv",
    "ozone": {
      "expectedHours": 8760,
      "observedHours": 8120,
      "interpolatedHours": 369,
      "monthlyMaximumSubstitutionHours": 271,
      "longestMissingRunHours": 127
    },
    "stationContext": {
      "report": "woodfibre-background-station-context.md",
      "napsId": "101603",
      "stationListReferenceYear": 2024,
      "nominalInletHeightAboveGroundM": 4,
      "siteType": "general population exposure",
      "scale": "neighbourhood",
      "historicalConfigurationContinuityEstablished": false
    }
  }
}
