{
  "built": {
    "at": null,
    "builder_refs": {},
    "commit": null,
    "repo": "billmallard/makerplane-data",
    "run_url": null,
    "runner": null
  },
  "checks": [
    {
      "blocking": true,
      "cannot_catch": "A pack_meta that is well formed but names the wrong id or cycle for the bytes inside.",
      "expected": "pack_meta present; kind is one the device knows",
      "id": "PACK-001",
      "measured": "id=airports-canada kind=airports cycle=2026.06 schema_version=1",
      "status": "pass",
      "title": "pack_meta is readable and names a known kind"
    },
    {
      "blocking": true,
      "cannot_catch": "A license tag or attribution that is present but wrong for the data.",
      "expected": "both non-empty",
      "id": "PACK-002",
      "measured": "missing: license",
      "status": "fail",
      "title": "Attribution and license are recorded in pack_meta"
    },
    {
      "blocking": true,
      "cannot_catch": "Whether the label matches where the data really came from. For a kind with a default label (ORIGIN_BY_KIND in packtools/report.py) the label comes from that table, not from the builder or the pack, so the check is tautological and always passes; measured says which. With --origin it shows only that the label given is one of the three.",
      "expected": "one of federal / community / user-supplied",
      "id": "PACK-003",
      "measured": "community (defaulted by kind airports, not read from the pack)",
      "since": "AER-699",
      "status": "pass",
      "title": "Origin label is federal, community or user-supplied"
    },
    {
      "blocking": false,
      "cannot_catch": "A recorded source that is not the one the build actually used, and an edition or sha256 that is well formed but wrong.",
      "expected": "at least one source, each with a non-empty edition and a 64-hex sha256",
      "id": "PACK-004",
      "measured": null,
      "note": "Retro record: this edition was published before pack-report/1 existed, and the upstream inputs it was built from were not recorded then and cannot be recovered from the pack.",
      "status": "not-run",
      "title": "Upstream sources are recorded"
    },
    {
      "blocking": true,
      "cannot_catch": "Wrong values the reader accepts. It shows the device can open and query these bytes, not that what it returns is right. The queries cover fixed points only: US kinds, 5 CONUS metros (Denver, Seattle, Atlanta, Los Angeles and Chicago); airports (Canada), Toronto and Vancouver; water, Puget Sound, Lake Michigan and Lake Ontario; navaids, idents DEN, SEA, LAX; procedures, airways V23, J80, V1; terrain, one native tile or the coarsest mosaic level. So it cannot catch a missing Alaska, Hawaii or Puerto Rico, or any state or province that holds none of those points.",
      "expected": "the reader opens the pack and every query returns data",
      "id": "ACC-001",
      "measured": "opened; 2/2 queries returned data",
      "status": "pass",
      "title": "Device acceptance: pyEfis's own reader opens the pack and answers a fixed query set"
    },
    {
      "blocking": true,
      "cannot_catch": "Wrong data in a structurally sound file, and an index whose contents do not match its table: quick_check does not verify index contents, which is SQLite's documented difference from integrity_check. IDX-001 covers the R-trees.",
      "expected": "ok",
      "id": "SQL-001",
      "measured": "ok",
      "status": "pass",
      "title": "SQLite structure is sound (PRAGMA quick_check)"
    },
    {
      "blocking": true,
      "cannot_catch": "A table that has rows but is missing most of them.",
      "expected": "0 empty tables, apart from those declared empty by design for the kind (water: waterway_lines)",
      "id": "ROW-001",
      "measured": 0,
      "status": "pass",
      "title": "No data table is empty"
    },
    {
      "blocking": false,
      "cannot_catch": "A change that keeps counts steady (rows replaced by wrong rows), any defect already present in the previous edition, and a loss under the threshold (for obstacles at 10%, about 65,000 rows).",
      "expected": "Provisional threshold: no table moves more than 10%; a larger move needs a build note",
      "id": "ROW-002",
      "measured": null,
      "not_run_reason": "no-previous",
      "note": "Retro record: no earlier edition is listed, so there is nothing to compare against. Editions published before the ones the manifest lists were pruned and are not known here.",
      "provisional": "no edition-to-edition baseline yet (one published pair per kind when set); a warn level for a person to look at, to be re-set once enough records exist (AER-4102)",
      "status": "not-run",
      "title": "Row counts against the previous edition"
    },
    {
      "blocking": true,
      "cannot_catch": "A table dropped together with a schema_version bump that should not have been; the bump is taken as the declaration that the drop is intended.",
      "expected": "every table in the previous edition is still present, unless schema_version changed",
      "id": "ROW-003",
      "measured": null,
      "not_run_reason": "no-previous",
      "note": "Retro record: no earlier edition is listed, so there is nothing to compare against. Editions published before the ones the manifest lists were pruned and are not known here.",
      "since": "AER-4102",
      "status": "not-run",
      "title": "No table of the previous edition has disappeared"
    },
    {
      "blocking": true,
      "cannot_catch": "A plausible coordinate in the wrong place, such as a transposed digit that still lands on land. On airway_legs, a leg with a NULL fix position (no check counts those).",
      "expected": "0 bad coordinates. On point tables a NULL latitude or longitude is bad; on procedure and airway legs a leg with no fix position is left to PROC-FIX-001",
      "id": "GEO-001",
      "measured": 0,
      "status": "pass",
      "title": "Coordinates are present, valid and not at 0,0"
    },
    {
      "blocking": true,
      "cannot_catch": "Two different things given the same correct-looking identifier in different tables, and a wrong identifier that happens to be unique.",
      "expected": "0 duplicates",
      "id": "UNQ-001",
      "measured": "airports(icao) 0",
      "status": "pass",
      "title": "Identifiers that must be unique are unique"
    }
  ],
  "gated": true,
  "metrics": {
    "ACC-001": [
      {
        "count": 4,
        "min": 1,
        "ok": true,
        "query": "airports within 20 nm of Toronto"
      },
      {
        "count": 3,
        "min": 1,
        "ok": true,
        "query": "airports within 20 nm of Vancouver"
      }
    ]
  },
  "notice": "Experimental / Amateur-Built use only. Not certified. This data is provided as-is with no warranty and any use of the data is at your own risk.",
  "origin": "community",
  "pack": {
    "bytes": 393216,
    "cycle": "2026.06",
    "id": "airports-canada",
    "kind": "airports",
    "schema_version": "1",
    "sha256": "9e08ec278d68a9c524556fef4f587e0dd21630c76e4d4c07d6bf14d140772b75"
  },
  "previous": null,
  "record": "retro",
  "retro": {
    "commit": "0dc3dcd2bbe2337d6a08a2846af9c395ea561ffb",
    "probe_refs": {
      "pyEfis": "31110ec077522536e440a2bda9f1eae7083495de"
    },
    "run_url": null,
    "runner": "local",
    "written_at": "2026-11-01T00:50:42Z"
  },
  "schema": "pack-report/1",
  "sources": [],
  "summary": {
    "fail": 1,
    "not_run": 3,
    "pass": 7,
    "warn": 0
  },
  "tables": {
    "airports": {
      "prev": null,
      "rows": 1490
    },
    "runway_ends": {
      "prev": null,
      "rows": 1456
    },
    "runways": {
      "prev": null,
      "rows": 728
    }
  }
}
