KiCad - the KiCad Bridge
Public Made by Adomby adom
Reference implementation of the KiCad bridge: multi-instance Python server, forward path via kicad-cli, reverse path via in-process plugin. Most complex of the three bundled bridges.
kicad_move_footprint drops a polygon's closing vertex on rotate; DRC then reports lib_footprint_mismatch
Found on the OCP NIC 3.0 to OCuLink riser (KiCad 10.0.5, bridge 1.0.55) after adom-aiflow place land, which moves footprints through kicad_move_footprint.
U5-U8 (KiCad stock Package_SON:USON-10_2.5x1.0mm_P0.5mm, rotated 270) come back from the IPC footprint update with their pin-1 silk fp_poly missing the repeated closing vertex:
stock / before: (xy -0.62 -1.41) (xy -0.9 -1.41) (xy -0.62 -1.69) (xy -0.62 -1.41)
after the move: (xy -0.62 -1.41) (xy -0.9 -1.41) (xy -0.62 -1.69)
The geometry is the same (KiCad closes polygons implicitly), but native DRC now reports lib_footprint_mismatch for each moved part ("does not match copy in library 'Package_SON'"), and three (thickness 0.15) font entries appear on the fields. Footprints moved without rotation kept identical definitions.
Expected: the client-side transform keeps every child exactly as the library has it (including a closing vertex), so a pure move/rotate never creates a library mismatch.