Open general

[EPIC] Unify molecule + board publishing; make pages render in adom-project-manager; deprecate publish-board

barrett-land · 3mo ago

Goal

Fold generic board publishing into molecule-publish so it handles both molecules and plain boards, and have every page it publishes render correctly in adom-project-manager (APM). Then deprecate the separate publish-board skill (currently in adom/adom-project-manager → skills/publish-board/). One publisher, two shapes (molecule / board), one source of truth.

Decision (Barrett + Drew): molecule-publish becomes the single publisher. publish-board is retired. The new pipeline exports KiCad → STEP and uses step2glb to produce the GLB shown on the wiki — for both molecules and generic boards (one 3D path, no service-kicad GLB render).

What APM reads from a page (the contract to satisfy)

  • Lists it: type: component page tagged board or molecule.
  • board/molecule kind: from tags. EDA badge: from file extensions (.kicad_* → KiCad, etc.).
  • Component list: package.json.dependencies — APM's board_deps reads them and expands one hop (deps may live directly on the page; no separate library page required).
  • 3D view: the page's model_3d_path GLB (the step2glb output).
  • PCB + schematic views: a render/ folder — manifest.json {v, glb, pcb, sheets[]} + pcb.svg + sheet-000.svg…. Absent render/ → APM shows a red "missing render folder" error bar and falls back to slow live rendering.

Sub-issues

  • Add generic-board mode (non-molecule KiCad/EAGLE boards)
  • Unified 3D: KiCad → STEP → step2glb → GLB (model_3d_path); APM reuses it
  • Emit APM render assets (render/: manifest + pcb.svg + per-sheet SVGs) on every publish/update
  • Write the dependency tree (component deps) into package.json, merge-safe
  • Deprecate publish-board, port its logic, backfill existing boards/molecules

Reference (source of truth to port from)

  • adom/adom-project-manager repo → skills/publish-board/SKILL.md (the board→library→components + render flow) and skills/publish-board/kicad_board_bundle.py (analysis + model-ref normalize helper).
  • APM CLI already has adom-project-manager --render-board <slug> — a push-only generator that writes just the render/ folder (manifest + pcb.svg + sheet SVGs + board.glb), touching nothing else. Reuse it.
  • The render/manifest.json shape and the has_render detection live in APM src/main.rs (board_media, stored_render, render_and_upload).

2 Replies

Drew Owens · 3mo ago

Epic scoreboard (page-owner update):

Shipped + closed: #2 board mode (2.0.0) · #3 unified step2glb 3D (+ #188 mode-aware compression) · #4 render assets Stage 3.5 · #5 merge-safe deps Stage 2.5 · #8 MPN-only keying (2.1.4) · #165 per-version tarballs. All exercised by the recurring e2e regression (two private boards republished on every family package update, 19 gates).

Open, blocked on APM/--render-board (Barrett): #9 version archive (two bugs reported: nondeterministic render hashes defeat dedup; versions[] replace on legacy-manifest upgrade) · #13 mechanical fixes (Y-up unstamped board GLB, manifest wholesale rewrite — pipeline invariant documented in molecule-pipeline 1.1.2).

Open, needs design machines: #12 — ~16 pages published without EDA source; re-exports required (mostly Fusion, 2 COSMIIC Altium). Sequencing note from the issue itself: Fusion sources won't render in APM until Fusion rendering lands, so re-exports are best batched after that.

Open, needs decisions/scoping: #6 publish-board deprecation + backfill (Barrett's data, his call) · #11 auto-tag backfill (enforcement already in 2.x; retagging existing pages needs an owner call) · #7 adom-lbr sidecar (needs the canonical generator — is that adom-lbr embed?). — Drew's agent

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.