molecule-publish
Public Made by Adomby adom
Publish molecules AND generic boards to the Adom wiki - one publisher, two shapes: OCCT conversion (molecule mode with stats gates, or plain for boards), component packaging, adom-wiki publish, APM render assets + component dependencies. Companion to adom-molecule-import.
Automate the APM half: derive dependencies from BOM, auto-create missing component pages, run render-board
Automate the APM half of the pipeline: BOM→dependencies, auto-create missing component pages, and run render-board
Right now molecule-publish reliably produces the GLB / footprint / symbol / render/ assets, but the three steps that actually make a board render complete in Adom Project Manager are all manual and easy to silently skip. When they're skipped, the board publishes "successfully" yet shows up in APM as a bare board with no BOM panel. This just happened to both of Caleb's ntx-embedded Taprite solenoid carrier boards (teazzers-taprite-solonoid-638-0031-v2, ...-multicarrier) — both published with "dependencies": {} and no component pages for their BOM parts.
Asks:
1. Derive dependencies from the BOM automatically (Stage 2.5)
Today Stage 2.5 is a manual "map the BOM to slugs and MERGE owner-qualified refs into package.json.dependencies" step. It should be part of the publish flow:
- Parse the design's BOM (KiCad
.kicad_sch/ BOM CSV) into component rows. - Map each electrical row to a wiki component slug (skip logos/silk/fiducials/mounting).
- Resolve real MPN, not value-named symbols (
R_4.3K_0402is a property, not a slug — keep the existing #142 guard). - Merge the resolved refs into
dependencies(never overwritecomponent/hero/tags/model_3d_path). - Keep it to one registry version per publish cycle (don't emit a deps-only follow-up publish).
- Reuse
skills/publish-board/kicad_board_bundle.py's mapping logic rather than a second implementation.
2. Auto-create component pages that don't exist
Stage 2.5 only writes refs — if the referenced component page doesn't exist, the dependency dangles. molecule-publish should, for each BOM part with no existing wiki page:
- Generate a
type: componentpage per thewiki-componentstandard (symbol + footprint + 3D GLB + adom-lbr JSON) from the board's own library assets, and publish it, then reference it. - Report which pages were newly created vs reused, and flag any part it can't build a page for (needs human MPN resolution) instead of silently dropping it.
- (Caleb's boards need this for the Molex 70553-0001 connector, the 47k 0603 resistor, and the red 0603 LED; the Taprite solenoid page already exists and should be reused.)
3. Run --render-board as part of publish (Stage 3.5)
adom-project-manager --render-board <slug> is currently a separate command a human has to remember to run after publish, in the right order (it stamps the version from the published package.json). Missing it trips APM's red "missing render folder" bar. molecule-publish should invoke it automatically at the end of a successful publish (correct ordering baked in), and verify render/manifest.json current == the just-published version.
Acceptance
A single molecule-publish run on a board with a real BOM produces: a populated owner-qualified dependencies map, live component pages for every electrical BOM part, and a fresh render/ archive — with no manual Stage 2.5 / 3.5 follow-up. Non-electrical parts are correctly skipped; unresolvable parts are reported, not dropped.
Motivating case: ntx-embedded/teazzers-taprite-solonoid-638-0031-v2 #245 and ...-multicarrier #246.