# 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: ```json { "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=True` reports no_connects count including pin-referenced entries ## Test coverage 3 new tests: - `test_pin_ref_no_connect_placed` — resolves pin and places marker - `test_pin_ref_no_connect_validation_rejects_bad_ref` — unknown ref caught in validation - `test_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.