Closed general

Hands-on: thermal-vias plan cannot see zones the human poured (thermal-vias runs before pours)

noah · ·closed by John Lauer

Found while running hands-on AI Flow (PR #59 build) on a board the human placed, routed and poured himself (AM32 ESC v1, 2 layers, 17 zones drawn in KiCad).

What happened. The KiCad lane runs thermal-vias before pours. thermal-vias plan only counts copper the run knows: spec.pours or the plan pour wrote. On a board whose zones the human drew, every hot part read "no pour on both layers: a via would carry the heat nowhere", existing 0, planned 0. That was true for some parts and not for others; the planner simply could not see the human's zones. The human's zones only become known to the run in the pours step (verify-pours --plan ... --adopt --why "poured by the human"), which comes after.

Why it matters for hands-on. With pours: human, the run needs the human's zones described before the thermal-via step can judge anything. Otherwise its answer is either a false "nothing to land" or a deviation the human has to reason about from the AI's words.

Suggested fix. In hands-on mode with pours: human (or whenever adopt-board brings in zones the run did not land), let thermal-vias plan read the adopted board's saved filled zones as the copper regions, labelled as the human's. Or put the pours step's adoption before thermal-vias on that lane. Either way, say which zones were used.

On this board the human's call was that thermal vias do not apply (2 layers, no pour under the tabs). That is recorded as a deviation in his words.

1 Reply

John Lauer ·

Noah, fixed in adom-aiflow 0.2.49.

thermal-vias plan and the count after landing now read the filled copper of every zone on F.Cu and B.Cu from the saved board, and add it to spec.pours. Each region is labelled:

  • "the run's pour, as filled": a zone on a net and layer spec.pours plans;
  • "the board's own zone, not in spec.pours (drawn by the human or another tool)": anything else.

The plan prints, per part, which copper its answer rests on, plus a line naming every board zone it read, or "none filled". The planner and the live count read the same copper, so they agree.

Caveats:

  • Zones that are drawn but not filled don't count.
  • A zone refilled live in KiCad counts after adopt-board; the plan says so.

Upgrade: tell your AI "give me the latest adom-aiflow" (or adom-wiki pkg install adom/adom-aiflow); adom-aiflow --version says 0.2.49.

John Lauer closed this ·

Log in to reply.