main
Caleb Add the Compute Module 5 run of version 0.4.0: report, evidence images, audit sheets and KiCad copy e47f4f7
{
  "at": "2026-11-10T04:00:30Z",
  "derived": "written by the program for reading; nothing reads it back",
  "scores": {
    "categories": {
      "blocks": {
        "audit": {
          "detail": "no sample drawn",
          "failed": [],
          "items": 0,
          "sample": "",
          "status": "none",
          "strata": [],
          "verdicts": 0
        },
        "ceilings": [
          {
            "inputs": "no independent evidence (none: no sample drawn): capped at 40",
            "name": "independent audit",
            "value": 40.0
          },
          {
            "inputs": "0 of 258 parts are in a block tagged SEEN, MEASURED or DATASHEET",
            "name": "parts in a block seen on the board",
            "value": 0.0
          }
        ],
        "heldByAudit": false,
        "limit": "parts in a block seen on the board: 0 of 258 parts are in a block tagged SEEN, MEASURED or DATASHEET",
        "outside": null,
        "raise": "settle the blocks tagged INFERRED from silkscreen and part identities",
        "score": 0.0
      },
      "connectivity": {
        "audit": {
          "detail": "island 31 of 52 ok from 1873 (bound 46.2%, unchanged 100%); pin 27 of 39 ok from 97 (bound 57.2%, unchanged 100%); 433 of 2306 islands show no join to a pad, a via or other copper, so they are unproven and count as not correct (the island figure is multiplied by 0.812); 201 of 298 pins with a net show no join of their pad to copper the copy drew, so they are unproven and count as not correct (the pin figure is multiplied by 0.326); 146 of those 201 are on a net that cites a source outside the photos, which no photo confirms",
          "failed": [
            "a006 trace:isl-bottom-1324-4 (wrong)",
            "a011 trace:isl-top-136-0 (cannot_tell)",
            "a025 trace:isl-top-166-5 (cannot_tell)",
            "a029 trace:isl-top-12-2 (wrong)",
            "a032 zone:isl-top-5 (wrong)",
            "a038 trace:isl-top-88-7 (cannot_tell)",
            "a040 trace:isl-bottom-118-0 (wrong)",
            "a042 trace:isl-top-81-1 (cannot_tell)",
            "a044 zone:isl-top-84 (wrong)",
            "a046 trace:isl-top-28-8 (cannot_tell)",
            "a057 trace:isl-top-362-1 (cannot_tell)",
            "a063 trace:isl-bottom-1200-4 (wrong)",
            "a064 trace:isl-bottom-1389-6 (cannot_tell)",
            "a065 trace:isl-bottom-6-1 (wrong)",
            "a071 trace:isl-top-373-9 (cannot_tell)",
            "a079 zone:isl-bottom-1344 (wrong)",
            "a081 trace:isl-bottom-1377-8 (cannot_tell)",
            "a093 trace:isl-top-265-7 (cannot_tell)",
            "a096 trace:isl-top-309-stub0 (wrong)",
            "a097 trace:isl-bottom-869-4 (wrong)",
            "a100 trace:isl-bottom-324-5 (wrong)",
            "a002 pin:H4.1 (wrong)",
            "a015 pin:C111.2 (wrong)",
            "a020 pin:H3.1 (cannot_tell)",
            "a041 pin:C115.1 (cannot_tell)",
            "a043 pin:C64.2 (cannot_tell)",
            "a056 pin:H1.1 (wrong)",
            "a059 pin:C45.1 (wrong)",
            "a060 pin:J2.100 (wrong)",
            "a067 pin:C98.1 (wrong)",
            "a070 pin:H2.1 (wrong)",
            "a095 pin:C119.1 (wrong)",
            "a098 pin:R17.1 (cannot_tell)"
          ],
          "items": 101,
          "sample": "f0096b50840860c2",
          "status": "scored",
          "strata": [
            {
              "audited": 52,
              "islands": 2306,
              "needForTarget": 34,
              "ok": 31,
              "population": 1873,
              "staleVerdicts": 0,
              "stratum": "island",
              "unchangedShare": 1.0,
              "unproven": 433,
              "value": 37.5,
              "wilson95Lower": 0.462
            },
            {
              "audited": 39,
              "needForTarget": 26,
              "ok": 27,
              "pins": 298,
              "population": 97,
              "staleVerdicts": 0,
              "stratum": "pin",
              "unchangedShare": 1.0,
              "unproven": 201,
              "value": 18.6,
              "wilson95Lower": 0.572
            }
          ],
          "verdicts": 101
        },
        "ceilings": [
          {
            "inputs": "scored: island 31 of 52 ok from 1873 (bound 46.2%, unchanged 100%); pin 27 of 39 ok from 97 (bound 57.2%, unchanged 100%); 433 of 2306 islands show no join to a pad, a via or other copper, so they are unproven and count as not correct (the island figure is multiplied by 0.812); 201 of 298 pins with a net show no join of their pad to copper the copy drew, so they are unproven and count as not correct (the pin figure is multiplied by 0.326); 146 of those 201 are on a net that cites a source outside the photos, which no photo confirms",
            "name": "independent audit",
            "value": 18.6
          },
          {
            "inputs": "1468 of 1641 mm2 of pour has a net",
            "name": "copper with a net, by area",
            "value": 89.4
          },
          {
            "inputs": "86 of 145 connections (337 pins, 192 nets) are joined by seen copper; 59 routed by the program, not seen; outside-evidence bound 0.0",
            "name": "connections the photos show or outside evidence proves",
            "value": 59.3
          },
          {
            "inputs": "699 of 947 mm of track has a net",
            "name": "copper with a net, by length",
            "value": 73.8
          },
          {
            "inputs": "0 of 142 joined pins disagree with the copper they touch; via net clashes: 7",
            "name": "pins that agree with their copper",
            "value": 100.0
          },
          {
            "inputs": "499 of 145 missing per KiCad at the proposed stackup",
            "name": "connections KiCad finds closed",
            "value": 0.0
          }
        ],
        "heldByAudit": false,
        "limit": "connections KiCad finds closed: 499 of 145 missing per KiCad at the proposed stackup",
        "outside": "a continuity log per net on the real board, or a real netlist, attached to the pin verdicts with --evidence: photos cannot show what joins inside the board",
        "raise": "close what the copy leaves open",
        "score": 0.0
      },
      "copper": {
        "audit": {
          "detail": "bare 26 of 50 ok from 471 (bound 39.2%, unchanged 100%); copper 35 of 51 ok from 1063 (bound 55.3%, unchanged 100%); 2778 of 4312 points (64.4%) left out because the photo cannot show copper there: exposed metal 372, hole 3, part body 1334, part's pad box 937, silk 132",
          "failed": [
            "a003 pt:top:12:1 (wrong)",
            "a006 pt:bottom:41:20 (wrong)",
            "a008 pt:bottom:46:27 (wrong)",
            "a009 pt:bottom:49:22 (cannot_tell)",
            "a012 pt:bottom:4:28 (cannot_tell)",
            "a022 pt:bottom:17:26 (wrong)",
            "a029 pt:bottom:17:5 (cannot_tell)",
            "a038 pt:bottom:43:3 (cannot_tell)",
            "a041 pt:bottom:22:9 (cannot_tell)",
            "a046 pt:bottom:41:23 (cannot_tell)",
            "a051 pt:bottom:6:37 (cannot_tell)",
            "a054 pt:top:53:11 (cannot_tell)",
            "a055 pt:top:11:10 (wrong)",
            "a069 pt:top:31:13 (cannot_tell)",
            "a074 pt:bottom:31:16 (wrong)",
            "a077 pt:bottom:49:9 (wrong)",
            "a084 pt:top:12:2 (wrong)",
            "a091 pt:bottom:40:23 (cannot_tell)",
            "a092 pt:bottom:17:19 (wrong)",
            "a094 pt:bottom:41:10 (wrong)",
            "a095 pt:bottom:20:6 (cannot_tell)",
            "a107 pt:bottom:32:9 (wrong)",
            "a108 pt:top:0:37 (cannot_tell)",
            "a111 pt:top:13:16 (wrong)",
            "a034 pt:top:19:17 (wrong)",
            "a036 pt:bottom:5:0 (wrong)",
            "a039 pt:top:2:18 (wrong)",
            "a044 pt:top:0:12 (wrong)",
            "a045 pt:top:20:29 (wrong)",
            "a047 pt:top:20:15 (wrong)",
            "a052 pt:top:31:37 (cannot_tell)",
            "a053 pt:top:44:26 (cannot_tell)",
            "a058 pt:top:42:38 (cannot_tell)",
            "a064 pt:top:3:16 (wrong)",
            "a067 pt:bottom:16:22 (cannot_tell)",
            "a068 pt:top:44:25 (wrong)",
            "a075 pt:top:5:12 (wrong)",
            "a086 pt:top:37:37 (wrong)",
            "a097 pt:top:7:8 (cannot_tell)",
            "a098 pt:top:22:22 (wrong)"
          ],
          "items": 112,
          "sample": "f7204517bcfa7e9f",
          "status": "scored",
          "strata": [
            {
              "audited": 50,
              "needForTarget": 33,
              "ok": 26,
              "population": 471,
              "staleVerdicts": 0,
              "stratum": "bare",
              "unchangedShare": 1.0,
              "value": 39.1,
              "wilson95Lower": 0.392
            },
            {
              "audited": 51,
              "needForTarget": 34,
              "ok": 35,
              "population": 1063,
              "staleVerdicts": 0,
              "stratum": "copper",
              "unchangedShare": 1.0,
              "value": 55.3,
              "wilson95Lower": 0.553
            }
          ],
          "verdicts": 112
        },
        "ceilings": [
          {
            "inputs": "scored: bare 26 of 50 ok from 471 (bound 39.2%, unchanged 100%); copper 35 of 51 ok from 1063 (bound 55.3%, unchanged 100%); 2778 of 4312 points (64.4%) left out because the photo cannot show copper there: exposed metal 372, hole 3, part body 1334, part's pad box 937, silk 132",
            "name": "independent audit",
            "value": 39.1
          },
          {
            "inputs": "top: no islands read; bottom: no islands read",
            "name": "copper read that reached the copy",
            "value": 40.0
          },
          {
            "inputs": "fidelity.json: lowest of 1 figure(s) is 69.8 at /categories/copper/score",
            "name": "layers against the photos",
            "value": 69.8
          }
        ],
        "heldByAudit": false,
        "limit": "independent audit: scored: bare 26 of 50 ok from 471 (bound 39.2%, unchanged 100%); copper 35 of 51 ok from 1063 (bound 55.3%, unchanged 100%); 2778 of 4312 points (64.4%) left out because the photo cannot show copper there: exposed metal 372, hole 3, part body 1334, part's pad box 937, silk 132",
        "outside": "an X-ray, or a photo of the bare board with the mask stripped, where the photo is dark or a part hides the copper",
        "raise": "fix the method behind the failed items (a003 pt:top:12:1 (wrong), a006 pt:bottom:41:20 (wrong), a008 pt:bottom:46:27 (wrong), a009 pt:bottom:49:22 (cannot_tell), a012 pt:bottom:4:28 (cannot_tell), a022 pt:bottom:17:26 (wrong)), then redraw",
        "score": 39.1
      },
      "identity": {
        "audit": {
          "detail": "no sample drawn",
          "failed": [],
          "items": 0,
          "sample": "",
          "status": "none",
          "strata": [],
          "verdicts": 0
        },
        "ceilings": [
          {
            "inputs": "no independent evidence (none: no sample drawn): capped at 40",
            "name": "independent audit",
            "value": 40.0
          },
          {
            "inputs": "12 of 258 parts have an identity tagged SEEN, MEASURED or DATASHEET",
            "name": "identity tagged as seen",
            "value": 4.6
          }
        ],
        "heldByAudit": false,
        "limit": "identity tagged as seen: 12 of 258 parts have an identity tagged SEEN, MEASURED or DATASHEET",
        "outside": "a bill of materials, or markings read under a microscope for the unmarked parts, attached to the verdicts with --evidence",
        "raise": "read the 246 parts whose identity is INFERRED or UNKNOWN from the crops or outside evidence",
        "score": 4.6
      },
      "layers": {
        "audit": {
          "detail": "no sample drawn",
          "failed": [],
          "items": 0,
          "sample": "",
          "status": "none",
          "strata": [],
          "verdicts": 0
        },
        "ceilings": [
          {
            "inputs": "no independent evidence (none: no sample drawn): capped at 30",
            "name": "independent audit",
            "value": 30.0
          },
          {
            "inputs": "photos never show an inner layer: cap 30",
            "name": "photos alone",
            "value": 30.0
          },
          {
            "inputs": "42 of 59 connections stay open at 10 layers",
            "name": "the proposed stackup closes",
            "value": 28.8
          }
        ],
        "heldByAudit": false,
        "limit": "the proposed stackup closes: 42 of 59 connections stay open at 10 layers",
        "outside": "an edge micrograph, a cross-section or an X-ray that shows the copper layers, attached to the layer and plane verdicts with --evidence: photos never show an inner layer",
        "raise": "a stackup that closes every connection",
        "score": 28.8
      },
      "placement": {
        "audit": {
          "detail": "all 41 of 47 ok from 258 (bound 76.2%, unchanged 100%)",
          "failed": [
            "a009 C114 (wrong)",
            "a012 C170 (wrong)",
            "a013 C140 (wrong)",
            "a014 C141 (wrong)",
            "a021 C198 (wrong)",
            "a045 C156 (wrong)"
          ],
          "items": 52,
          "sample": "ce5320b5c888233a",
          "status": "scored",
          "strata": [
            {
              "audited": 47,
              "needForTarget": 31,
              "ok": 41,
              "population": 258,
              "staleVerdicts": 0,
              "stratum": "all",
              "unchangedShare": 1.0,
              "value": 76.2,
              "wilson95Lower": 0.762
            }
          ],
          "verdicts": 52
        },
        "ceilings": [
          {
            "inputs": "scored: all 41 of 47 ok from 258 (bound 76.2%, unchanged 100%)",
            "name": "independent audit",
            "value": 76.2
          },
          {
            "inputs": "140 of 258 parts have snap.method by pads, body centre or hole centre",
            "name": "parts located by a program measurement",
            "value": 54.2
          },
          {
            "inputs": "fidelity.json: lowest of 1 figure(s) is 68.9 at /categories/placement/score",
            "name": "layers against the photos",
            "value": 68.9
          }
        ],
        "heldByAudit": false,
        "limit": "parts located by a program measurement: 140 of 258 parts have snap.method by pads, body centre or hole centre",
        "outside": null,
        "raise": "make `parts snap` measure the 118 parts placed by a reading instead",
        "score": 54.2
      },
      "values": {
        "audit": {
          "detail": "no sample drawn",
          "failed": [],
          "items": 0,
          "sample": "",
          "status": "none",
          "strata": [],
          "verdicts": 0
        },
        "ceilings": [
          {
            "inputs": "no independent evidence (none: no sample drawn): capped at 40",
            "name": "independent audit",
            "value": 40.0
          },
          {
            "inputs": "6 of 254 parts with a value have it tagged SEEN, MEASURED or DATASHEET",
            "name": "values tagged as seen",
            "value": 2.3
          }
        ],
        "heldByAudit": false,
        "limit": "values tagged as seen: 6 of 254 parts with a value have it tagged SEEN, MEASURED or DATASHEET",
        "outside": "an LCR reading of each unmarked part off the board, or a bill of materials, attached to the verdicts with --evidence",
        "raise": "get values for the 248 parts with no readable value: unmarked ceramics cannot be read from a photo",
        "score": 2.3
      },
      "vias": {
        "audit": {
          "detail": "dropped 5 of 6 ok from 6 (bound 83.3%, unchanged 100%); kept 43 of 51 ok from 883 (bound 72.4%, unchanged 100%)",
          "failed": [
            "a027 dome:bottom:[131.713,118.788] (wrong)",
            "a003 via:v363 (wrong)",
            "a005 via:v736 (wrong)",
            "a006 via:v541 (wrong)",
            "a009 via:v707 (wrong)",
            "a014 via:v366 (wrong)",
            "a029 via:v829 (wrong)",
            "a049 via:v663 (wrong)",
            "a055 via:v544 (wrong)"
          ],
          "items": 63,
          "sample": "03a1a8116cb47da0",
          "status": "scored",
          "strata": [
            {
              "audited": 6,
              "needForTarget": 6,
              "ok": 5,
              "population": 6,
              "staleVerdicts": 0,
              "stratum": "dropped",
              "unchangedShare": 1.0,
              "value": 83.3,
              "wilson95Lower": 0.833
            },
            {
              "audited": 51,
              "needForTarget": 34,
              "ok": 43,
              "population": 883,
              "staleVerdicts": 0,
              "stratum": "kept",
              "unchangedShare": 1.0,
              "value": 72.3,
              "wilson95Lower": 0.724
            }
          ],
          "verdicts": 63
        },
        "ceilings": [
          {
            "inputs": "scored: dropped 5 of 6 ok from 6 (bound 83.3%, unchanged 100%); kept 43 of 51 ok from 883 (bound 72.4%, unchanged 100%)",
            "name": "independent audit",
            "value": 72.3
          },
          {
            "inputs": "42 of 883 kept vias sit on a patch more than a quarter pale (min(R,G,B) > 135 in the square reaching 0.35 mm around it, a rule from these photos and an upper bound on false vias); 256 seen on both faces",
            "name": "vias not on pale pixels",
            "value": 95.2
          },
          {
            "inputs": "input missing: fidelity.json has no figure for vias: capped at 40",
            "name": "layers against the photos",
            "value": 40.0
          }
        ],
        "heldByAudit": false,
        "limit": "layers against the photos: input missing: fidelity.json has no figure for vias: capped at 40",
        "outside": "an X-ray or a backlit photo of the bare board shows through vias directly, attached with --evidence",
        "raise": "run the layer scoring so fidelity.json compares this category's layers with the photos",
        "score": 40.0
      }
    },
    "fullPass": true,
    "overall": 0.0,
    "overallRule": "the lowest category",
    "target": 90.0
  },
  "verdict": "STALLED"
}