{
  "extraction": {
    "protocol_sha256": "406e5f9c1046ebcdb091e0c52d22b8d5cbd8180b81b9045c028a91379f1793f3",
    "files": [
      {
        "station": "airport",
        "file": "x031y081x040y090.202301.10x10.d06.m3d",
        "sha256": "d4b1a5af05b14917892bd19eb9d7c9d52389f438322bbaf8f267803046644a8c",
        "bytes": 171396342,
        "source_url": "https://nrs.objectstore.gov.bc.ca/wrfdel/calpuff/3ddat/202301/d06/0308/x031y081x040y090.202301.10x10.d06.m3d",
        "complete_hours": 757,
        "first_data_offset": 6866,
        "first_utc": "2023-01-01T00:00:00Z",
        "last_utc": "2023-02-01T12:00:00Z",
        "selected_static_record": {
          "raw": "  33  84  49.7889 -123.1675   22 16 -999.0000 -999.0000 -999",
          "byte_offset": 2718
        },
        "counts": {
          "surface_records": 75700,
          "profile_records": 3028000
        },
        "selected_cell": {
          "distance_m": 778.1213867907702,
          "tile": "x031y081x040y090",
          "i": 33,
          "j": 84,
          "latitude_token": "49.7889",
          "longitude_token": "-123.1675",
          "terrain_HGT_rounded_m_MSL_token": "22",
          "landuse_LU_INDEX_token": "16",
          "source_line": 81,
          "source_url": "https://nrs.objectstore.gov.bc.ca/wrfdel/calpuff/3ddat/202301/d06/0308/x031y081x040y090.202301.10x10.d06.m3d"
        },
        "profile_values_interpreted": false
      },
      {
        "station": "pam-rocks",
        "file": "x021y051x030y060.202301.10x10.d06.m3d",
        "sha256": "54e3afa5eb03c65aa0165571680485aae68456028e13ebd662e0edd3d0540e21",
        "bytes": 170425134,
        "source_url": "https://nrs.objectstore.gov.bc.ca/wrfdel/calpuff/3ddat/202301/d06/0205/x021y051x030y060.202301.10x10.d06.m3d",
        "complete_hours": 757,
        "first_data_offset": 6866,
        "first_utc": "2023-01-01T00:00:00Z",
        "last_utc": "2023-02-01T12:00:00Z",
        "selected_static_record": {
          "raw": "  25  59  49.4874 -123.2994    0 16 -999.0000 -999.0000 -999",
          "byte_offset": 5890
        },
        "counts": {
          "surface_records": 75700,
          "profile_records": 3028000
        },
        "selected_cell": {
          "distance_m": 42.456526660389365,
          "tile": "x021y051x030y060",
          "i": 25,
          "j": 59,
          "latitude_token": "49.4874",
          "longitude_token": "-123.2994",
          "terrain_HGT_rounded_m_MSL_token": "0",
          "landuse_LU_INDEX_token": "16",
          "source_line": 133,
          "source_url": "https://nrs.objectstore.gov.bc.ca/wrfdel/calpuff/3ddat/202301/d06/0205/x021y051x030y060.202301.10x10.d06.m3d"
        },
        "profile_values_interpreted": false
      }
    ]
  },
  "comparison": {
    "protocol_sha256": "406e5f9c1046ebcdb091e0c52d22b8d5cbd8180b81b9045c028a91379f1793f3",
    "paired_slots": 1488,
    "observation_present": 1364,
    "missing_slots": 124,
    "speed_pairs": 1364,
    "vector_pairs": 1364,
    "regime_classification_counts": {
      "selected": 389,
      "not_selected": 234,
      "unknown": 121
    },
    "summary_groups": 114,
    "direction_groups": 342,
    "missing_labels": {
      "airport": [
        "2023-01-11T10:00:00-08:00",
        "2023-01-11T11:00:00-08:00",
        "2023-01-11T12:00:00-08:00"
      ],
      "pam-rocks": [
        "2023-01-17T05:00:00-08:00",
        "2023-01-17T06:00:00-08:00",
        "2023-01-17T07:00:00-08:00",
        "2023-01-17T08:00:00-08:00",
        "2023-01-17T09:00:00-08:00",
        "2023-01-17T10:00:00-08:00",
        "2023-01-17T11:00:00-08:00",
        "2023-01-17T17:00:00-08:00",
        "2023-01-17T18:00:00-08:00",
        "2023-01-17T19:00:00-08:00",
        "2023-01-17T20:00:00-08:00",
        "2023-01-17T21:00:00-08:00",
        "2023-01-17T22:00:00-08:00",
        "2023-01-17T23:00:00-08:00",
        "2023-01-18T00:00:00-08:00",
        "2023-01-18T01:00:00-08:00",
        "2023-01-18T02:00:00-08:00",
        "2023-01-18T03:00:00-08:00",
        "2023-01-18T04:00:00-08:00",
        "2023-01-18T05:00:00-08:00",
        "2023-01-18T06:00:00-08:00",
        "2023-01-18T07:00:00-08:00",
        "2023-01-18T08:00:00-08:00",
        "2023-01-18T09:00:00-08:00",
        "2023-01-18T10:00:00-08:00",
        "2023-01-18T11:00:00-08:00",
        "2023-01-18T12:00:00-08:00",
        "2023-01-18T13:00:00-08:00",
        "2023-01-18T23:00:00-08:00",
        "2023-01-19T00:00:00-08:00",
        "2023-01-19T01:00:00-08:00",
        "2023-01-19T02:00:00-08:00",
        "2023-01-19T03:00:00-08:00",
        "2023-01-19T04:00:00-08:00",
        "2023-01-19T05:00:00-08:00",
        "2023-01-19T06:00:00-08:00",
        "2023-01-19T07:00:00-08:00",
        "2023-01-19T08:00:00-08:00",
        "2023-01-19T09:00:00-08:00",
        "2023-01-19T10:00:00-08:00",
        "2023-01-24T04:00:00-08:00",
        "2023-01-24T05:00:00-08:00",
        "2023-01-24T06:00:00-08:00",
        "2023-01-24T07:00:00-08:00",
        "2023-01-24T08:00:00-08:00",
        "2023-01-24T09:00:00-08:00",
        "2023-01-24T10:00:00-08:00",
        "2023-01-24T16:00:00-08:00",
        "2023-01-24T17:00:00-08:00",
        "2023-01-24T18:00:00-08:00",
        "2023-01-24T19:00:00-08:00",
        "2023-01-24T20:00:00-08:00",
        "2023-01-24T21:00:00-08:00",
        "2023-01-24T22:00:00-08:00",
        "2023-01-24T23:00:00-08:00",
        "2023-01-25T00:00:00-08:00",
        "2023-01-25T01:00:00-08:00",
        "2023-01-25T02:00:00-08:00",
        "2023-01-25T03:00:00-08:00",
        "2023-01-25T04:00:00-08:00",
        "2023-01-25T05:00:00-08:00",
        "2023-01-25T06:00:00-08:00",
        "2023-01-25T07:00:00-08:00",
        "2023-01-25T08:00:00-08:00",
        "2023-01-25T09:00:00-08:00",
        "2023-01-25T10:00:00-08:00",
        "2023-01-25T11:00:00-08:00",
        "2023-01-25T15:00:00-08:00",
        "2023-01-25T16:00:00-08:00",
        "2023-01-25T17:00:00-08:00",
        "2023-01-25T18:00:00-08:00",
        "2023-01-25T19:00:00-08:00",
        "2023-01-25T20:00:00-08:00",
        "2023-01-25T21:00:00-08:00",
        "2023-01-25T22:00:00-08:00",
        "2023-01-25T23:00:00-08:00",
        "2023-01-26T00:00:00-08:00",
        "2023-01-26T01:00:00-08:00",
        "2023-01-26T02:00:00-08:00",
        "2023-01-26T03:00:00-08:00",
        "2023-01-26T04:00:00-08:00",
        "2023-01-26T05:00:00-08:00",
        "2023-01-26T06:00:00-08:00",
        "2023-01-26T07:00:00-08:00",
        "2023-01-26T08:00:00-08:00",
        "2023-01-26T09:00:00-08:00",
        "2023-01-26T10:00:00-08:00",
        "2023-01-26T11:00:00-08:00",
        "2023-01-26T12:00:00-08:00",
        "2023-01-26T13:00:00-08:00",
        "2023-01-26T14:00:00-08:00",
        "2023-01-26T15:00:00-08:00",
        "2023-01-26T16:00:00-08:00",
        "2023-01-26T17:00:00-08:00",
        "2023-01-26T18:00:00-08:00",
        "2023-01-26T19:00:00-08:00",
        "2023-01-26T20:00:00-08:00",
        "2023-01-26T21:00:00-08:00",
        "2023-01-26T22:00:00-08:00",
        "2023-01-26T23:00:00-08:00",
        "2023-01-27T00:00:00-08:00",
        "2023-01-27T01:00:00-08:00",
        "2023-01-27T02:00:00-08:00",
        "2023-01-27T03:00:00-08:00",
        "2023-01-27T04:00:00-08:00",
        "2023-01-27T05:00:00-08:00",
        "2023-01-27T06:00:00-08:00",
        "2023-01-27T07:00:00-08:00",
        "2023-01-27T08:00:00-08:00",
        "2023-01-27T09:00:00-08:00",
        "2023-01-28T01:00:00-08:00",
        "2023-01-28T02:00:00-08:00",
        "2023-01-28T03:00:00-08:00",
        "2023-01-28T04:00:00-08:00",
        "2023-01-28T05:00:00-08:00",
        "2023-01-28T06:00:00-08:00",
        "2023-01-28T07:00:00-08:00",
        "2023-01-28T08:00:00-08:00",
        "2023-01-28T09:00:00-08:00",
        "2023-01-28T10:00:00-08:00",
        "2023-01-28T11:00:00-08:00"
      ]
    },
    "model_forcing_accepted": false,
    "independent_validation": false,
    "inputs_and_outputs_sha256": {
      "extract.py": "e70ddc98ab4d09afdf7b08a62d496e92754339e670af3a97af84fc29d1d49f76",
      "compare.py": "c6726b6a6997df511ef493e1ed66333b6a2ab522132a9c8007491abacc12c9a6",
      "protocol.json": "406e5f9c1046ebcdb091e0c52d22b8d5cbd8180b81b9045c028a91379f1793f3",
      "protocol-clarification.json": "11360ba95f21ce54d2a50b2befca0f71f08a97677fdde7d4270a1a035341e9fd",
      "inputs/acquisition.json": "873a93c4b0b8a7dca3d383dfd08c3d73beb1f57e66f658584543e513c0afdfc7",
      "native/acquisition.json": "86cbcc7b81522fc65ecb66a0321282c5270191e6bce497ce36bd8e6087c6714f",
      "results/regime-classification.csv": "7b3807a4fc3b35b5c2be7e1b514e6f7a261c9f0d084b5f094d75b5c65b53af01",
      "results/native-surface.json": "baafe96c437641ae18642f863ad3d2f670588b1f4be67ae630be63494fd4e9dd",
      "results/paired.csv": "ac1771fbb92af2421ba07fb904ea09f3f453332e2f5a2dc345952c8427530ee1",
      "results/summary.csv": "f531692730b2d8acde1e2226ea5b6977a2c75f70c6318b0c92290d32bc9e368e",
      "results/direction.csv": "107bf0643b672361a39767d30d4593b070821cb92d50c38329e267697361e694",
      "results/reported-calm-distribution.csv": "2e2d9c4e6ef143a45a0aca71e35d8baf9fd14ef2388d3ff3206f16e29e147064"
    }
  },
  "independent": {
    "compared_at_utc": "2026-09-05T22:24:12.179572+00:00",
    "independent_frozen_at_utc": "2026-09-05T22:19:11.323363+00:00",
    "independent_freeze_sha256": "18139c74ff1beb813386a8611146f0759c15d93588360fcd9245f20a35206759",
    "independent_results_frozen_before_root_results_read": true,
    "root_analysis_code_read": false,
    "root_files_modified": false,
    "numerical_tolerance": {
      "absolute": 1e-10,
      "relative": 0,
      "scope": "Numerical scalar comparisons only; strings, nulls, booleans, row keys and counts must match after explicitly documented schema normalization."
    },
    "row_counts": {
      "paired": 1488,
      "summaries": 114,
      "direction_groups": 342,
      "calm_distribution": 646,
      "regime_classifications": 744,
      "native_selected_surface": 1514
    },
    "assertions_total": 173853,
    "assertions_by_category": {
      "hashes": 124,
      "row_sets": 24,
      "paired": 53568,
      "direction_slot_masks": 4464,
      "summary": 2736,
      "direction": 4446,
      "reported_calm": 5168,
      "regime": 8928,
      "native_surface": 19682,
      "direct_original_bytes": 3028,
      "csv_json": 71522,
      "source_audits": 41,
      "headline": 96,
      "headline_direction": 26
    },
    "discrepancy_total": 0,
    "discrepancies": [],
    "maximum_floating_absolute_difference": {
      "absolute_difference": 3.552713678800501e-15,
      "location": "paired/('pam-rocks', '2023-01-05T11:00:00Z')/obs_speed_m_s",
      "root_value": 20.555555555555554,
      "independent_value": 20.555555555555557
    },
    "nonzero_floating_differences": {
      "paired": 1405,
      "summary": 198,
      "headline": 11
    },
    "representation_normalizations": {
      "native_null_flag_rendered_as_literal_null": 5961,
      "root_calm_model_bearing_null_independent_native_bearing_retained": 2,
      "root_model_only_vector_fields_retained_for_excluded_pair": 248,
      "root_regime_reason_valid_observation_independent_more_specific_reason": 623
    },
    "representation_notes": [
      "Field names, nested versus flat summary schema, group order and hour labels (0 versus 00:00) are mapped explicitly; all root fields are checked.",
      "For present observations root stores native JSON null flags as literal null strings; absence is a separate null/presence flag. Independent JSON keeps null values.",
      "At zero model speed root suppresses the physical bearing while independent output retains the native bearing token/value plus model_direction_defined=false. Both use zero vectors and exclude calm bearings.",
      "Root keeps model-only vector components at missing-observation slots; independent paired output leaves them null. These root values were verified from frozen independent native wind values and stay excluded from metrics.",
      "Regime reason valid_observation is less specific than independent selected/outside-sector-or-speed/valid-calm reasons; all classifications and native tokens agree if discrepancy_total is zero.",
      "Record hashes include LF. Native record strings omit LF. Both representations were checked directly against every selected original byte offset.",
      "Independent observed speeds use Decimal division before binary64; root numeric outputs can differ by harmless binary64 rounding. All nonzero differences and the maximum are reported separately."
    ],
    "input_and_result_hashes": {
      "work/bc-wrf-wind-january2023/independent/independent-freeze.json": {
        "sha256": "18139c74ff1beb813386a8611146f0759c15d93588360fcd9245f20a35206759",
        "bytes": 2311
      },
      "work/bc-wrf-wind-january2023/independent/paired-independent.json": {
        "sha256": "b8a2b8c5eb7b1a79cc98af2de27118866d2fe668746bc50161b8420196e65b32",
        "bytes": 3045109
      },
      "work/bc-wrf-wind-january2023/independent/summaries-independent.json": {
        "sha256": "4dbd8f0ce2983d66abd5bea561bdd3820a87960f46839e3f1237c8ec9552e98c",
        "bytes": 360208
      },
      "work/bc-wrf-wind-january2023/independent/directions-independent.json": {
        "sha256": "0e029fca0b442d247b28de77ba2910a4356cff6fe97cecd44bf15a4099f4797f",
        "bytes": 131163
      },
      "work/bc-wrf-wind-january2023/independent/reported-calm-cdf-independent.json": {
        "sha256": "95c900d3d277a6a0e59faaee2d108008bc3c286432ea73254575ae9199f3e15d",
        "bytes": 187856
      },
      "work/bc-wrf-wind-january2023/independent/pam-regimes-independent.json": {
        "sha256": "3704baad54553b3b98f96d290b691b884055b1934653a4a83a288b89df771c75",
        "bytes": 616550
      },
      "work/bc-wrf-wind-january2023/independent/checks-independent.json": {
        "sha256": "c2ca61fbbd414c7e18d88d3151441210bac254349fe99f6e3df591558cf799dc",
        "bytes": 54691
      },
      "work/bc-wrf-wind-january2023/independent/native-selected-surface-records.csv": {
        "sha256": "d44b59bfeb25eb993c06dab8f87c304196cd07c99eef70a4c5372a3b6b93bf8b",
        "bytes": 366104
      },
      "work/bc-wrf-wind-january2023/results/paired.json": {
        "sha256": "c6f122447aec5f94a7d5c46306b63c98dde602e35b8f12242deedf268857bda0",
        "bytes": 1986906
      },
      "work/bc-wrf-wind-january2023/results/summary.json": {
        "sha256": "cacc745a50d312e7533e6593e0ad16bef35aefb254b5d3f9819c5f78c424b137",
        "bytes": 97356
      },
      "work/bc-wrf-wind-january2023/results/direction.json": {
        "sha256": "5a6b023ef62892bc9dee4b93f93b43adfdd7ad7caa53180269fa54f82bb86fa7",
        "bytes": 129609
      },
      "work/bc-wrf-wind-january2023/results/reported-calm-distribution.json": {
        "sha256": "a763baa9749c046df22a4e6a748a9f05c2e2e58c4fa83d85848958171e900ee8",
        "bytes": 129817
      },
      "work/bc-wrf-wind-january2023/results/regime-classification.json": {
        "sha256": "e4f36e605326b60b3f93e585a9dc5343e0f430e420966e9d96d55c4deb4266c2",
        "bytes": 342289
      },
      "work/bc-wrf-wind-january2023/results/native-surface.json": {
        "sha256": "baafe96c437641ae18642f863ad3d2f670588b1f4be67ae630be63494fd4e9dd",
        "bytes": 796488
      },
      "work/bc-wrf-wind-january2023/results/extraction-checks.json": {
        "sha256": "83adcbeb497ddf0a2388332f152a4f9dbf98bc2520842bb26e61dbe7f3738fcd",
        "bytes": 2600
      },
      "work/bc-wrf-wind-january2023/results/comparison-checks.json": {
        "sha256": "8af33375ac20465e6c27a469c3f3747a9613798fadb374b18780960e82be8b97",
        "bytes": 6071
      },
      "work/bc-wrf-wind-january2023/results/run-summary.json": {
        "sha256": "9a1234b7d1876d1e9c9331f70e1134314ba1bbcda57198b9f729a235d015af5c",
        "bytes": 10998
      },
      "work/bc-wrf-wind-january2023/native/x031y081x040y090.202301.10x10.d06.m3d": {
        "sha256": "d4b1a5af05b14917892bd19eb9d7c9d52389f438322bbaf8f267803046644a8c",
        "bytes": 171396342
      },
      "work/bc-wrf-wind-january2023/native/x021y051x030y060.202301.10x10.d06.m3d": {
        "sha256": "54e3afa5eb03c65aa0165571680485aae68456028e13ebd662e0edd3d0540e21",
        "bytes": 170425134
      },
      "work/bc-wrf-wind-january2023/results/paired.csv": {
        "sha256": "ac1771fbb92af2421ba07fb904ea09f3f453332e2f5a2dc345952c8427530ee1",
        "bytes": 642311
      },
      "work/bc-wrf-wind-january2023/results/summary.csv": {
        "sha256": "f531692730b2d8acde1e2226ea5b6977a2c75f70c6318b0c92290d32bc9e368e",
        "bytes": 27623
      },
      "work/bc-wrf-wind-january2023/results/direction.csv": {
        "sha256": "107bf0643b672361a39767d30d4593b070821cb92d50c38329e267697361e694",
        "bytes": 23919
      },
      "work/bc-wrf-wind-january2023/results/reported-calm-distribution.csv": {
        "sha256": "2e2d9c4e6ef143a45a0aca71e35d8baf9fd14ef2388d3ff3206f16e29e147064",
        "bytes": 31059
      },
      "work/bc-wrf-wind-january2023/results/regime-classification.csv": {
        "sha256": "7b3807a4fc3b35b5c2be7e1b514e6f7a261c9f0d084b5f094d75b5c65b53af01",
        "bytes": 75970
      },
      "work/bc-wrf-wind-january2023/protocol.json": {
        "sha256": "406e5f9c1046ebcdb091e0c52d22b8d5cbd8180b81b9045c028a91379f1793f3",
        "bytes": 9539
      },
      "work/bc-wrf-wind-january2023/protocol-clarification.json": {
        "sha256": "11360ba95f21ce54d2a50b2befca0f71f08a97677fdde7d4270a1a035341e9fd",
        "bytes": 801
      },
      "work/bc-wrf-wind-january2023/inputs/acquisition.json": {
        "sha256": "873a93c4b0b8a7dca3d383dfd08c3d73beb1f57e66f658584543e513c0afdfc7",
        "bytes": 1692
      },
      "work/bc-wrf-wind-january2023/native/acquisition.json": {
        "sha256": "86cbcc7b81522fc65ecb66a0321282c5270191e6bce497ce36bd8e6087c6714f",
        "bytes": 2065
      },
      "work/bc-wrf-wind-january2023/protocol-freeze.json": {
        "sha256": "9b5acf662661bdfbe03f4c67c7238c1478ecbddaf35cf49e2bbec9609608f030",
        "bytes": 181
      },
      "work/bc-wrf-wind-january2023/native/protocol-method-review.md": {
        "sha256": "9402abaea548eb7b3d7470e8ac05c32d1f9d9d3835ff6343af18681329e75fbd",
        "bytes": 1794
      },
      "work/bc-wrf-wind-june2023/protocol.json": {
        "sha256": "f5eec8ec46150815c95e1002502f9afc6005cfb25db2a0db49f07a9c2b6f71b3",
        "bytes": 7261
      },
      "work/bc-wrf-access/pilot/terrain-audit/nearest-grid-points.json": {
        "sha256": "eb21b56181636f19299c40178dbc0c4503d3f709e5b053f623af7c79efcd56bd",
        "bytes": 27305
      },
      "work/bc-wrf-access/pilot/format-review/field-schema.json": {
        "sha256": "decb49646d4a1b99fb1df2131c067fb4bb4790eb92d6a293b67425582661855d",
        "bytes": 15532
      },
      "work/bc-wrf-wind-june2023/independent/reconstruct.py": {
        "sha256": "d58f49de04538fb0c3a6e6cf18cc0b27a5adedb096f99658b6c264fc2bd942fc",
        "bytes": 23911
      },
      "work/bc-wrf-wind-january2023/inputs/field-schema.json": {
        "sha256": "decb49646d4a1b99fb1df2131c067fb4bb4790eb92d6a293b67425582661855d",
        "bytes": 15532
      },
      "work/bc-wrf-wind-january2023/native/acquisition-file-freeze.json": {
        "sha256": "5131ad5dd83fa6759a1a0c09f29019215764b7688426eb868a24d7514afde46d",
        "bytes": 4634
      },
      "work/bc-wrf-wind-january2023/inputs/airport-2023-01-native.json": {
        "sha256": "13b392fb80ae54b2a1abc8466e032857bd65122fd1596618444d38ef3d233598",
        "bytes": 762060
      },
      "work/bc-wrf-wind-january2023/inputs/pam-rocks-2023-01-native.json": {
        "sha256": "746fd2e4d155676a55b0f64d1d6239a12cefc754d9513d3c22e03907954374a0",
        "bytes": 644508
      }
    },
    "scope_limit": "Computational replication only. No model acceptance, independent atmospheric validation, FDDA resolution, exposure verification, plume scoring or parameter fitting."
  },
  "figure": {
    "scope": "Figure-only rendering of paired.csv and existing monthly summary values. No new meteorological metrics, filtering, date selection or calibration.",
    "script": "figure/plot.py (in reproduction kit)",
    "script_sha256": "7607a77976dc94d9fb998cdf8228771b2c580d35a767e856b8c1dd31fdc0a798",
    "inputs": [
      {
        "path": "results/paired.csv",
        "sha256": "ac1771fbb92af2421ba07fb904ea09f3f453332e2f5a2dc345952c8427530ee1"
      },
      {
        "path": "results/summary.csv",
        "sha256": "f531692730b2d8acde1e2226ea5b6977a2c75f70c6318b0c92290d32bc9e368e"
      },
      {
        "path": "protocol.json",
        "sha256": "406e5f9c1046ebcdb091e0c52d22b8d5cbd8180b81b9045c028a91379f1793f3"
      }
    ],
    "input_hashes_unchanged_after_render": true,
    "period": "2023-01-01 00:00 to 2023-02-01 00:00 half-open, fixed PST UTC-8",
    "title": "January 2023 \u00b7 modelled and observed winds",
    "common_wind_axis_max_m_s": 24,
    "date_display_timezone": "PST fixed UTC-8; native timestamps verified before dropping timezone only for display",
    "station_checks": [
      {
        "station": "airport",
        "time_series_slots": 744,
        "observed_finite_points": 741,
        "model_finite_points": 744,
        "observation_missing_gaps": 3,
        "missing_runs": [
          {
            "start_missing_pst": "2023-01-11T10:00:00",
            "last_missing_pst": "2023-01-11T12:00:00",
            "missing_slots": 3,
            "visual_span_start": "2023-01-11T09:30:00",
            "visual_span_end": "2023-01-11T12:30:00"
          }
        ],
        "paired_scatter_points": 741,
        "scatter_uses_all_speed_eligible_rows": true,
        "time_series_data_unchanged": true,
        "scatter_data_unchanged": true,
        "no_jitter": true,
        "no_regression": true,
        "summary_annotation": "Bias +1.95 \u00b7 RMSE 2.70 m/s",
        "cell": {
          "distance_m": 778.1213867907702,
          "tile": "x031y081x040y090",
          "i": 33,
          "j": 84,
          "latitude_token": "49.7889",
          "longitude_token": "-123.1675",
          "terrain_HGT_rounded_m_MSL_token": "22",
          "landuse_LU_INDEX_token": "16",
          "source_line": 81,
          "source_url": "https://nrs.objectstore.gov.bc.ca/wrfdel/calpuff/3ddat/202301/d06/0308/x031y081x040y090.202301.10x10.d06.m3d"
        },
        "observation_source_url": "https://api.weather.gc.ca/collections/climate-hourly/items?f=json&limit=1000&CLIMATE_IDENTIFIER=10476F0&LOCAL_YEAR=2023&LOCAL_MONTH=1"
      },
      {
        "station": "pam-rocks",
        "time_series_slots": 744,
        "observed_finite_points": 623,
        "model_finite_points": 744,
        "observation_missing_gaps": 121,
        "missing_runs": [
          {
            "start_missing_pst": "2023-01-17T05:00:00",
            "last_missing_pst": "2023-01-17T11:00:00",
            "missing_slots": 7,
            "visual_span_start": "2023-01-17T04:30:00",
            "visual_span_end": "2023-01-17T11:30:00"
          },
          {
            "start_missing_pst": "2023-01-17T17:00:00",
            "last_missing_pst": "2023-01-18T13:00:00",
            "missing_slots": 21,
            "visual_span_start": "2023-01-17T16:30:00",
            "visual_span_end": "2023-01-18T13:30:00"
          },
          {
            "start_missing_pst": "2023-01-18T23:00:00",
            "last_missing_pst": "2023-01-19T10:00:00",
            "missing_slots": 12,
            "visual_span_start": "2023-01-18T22:30:00",
            "visual_span_end": "2023-01-19T10:30:00"
          },
          {
            "start_missing_pst": "2023-01-24T04:00:00",
            "last_missing_pst": "2023-01-24T10:00:00",
            "missing_slots": 7,
            "visual_span_start": "2023-01-24T03:30:00",
            "visual_span_end": "2023-01-24T10:30:00"
          },
          {
            "start_missing_pst": "2023-01-24T16:00:00",
            "last_missing_pst": "2023-01-25T11:00:00",
            "missing_slots": 20,
            "visual_span_start": "2023-01-24T15:30:00",
            "visual_span_end": "2023-01-25T11:30:00"
          },
          {
            "start_missing_pst": "2023-01-25T15:00:00",
            "last_missing_pst": "2023-01-27T09:00:00",
            "missing_slots": 43,
            "visual_span_start": "2023-01-25T14:30:00",
            "visual_span_end": "2023-01-27T09:30:00"
          },
          {
            "start_missing_pst": "2023-01-28T01:00:00",
            "last_missing_pst": "2023-01-28T11:00:00",
            "missing_slots": 11,
            "visual_span_start": "2023-01-28T00:30:00",
            "visual_span_end": "2023-01-28T11:30:00"
          }
        ],
        "paired_scatter_points": 623,
        "scatter_uses_all_speed_eligible_rows": true,
        "time_series_data_unchanged": true,
        "scatter_data_unchanged": true,
        "no_jitter": true,
        "no_regression": true,
        "summary_annotation": "Bias -2.14 \u00b7 RMSE 4.09 m/s",
        "cell": {
          "distance_m": 42.456526660389365,
          "tile": "x021y051x030y060",
          "i": 25,
          "j": 59,
          "latitude_token": "49.4874",
          "longitude_token": "-123.2994",
          "terrain_HGT_rounded_m_MSL_token": "0",
          "landuse_LU_INDEX_token": "16",
          "source_line": 133,
          "source_url": "https://nrs.objectstore.gov.bc.ca/wrfdel/calpuff/3ddat/202301/d06/0205/x021y051x030y060.202301.10x10.d06.m3d"
        },
        "observation_source_url": "https://api.weather.gc.ca/collections/climate-hourly/items?f=json&limit=1000&CLIMATE_IDENTIFIER=10459NN&LOCAL_YEAR=2023&LOCAL_MONTH=1"
      }
    ],
    "all_visible_text_within_canvas": true,
    "figure_inches": [
      16,
      10
    ],
    "png_dpi": 220,
    "software": {
      "python": "3.12.14 (main, Aug 25 2026, 13:50:33) [Clang 22.1.3 ]",
      "numpy": "2.5.2",
      "matplotlib": "3.11.1"
    },
    "visual_inspection": "See visual-review.json for the separate exported-image inspection and matching artifact hashes.",
    "independent_science_review": "Status is owned by the separate numerical audit; figure checks do not substitute for it.",
    "outputs": [
      {
        "path": "figure/output/woodfibre-wrf-wind-january2023.png",
        "bytes": 780650,
        "sha256": "89fcae355c86902586961c08299aaa17eb9a7c415bd77a6d12a71b3bd3c842af"
      },
      {
        "path": "figure/output/woodfibre-wrf-wind-january2023.svg",
        "bytes": 330111,
        "sha256": "791ea6b18dce1fae796a7f000042fded1b83ad3a33a4a6341cdbd97dac97f744"
      }
    ]
  },
  "scope": "Independent numerical reconstruction of this frozen surface-wind diagnostic; not independent meteorological validation. No model forcing adopted.",
  "source_requests": "No human request or submission sent; direct public-file retrieval only.",
  "implementation_review": "No consequential error found for fixed original inputs. Reproduction requires authenticated extraction before comparison, as documented in kit."
}
