Skip to content

D132 — KiCad-measured shapes and net-less arcs in the judge

Decision

Whole-tier runs (2026-10-19) found 15 boards with an added error; five shapes KiCad measures were underestimated and are fixed, and the judge no longer counts a net-less arc as routed copper (judge version instance-v3-graphic-arcs): (1) copper text boxes use KiCad's measured stroke-font advances (a table in 1/21 of the height, space 0.76; the old estimate was 10-50 % too narrow), (2) custom-pad primitives gr_poly, gr_rect, gr_line, gr_circle, gr_arc are all read and grown by half their pen width, (3) Margin-layer graphics keep their stroke as the edge clearance obstacle, (4) a pad with a negative local solder_mask_margin widens the solder_mask_bridge reach (0.2 + 0.2 |margin| mm), (5) judge: Arc [<no net>] is a copper graphic, not routed copper

Alternatives

Treating the 15 as noise; calibrating by trial and error on the routed boards; changing KiCad's rules

Reason

The domotics, DPS-1200FB, OricMouse, VC4000, type5 text cases, flatpack2 (custom pad, 0.1155 vs 0.127 mm), kitspace_firefly, RaspberryPi-PoE, rfidBoard_POE, phone_amp, Hornbill (Margin lines up to 2 mm wide) and free-of-charge_BMS (mask bridge) re-ran with no added error; MySensors and PowerGlove and livolo were judge artefacts (KiCad names a different piece of the same footprint graphic from run to run). The numbers come from kicad-cli pcb export svg plots and DRC runs of small test boards (tests/test_kicad_measured_shapes.cpp). quick is byte-identical before and after. The negative-margin rule is an envelope of two measurements, not KiCad's formula