Closed bug report

Placement gate needs exact courtyards and preserved project rules for compact molecules

Ray · ·closed by John Lauer

Versions: AI Flow installed binary 0.1.25; service-kicad native KiCad 10.0.2; Linux CLI; STM32F407ZGT6 molecule, 30.4mm outline.

place check rejects a physically legal placement in two independent ways:

  1. It uses bounding boxes for concave LQFP courtyards and circular machine contacts. Its overlap list reports 8 overlaps that native KiCad exact courtyard DRC does not report.
  2. It imposes a hardcoded 0.5mm courtyard-to-edge inset, even though our selected contract is 0.30mm copper to edge, with courtyard inside the outline. It reports 10 parts outside despite their courtyards remaining within the outline.

The offline DRC upload also loses the .kicad_pro and checks a default 0.5mm copper edge rule. The resulting 6 copper_edge_clearance errors explicitly say required0.5000, actual0.3875–0.4875mm. Running the exact same candidate with its project and the declared0.30mm edge rule produces ZERO errors (106 unrouted, expected at placement). Silkscreen/library warnings are retained for later correction.

Please preserve project/custom rules across start/copies/gate and apply exact transformed courtyard geometry. Separate component/body/courtyard edge policy from copper edge policy. pack may conservatively use boxes for speed but check must not promote those approximate overlaps to hard errors. Keep explicit molecule access reservations separate from physical courtyards.

An explicit adopt-board --board ... --evidence ... for AI-owned stages would also help: currently custom placement can be declared but there is no documented way to set its independently checked board as the next router input without editing run.json. This trial will record any necessary adapter in the ledger and retain the independent native proof; no rule exclusions or increased inherited-error baseline.

exact-place-check.log

placed-native.log

3 Replies

Ray ·

Follow-up from the live F407 trial (KiCad Bridge 1.0.11 / KiCad 10.0.5): the same approximation also affects the live move gate. Final placement has 7 AABB overlaps (C4/U1, C9/U1, MC5/R1, and all four MP/U1 pairs), while native DRC on the live snapshot reports 0 placement violations, 0 errors, and every footprint has a courtyard. U1's concave courtyard and the circular MC courtyard must retain their actual shape.

A separate synchronization problem: sequential placement stopped partway through a legal final plan because C3/C18/C19 occupied each other's future positions. The user was left looking at a partly moved, overlapping board while route experiments used a separate checked file. That is confusing and needs a first-class state indicator and recovery path.

Resolved locally with dependency-ordered single-part moves, temporary off-board parking for the cyclic group, and explicit AABB-only exceptions for three moves verified against native DRC. All 30 final poses now match in the live editor. Native live validation after a separate label cleanup: 0 errors, 0 placement violations, 0 missing courtyards, 0 outside-board parts; 106 unconnected items remain as expected before routing. No routed copper has been landed.

Suggested spec additions: exact polygon move checks; dependency-aware move ordering with visible temporary parking; live/planned placement revision parity before a routing step; and clear partial-landing status instead of leaving an old live view silently behind.

live-placement-final.json

John Lauer ·

Published and installed from insiders: adom-aiflow0.1.27 (and adom-fields0.3.1 for input identities). Source and registry publication both completed; installed hashes match the tested builds.

Placement gates use native exact-courtyard DRC and compare individual baseline findings, not total counts. Bounding-box overlaps are packing advisories. Courtyard-edge packing defaults to0 with an independent placement.courtyardEdgeClearance option. Project rules follow snapshots. A native KiCad fixture proves0.30mm edge clearance is preserved, while the same board without its project fails the default0.50mm rule. If native CLI is unavailable, a project-bearing board is refused rather than silently uploaded without its rules.

Release notes: https://wiki.adom.inc/adom/adom-aiflow/files/docs/release-0.1.27.md Validation records: /home/adom/project/adom-aiflow-release-audit/ .

John Lauer closed this ·
John Lauer ·

Environment: adom-aiflow installed/registry0.1.90; source base2784e003197c7d94bceaed2ae55112938ce054e0; KiCad10.0.5,KiCad Bridge1.0.55, Linux CLI to named Windows target. Follow-up to the adoption requirement, without reopening this resolved issue.

Direct source d985e4ac858ea5a6ca257ee423e1b4288e9787fe adds place verify for adopted, already placed KiCad boards. It compares all saved/live poses, sides, library bindings and reference coverage, brackets native placement DRC with matching revisions, and binds board/spec hashes. No dummy move or creation ownership. Changed inputs fail finish/finish-guard. Native readback on electronic-load Board32 verified104references, zero placement findings, unchanged revision. Native report retains59 non-placement library warnings; a separate complete project-context gate was already0errors/0opens. This is placement proof, not a thermal or manufacturing release.

161workspace tests pass (one existing native test ignored), production check/build,149-referencecomponent test,widget andsilkscreen suites pass. Four sourcefiles read back exact afterfreshHEAD preflight. Registry and installed runtime are unchanged; explicit tested sourcebuild used for native acceptance.

Log in to reply.