techmannih/nema34-mounted-stepper-controller

A 48 V USB‑C PD 3.1 EPR NEMA‑34 stepper controller PCB combining STM32/TMC5160 control, external MOSFET motor bridges, protected power and regenerative braking, USB data, telemetry, diagnostics, status LEDs, and buzzer alarms.

Version
0.3.92
License
unset
Stars
1

docs/checks/source-schematic.json

{
  "generated_at": "2026-10-15T22:58:43.223Z",
  "input": {
    "path": "dist/index/circuit.json",
    "sha256": "999b1d0370187bfe344e3491a3ad159e1495d6008c3f1c762bb9c79785c2a997",
    "bytes": 4481278
  },
  "result": "PASS",
  "failures": [],
  "counts": {
    "elements": 10174,
    "sheets": 24,
    "source_components": 277,
    "source_ports": 965,
    "connected_source_ports": 914,
    "intentional_no_connect_ports": 51,
    "source_nets": 163,
    "minimum_ports_per_connected_net": 2,
    "capacitors": 89,
    "test_points": 19,
    "annotations": 72,
    "frame_point_violations": 0,
    "frame_extent_violations": 0
  },
  "net_port_histogram": {
    "2": 62,
    "3": 61,
    "4": 16,
    "5": 4,
    "6": 2,
    "8": 2,
    "9": 2,
    "10": 3,
    "12": 4,
    "13": 2,
    "18": 1,
    "25": 1,
    "43": 1,
    "59": 1,
    "228": 1
  },
  "usb_c": {
    "connectors": [
      "J1",
      "J10"
    ],
    "j1_pins": [
      {
        "pin": 1,
        "name": "EH1",
        "net": "GND"
      },
      {
        "pin": 2,
        "name": "EH2",
        "net": "GND"
      },
      {
        "pin": 3,
        "name": "EH3",
        "net": "GND"
      },
      {
        "pin": 4,
        "name": "EH4",
        "net": "GND"
      },
      {
        "pin": 5,
        "name": "GND1",
        "net": "GND"
      },
      {
        "pin": 6,
        "name": "GND2",
        "net": "GND"
      },
      {
        "pin": 7,
        "name": "VBUS",
        "net": "PD_VBUS"
      },
      {
        "pin": 8,
        "name": "VBUS2",
        "net": "PD_VBUS"
      },
      {
        "pin": 9,
        "name": "CC2",
        "net": "CC2_CONN"
      },
      {
        "pin": 10,
        "name": "SBU1",
        "net": "NC"
      },
      {
        "pin": 11,
        "name": "DP2",
        "net": "NC"
      },
      {
        "pin": 12,
        "name": "DM",
        "net": "NC"
      },
      {
        "pin": 13,
        "name": "DP",
        "net": "NC"
      },
      {
        "pin": 14,
        "name": "DN2",
        "net": "NC"
      },
      {
        "pin": 15,
        "name": "CC1",
        "net": "CC1_CONN"
      },
      {
        "pin": 16,
        "name": "SBU2",
        "net": "NC"
      },
      {
        "pin": 17,
        "name": "VBUS3",
        "net": "PD_VBUS"
      },
      {
        "pin": 18,
        "name": "VBUS4",
        "net": "PD_VBUS"
      },
      {
        "pin": 19,
        "name": "GND3",
        "net": "GND"
      },
      {
        "pin": 20,
        "name": "GND4",
        "net": "GND"
      }
    ],
    "verified_chain": [
      {
        "ref": "J1",
        "pin": 7,
        "net": "PD_VBUS"
      },
      {
        "ref": "J1",
        "pin": 8,
        "net": "PD_VBUS"
      },
      {
        "ref": "J1",
        "pin": 17,
        "net": "PD_VBUS"
      },
      {
        "ref": "J1",
        "pin": 18,
        "net": "PD_VBUS"
      },
      {
        "ref": "J1",
        "pin": 15,
        "net": "CC1_CONN"
      },
      {
        "ref": "J1",
        "pin": 9,
        "net": "CC2_CONN"
      },
      {
        "ref": "J10",
        "pin": 11,
        "net": "USB_DP_CONN"
      },
      {
        "ref": "J10",
        "pin": 13,
        "net": "USB_DP_CONN"
      },
      {
        "ref": "J10",
        "pin": 12,
        "net": "USB_DM_CONN"
      },
      {
        "ref": "J10",
        "pin": 14,
        "net": "USB_DM_CONN"
      },
      {
        "ref": "U1",
        "pin": 20,
        "net": "PD_VBUS"
      },
      {
        "ref": "U1",
        "pin": 19,
        "net": "VBUS_LV"
      },
      {
        "ref": "U1",
        "pin": 4,
        "net": "CC1_CONN"
      },
      {
        "ref": "U1",
        "pin": 7,
        "net": "CC1_CONN"
      },
      {
        "ref": "U1",
        "pin": 12,
        "net": "CC1_PD"
      },
      {
        "ref": "U2",
        "pin": 24,
        "net": "CC1_PD"
      },
      {
        "ref": "U1",
        "pin": 5,
        "net": "CC2_CONN"
      },
      {
        "ref": "U1",
        "pin": 6,
        "net": "CC2_CONN"
      },
      {
        "ref": "U1",
        "pin": 11,
        "net": "CC2_PD"
      },
      {
        "ref": "U2",
        "pin": 25,
        "net": "CC2_PD"
      },
      {
        "ref": "D15",
        "pin": 1,
        "net": "USB_DP_CONN"
      },
      {
        "ref": "R71",
        "pin": 1,
        "net": "USB_DP_CONN"
      },
      {
        "ref": "R71",
        "pin": 2,
        "net": "USB_DP"
      },
      {
        "ref": "U16",
        "pin": 34,
        "net": "USB_DP"
      },
      {
        "ref": "D15",
        "pin": 3,
        "net": "USB_DM_CONN"
      },
      {
        "ref": "R72",
        "pin": 1,
        "net": "USB_DM_CONN"
      },
      {
        "ref": "R72",
        "pin": 2,
        "net": "USB_DM"
      },
      {
        "ref": "U16",
        "pin": 33,
        "net": "USB_DM"
      },
      {
        "ref": "J10",
        "pin": 7,
        "net": "USB_DATA_VBUS"
      },
      {
        "ref": "J10",
        "pin": 8,
        "net": "USB_DATA_VBUS"
      },
      {
        "ref": "J10",
        "pin": 17,
        "net": "USB_DATA_VBUS"
      },
      {
        "ref": "J10",
        "pin": 18,
        "net": "USB_DATA_VBUS"
      },
      {
        "ref": "J10",
        "pin": 15,
        "net": "DATA_CC1"
      },
      {
        "ref": "J10",
        "pin": 9,
        "net": "DATA_CC2"
      },
      {
        "ref": "R105",
        "pin": 1,
        "net": "DATA_CC1"
      },
      {
        "ref": "R106",
        "pin": 1,
        "net": "DATA_CC2"
      },
      {
        "ref": "R105",
        "pin": 2,
        "net": "GND"
      },
      {
        "ref": "R106",
        "pin": 2,
        "net": "GND"
      },
      {
        "ref": "R107",
        "pin": 1,
        "net": "USB_DATA_VBUS"
      },
      {
        "ref": "U22",
        "pin": 2,
        "net": "VMOTOR"
      },
      {
        "ref": "U6",
        "pin": 5,
        "net": "PD_VBUS"
      },
      {
        "ref": "Q4",
        "pin": 1,
        "net": "PD_VBUS"
      },
      {
        "ref": "Q4",
        "pin": 5,
        "net": "EFUSE_IN"
      }
    ]
  },
  "intentional_no_connects": [
    "J1.10:SBU1",
    "J1.11:DP2",
    "J1.12:DM",
    "J1.13:DP",
    "J1.14:DN2",
    "J1.16:SBU2",
    "J10.10:SBU1",
    "J10.16:SBU2",
    "U1.1:DP",
    "U1.2:DM",
    "U16.13:PA2",
    "U16.14:PA3",
    "U16.22:PB10",
    "U16.25:PB13",
    "U16.26:PB14",
    "U16.27:PB15",
    "U16.29:PA9",
    "U16.2:PC14_OSC32_IN",
    "U16.31:PC7",
    "U16.32:PA10",
    "U16.38:PD0",
    "U16.39:PD1",
    "U16.3:PC15_OSC32_OUT",
    "U16.40:PD2",
    "U16.41:PD3",
    "U18.10:U",
    "U18.8:W",
    "U18.9:V",
    "U2.10:N_I2Ct_IRQ",
    "U2.21:NC",
    "U2.28:PP5V1",
    "U2.29:PP5V2",
    "U23.4:NC",
    "U24.4:NC",
    "U25.4:NC",
    "U26.4:NC",
    "U27.4:NC",
    "U28.4:FAULT",
    "U30.2:ALERT",
    "U31.4:NC",
    "U32.4:NC",
    "U34.4:PG",
    "U35.13:N_INT",
    "U37.1:NC",
    "U6.11:MODE",
    "U6.19:N_C6",
    "U6.20:N_C5",
    "U6.21:N_C4",
    "U6.22:N_C3",
    "U6.23:N_C2",
    "U6.24:N_C1"
  ],
  "test_points": [
    {
      "ref": "TP_SWD_3V3",
      "net": "V3V3_MCU",
      "total_ports_on_net": 12,
      "non_testpoint_peers": 11
    },
    {
      "ref": "TP_SWDIO",
      "net": "SWDIO",
      "total_ports_on_net": 2,
      "non_testpoint_peers": 1
    },
    {
      "ref": "TP_SWD_GND",
      "net": "GND",
      "total_ports_on_net": 228,
      "non_testpoint_peers": 224
    },
    {
      "ref": "TP_SWCLK",
      "net": "SWCLK",
      "total_ports_on_net": 2,
      "non_testpoint_peers": 1
    },
    {
      "ref": "TP_NRST",
      "net": "NRST",
      "total_ports_on_net": 5,
      "non_testpoint_peers": 4
    },
    {
      "ref": "TP_STATUS",
      "net": "STATUS_GPIO",
      "total_ports_on_net": 4,
      "non_testpoint_peers": 3
    },
    {
      "ref": "TP_ENC_3V3",
      "net": "V3V3",
      "total_ports_on_net": 59,
      "non_testpoint_peers": 58
    },
    {
      "ref": "TP_ENC_A",
      "net": "ENC_A",
      "total_ports_on_net": 2,
      "non_testpoint_peers": 1
    },
    {
      "ref": "TP_ENC_B",
      "net": "ENC_B",
      "total_ports_on_net": 2,
      "non_testpoint_peers": 1
    },
    {
      "ref": "TP_ENC_I",
      "net": "ENC_I",
      "total_ports_on_net": 2,
      "non_testpoint_peers": 1
    },
    {
      "ref": "TP_ENC_GND",
      "net": "GND",
      "total_ports_on_net": 228,
      "non_testpoint_peers": 224
    },
    {
      "ref": "TP_PD_VREF",
      "net": "PD_3V3",
      "total_ports_on_net": 25,
      "non_testpoint_peers": 24
    },
    {
      "ref": "TP_PD_GND",
      "net": "GND",
      "total_ports_on_net": 228,
      "non_testpoint_peers": 224
    },
    {
      "ref": "TP_EEP_SDA",
      "net": "EEP_PROG_SDA",
      "total_ports_on_net": 4,
      "non_testpoint_peers": 3
    },
    {
      "ref": "TP_EEP_SCL",
      "net": "EEP_PROG_SCL",
      "total_ports_on_net": 4,
      "non_testpoint_peers": 3
    },
    {
      "ref": "TP_PD_ISO",
      "net": "EEP_LINK_EN",
      "total_ports_on_net": 4,
      "non_testpoint_peers": 3
    },
    {
      "ref": "TP_PD_VBUS",
      "net": "PD_VBUS",
      "total_ports_on_net": 18,
      "non_testpoint_peers": 17
    },
    {
      "ref": "TP_VMOTOR",
      "net": "VMOTOR",
      "total_ports_on_net": 43,
      "non_testpoint_peers": 42
    },
    {
      "ref": "TP_PWR_GND",
      "net": "GND",
      "total_ports_on_net": 228,
      "non_testpoint_peers": 224
    }
  ],
  "sheets": [
    {
      "index": 1,
      "name": "usb-pd",
      "display_name": "USB-C PD POWER",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "01 / USB-C PD POWER",
        "J1: 48 V / 5 A EPR power only; USB DATA is on J10.",
        "U1 protects CC/VBUS. Q1 controls protected VBUS; C1/C2 provide local bypass."
      ]
    },
    {
      "index": 2,
      "name": "usb-pd-policy",
      "display_name": "PD Controller and EEPROM",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "02 / PD Controller and EEPROM",
        "U2 TPS26750 negotiates EPR; U3 stores the board-specific TI configuration.",
        "Q2/Q3 translate PD path control. TI image and powered qualification remain required."
      ]
    },
    {
      "index": 3,
      "name": "logic-power",
      "display_name": "PD Backup Supply",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "03 / PD Backup Supply",
        "U5 converts PD VBUS to V3V3_PD; L1 and its feedback/bypass network are shown here.",
        "Input spans default USB 5 V through the specified 48 V EPR operating target."
      ]
    },
    {
      "index": 4,
      "name": "logic-backup",
      "display_name": "Motor Backup Supply",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "04 / Motor Backup Supply",
        "U22 converts VMOTOR to V3V3_MOTOR for brake-control backup after PD loss.",
        "L2, feedback and local bypass remain on the motor supply domain."
      ]
    },
    {
      "index": 5,
      "name": "logic-selection",
      "display_name": "Logic Supply Selection and Power Permit",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "05 / Logic Supply Selection and Power Permit",
        "U23/U24 and R111 form the status-interlocked reverse-blocked board supply.",
        "U4 combines PD path status with POWER_PERMIT to control the eFuse enable."
      ]
    },
    {
      "index": 6,
      "name": "motor-power",
      "display_name": "Protected 48 V Motor Bus",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "06 / Protected 48 V Motor Bus",
        "Q4/Q5 provide reverse blocking; U6 is the eFuse and input-current monitor.",
        "Nominal 1x current limit 3.607 A. C22/C23 are motor bulk; R31-R33/C24 monitor voltage."
      ]
    },
    {
      "index": 7,
      "name": "motion",
      "display_name": "Motion Controller",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "07 / Motion Controller",
        "U7 TMC5160A drives the external bridges; nominal regulated driver supply is 12 V.",
        "Bootstrap, charge-pump and local bypass parts are shown with the controller."
      ]
    },
    {
      "index": 8,
      "name": "motion-enable",
      "display_name": "Onboard Motion and Hardware Enable",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "08 / Onboard Motion and Hardware Enable",
        "STM32 commands U7 over SPI. U10/U11/U33 and Q14 retain hardware inhibits.",
        "The driver remains inhibited until the hardware safety conditions permit motion."
      ]
    },
    {
      "index": 9,
      "name": "bridge-a",
      "display_name": "Motor Phase A Power Bridge",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "09 / Motor Phase A Power Bridge",
        "Q6/Q8 high-side and Q7/Q9 low-side switches form phase A; R109 is the Kelvin shunt.",
        "J2 connects both motor windings. The 3.8 A RMS design ceiling is not a qualified setting."
      ]
    },
    {
      "index": 10,
      "name": "bridge-b",
      "display_name": "Motor Phase B Power Bridge",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "10 / Motor Phase B Power Bridge",
        "Q10/Q12 high-side and Q11/Q13 low-side switches form phase B.",
        "R110 is the independent 33 mOhm shunt; preserve the Kelvin sense connections."
      ]
    },
    {
      "index": 11,
      "name": "brake",
      "display_name": "Brake Reference and Turn-on Threshold",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "11 / Brake Reference and Turn-on Threshold",
        "U12 is the 2.5 V reference. U13 commands braking at nominal 52.0 V.",
        "External braking resistor and heatsink sizing depends on stored mechanical energy."
      ]
    },
    {
      "index": 12,
      "name": "brake-ovp",
      "display_name": "Overvoltage Inhibit and Brake Driver",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "12 / Overvoltage Inhibit and Brake Driver",
        "U14 inhibits motion at nominal 53.21 V; U15/Q16 switch the external J3 brake load.",
        "Brake control remains powered from the protected motor bus through the backup supply."
      ]
    },
    {
      "index": 13,
      "name": "mcu",
      "display_name": "MCU Clock Memory and Debug",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "13 / MCU Clock Memory and Debug",
        "U16 STM32G0B1 commands the TMC5160 ramp generator over SPI; SW2 requests Start/Stop.",
        "U17 is configuration storage. Y1, SW1 and the bare SWD/NRST pads support bring-up."
      ]
    },
    {
      "index": 14,
      "name": "encoder",
      "display_name": "Optional Shaft Encoder",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "14 / Optional Shaft Encoder",
        "U18 AS5047P is centered on bottom; C52/C53 are top-side. All are DNP.",
        "SPI plus ABI test access; magnet interface for the ordered single-shaft motor is unqualified."
      ]
    },
    {
      "index": 15,
      "name": "usb-data",
      "display_name": "USB DATA and Attach Sense",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "15 / USB DATA and Attach Sense",
        "J10 supplies USB 2.0 DATA and independent MCU logic power; no PD on this port.",
        "D15 protects D+/D-/CC. R107/R108/C72 sense DATA VBUS; DATA cannot feed VMOTOR."
      ]
    },
    {
      "index": 17,
      "name": "user-control",
      "display_name": "Local Start and Stop",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "17 / Local Start and Stop",
        "SW2 requests motion from the onboard STM32. R133 pulls the input to MCU logic power.",
        "Debounce requires release before start; reset, power loss and faults never auto-start."
      ]
    },
    {
      "index": 21,
      "name": "usb-logic",
      "display_name": "USB Logic Power",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "21 / USB Logic Power",
        "U28 limits DATA power; U25 regulates V3V3_USB. U26/U27 reverse-block the MCU rail.",
        "R119/R120 sense board supply on PB1. Industrial peripherals require board power."
      ]
    },
    {
      "index": 22,
      "name": "telemetry",
      "display_name": "Temperature and Bus Diagnostics",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "22 / Temperature and Bus Diagnostics",
        "U29 TMP102 senses temperature; U33 provides hardware inhibit. U30 ADS1115 monitors the bus.",
        "Sensor addresses are 0x48 and 0x49. Temperature correlation requires load testing."
      ]
    },
    {
      "index": 23,
      "name": "phase-current",
      "display_name": "Phase Current Diagnostics",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "23 / Phase Current Diagnostics",
        "U31/U32 INA240A1 measure the two 5 mOhm inline shunts at 20 V/V.",
        "Nominal 100 mV/A about 1.65 V; instantaneous diagnostics, not a short-circuit trip."
      ]
    },
    {
      "index": 24,
      "name": "driver-power",
      "display_name": "Regulated Driver Supply",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "24 / Regulated Driver Supply",
        "U34 is the 65 V buck supplying nominal 12 V to U7 VSA/12VOUT and U15.",
        "TMC5160 external supply range is 10-13 V; ripple and startup require bench validation."
      ]
    },
    {
      "index": 25,
      "name": "indicators",
      "display_name": "Status and Independent Power Indication",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "25 / Status and Independent Power Indication",
        "U35 PCA9538 at 0x70; U37 buffers PC13 reset into PD_3V3 with default-low bias.",
        "D17 shows board V3V3 independently of firmware; USB-only MCU power is distinct."
      ]
    },
    {
      "index": 26,
      "name": "alarm",
      "display_name": "Audible Fault Alarm",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "26 / Audible Fault Alarm",
        "BZ1 active buzzer is driven by Q26 with a gate pulldown and D18 clamp.",
        "The alarm defaults off. Motor protection remains independent of the audible indication."
      ]
    },
    {
      "index": 27,
      "name": "pd-programming",
      "display_name": "PD Programming and Power Probes",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "27 / PD Programming and Power Probes",
        "U36 isolates both PD EEPROM I2Cc wires when TP_PD_ISO is grounded.",
        "Use fixed 5 V fixture power and a 3.3 V open-drain programmer; VREF is sense-only."
      ]
    },
    {
      "index": 28,
      "name": "brake-feedback",
      "display_name": "Brake Continuity Preflight",
      "frame": [
        297,
        210
      ],
      "annotations": [
        "28 / Brake Continuity Preflight",
        "R134-R136 sense J3 return on U30 AIN2 before motion; C98 filters the ADC input.",
        "This check detects an absent resistor or stuck-on Q16; it does not prove braking current."
      ]
    }
  ],
  "sheet_bounds": [
    {
      "index": 1,
      "name": "usb-pd",
      "elements": 129,
      "coordinate_points_checked": 276
    },
    {
      "index": 2,
      "name": "usb-pd-policy",
      "elements": 243,
      "coordinate_points_checked": 523
    },
    {
      "index": 3,
      "name": "logic-power",
      "elements": 89,
      "coordinate_points_checked": 203
    },
    {
      "index": 4,
      "name": "logic-backup",
      "elements": 89,
      "coordinate_points_checked": 213
    },
    {
      "index": 5,
      "name": "logic-selection",
      "elements": 91,
      "coordinate_points_checked": 185
    },
    {
      "index": 6,
      "name": "motor-power",
      "elements": 237,
      "coordinate_points_checked": 448
    },
    {
      "index": 7,
      "name": "motion",
      "elements": 237,
      "coordinate_points_checked": 433
    },
    {
      "index": 8,
      "name": "motion-enable",
      "elements": 83,
      "coordinate_points_checked": 160
    },
    {
      "index": 9,
      "name": "bridge-a",
      "elements": 222,
      "coordinate_points_checked": 384
    },
    {
      "index": 10,
      "name": "bridge-b",
      "elements": 207,
      "coordinate_points_checked": 365
    },
    {
      "index": 11,
      "name": "brake",
      "elements": 79,
      "coordinate_points_checked": 154
    },
    {
      "index": 12,
      "name": "brake-ovp",
      "elements": 129,
      "coordinate_points_checked": 271
    },
    {
      "index": 13,
      "name": "mcu",
      "elements": 244,
      "coordinate_points_checked": 432
    },
    {
      "index": 14,
      "name": "encoder",
      "elements": 75,
      "coordinate_points_checked": 139
    },
    {
      "index": 15,
      "name": "usb-data",
      "elements": 143,
      "coordinate_points_checked": 323
    },
    {
      "index": 17,
      "name": "user-control",
      "elements": 14,
      "coordinate_points_checked": 17
    },
    {
      "index": 21,
      "name": "usb-logic",
      "elements": 114,
      "coordinate_points_checked": 235
    },
    {
      "index": 22,
      "name": "telemetry",
      "elements": 84,
      "coordinate_points_checked": 155
    },
    {
      "index": 23,
      "name": "phase-current",
      "elements": 98,
      "coordinate_points_checked": 158
    },
    {
      "index": 24,
      "name": "driver-power",
      "elements": 79,
      "coordinate_points_checked": 194
    },
    {
      "index": 25,
      "name": "indicators",
      "elements": 143,
      "coordinate_points_checked": 269
    },
    {
      "index": 26,
      "name": "alarm",
      "elements": 64,
      "coordinate_points_checked": 126
    },
    {
      "index": 27,
      "name": "pd-programming",
      "elements": 76,
      "coordinate_points_checked": 143
    },
    {
      "index": 28,
      "name": "brake-feedback",
      "elements": 34,
      "coordinate_points_checked": 43
    }
  ],
  "checks": [
    {
      "ok": true,
      "message": "source and schematic component counts match",
      "details": {
        "source": 277,
        "schematic": 277
      }
    },
    {
      "ok": true,
      "message": "every source component maps to exactly one schematic component",
      "details": {
        "violations": []
      }
    },
    {
      "ok": true,
      "message": "every schematic component belongs to a declared sheet",
      "details": {
        "violations": []
      }
    },
    {
      "ok": true,
      "message": "24 A4 schematic sheets including brake preflight",
      "details": {
        "actual": 24
      }
    },
    {
      "ok": true,
      "message": "all schematic sheet names are unique"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet usb-pd"
    },
    {
      "ok": true,
      "message": "usb-pd keeps sheet index 1"
    },
    {
      "ok": true,
      "message": "usb-pd keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "usb-pd has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "01 / USB-C PD POWER",
          "J1: 48 V / 5 A EPR power only; USB DATA is on J10.",
          "U1 protects CC/VBUS. Q1 controls protected VBUS; C1/C2 provide local bypass."
        ]
      }
    },
    {
      "ok": true,
      "message": "usb-pd has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "usb-pd explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet usb-pd-policy"
    },
    {
      "ok": true,
      "message": "usb-pd-policy keeps sheet index 2"
    },
    {
      "ok": true,
      "message": "usb-pd-policy keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "usb-pd-policy has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "02 / PD Controller and EEPROM",
          "U2 TPS26750 negotiates EPR; U3 stores the board-specific TI configuration.",
          "Q2/Q3 translate PD path control. TI image and powered qualification remain required."
        ]
      }
    },
    {
      "ok": true,
      "message": "usb-pd-policy has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "usb-pd-policy explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet logic-power"
    },
    {
      "ok": true,
      "message": "logic-power keeps sheet index 3"
    },
    {
      "ok": true,
      "message": "logic-power keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "logic-power has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "03 / PD Backup Supply",
          "U5 converts PD VBUS to V3V3_PD; L1 and its feedback/bypass network are shown here.",
          "Input spans default USB 5 V through the specified 48 V EPR operating target."
        ]
      }
    },
    {
      "ok": true,
      "message": "logic-power has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "logic-power explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet logic-backup"
    },
    {
      "ok": true,
      "message": "logic-backup keeps sheet index 4"
    },
    {
      "ok": true,
      "message": "logic-backup keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "logic-backup has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "04 / Motor Backup Supply",
          "U22 converts VMOTOR to V3V3_MOTOR for brake-control backup after PD loss.",
          "L2, feedback and local bypass remain on the motor supply domain."
        ]
      }
    },
    {
      "ok": true,
      "message": "logic-backup has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "logic-backup explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet logic-selection"
    },
    {
      "ok": true,
      "message": "logic-selection keeps sheet index 5"
    },
    {
      "ok": true,
      "message": "logic-selection keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "logic-selection has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "05 / Logic Supply Selection and Power Permit",
          "U23/U24 and R111 form the status-interlocked reverse-blocked board supply.",
          "U4 combines PD path status with POWER_PERMIT to control the eFuse enable."
        ]
      }
    },
    {
      "ok": true,
      "message": "logic-selection has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "logic-selection explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet motor-power"
    },
    {
      "ok": true,
      "message": "motor-power keeps sheet index 6"
    },
    {
      "ok": true,
      "message": "motor-power keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "motor-power has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "06 / Protected 48 V Motor Bus",
          "Q4/Q5 provide reverse blocking; U6 is the eFuse and input-current monitor.",
          "Nominal 1x current limit 3.607 A. C22/C23 are motor bulk; R31-R33/C24 monitor voltage."
        ]
      }
    },
    {
      "ok": true,
      "message": "motor-power has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "motor-power explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet motion"
    },
    {
      "ok": true,
      "message": "motion keeps sheet index 7"
    },
    {
      "ok": true,
      "message": "motion keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "motion has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "07 / Motion Controller",
          "U7 TMC5160A drives the external bridges; nominal regulated driver supply is 12 V.",
          "Bootstrap, charge-pump and local bypass parts are shown with the controller."
        ]
      }
    },
    {
      "ok": true,
      "message": "motion has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "motion explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet motion-enable"
    },
    {
      "ok": true,
      "message": "motion-enable keeps sheet index 8"
    },
    {
      "ok": true,
      "message": "motion-enable keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "motion-enable has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "08 / Onboard Motion and Hardware Enable",
          "STM32 commands U7 over SPI. U10/U11/U33 and Q14 retain hardware inhibits.",
          "The driver remains inhibited until the hardware safety conditions permit motion."
        ]
      }
    },
    {
      "ok": true,
      "message": "motion-enable has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "motion-enable explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet bridge-a"
    },
    {
      "ok": true,
      "message": "bridge-a keeps sheet index 9"
    },
    {
      "ok": true,
      "message": "bridge-a keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "bridge-a has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "09 / Motor Phase A Power Bridge",
          "Q6/Q8 high-side and Q7/Q9 low-side switches form phase A; R109 is the Kelvin shunt.",
          "J2 connects both motor windings. The 3.8 A RMS design ceiling is not a qualified setting."
        ]
      }
    },
    {
      "ok": true,
      "message": "bridge-a has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "bridge-a explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet bridge-b"
    },
    {
      "ok": true,
      "message": "bridge-b keeps sheet index 10"
    },
    {
      "ok": true,
      "message": "bridge-b keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "bridge-b has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "10 / Motor Phase B Power Bridge",
          "Q10/Q12 high-side and Q11/Q13 low-side switches form phase B.",
          "R110 is the independent 33 mOhm shunt; preserve the Kelvin sense connections."
        ]
      }
    },
    {
      "ok": true,
      "message": "bridge-b has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "bridge-b explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet brake"
    },
    {
      "ok": true,
      "message": "brake keeps sheet index 11"
    },
    {
      "ok": true,
      "message": "brake keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "brake has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "11 / Brake Reference and Turn-on Threshold",
          "U12 is the 2.5 V reference. U13 commands braking at nominal 52.0 V.",
          "External braking resistor and heatsink sizing depends on stored mechanical energy."
        ]
      }
    },
    {
      "ok": true,
      "message": "brake has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "brake explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet brake-ovp"
    },
    {
      "ok": true,
      "message": "brake-ovp keeps sheet index 12"
    },
    {
      "ok": true,
      "message": "brake-ovp keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "brake-ovp has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "12 / Overvoltage Inhibit and Brake Driver",
          "U14 inhibits motion at nominal 53.21 V; U15/Q16 switch the external J3 brake load.",
          "Brake control remains powered from the protected motor bus through the backup supply."
        ]
      }
    },
    {
      "ok": true,
      "message": "brake-ovp has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "brake-ovp explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet mcu"
    },
    {
      "ok": true,
      "message": "mcu keeps sheet index 13"
    },
    {
      "ok": true,
      "message": "mcu keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "mcu has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "13 / MCU Clock Memory and Debug",
          "U16 STM32G0B1 commands the TMC5160 ramp generator over SPI; SW2 requests Start/Stop.",
          "U17 is configuration storage. Y1, SW1 and the bare SWD/NRST pads support bring-up."
        ]
      }
    },
    {
      "ok": true,
      "message": "mcu has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "mcu explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet encoder"
    },
    {
      "ok": true,
      "message": "encoder keeps sheet index 14"
    },
    {
      "ok": true,
      "message": "encoder keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "encoder has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "14 / Optional Shaft Encoder",
          "U18 AS5047P is centered on bottom; C52/C53 are top-side. All are DNP.",
          "SPI plus ABI test access; magnet interface for the ordered single-shaft motor is unqualified."
        ]
      }
    },
    {
      "ok": true,
      "message": "encoder has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "encoder explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet usb-data"
    },
    {
      "ok": true,
      "message": "usb-data keeps sheet index 15"
    },
    {
      "ok": true,
      "message": "usb-data keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "usb-data has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "15 / USB DATA and Attach Sense",
          "J10 supplies USB 2.0 DATA and independent MCU logic power; no PD on this port.",
          "D15 protects D+/D-/CC. R107/R108/C72 sense DATA VBUS; DATA cannot feed VMOTOR."
        ]
      }
    },
    {
      "ok": true,
      "message": "usb-data has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "usb-data explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet user-control"
    },
    {
      "ok": true,
      "message": "user-control keeps sheet index 17"
    },
    {
      "ok": true,
      "message": "user-control keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "user-control has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "17 / Local Start and Stop",
          "SW2 requests motion from the onboard STM32. R133 pulls the input to MCU logic power.",
          "Debounce requires release before start; reset, power loss and faults never auto-start."
        ]
      }
    },
    {
      "ok": true,
      "message": "user-control has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "user-control explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet usb-logic"
    },
    {
      "ok": true,
      "message": "usb-logic keeps sheet index 21"
    },
    {
      "ok": true,
      "message": "usb-logic keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "usb-logic has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "21 / USB Logic Power",
          "U28 limits DATA power; U25 regulates V3V3_USB. U26/U27 reverse-block the MCU rail.",
          "R119/R120 sense board supply on PB1. Industrial peripherals require board power."
        ]
      }
    },
    {
      "ok": true,
      "message": "usb-logic has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "usb-logic explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet telemetry"
    },
    {
      "ok": true,
      "message": "telemetry keeps sheet index 22"
    },
    {
      "ok": true,
      "message": "telemetry keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "telemetry has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "22 / Temperature and Bus Diagnostics",
          "U29 TMP102 senses temperature; U33 provides hardware inhibit. U30 ADS1115 monitors the bus.",
          "Sensor addresses are 0x48 and 0x49. Temperature correlation requires load testing."
        ]
      }
    },
    {
      "ok": true,
      "message": "telemetry has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "telemetry explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet phase-current"
    },
    {
      "ok": true,
      "message": "phase-current keeps sheet index 23"
    },
    {
      "ok": true,
      "message": "phase-current keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "phase-current has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "23 / Phase Current Diagnostics",
          "U31/U32 INA240A1 measure the two 5 mOhm inline shunts at 20 V/V.",
          "Nominal 100 mV/A about 1.65 V; instantaneous diagnostics, not a short-circuit trip."
        ]
      }
    },
    {
      "ok": true,
      "message": "phase-current has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "phase-current explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet driver-power"
    },
    {
      "ok": true,
      "message": "driver-power keeps sheet index 24"
    },
    {
      "ok": true,
      "message": "driver-power keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "driver-power has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "24 / Regulated Driver Supply",
          "U34 is the 65 V buck supplying nominal 12 V to U7 VSA/12VOUT and U15.",
          "TMC5160 external supply range is 10-13 V; ripple and startup require bench validation."
        ]
      }
    },
    {
      "ok": true,
      "message": "driver-power has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "driver-power explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet indicators"
    },
    {
      "ok": true,
      "message": "indicators keeps sheet index 25"
    },
    {
      "ok": true,
      "message": "indicators keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "indicators has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "25 / Status and Independent Power Indication",
          "U35 PCA9538 at 0x70; U37 buffers PC13 reset into PD_3V3 with default-low bias.",
          "D17 shows board V3V3 independently of firmware; USB-only MCU power is distinct."
        ]
      }
    },
    {
      "ok": true,
      "message": "indicators has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "indicators explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet alarm"
    },
    {
      "ok": true,
      "message": "alarm keeps sheet index 26"
    },
    {
      "ok": true,
      "message": "alarm keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "alarm has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "26 / Audible Fault Alarm",
          "BZ1 active buzzer is driven by Q26 with a gate pulldown and D18 clamp.",
          "The alarm defaults off. Motor protection remains independent of the audible indication."
        ]
      }
    },
    {
      "ok": true,
      "message": "alarm has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "alarm explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet pd-programming"
    },
    {
      "ok": true,
      "message": "pd-programming keeps sheet index 27"
    },
    {
      "ok": true,
      "message": "pd-programming keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "pd-programming has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "27 / PD Programming and Power Probes",
          "U36 isolates both PD EEPROM I2Cc wires when TP_PD_ISO is grounded.",
          "Use fixed 5 V fixture power and a 3.3 V open-drain programmer; VREF is sense-only."
        ]
      }
    },
    {
      "ok": true,
      "message": "pd-programming has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "pd-programming explains component roles"
    },
    {
      "ok": true,
      "message": "known fixed geometry for sheet brake-feedback"
    },
    {
      "ok": true,
      "message": "brake-feedback keeps sheet index 28"
    },
    {
      "ok": true,
      "message": "brake-feedback keeps fixed 297 x 210 frame",
      "details": {
        "actual": [
          297,
          210
        ]
      }
    },
    {
      "ok": true,
      "message": "brake-feedback has 3 explanatory annotations",
      "details": {
        "actual": 3,
        "texts": [
          "28 / Brake Continuity Preflight",
          "R134-R136 sense J3 return on U30 AIN2 before motion; C98 filters the ADC input.",
          "This check detects an absent resistor or stuck-on Q16; it does not prove braking current."
        ]
      }
    },
    {
      "ok": true,
      "message": "brake-feedback has numbered sheet heading"
    },
    {
      "ok": true,
      "message": "brake-feedback explains component roles"
    },
    {
      "ok": true,
      "message": "72 high-level annotations on 24 sheets",
      "details": {
        "actual": 72
      }
    },
    {
      "ok": true,
      "message": "all schematic coordinate points are inside fixed sheet frames",
      "details": {
        "violations": []
      }
    },
    {
      "ok": true,
      "message": "all component, shape, and estimated text extents are inside fixed sheet frames",
      "details": {
        "violations": []
      }
    },
    {
      "ok": true,
      "message": "163 named source nets including buffered indicator reset",
      "details": {
        "actual": 163
      }
    },
    {
      "ok": true,
      "message": "every named source net has connected ports",
      "details": {
        "connected_groups": 163,
        "source_nets": 163
      }
    },
    {
      "ok": true,
      "message": "every connected net has at least two source ports",
      "details": {
        "violations": []
      }
    },
    {
      "ok": true,
      "message": "every connectivity key resolves to a named source net",
      "details": {
        "unknown_keys": []
      }
    },
    {
      "ok": true,
      "message": "exactly two USB-C-standard connector exists",
      "details": {
        "refs": [
          "J1",
          "J10"
        ]
      }
    },
    {
      "ok": true,
      "message": "PD J1 and DATA J10 use standard USB-C"
    },
    {
      "ok": true,
      "message": "exactly two connector MPN is USB/Type-C related",
      "details": {
        "refs": [
          "J1",
          "J10"
        ]
      }
    },
    {
      "ok": true,
      "message": "Unsupported external control harnesses are removed"
    },
    {
      "ok": true,
      "message": "separate-port EPR, CC, D+/D-, protection, and MCU chains match",
      "details": {
        "mismatches": []
      }
    },
    {
      "ok": true,
      "message": "PD J1 data pins are NC"
    },
    {
      "ok": true,
      "message": "DATA J10 SBU pins are NC"
    },
    {
      "ok": true,
      "message": "PD and DATA VBUS remain separate"
    },
    {
      "ok": true,
      "message": "89 capacitors including reset-buffer bypass and brake feedback filter",
      "details": {
        "actual": 89
      }
    },
    {
      "ok": true,
      "message": "all capacitor pins connect to two distinct, shared nets",
      "details": {
        "violations": []
      }
    },
    {
      "ok": true,
      "message": "19 test points audited",
      "details": {
        "actual": 19
      }
    },
    {
      "ok": true,
      "message": "every test point probes a shared functional net",
      "details": {
        "violations": []
      }
    },
    {
      "ok": true,
      "message": "source no-connect set exactly matches the reviewed intentional allowlist",
      "details": {
        "expected": [
          "J1.10:SBU1",
          "J1.11:DP2",
          "J1.12:DM",
          "J1.13:DP",
          "J1.14:DN2",
          "J1.16:SBU2",
          "J10.10:SBU1",
          "J10.16:SBU2",
          "U1.1:DP",
          "U1.2:DM",
          "U16.13:PA2",
          "U16.14:PA3",
          "U16.22:PB10",
          "U16.25:PB13",
          "U16.26:PB14",
          "U16.27:PB15",
          "U16.29:PA9",
          "U16.2:PC14_OSC32_IN",
          "U16.31:PC7",
          "U16.32:PA10",
          "U16.38:PD0",
          "U16.39:PD1",
          "U16.3:PC15_OSC32_OUT",
          "U16.40:PD2",
          "U16.41:PD3",
          "U18.10:U",
          "U18.8:W",
          "U18.9:V",
          "U2.10:N_I2Ct_IRQ",
          "U2.21:NC",
          "U2.28:PP5V1",
          "U2.29:PP5V2",
          "U23.4:NC",
          "U24.4:NC",
          "U25.4:NC",
          "U26.4:NC",
          "U27.4:NC",
          "U28.4:FAULT",
          "U30.2:ALERT",
          "U31.4:NC",
          "U32.4:NC",
          "U34.4:PG",
          "U35.13:N_INT",
          "U37.1:NC",
          "U6.11:MODE",
          "U6.19:N_C6",
          "U6.20:N_C5",
          "U6.21:N_C4",
          "U6.22:N_C3",
          "U6.23:N_C2",
          "U6.24:N_C1"
        ],
        "actual": [
          "J1.10:SBU1",
          "J1.11:DP2",
          "J1.12:DM",
          "J1.13:DP",
          "J1.14:DN2",
          "J1.16:SBU2",
          "J10.10:SBU1",
          "J10.16:SBU2",
          "U1.1:DP",
          "U1.2:DM",
          "U16.13:PA2",
          "U16.14:PA3",
          "U16.22:PB10",
          "U16.25:PB13",
          "U16.26:PB14",
          "U16.27:PB15",
          "U16.29:PA9",
          "U16.2:PC14_OSC32_IN",
          "U16.31:PC7",
          "U16.32:PA10",
          "U16.38:PD0",
          "U16.39:PD1",
          "U16.3:PC15_OSC32_OUT",
          "U16.40:PD2",
          "U16.41:PD3",
          "U18.10:U",
          "U18.8:W",
          "U18.9:V",
          "U2.10:N_I2Ct_IRQ",
          "U2.21:NC",
          "U2.28:PP5V1",
          "U2.29:PP5V2",
          "U23.4:NC",
          "U24.4:NC",
          "U25.4:NC",
          "U26.4:NC",
          "U27.4:NC",
          "U28.4:FAULT",
          "U30.2:ALERT",
          "U31.4:NC",
          "U32.4:NC",
          "U34.4:PG",
          "U35.13:N_INT",
          "U37.1:NC",
          "U6.11:MODE",
          "U6.19:N_C6",
          "U6.20:N_C5",
          "U6.21:N_C4",
          "U6.22:N_C3",
          "U6.23:N_C2",
          "U6.24:N_C1"
        ],
        "missing": [],
        "extra": []
      }
    },
    {
      "ok": true,
      "message": "every intentional NC is represented by a schematic pin",
      "details": {
        "missing": []
      }
    },
    {
      "ok": true,
      "message": "every intentional NC is represented by a PCB pad",
      "details": {
        "missing": []
      }
    },
    {
      "ok": true,
      "message": "only the expected stacked duplicate pins are hidden in schematic symbols",
      "details": {
        "expected": [
          "J1.17:VBUS3",
          "J1.18:VBUS4",
          "J1.19:GND3",
          "J1.20:GND4",
          "J1.2:EH2",
          "J1.3:EH3",
          "J1.4:EH4",
          "J1.6:GND2",
          "J1.8:VBUS2",
          "J10.11:DP2",
          "J10.14:DN2",
          "J10.17:VBUS3",
          "J10.18:VBUS4",
          "J10.19:GND3",
          "J10.20:GND4",
          "J10.2:EH2",
          "J10.3:EH3",
          "J10.4:EH4",
          "J10.6:GND2",
          "J10.8:VBUS2",
          "U1.6:RPD_G2",
          "U1.7:RPD_G1"
        ],
        "actual": [
          "J1.17:VBUS3",
          "J1.18:VBUS4",
          "J1.19:GND3",
          "J1.20:GND4",
          "J1.2:EH2",
          "J1.3:EH3",
          "J1.4:EH4",
          "J1.6:GND2",
          "J1.8:VBUS2",
          "J10.11:DP2",
          "J10.14:DN2",
          "J10.17:VBUS3",
          "J10.18:VBUS4",
          "J10.19:GND3",
          "J10.20:GND4",
          "J10.2:EH2",
          "J10.3:EH3",
          "J10.4:EH4",
          "J10.6:GND2",
          "J10.8:VBUS2",
          "U1.6:RPD_G2",
          "U1.7:RPD_G1"
        ],
        "delta": []
      }
    },
    {
      "ok": true,
      "message": "all hidden schematic pins are electrically connected; no NC is hidden"
    }
  ]
}