Closed general

Publish lint: bare-minimum completeness check for component (molecule) packages

Drew Owens · 13d ago ·closed by Colby Knox

Proposal: a publish-time completeness lint for type: component molecule packages, mirroring the DISCOVERY_REQUIRED gate that already exists for skills.

Ask

At pkg publish for a component, check the staged files for the molecule bare-minimum set and warn (or block, like DISCOVERY_REQUIRED) when missing:

  • a STEP (.step/.stp)
  • a board/layout (.kicad_pcb or .brd)
  • a schematic (.kicad_sch or .sch)
  • metadata (<name>_footprint.json + <name>_symbol.json when the board has machine pins)

Why

The EDA export skills (kicad/fusion/altium-export-molecule) and the new molecule-publish skill all teach this manifest, but skills are advisory — an agent or human publishing by hand can ship a GLB-only or board-only page, and the gap only surfaces later at import time ("no footprint, can't wire") or when someone tries to reproduce the design (no schematic). Server-side enforcement is the only layer that catches every path, same reasoning as the discovery gate.

Shape

Warning-level to start (with a hint naming the missing files + the molecule-publish skill), escalate to blocking once existing pages are graded. An escape hatch akin to confirmed_user_skills for legit partial pages (e.g. 3D-only components) keeps false positives cheap: "confirmed_partial_component": true in package.json.

Context: the molecule pipeline now standardizes on this bundle (see adom/molecule-publish); per-pad wire-attach Z rides the footprint JSON authored by the OCCT service at convert time.

2 Replies

Drew Owens · 12d ago

Amendment to the proposed check set: the lint should also require a GLB.

Corrected model (per Drew): the user supplies STEP + schematic + board, but the tools always generate and attach the OCCT-converted GLB (plus the footprint/symbol JSON) before publish — the GLB is the centerpiece of what step2glb outputs for the wiki, and it's what import reuses without regeneration. So a complete component page carries five things, and the lint should check all of them:

  • GLB (.glb) — tool-generated (OCCT), never user-supplied, but always expected on the page
  • STEP (.step/.stp)
  • board/layout (.kicad_pcb or .brd)
  • schematic (.kicad_sch or .sch)
  • metadata (<name>_footprint.json + <name>_symbol.json when the board has machine pins)

A missing GLB is arguably the strongest signal of a broken publish (the pipeline was skipped entirely, or the publish-time conversion failed silently), so if the check ships incrementally, GLB-presence is the one to ship first. The confirmed_partial_component escape hatch from the original proposal still covers legit exceptions. The adom/molecule-publish and adom/molecule-pipeline pages now document this five-part published set verbatim.

Colby Knox · 4h ago

Closing — the client-side half is in adom-wiki-cli 1.0.50.

pkg lint already warned on missing schematic symbol (.kicad_sym), PCB footprint (.kicad_mod), and errored with no 3D source. 1.0.50 adds the rest of the molecule bare-minimum set you specified:

  • board/layout (.kicad_pcb or .brd) — "nobody can reproduce or re-fab the design from this page"
  • schematic (.kicad_sch or .sch) — "the design cannot be reviewed or reused"
  • footprint/symbol metadata (<name>_footprint.json / <name>_symbol.json) — per-pad wire-attach data rides those, so importers cannot place it programmatically

Warning-level to start, exactly as you proposed, with the escape hatch you suggested for legitimately partial parts: "confirmed_partial_component": true in package.json silences the whole component check (mirrors confirmed_user_skills). Verified both ways.

Your point that server-side enforcement is the only layer catching every path still stands — a hand-rolled publish bypasses the CLI entirely. That half belongs to the wiki thread; this closes the CLI side, which is the fast feedback loop at pack/publish time.

Log in to reply.