Open bug report

Boards that can never render: ~16 pages published with no EDA source (split from #130)

barrett-land · 3mo ago

Split out of #130, which assumed these could be backfilled by re-running --render-board off the wiki source. They can't — the source was never published.

The problem

~16 board/molecule pages have no render/ folder and can't get one, because the only files on the page are outputs: gerbers, PNG previews, BOM/CPL CSVs, and sometimes a GLB. There is no .kicad_pcb / .kicad_sch / .kicad_pro for the render service to consume, so they permanently trip APM's red "missing render folder" bar.

This is not a molecule-publish bug. It's a gap in what those publishes shipped, and closing it needs the original designs off a design machine.

Group A — Fusion 360 exports, gerbers + PNGs only (14)

adom/7in-display-moleculte, adom/bmv080-i2c-mpin-molecule, adom/capacitor-molecule-panelized, adom/capacitormolecule2, adom/capacitormoleculepanelized2, adom/coral-breakout-stand-molecule, adom/ina219-breakout-board, adom/molecule-rp2350b-pican2b-v1-318000, adom/moleculentx15r, adom/naneye2d-control-molecule, adom/pico2-2w-molecule, adom/rp2040-devboard-molecule, adom/vl53l4cdv-molecule, adom/coldfire-xilinx-dev-board

Plus adom/rp2040-test-board, which has only a GLB.

Mostly Kyle's Fusion exports. Needs the original .f3d/.brd re-exported and re-published through molecule-publish board mode. Note EAGLE/Fusion sources currently skip rendering anyway (they report "nothing rendered"), so until Fusion rendering lands in APM these will show a static version label even once source is published — worth confirming that's acceptable before anyone spends time on the re-export.

Group B — COSMIIC, Altium project zips (2)

cosmiic/cosmiic-biopotential-amplifier-eval-board-465000, cosmiic/cosmiic-pulse-generator-eval-board-545000

Both ship a *-altium-project.zip. --render-board has no Altium path at all. Either convert to KiCad (adom-lbr can read .SchLib/.PcbLib) or wait for an Altium render path.

Group C — one that's probably cheap (1)

cosmiic/cosmiic-power-module-eval-board-357000 ships cosmiic-pm-kicad-project.zip — a real KiCad project, just zipped. Unpacking it and re-pushing the loose .kicad_pcb/.kicad_sch/.kicad_pro alongside the zip should make it renderable with no design machine at all. Best first candidate.

Also worth deciding

Should molecule-publish refuse to publish a board with no EDA source, or at least warn loudly? Every page in Group A got through the pipeline in a state that can never render in APM, and nothing flagged it at publish time. A gate there stops this list from growing.

Suggested acceptance

  • Group C unpacked + rendered (cheap, no design machine)
  • Decide whether Group A's re-export is worth it given Fusion rendering isn't live yet
  • Decide Altium path for Group B (convert vs wait)
  • molecule-publish warns or gates when a board publishes with no renderable source

3 Replies

barrett-land · 2mo ago

Group C done ✅ — cosmiic/cosmiic-power-module-eval-board-357000.

Unpacked cosmiic-pm-kicad-project.zip (a real, complete KiCad project) and pushed the loose source to the page: PM1C_Rev_1_2.kicad_pcb (12 MB), 20 hierarchical .kicad_sch, .kicad_pro, plus the 35 referenced custom STEP models (all 307 model refs were non-standard user-library parts) staged under 3d/. Then ran --render-board.

Result — renders cleanly with no design machine: render/manifest.json has glb:true, pcb:true, sheets:20; the board GLB is Z-up + upAxis stamped (v0.6.3 pipeline); the red "missing render folder" bar is gone. Note: archived as v0.0.0 (page package.json has no version).

Remaining on this issue is decision work, not cheap wins:

  • Group A (15, Fusion/EAGLE, outputs-only): blocked on Kyle's original .f3d/.brd and on Fusion rendering not being live in APM — even with source re-published they'd still report "nothing rendered". Recommend deferring the re-export until Fusion rendering lands, else the work doesn't pay off.
  • Group B (2, cosmiic Altium zips): --render-board has no Altium path. Convert to KiCad via adom-lbr's .SchLib/.PcbLib reader, or wait for an Altium render path.
  • Publish-time gate: molecule-publish is a Skill (SKILL.md), so this would be a guidance change telling the AI to warn/refuse when a board publishes with no renderable EDA source — stops the list growing, but it's advice to the publisher, not enforced code.
barrett-land · 2mo ago

Live proof — an EDA board that "can never render" now renders in APM, no design machine.

Validated the normalize-to-KiCad approach end-to-end, using KiCad's own importer (no from-scratch Altium/EAGLE parser needed):

.PcbDoc/.brd → pcbnew.IO_MGR.Load(ALTIUM_DESIGNER | EAGLE) → IO_MGR.Save(KICAD_SEXP) → the existing service-kicad render path.

  • Altium: cosmiic PG4D.PcbDoc (3.5 MB OLE) → clean 1.2 MB .kicad_pcb (219 fps, 2470 nets, all copper/pours); renders SVG (714 KB) + GLB (1.4 MB).
  • EAGLE (done live): cosmiic/502535-lipo-molecule shipped only .brd/.sch and reported "nothing rendered (not a KiCad board)". Imported 502535_LIPO_Molecule.brd → .kicad_pcb, pushed it, ran --render-board → the page now has render/ with pcb.svg + a Z-up-stamped board.glb. It renders.

Coverage: Altium and EAGLE PCBs (2D + 3D) via one mechanism — covers Group B and Group A's PCBs.

Known gap: headless schematic import isn't in KiCad 7's Python API (SCH_IO_MGR/eeschema absent), so the imported pages render PCB + 3D but no schematic sheets (sheets: 0) until KiCad 9's IPC API / a GUI / a bridge is used.

Productionization (open): the import step needs a home — add /kicad/pcb/import/{altium,eagle} to service-kicad (needs its source), a small kicad-import microservice, or KiCad in APM's container — then a detect-by-extension shim in render_board_media. altium-pcbdoc (native crate) stays scoped to the export/molecule side, not needed for render.

Drew Owens · 2mo ago

Ownership note: Aditya has taken over the molecule pipeline (2026-08-19) and is now running with this issue. He has the full handoff (current state, settled decisions, ranked backlog). Please direct follow-ups here to him.

Log in to reply.