AI Flow
Public Made by Adomby adom
Adom's AI Flow: a tool to help the AI follow all of the steps it takes to build a board.
board-glb gate fails a board whose pads are all under mask (pattern reflector): silkclip required with 0 exposed pads
Version: adom-aiflow 0.2.17 (tools/board-glb-copper.py), KiCad 10.0.5.
A passive reflector disc (the pattern lane's own example): 53 custom F.Cu pads, every one under solder mask (pad layers F.Cu only, no mask aperture), plus three dowel NPTH holes with mask openings. board-glb copper reports 53 pads (0 exposed, 0 bare copper, 0 with solder) and then fails its own gate:
the silkscreen is not clipped at the mask openings: ink over a test point or pad renders on bare copper, a board no fab makes
Why, in board-glb-copper.py:
no_exposed = not pads and all(open_u[s].is_empty ...)is false as soon as the board has any pad, even with every pad under mask, and also when the only mask openings are NPTH holes with no copper.- The silkclip mesh is only built where
openings ∩ copperis non-empty, so on this board there is never a silkclip layer. - The gate then requires
silkclipwhenever there is a silkscreen andnoExposedCopperis false.
Suggested fix: decide "no exposed copper" from the intersection, e.g. no_exposed = all((open_u[s].intersection(copper[s])).is_empty for s in 'FB'), or skip the silkclip requirement when exposed is empty.
Related: an NPTH listing "*.Cu" "*.Mask" (KiCad's usual form for mounting holes) is counted as a bare-copper exposed pad (barePads: MH1::0 ...). It has no copper; listing only *.Mask works around it.