skill
molecule-pipeline
Public Made by Adomby adom
Top-level router for moving molecules between EDA tools, the wiki, and Hydrogen: one entry point that routes publish/import intents to the right skill chain and enforces the pipeline invariants.
Field report: corrections required across ~10 molecule imports (session 2026-07-14..16)
Molecule Pipeline — Import Corrections Log
Every change we had to make to the molecule imports from this session (KiCad/Fusion → step2glb molecule conversion → adom-wiki publish → adom-molecule import to Hydrogen), plus the pipeline-level rules that came out of them.
Per-Molecule Changes
NTX_CCX-MIO_Carrier (caleb/ntx-ccx-mio-carrier) — first import through the pipeline
| # | Problem | Fix |
|---|---|---|
| 1 | KiCad sources never reached Hydrogen — the import verb only registered the GLB | Deleted the GLB-only record; re-ran adom-molecule create with --pcb --sch --pro, the wiki GLB --no-optimize, STEP + footprint/symbol JSON as extras (record bumped v1→v2) |
| 2 | No way to set the description (Hydrogen has no edit endpoint) | Delete + recreate via raw multipart POST to hydrogen.adom.inc/api/molecules/create (field names reverse-engineered from the binary) |
| 3 | Molecule missing from adom-molecule list |
Root-caused later — list was reading the orphan Carbon table (see pipeline §4–5) |
| 4 | Hero angle/lighting | Re-rendered to the standard studio angle; hero flipped billboard → static image |
| 5 | New rev docs | docs/ + corrected Project_Overview v1.1 pushed to the page |
The three Teazzers boards (MX-3140N_Carrier, Solonoid-638-0031 Multicarrier, Solonoid v2.0) went through the same early batch and needed the same raw-API create + description injection.
I2S_Carrier (caleb/i2s-carrier)
| # | Problem | Fix |
|---|---|---|
| 1 | First create shipped without a description | Delete + recreate → Hydrogen record v2 |
| 2 | Hero oriented incorrectly | Rotated 180°, flat top view with silk upright |
| 3 | Thumbnail still wrong after the hero fix | Browse-card thumbnails are baked at publish time — pushing the file to the repo isn't enough. Republished as v1.0.1; verified served blob + card PNG by sha256 |
Infineon_IM72D128 (caleb/infineon-im72d128) — wiki-only by request
| # | Problem | Fix |
|---|---|---|
| 1 | 0 MP markers found | Expected — finger-edge daughter card, published as a plain component (not an anchored molecule), no Hydrogen import |
| 2 | 3D model axis wrong + thumbnail too tight | Baked −90° X root rotation, padded hero ~30% → v1.0.1 |
| 3 | Model then upside-down | Flipped to +90° X → v1.0.2 |
RP2350A_Mini (adom/rp2350a-mini) — correction of an existing org page
| # | Problem | Fix |
|---|---|---|
| 1 | Page needed v1.1 correction from the zip | Published under the adom org (not forked to caleb); Hydrogen copy deleted and recreated --no-optimize with full description |
| 2 | Thumbnail too dark | Brightened 2.1× → v1.1.2 |
| 3 | Then too bright | Split the difference (1.55×) → v1.1.3 |
PiProbe v1.2 → v1.3 (adom/piprobe-v1-3)
| # | Problem | Fix |
|---|---|---|
| 1 | Page named for the old rev | adom-wiki repo rename adom/piprobe-molecule-v1-2 piprobe-v1-3 |
| 2 | Two stale Hydrogen copies (PiProbe, PiProbe_Molecule_v1.2) |
Both deleted; created PiProbe_v1.3 with anchored GLB --no-optimize + board/sch/pro + STEP/gerbers/BOM/CPL |
| 3 | Probe not mating with contacts in the workcell 3D render | Seat position corrected in the workcell GLB |
Adom_Jumper_12x6_MP (nested element, no page of its own)
| # | Problem | Fix |
|---|---|---|
| 1 | Original large-MP model superseded | Replaced with the new standalone STEP from the project |
| 2 | Jumpers seating too far into the scaffold | Barrel seat height corrected (~1.6 mm flush) |
| 3 | Small MP jumpers seating too deep on the workcell (recurred twice) | Seat z raised again (+2 mm final) |
Control Panel: Scaffold (caleb/control-panel-scaffold)
| # | Problem | Fix |
|---|---|---|
| 1 | 3D model orientation wrong | The +90° X bake used on other boards was wrong here — scaffold STEP was already Z-up; reverted to native |
| 2 | Unwanted Datasheet section | PDF auto-scan can't be overridden by manifest — PDFs moved out of the repo into the release zip (later into the docs page) |
| 3 | Republishing resurrected deleted PDFs | pkg publish regenerated the repo from the tarball — had to delete PDFs from repo and the local package dir (upstream has since split the layers) |
| 4 | Docking render needed to move | The wiki viewer plays baked glTF animations, not GIFs — jumpers + Mini docking loop baked into the page GLB |
| 5 | Hero showed a fake browser frame | page hero --image (billboard is for apps) |
Control Panel: Workcell (caleb/control-panel-workcell)
| # | Problem | Fix |
|---|---|---|
| 1 | Datasheet tab unwanted after the spec PDF was dropped | Auto-scan grabbed the next PDF alphabetically; final solution was the dedicated docs page (below) |
| 2 | 3D model 35 MB → viewer spun >20 s | gltf-transform optimize --compress draco → ~1.3 MB workcell / ~0.8 MB scaffold (< 3 s load) |
| 3 | Couldn't see the board bottom in the viewer | Viewer parks its ground plane at the lowest geometry — added an invisible GNDSPACER node so users can orbit underneath |
| 4 | Sensors didn't render — "only the contacts render" | Merge-script bug: the holder node index was captured before the children-cloning expression ran, so placement attached to the first sub-part and the rest of the sensor was orphaned. Graph repaired, animation retargeted to real holders, reseated on true pad centers (footprint anchor was also 2 mm off the pad field) |
| 5 | CM5 pin tree iframe stripped from README | Wiki strips iframes — replaced with a clickable full-width image linking to the interactive page under render/docs/ |
| 6 | Hero billboard frame | Flipped to --image |
BME690 / BMI270 (adom/bme690-molecule, adom/bmi270-molecule) — reused, not republished
- Pulled in as the "newest" sensors nested into the workcell render; both were victims of the graph-repair bug above.
- Their billboard heroes were flipped to static image (org membership allowed the change under
adom). - The BME690's near-black studio render became the standard thumbnail style for all the boards.
Pipeline-Level Rules (apply to every future import)
- Sources must travel —
adom-molecule importoriginally registered only the GLB. Usecreatewith--pcb --sch --pro+ extras, or adom-molecule ≥ 1.1.4 which imports with source included. - Always reuse the published OCCT GLB with
--no-optimize— never regenerate the model from the EDA export. - No edit endpoint in Hydrogen — description changes mean delete + recreate (version resets/bumps).
create --descriptionexists from ~1.1.6. - Never POST to Carbon
/molecules(Drew's correction) — it's an orphaned catalog table nothing reads. The real store is Curium behind Hydrogen. adom-molecule listwas reading that orphan table — fixed in 1.1.7 (list reads Curium,--ownerflag); run ≥ 1.1.8 and clear the stale~/.local/binsymlink that shadows the new binary.- Always supply a description at upload — otherwise the molecule lands with an empty byline.
- Board heroes use
page hero --image, never--screenshot/billboard (billboard composes an app-style browser-frame card → "images within images"). - Browse cards bake at publish — a repo-only hero push doesn't refresh the card; republish with a version bump, then sha256-verify the served blob.
- Any PDF in a page repo becomes a "Datasheet" section — no manifest opt-out. Keep board pages PDF-free; host docs on a dedicated page (
caleb/control-panel-docs) or in release zips. (The old publish-resurrects-deleted-PDFs trap is reportedly fixed upstream — publish no longer syncs tarball files into the repo.) - GLB orientation is board-specific — OCCT output is Z-up, but whether a ±90° X root bake is needed depends on the source STEP; verify per board.
- Viewer load target < 3 s — optimize any GLB over a few MB with gltf-transform draco; add a ground spacer if the bottom view matters.
- Page animations are baked glTF animations in the viewer GLB, not GIFs — GIFs are only for README sections.
- MP-marker count decides molecule vs plain board — 0 markers (e.g., finger-edge cards) publish as plain components with no anchoring gates.