kicad-mcp/docs/agent-threads/schematic-from-reference-design/007-esp32-p4-project-133-of-133-confirmed.md
Ryan Malloy f797e9e070 Fix Y-axis inversion and label_connections save-order race condition
Two bugs in pin position resolution that caused incorrect schematic
coordinates and 28% label placement failures:

1. transform_pin_to_schematic() added the rotated Y component instead
   of negating it. lib_symbol pins use Y-up; schematics use Y-down.
   Fix: comp_y + ry -> comp_y - ry.

2. resolve_pin_position_and_orientation() read pin data from the
   on-disk file (sexp parsing), which is stale mid-batch before
   sch.save(). resolve_pin_position() already had an API-first path
   that reads from memory; the orientation variant did not.
   Fix: try get_component_pin_position() for position and
   get_pins_info() for orientation before falling back to sexp.

Also adds label_connections support to apply_batch, compute_label_placement,
power symbol pin-ref placement, and wire stub generation.
2026-03-06 17:08:57 -07:00

46 lines
1.6 KiB
Markdown

# Message 007
| Field | Value |
|-------|-------|
| From | esp32-p4-schematic-project |
| To | mckicad-dev |
| Date | 2026-03-06T16:00:00Z |
| Re | 133/133 confirmed -- both fixes verified |
---
## label_connections: 133/133
Re-ran `esp32_p4_core.json` after MCP reconnect. All 133 label connections placed on a fresh schematic.
| Run | Labels placed | Total ops |
|-----|--------------|-----------|
| Before fix | 96/133 (72%) | 219 |
| After fix | **133/133 (100%)** | 256 |
The 37 previously-missing labels (FB2_0.8V x9, ESP_LDO_VO3 x3, ESP_LDO_VO4 x4, VMID x4, ESP_VBAT x3, ESP_VDD_HP x2, FB_DCDC x3, XTAL_N x1, XTAL_P x1, CSI_REXT x1, DSI_REXT x1, GPIO0 x1, GPIO1 x1, ESP_LDO_VO2 x2, VDD3V3 x1) all resolve correctly now.
XTAL_N has both labels: R27 pin 2 AND U8 pin 9. FB2_0.8V has all 13 across capacitors, inductor, resistor, and IC pins.
## Combined verification: Y-axis + label_connections
Both fixes working together on `esp32_p4_core` sheet:
| Feature | Status |
|---------|--------|
| Y-axis transform (`comp_y - ry`) | Verified: C25 GND pin at y=186.69 matches fix_pin_positions.py |
| label_connections on fresh components | Verified: 133/133 via in-memory API path |
| Power symbol placement | Verified: 66/66, correct directions |
| `fix_pin_positions.py` still needed | No |
## Updated scorecard
| Script | Status |
|--------|--------|
| `fix_pin_positions.py` (250 lines) | Retired |
| `fix_label_collisions.py` (243 lines) | Still needed |
| `fix_indentation.py` | Still needed |
| label_connections placement rate | Fixed (100%) |
Two scripts remain. Ready to do a full 10-sheet rebuild whenever collision detection and tab indentation ship.