{
  "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=procedures-conus kind=procedures cycle=2610 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": "attribution and license present",
      "status": "pass",
      "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": "federal (defaulted by kind procedures, 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; 3/3 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": "procedures(airport, kind, ident) 0",
      "status": "pass",
      "title": "Identifiers that must be unique are unique"
    },
    {
      "blocking": false,
      "cannot_catch": "A point moved to the wrong place inside the envelope; the envelope is a handful of boxes, not a coastline.",
      "expected": "Provisional threshold: no growth beyond 25 points or 10%, whichever is larger. FAA files carry real oceanic and foreign points, so the count is tracked, not forbidden",
      "id": "GEO-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. This edition has 1,007 such points; the next edition compares against that.",
      "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": "Points outside the US coverage envelope, against the previous edition"
    },
    {
      "blocking": false,
      "cannot_catch": "A fix placed at the wrong coordinates. Legs with no fix by design (for example heading legs) are not counted.",
      "expected": "at most 0.5% of legs: a regression bound that carries forward the 0.47% observed in 2610 (950 of 201,030) and 2611 (941 of 200,853). It does not accept those legs as correct; it stops the share growing",
      "id": "PROC-FIX-001",
      "measured": "950 of 201,030 legs (0.47%)",
      "status": "pass",
      "title": "Procedure legs that name a fix the build could not place"
    },
    {
      "blocking": true,
      "cannot_catch": "Two areas' airways merged under one ident row; PROC-AWY-002 looks for that.",
      "expected": "0 duplicate idents",
      "id": "PROC-AWY-001",
      "measured": "0 duplicate idents; unique index absent",
      "since": "AER-1979",
      "status": "pass",
      "title": "Airway idents are unique"
    },
    {
      "blocking": true,
      "cannot_catch": "Two areas' legs merged with sequence numbers that do not collide, and an airway whose legs are all present but in the wrong order.",
      "expected": "0 airways",
      "id": "PROC-AWY-002",
      "measured": 20,
      "since": "AER-1979",
      "status": "fail",
      "title": "No airway mixes legs from two areas (repeated sequence numbers)"
    },
    {
      "blocking": true,
      "cannot_catch": "A record that is present but decoded wrong; PROC-MSA-002 and -003 look for that.",
      "expected": "as many MSA records (and continuation records) in the pack as PS records in the source FAACIFP18",
      "id": "PROC-MSA-001",
      "measured": "no msa table",
      "since": "AER-4446",
      "status": "fail",
      "title": "Every PS record in the source file is in the msa table"
    },
    {
      "blocking": true,
      "cannot_catch": "A consistent set of sectors with the wrong altitude in one of them, and a column shift that keeps the bearings contiguous.",
      "expected": "0 records: every sector ends where the next begins, the last closes on the first, and together they span 360 degrees (one sector: start equals end)",
      "id": "PROC-MSA-002",
      "measured": "no msa table",
      "since": "AER-4446",
      "status": "fail",
      "title": "Each MSA's sectors cover 360 degrees with no gap or overlap"
    },
    {
      "blocking": true,
      "cannot_catch": "A wrong value inside the bounds, such as 5200 coded where the plate says 5900.",
      "expected": "altitudes 1,000-20,000 ft, radii 10-50 nm, bearings referenced M or T",
      "id": "PROC-MSA-003",
      "measured": "no msa table",
      "since": "AER-4446",
      "status": "fail",
      "title": "MSA altitudes, radii and bearing references are plausible"
    },
    {
      "blocking": false,
      "cannot_catch": "A centre placed at the wrong coordinates.",
      "expected": "at most 0.1% of MSA records, every one listed: a regression bound that carries forward the 1 of 6,058 observed in 2611 (KHRJ HQT, an NDB the file does not define). It does not accept those records as correct; they are stored with no position, never a guessed one",
      "id": "PROC-MSA-004",
      "measured": "no msa table",
      "since": "AER-4446",
      "status": "fail",
      "title": "MSA centre fixes the build could not place"
    },
    {
      "blocking": false,
      "cannot_catch": "Everything outside the fixture's handful of procedures.",
      "expected": "the fixture's procedures decode to their published legs",
      "id": "PROC-GLD-001",
      "measured": null,
      "note": "The golden fixture runs in the unit tests against the parser (tests/test_build_procedures.py), not against a built pack. Catalogue v2 (TV7) moves it here.",
      "status": "not-run",
      "title": "FAACIFP18 golden fixture"
    },
    {
      "blocking": false,
      "cannot_catch": "Errors that both databases share.",
      "expected": "no unexplained differences",
      "id": "PROC-DIFF-001",
      "measured": null,
      "note": "Not yet run (AER-1702). Until it is, nothing independent of the FAA source has been compared against this pack's procedures.",
      "status": "not-run",
      "title": "Independent differential against a commercial database"
    }
  ],
  "gated": true,
  "metrics": {
    "ACC-001": [
      {
        "count": 82,
        "min": 1,
        "ok": true,
        "query": "airway legs V23"
      },
      {
        "count": 28,
        "min": 1,
        "ok": true,
        "query": "airway legs J80"
      },
      {
        "count": 55,
        "min": 1,
        "ok": true,
        "query": "airway legs V1"
      }
    ],
    "GEO-002": {
      "airway_legs.fix_lat": 695,
      "legs.centre_lat": 14,
      "legs.fix_lat": 298
    },
    "PROC-FIX-001": {
      "by_fix_type": {
        "airport": 646,
        "ndb": 192,
        "vor": 112
      },
      "legs": 201030,
      "unresolved": 950
    }
  },
  "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": "federal",
  "pack": {
    "bytes": 22036480,
    "cycle": "2610",
    "id": "procedures-conus",
    "kind": "procedures",
    "schema_version": "1",
    "sha256": "e373c924c3febb08bb97d9320b4f322d2fbb66583cd0fcf0aa473b9d3ed20385"
  },
  "previous": null,
  "record": "retro",
  "retro": {
    "commit": "0dc3dcd2bbe2337d6a08a2846af9c395ea561ffb",
    "probe_refs": {
      "pyEfis": "31110ec077522536e440a2bda9f1eae7083495de"
    },
    "run_url": null,
    "runner": "local",
    "written_at": "2026-11-01T00:53:59Z"
  },
  "schema": "pack-report/1",
  "sources": [],
  "summary": {
    "fail": 5,
    "not_run": 6,
    "pass": 10,
    "warn": 0
  },
  "tables": {
    "airway_legs": {
      "prev": null,
      "rows": 19391
    },
    "airways": {
      "prev": null,
      "rows": 1504
    },
    "legs": {
      "prev": null,
      "rows": 201030
    },
    "procedures": {
      "prev": null,
      "rows": 14338
    },
    "transitions": {
      "prev": null,
      "rows": 52352
    }
  }
}
