What happens
sot23 (the 3-pin variant) emits no silkscreen body outline and no pin 1 marker — only pads, the reference designator text, and a courtyard:
fp.string("sot23").circuitJson()
// pcb_smtpad: 3, pcb_silkscreen_text: 1, pcb_courtyard_outline: 1
// pcb_silkscreen_path: 0 ← nothing
Every sibling 3/4-pin SOT in this repo does draw one:
| footprint |
pcb_silkscreen_path count |
sot23 |
0 |
sot23w |
2 |
sot323 |
2 |
sot343 |
2 |
sot363 |
3 |
sot563 |
3 |
sot25 |
3 |
sot23_5 |
3 |
So the most common 3-pin package in the library is the one without an outline, while sot23_5 — the same function, same file — has one.
Why it matters
Without an outline or a pin 1 marker there's nothing on the board silk to show the part's body extent or its orientation. A SOT-23-3 is symmetric enough that a rotated placement isn't obvious during assembly or inspection, and for a transistor that swaps base and collector.
KiCad reference
KiCad's SOT-23-3 has 8 silkscreen paths — the pads are byte-identical to ours, so it's only the silkscreen that's missing:
kicad pad 1 x[-1.8000,-0.4750] y[0.6500,1.2500] ← identical to footprinter
kicad pad 2 x[-1.8000,-0.4750] y[-1.2500,-0.6500] ← identical
kicad pad 3 x[0.4750,1.8000] y[-0.3000,0.3000] ← identical
It draws the body as open segments rather than a closed rectangle, because the pads overhang the body horizontally (a pad spans x[-1.80, -0.475] while the body edge is at x = -0.91). The vertical edges are split where each pin exits, leaving a uniform 0.26 mm from pad edge to segment end — half the 0.12 stroke plus IPC's 0.2 mm silk-to-pad clearance.
Why no test catches it
tests/kicad-parity/sot23_kicad_parity.test.ts compares copper via boolean difference and asserts courtyardDiffPercent. Both are blind to silkscreen, so the parity test reports Diff: 0.00% with the silkscreen entirely absent. The fixture already returns fpSilkscreenElements, but no parity test in the repo reads it.
Related
Same class as #686 and #677 — a defect the copper-only parity tests can't see. Happy to submit a PR.
What happens
sot23(the 3-pin variant) emits no silkscreen body outline and no pin 1 marker — only pads, the reference designator text, and a courtyard:Every sibling 3/4-pin SOT in this repo does draw one:
pcb_silkscreen_pathcountsot23sot23wsot323sot343sot363sot563sot25sot23_5So the most common 3-pin package in the library is the one without an outline, while
sot23_5— the same function, same file — has one.Why it matters
Without an outline or a pin 1 marker there's nothing on the board silk to show the part's body extent or its orientation. A SOT-23-3 is symmetric enough that a rotated placement isn't obvious during assembly or inspection, and for a transistor that swaps base and collector.
KiCad reference
KiCad's
SOT-23-3has 8 silkscreen paths — the pads are byte-identical to ours, so it's only the silkscreen that's missing:It draws the body as open segments rather than a closed rectangle, because the pads overhang the body horizontally (a pad spans
x[-1.80, -0.475]while the body edge is atx = -0.91). The vertical edges are split where each pin exits, leaving a uniform 0.26 mm from pad edge to segment end — half the 0.12 stroke plus IPC's 0.2 mm silk-to-pad clearance.Why no test catches it
tests/kicad-parity/sot23_kicad_parity.test.tscompares copper via boolean difference and assertscourtyardDiffPercent. Both are blind to silkscreen, so the parity test reports Diff: 0.00% with the silkscreen entirely absent. The fixture already returnsfpSilkscreenElements, but no parity test in the repo reads it.Related
Same class as #686 and #677 — a defect the copper-only parity tests can't see. Happy to submit a PR.