{
  "generatedAt": "2026-06-19T00:03:23.857Z",
  "revision": "strict-ground-net-v1",
  "assets": [
    {
      "name": "00_global_ground_harness",
      "svgBytes": 7113,
      "svgSha256": "bd7f276bab5bf6d161d30132b7d6972c22ab8afa14a7672139a33680d7a099c8",
      "pngBytes": 180351,
      "pngSha256": "373879037e388f11911b8a954818add72eaf768478b55d37ccf3e190df37511d",
      "width": 4800,
      "height": 3000,
      "checks": {
        "svg": true,
        "strictGroundOverlay": true,
        "noUndefined": true,
        "png4800x3000": true
      }
    },
    {
      "name": "01_input_breadboard",
      "svgBytes": 140792,
      "svgSha256": "213d7518623833f7b65efc927f36f8c0222910cbdc6644faef8d6d4b13a1b6d6",
      "pngBytes": 460122,
      "pngSha256": "5bb4b6b93b8ffbeb9972baf9fa9b238566b5390b8c809a4d569af32ce8bc19ce",
      "width": 4800,
      "height": 3000,
      "checks": {
        "svg": true,
        "strictGroundOverlay": true,
        "noUndefined": true,
        "png4800x3000": true
      }
    },
    {
      "name": "02_main_breadboard",
      "svgBytes": 122598,
      "svgSha256": "d6c5ff963797e9b18c2213fc764606e57ba54880f3a9ff849a087c4bd3640f13",
      "pngBytes": 390074,
      "pngSha256": "69794beef3f6626d0a0d7dcede44fd49ac737edf00d530f05a05d1b5625386f3",
      "width": 4800,
      "height": 3000,
      "checks": {
        "svg": true,
        "strictGroundOverlay": true,
        "noUndefined": true,
        "png4800x3000": true
      }
    },
    {
      "name": "03_output_breadboard",
      "svgBytes": 132887,
      "svgSha256": "b361bcc1726b734fa2be0bc8011a5763c845b7a7b09040ba9fcdc8446c4921ad",
      "pngBytes": 416750,
      "pngSha256": "830c92dd013e6b944374493d5338902685024e5af50489f7778b6d06541da54a",
      "width": 4800,
      "height": 3000,
      "checks": {
        "svg": true,
        "strictGroundOverlay": true,
        "noUndefined": true,
        "png4800x3000": true
      }
    },
    {
      "name": "04_switch_breadboard",
      "svgBytes": 37103,
      "svgSha256": "68c6fc90957404c3ec4fa7ce858c353295ec0376488c35f514f0d192b3e1dc25",
      "pngBytes": 419489,
      "pngSha256": "745ad0edbb9afbbf01036a0d0753adc767319a7bcaa49d3974b14a460c01e28c",
      "width": 4800,
      "height": 3000,
      "checks": {
        "svg": true,
        "strictGroundOverlay": true,
        "noUndefined": true,
        "png4800x3000": true
      }
    },
    {
      "name": "05_input_perfboard",
      "svgBytes": 356577,
      "svgSha256": "ec22fafc85235ba457daf3a1ec2d0373adadcf935f439bf2ccc3cfccecd78411",
      "pngBytes": 489139,
      "pngSha256": "b5cda85f2cf9834792584e81c9278754d7848376a1875da195823aceb756d1d9",
      "width": 4800,
      "height": 3000,
      "checks": {
        "svg": true,
        "strictGroundOverlay": true,
        "noUndefined": true,
        "png4800x3000": true
      }
    },
    {
      "name": "06_main_perfboard",
      "svgBytes": 368789,
      "svgSha256": "56c232deed49f1ef13c4fe497992ca79416a18510d230432e1456176da227004",
      "pngBytes": 627020,
      "pngSha256": "938f854cfde29c765d9ef5a5473e818b9ae9e3d24bc4aa874d1d76ed289157cf",
      "width": 4800,
      "height": 3000,
      "checks": {
        "svg": true,
        "strictGroundOverlay": true,
        "noUndefined": true,
        "png4800x3000": true
      }
    },
    {
      "name": "07_output_perfboard",
      "svgBytes": 341341,
      "svgSha256": "f514ef2dae269a1e8bc4fed666343e3b0ad3a94182fa32505cd245d6096a32eb",
      "pngBytes": 409580,
      "pngSha256": "e6f1ffcce882f4adf49d985392be49f6155704cf59180462a3150d413aa7d3e3",
      "width": 4800,
      "height": 3000,
      "checks": {
        "svg": true,
        "strictGroundOverlay": true,
        "noUndefined": true,
        "png4800x3000": true
      }
    },
    {
      "name": "08_switch_perfboard",
      "svgBytes": 37521,
      "svgSha256": "654348e2a147496458057538e44b1bea7cb5198ac4411ef8eb3775fbe0724959",
      "pngBytes": 425593,
      "pngSha256": "01e40c19f68e8224b3119196fae3cb9962e9fef32298b9249e58d7b4a380dcbd",
      "width": 4800,
      "height": 3000,
      "checks": {
        "svg": true,
        "strictGroundOverlay": true,
        "noUndefined": true,
        "png4800x3000": true
      }
    }
  ],
  "groundValidation": {
    "generatedAt": "2026-06-19T00:03:23.857Z",
    "canonicalGroundNet": "GND_GLOBAL",
    "status": "PASS",
    "groundWireCount": 59,
    "groundEndpointCount": 88,
    "checks": {
      "everyWireStartsAndEndsOnDeclaredAnchor": true,
      "groundWiresAreBlack": true,
      "blackWiresAreGroundOnly": true,
      "railCrossingWithoutEndpointIsNotAConnection": true,
      "groundRailConnectionsTerminateAtNamedHole": true,
      "externalJumpersAreExplicitlyLabeled": true,
      "allGroundPinsNormalizeToOneNet": true
    },
    "diagrams": [
      {
        "diagram": "00_global_ground_harness",
        "wireCount": 5,
        "groundWireCount": 5,
        "allEndpointsOnDeclaredAnchors": true,
        "blackIsGroundOnly": true,
        "externalJumpersLabeled": true,
        "requiredGroundAnchorsPresent": true
      },
      {
        "diagram": "01_input_breadboard",
        "wireCount": 13,
        "groundWireCount": 5,
        "allEndpointsOnDeclaredAnchors": true,
        "blackIsGroundOnly": true,
        "externalJumpersLabeled": true,
        "requiredGroundAnchorsPresent": true
      },
      {
        "diagram": "02_main_breadboard",
        "wireCount": 5,
        "groundWireCount": 3,
        "allEndpointsOnDeclaredAnchors": true,
        "blackIsGroundOnly": true,
        "externalJumpersLabeled": true,
        "requiredGroundAnchorsPresent": true
      },
      {
        "diagram": "03_output_breadboard",
        "wireCount": 11,
        "groundWireCount": 6,
        "allEndpointsOnDeclaredAnchors": true,
        "blackIsGroundOnly": true,
        "externalJumpersLabeled": true,
        "requiredGroundAnchorsPresent": true
      },
      {
        "diagram": "04_switch_breadboard",
        "wireCount": 15,
        "groundWireCount": 7,
        "allEndpointsOnDeclaredAnchors": true,
        "blackIsGroundOnly": true,
        "externalJumpersLabeled": true,
        "requiredGroundAnchorsPresent": true
      },
      {
        "diagram": "05_input_perfboard",
        "wireCount": 29,
        "groundWireCount": 8,
        "allEndpointsOnDeclaredAnchors": true,
        "blackIsGroundOnly": true,
        "externalJumpersLabeled": true,
        "requiredGroundAnchorsPresent": true
      },
      {
        "diagram": "06_main_perfboard",
        "wireCount": 31,
        "groundWireCount": 13,
        "allEndpointsOnDeclaredAnchors": true,
        "blackIsGroundOnly": true,
        "externalJumpersLabeled": true,
        "requiredGroundAnchorsPresent": true
      },
      {
        "diagram": "07_output_perfboard",
        "wireCount": 21,
        "groundWireCount": 5,
        "allEndpointsOnDeclaredAnchors": true,
        "blackIsGroundOnly": true,
        "externalJumpersLabeled": true,
        "requiredGroundAnchorsPresent": true
      },
      {
        "diagram": "08_switch_perfboard",
        "wireCount": 15,
        "groundWireCount": 7,
        "allEndpointsOnDeclaredAnchors": true,
        "blackIsGroundOnly": true,
        "externalJumpersLabeled": true,
        "requiredGroundAnchorsPresent": true
      }
    ]
  },
  "linkedFourPanelSet": {
    "generatedAt": "2026-06-19T00:08:14.106Z",
    "status": "PASS",
    "flow": "3PDT → INPUT → MAIN/ESP32 → OUTPUT → 3PDT",
    "assets": [
      {
        "order": 1,
        "section": "INPUT",
        "svg": "svg/01_input_linked.svg",
        "png": "png/01_input_linked.png",
        "previous": "04_3pdt_linked · 3PDT lug1",
        "next": "02_main_linked · GPIO34",
        "status": "PASS"
      },
      {
        "order": 2,
        "section": "MAIN / ESP32",
        "svg": "svg/02_main_linked.svg",
        "png": "png/02_main_linked.png",
        "previous": "01_input_linked · E46 ADC_IN",
        "next": "03_output_linked · A5 DAC_OUT",
        "status": "PASS"
      },
      {
        "order": 3,
        "section": "OUTPUT",
        "svg": "svg/03_output_linked.svg",
        "png": "png/03_output_linked.png",
        "previous": "02_main_linked · J10 DAC_OUT",
        "next": "04_3pdt_linked · 3PDT lug2",
        "status": "PASS"
      },
      {
        "order": 4,
        "section": "3PDT / JACKS",
        "svg": "svg/04_3pdt_linked.svg",
        "png": "png/04_3pdt_linked.png",
        "previous": "03_output_linked · J3 pin1 FX_OUT",
        "next": "01_input_linked · J2 pin1 FX_IN",
        "status": "PASS"
      }
    ],
    "links": [
      {
        "id": "L1",
        "fromFile": "04_3pdt_linked",
        "fromAnchor": "3PDT lug1",
        "toFile": "01_input_linked",
        "toAnchor": "J2 pin1",
        "net": "FX_IN",
        "fromPresent": true,
        "toPresent": true,
        "status": "PASS"
      },
      {
        "id": "L2",
        "fromFile": "01_input_linked",
        "fromAnchor": "E46",
        "toFile": "02_main_linked",
        "toAnchor": "B10 GPIO34",
        "net": "ADC_IN",
        "fromPresent": true,
        "toPresent": true,
        "status": "PASS"
      },
      {
        "id": "L3",
        "fromFile": "02_main_linked",
        "fromAnchor": "J10 DAC_HDR",
        "toFile": "03_output_linked",
        "toAnchor": "A5",
        "net": "DAC_OUT",
        "fromPresent": true,
        "toPresent": true,
        "status": "PASS"
      },
      {
        "id": "L4",
        "fromFile": "03_output_linked",
        "fromAnchor": "J3 pin1",
        "toFile": "04_3pdt_linked",
        "toAnchor": "3PDT lug2",
        "net": "FX_OUT",
        "fromPresent": true,
        "toPresent": true,
        "status": "PASS"
      }
    ]
  },
  "pdf": {
    "file": "howling_pedal_ground_verified_layouts.pdf",
    "outputCopy": "output/pdf/howling_pedal_ground_verified_layouts.pdf",
    "pages": 9,
    "bytes": 4003577,
    "sha256": "309c69073d992d6e5ea53bee6ad232b81fb1cc54010e6d224796bc2087cd83fa",
    "sources": [
      {
        "page": 1,
        "source": "png/00_global_ground_harness.png",
        "width": 4800,
        "height": 3000
      },
      {
        "page": 2,
        "source": "png/01_input_breadboard.png",
        "width": 4800,
        "height": 3000
      },
      {
        "page": 3,
        "source": "png/02_main_breadboard.png",
        "width": 4800,
        "height": 3000
      },
      {
        "page": 4,
        "source": "png/03_output_breadboard.png",
        "width": 4800,
        "height": 3000
      },
      {
        "page": 5,
        "source": "png/04_switch_breadboard.png",
        "width": 4800,
        "height": 3000
      },
      {
        "page": 6,
        "source": "png/05_input_perfboard.png",
        "width": 4800,
        "height": 3000
      },
      {
        "page": 7,
        "source": "png/06_main_perfboard.png",
        "width": 4800,
        "height": 3000
      },
      {
        "page": 8,
        "source": "png/07_output_perfboard.png",
        "width": 4800,
        "height": 3000
      },
      {
        "page": 9,
        "source": "png/08_switch_perfboard.png",
        "width": 4800,
        "height": 3000
      }
    ]
  },
  "renderedPdfPages": [
    {
      "file": "tmp/pdfs/ground-verified/page-01.png",
      "width": 1860,
      "height": 1163,
      "bytes": 95142,
      "renderer": "PDFium fallback"
    },
    {
      "file": "tmp/pdfs/ground-verified/page-02.png",
      "width": 1860,
      "height": 1163,
      "bytes": 290787,
      "renderer": "PDFium fallback"
    },
    {
      "file": "tmp/pdfs/ground-verified/page-03.png",
      "width": 1860,
      "height": 1163,
      "bytes": 246195,
      "renderer": "PDFium fallback"
    },
    {
      "file": "tmp/pdfs/ground-verified/page-04.png",
      "width": 1860,
      "height": 1163,
      "bytes": 263478,
      "renderer": "PDFium fallback"
    },
    {
      "file": "tmp/pdfs/ground-verified/page-05.png",
      "width": 1860,
      "height": 1163,
      "bytes": 242783,
      "renderer": "PDFium fallback"
    },
    {
      "file": "tmp/pdfs/ground-verified/page-06.png",
      "width": 1860,
      "height": 1163,
      "bytes": 275613,
      "renderer": "PDFium fallback"
    },
    {
      "file": "tmp/pdfs/ground-verified/page-07.png",
      "width": 1860,
      "height": 1163,
      "bytes": 337536,
      "renderer": "PDFium fallback"
    },
    {
      "file": "tmp/pdfs/ground-verified/page-08.png",
      "width": 1860,
      "height": 1163,
      "bytes": 227910,
      "renderer": "PDFium fallback"
    },
    {
      "file": "tmp/pdfs/ground-verified/page-09.png",
      "width": 1860,
      "height": 1163,
      "bytes": 252087,
      "renderer": "PDFium fallback"
    }
  ],
  "checks": [
    "Nine SVG and PNG diagrams are present",
    "Every wire endpoint lands on a declared hole, pin, lug, pad, or rail hole",
    "GND wires are black and black wires are GND only",
    "Every GND endpoint has a black point and GND label",
    "External jumpers are explicitly labeled",
    "All GND endpoints normalize to GND_GLOBAL",
    "Four separate linked diagrams share verified cross-file anchors for FX_IN, ADC_IN, DAC_OUT, and FX_OUT",
    "Nine-page PDF was independently rendered"
  ],
  "zip": {
    "file": "howling_pedal_ground_verified_complete.zip",
    "entries": 34,
    "crc": "OK",
    "names": [
      "svg/00_global_ground_harness.svg",
      "svg/01_input_breadboard.svg",
      "svg/02_main_breadboard.svg",
      "svg/03_output_breadboard.svg",
      "svg/04_switch_breadboard.svg",
      "svg/05_input_perfboard.svg",
      "svg/06_main_perfboard.svg",
      "svg/07_output_perfboard.svg",
      "svg/08_switch_perfboard.svg",
      "png/00_global_ground_harness.png",
      "png/01_input_breadboard.png",
      "png/02_main_breadboard.png",
      "png/03_output_breadboard.png",
      "png/04_switch_breadboard.png",
      "png/05_input_perfboard.png",
      "png/06_main_perfboard.png",
      "png/07_output_perfboard.png",
      "png/08_switch_perfboard.png",
      "howling_pedal_ground_verified_layouts.pdf",
      "wire_coordinates.csv",
      "ground_net_validation.json",
      "build_report.json",
      "README.md",
      "qa_report.json",
      "linked/linked_connections.json",
      "linked/linked_connections.csv",
      "linked/svg/01_input_linked.svg",
      "linked/svg/02_main_linked.svg",
      "linked/svg/03_output_linked.svg",
      "linked/svg/04_3pdt_linked.svg",
      "linked/png/01_input_linked.png",
      "linked/png/02_main_linked.png",
      "linked/png/03_output_linked.png",
      "linked/png/04_3pdt_linked.png"
    ]
  }
}