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.
project-page KeyError on a stale parts record; pour plan vias overlap existing in-pad vias and land unchecked; land pours refusal without detail
Seen with adom-aiflow 0.2.6 on a 2-layer KiCad 10 molecule board (TMC2226 driver). The board was built and routed offline, then adopted (adopt-board), with its zones taken over through verify-pours --adopt.
1. project-page crashes on a stale parts record
project-page --page <owner/slug> --create --private printed ERROR: project page: Traceback ... merge_project_parts ... KeyError: 'RC0402FR-0733KL'.
The run's parts outcome still listed a project-library part that the current BOM no longer uses. Its symbol was gone from the project library's .kicad_sym, but its footprint and STEP were still there. Rerunning parts --bom <current bom> --project-lib <dir> fixed it.
Expected: project-page compares the parts record with the current BOM and names the stale entry, instead of a bare KeyError ("part X is in the parts record but not in the BOM / its symbol is missing from : run parts again").
2. The pour plan adds vias on top of a pad's existing in-pad vias, and land vias lands them unchecked
spec.thermalVias: [{"pad": "U1.29", "net": "GND", "count": 12}] on a board whose exposed pad already carries 10 in-pad vias (0.5/0.25 mm, 2 x 5, datasheet pattern). pour planned 3 more 0.8/0.4 mm vias at (111.8, 82), (113.0, 82) and (114.2, 82). Their centres were 0.6 mm from existing vias, so each overlapped one.
Changing count to 10 still planned the same 3. Only removing the thermalVias entry gave "0 vias". land vias then landed the 3 overlapping vias live without a DRC preflight. They had to be removed with kicad_remove_route, after which DRC was 0 errors again. Meanwhile thermal-vias plan (spec.hot) correctly reported the part at its target with the existing 10.
Expected:
- the pour plan counts the pad's existing vias (any size) against
count, asthermal-vias plandoes; - planned vias are checked against existing copper and holes before
land vias, and refused with the clash named.
3. land pours refusal has no detail
After verify-pours --adopt matched all 3 zones exactly, land pours answered ERROR: pour for native-zone-plan refused by the preflight: "zone_plan_refused" {}. The details object was empty, and the hint lists generic causes (starved_thermal, zones_intersect, clearance). The ledger row has "itemIds":null and no reason.
Expected: the preflight's own reason, and the zone and place it refers to. Also say whether re-landing zones that were just adopted is expected to work. The step chain accepted the adopted pours and went on.