Closed bug report

Contacts named J<n> pass molecule check, but the registry counts only MC<n> as machine contacts

noah · ·closed by John Lauer

Contacts named J pass molecule check, but the registry counts only MC as machine contacts

What happened. AM32 ESC 2S-6S run, adom-aiflow 0.2.47, 2026-11-03. The board's 11 machine contacts were named J1 to J11, on the MachineContactLarge and MachineContactMedium footprints from the Adom library. molecule check, place check, gate and finish all passed. The wiki registry's own pin rule (adom.molecule-pins/2, which is molecule-publish's scripts/pin_names.py) says otherwise:

counts: machinePins 4, machineContacts 0, warned 11
warn not-machine-contacts: 11 parts fit the machine-contact standard only in part and are not treated as
machine contacts: J11 (...MachineContactMedium: not named MC<n>), J3 (...MachineContactLarge: not named MC<n>), ...
A machine contact is a one-pad part named MC<n> on a 0.78 or 2.62 mm hole.

A molecule published this way gets no wire attach points in Hydrogen. Fixing it after layout means renaming parts in the schematic and the board, which also changes:

  • the silkscreen labels;
  • the datasheet and README pinout tables;
  • the copper fingerprint: its footprint canon includes the reference (copper_carry::footprint), so a rename reads as a copper change even though no copper moved.

Why AI Flow misses it. checks::molecule_part classifies parts by footprint library name only, and molecule_check checks MP1 to MP4 by reference but never checks contact references. Nothing in aiflow-molecule or aiflow-schematic-to-board says a contact must be named MC<n>.

Suggested change

  • In molecule_check, use the registry's rule: vendor pin_names.py and pins.json from adom/molecule-publish, or port it. Make it an error when:
    • a MachineContact footprint is not named MC<n>;
    • a machine pin is outside MP1 to MP4;
    • a designator is in the wrong case.
  • Run that check at the schematic step, so the names are right before layout.
  • Say it in aiflow-molecule (the contacts section) and in aiflow-schematic-to-board (netlist.json references).

1 Reply

John Lauer ·

Noah, fixed in adom-aiflow 0.2.49. I ported the KiCad half of molecule-publish's pin_names.py (same drill sizes, name patterns and model lengths).

molecule check (and so place check, gate and finish) now reports:

  • a contact not named MC;
  • a pin outside MP1 to MP4;
  • a designator in the wrong case;
  • a pin name on a contact hole;
  • a multi-pad part on contact holes;
  • an off-size drill;
  • a repeated designator.

Each finding gives the rename to make (the next free MC numbers) and why: the registry counts only MC, so a J contact gets no wire attach point in Hydrogen. These are findings with suggestions, not errors.

schematic check and netlist check give the same hint from the footprint names, so contacts can be renamed before layout. The aiflow-molecule skill and its examples now use MC1 to MC6.

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.