Closed feature request

Placement/gate cannot represent explicitly approved body-butted header assemblies

matt · ·closed by John Lauer

AIFlow 0.2.30; KiCad Bridge 1.0.95; KiCad 10.0.6; Windows desktop / WSL caller.

An existing board intentionally gangs three TE MTA-100 headers body-to-body. The owner explicitly requires these poses and accepts the two courtyard-only overlaps. Nominal bodies touch; the native and AIFlow body checks find no body overlap. Each courtyard adds 0.35 mm at the adjacent end, giving two 0.70 mm overlaps. No copper, drill or electrical clearance exception is requested.

place verify refuses with complete native placement DRC is required. gate --plan empty-route.json refuses with gate failed: courtyards or part bodies and the two expected courtyard overlaps. The current check has no supported representation for this reviewed assembly intent; generic inherited-error handling does not cover the independent mechanical gate. Moving the headers would violate the enclosure/harness contract. Shrinking footprints or disabling all courtyard checking would hide intent and is not a suitable workaround.

Please provide a narrowly bounded assembly-contact declaration/acknowledgement: exact pair, footprint and pose identity, side, reviewed maximum courtyard overlap, approval/provenance; keep physical-body intersection, copper, holes, edges and all other pairs blocking. Preserve the actual native DRC finding in reports. Stale pose/library/body/approval evidence must invalidate it. The placement, routing and finish gates should use the same reviewed policy. No success override or generic ignore flag is requested.

Minimal reproduction: two 2-pin header nominal F.Fab rectangles 5.08 mm long with centers 5.08 mm apart, matching 5.78 mm courtyard rectangles. Bodies touch, courtyard overlap0.70 mm. Record explicit owner-approved butting, then run native placement validation and AIFlow place verify/gate. Current result always refuses.

2 Replies

matt ·

An owner-approved body-butted connector assembly currently cannot pass placement or the independent mechanical routing gate because its two nominal bodies touch while their courtyards overlap. This proposal keeps the real courtyard findings and accepts only explicitly declared, bounded contacts. It does not redraw footprints or ignore electrical DRC.

Base: fbc027548dbb4207be1107e9e9bdf2628e0663e9 (0.2.30). Addresses issue #115. No dependent/open predecessor PR was present when reviewed.

The declaration binds the complete footprint bytes, library, side, overlap depth/area, sourced nominal body dimensions and tolerance, recorded owner approval, native board path and live revision. Body intersections, excluded bare artwork, missing/stale evidence, unexpected UUID pairs, electrical errors and truncated/count-inconsistent native reports still refuse. Placement and mechanical gate share the review; finish repeats native placement validation and reconciles connectivity/error counts rather than adding a generic inherited-error allowance. Raw native findings and clean:false remain in the final DRC record. Existing commands, fixed-reference exceptions, edge-connector checks, routing and electrical gates are preserved.

Validation: production cargo check --workspace --bins; full workspace tests 508 passed, 0 failed, 9 existing ignored (six new contact tests); optimized release build. Test runs use AIFLOW_DASHBOARD=off. CLI help matches installed 0.2.30 exactly. Source preflight compares the immutable base, reads live HEAD twice, and reports no problems; every diff hunk was reviewed.

Native regression, isolated ledger: KiCad 10.0.6 / Bridge 1.0.95, 180 existing placements, 153 nominal part bodies, exactly two expressly approved courtyard pairs. Placement verifies without moves; the empty-plan routing gate returns zero new errors and zero opens, preserving both inherited courtyard findings. Finish revalidates both approved contacts, retains the complete native report (2 errors, 42 warnings, 0 opens, clean:false) and correctly refuses unrelated outstanding thermal, evidence and workflow requirements. This is not a completed engineering run or manufacturing qualification. Private CAD, approval records and native reports are retained locally; the PR contains only generic source/docs/tests.

Limitations: the declaration cannot authenticate a claimed human decision or certify tolerance-qualified physical fit; its provenance must be reviewed. Full-footprint byte hashes intentionally expire even on text/format/model-binding changes. This does not fix the separate tabless-thermal issue #116 or represent a runtime release. No shared binary/bridge was replaced and no production run outcome was copied from the fixture. Please review the policy/API before merging or publishing.

Branch creation was denied: authenticated account has no manage rights on this repository (request 2bb0f4df-b3bb-40f0-8bdc-a0b2b7cf03b8). I have not attempted a different identity, self-merge or runtime replacement. Attached is the reviewed contextual patch for an authorized maintainer to apply on the recorded base and review. No whole-file replacement PR was substituted.

Patch SHA-256: f2c893b747ffb78aee1b1693adeb3fd41319480750449a74cea657b4e7332731. Production executable SHA-256: d03c3bb76a42f54c44c1bf855c341b34aa05dc26f87da45aebcf63d6bf668aed.

reviewed-courtyard-contacts.patch

John Lauer ·

Merged your patch as-is in adom-aiflow 0.2.31. Thank you: it was careful work, and it applied cleanly on 0.2.30.

I reviewed every hunk before merging. Here's what I checked:

  • Only the declared pairs pass. The exception covers courtyards only, for the exact pairs declared. Each pair is bound to the footprint bytes, library, side, the owner's approval and the live revision.
  • Real collisions still refuse. Body intersections, missing or unsourced bodies, excluded artwork and overlaps past the reviewed bound all still fail.
  • Native DRC must match exactly. place verify accepts native findings only when the complete report holds exactly those UUID pairs, with nothing truncated and counts that reconcile.
  • No general allowance at finish. The live error count must equal the native placement count, and clean stays false in the record.

All six of your tests pass, along with the rest of the workspace (512 tests).

About your PR attempt: branch creation is refused for accounts outside the owning org, which is why you had to attach a patch. The contribution skill now says what to do instead: open a file-set PR (adom-wiki pr create adom/adom-aiflow --files ... --body-file ...) from a fresh clone of the head, with the base hash in the body. Patches attached to issues work too, but a PR is easier to review and merge.

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

John Lauer closed this ·

Log in to reply.