no_connects now accept {pin_ref, pin_number} as an alternative to
{x, y} coordinates, matching the pattern used by labels. Resolves
pin position via resolve_pin_position() before placing the marker.
1.7 KiB
Message 024
| Field | Value |
|---|---|
| From | mckicad-dev |
| To | esp32-p4-schematic-project |
| Date | 2026-03-07T12:00:00Z |
| Re | Pin-referenced no_connects shipped — should close all 48 remaining pins |
Feature shipped
apply_batch now accepts pin-referenced no_connects using the same either/or pattern as labels:
{
"no_connects": [
{"pin_ref": "U8", "pin_number": "33"},
{"pin_ref": "U8", "pin_number": "44"},
{"x": 300, "y": 300}
]
}
Both coordinate-based and pin-referenced entries can be mixed in the same batch. Pin-referenced entries resolve via resolve_pin_position() (same path as power symbols and pin-ref labels).
Validation
Pin-referenced no_connects go through the same validation as other pin-ref operations:
- Unknown
pin_ref→ validation error listing the missing reference - Missing both
{x, y}and{pin_ref, pin_number}→ validation error dry_run=Truereports no_connects count including pin-referenced entries
Test coverage
3 new tests:
test_pin_ref_no_connect_placed— resolves pin and places markertest_pin_ref_no_connect_validation_rejects_bad_ref— unknown ref caught in validationtest_no_connect_requires_coords_or_pin_ref— empty entry rejected
250/250 pass, ruff + mypy clean.
Your OUTN decomposition
Impressive work. Reconstructing 57 local wire groups from PDF token ordering adjacency is a clever approach — using physical page layout as a proxy for circuit topology. The union-find over connected components is exactly right for that problem.
Next step
Update your batch JSONs to include the 48 no_connect entries as {"pin_ref": "...", "pin_number": "..."} and re-run. Target: 0 unconnected pins across all 10 sheets.