← All Pull Requests

Permit verified texture-preserving molecule GLBs and separate wiki titles from board revisions #3

Open opened by Ray 2026-09-11

Repeated logic-gate molecule work exposed guidance that encouraged repeated builds/screenshots, discarded detailed model textures, or conflated board revision with page title. This documentation change records the tested workflow and routes family generation/review to the focused skills in Logic Molecule Workflows.

The skill bundle is installed locally for Claude and Codex; registry publication is waiting on the required human Hero Studio step. The new guidance keeps electrical, grid, anchoring and ownership gates, distinguishes merged upstream fixes from installed versions, and preserves the existing source/CLI workflows outside this scope. The comparison prompt uses isolated work directories and identical inputs/checks; no Claude evaluation has been run.

Validation: the two new skills pass the skill validator and reference checks, and their installer passes isolated-home/idempotence/preservation checks. Workflow evidence comes from eight individually inspected local expansion boards with zero native KiCad violations/unconnected items and the detailed textured models of the five published gates. This is not a fabrication or bench qualification claim.

Ownership app checked on 2026-09-11: Drew owns molecule-publish; owner merges, others PR. Submitted by Ray for owner review. No runtime code or dependency upgrade is included. Related upstream fixes: tscircuit/core#3892, tscircuit/cli#4715, tscircuit/props#844 (merged); remaining presentation fixes are tracked in tscircuit/cli#4719, tscircuit/circuit-to-svg#739 and tscircuit/circuit-json-to-gltf#197.

Diff Skip to comments (2)

--- a/SKILL.md+++ b/SKILL.md@@ -1,473 +1,483 @@⋯ 6 unchanged lines ⋯  # molecule-publish — source bundle → wiki molecule +## Detailed textured EDA models: qualified alternative++The STEP/OCCT path below remains the standard source of molecule footprint/symbol metadata and attachment gates. When an EDA export already contains a higher-quality textured board model, do not discard its textures in a STEP round trip. A **verified anchored detailed GLB** is a supported alternative visual model: preserve mesh/material/image/binary payloads, transform verified units/up-axis into the molecule frame, and prove that every MP/MC coordinate and height matches the PCB/STEP-derived footprint. Raw unnormalized EDA GLBs are not acceptable. Keep the assembly STEP and generated footprint/symbol metadata as separate required assets.++The tested tscircuit path and visual checks are in **adom-molecule-visual-review**, supplied by `adom/logic-molecule-workflows`. Its reference root-transform adapter rejects unknown scene hierarchies; do not bypass those checks. Compare published GLB bytes against the validated staged model and render the hero from that same model. Preserve original colors/materials: “golden model” means authoritative quality, not gold coloring.++For the logic series, use the full MPN plus board revision on silkscreen, but omit `v1.0` from wiki display titles. Keep “Molecule” according to the user's naming preference. A title-only change can use `adom-wiki page edit --title`; preserve hero/visibility and update the local publication manifest so later releases do not revert it. Component-page linking remains a separate step.++ The EDA-agnostic middle of the molecule pipeline. Input is the **bare-minimum bundle** any EDA export produces; output is a published, pipeline-ready wiki component. The Hydrogen half is `adom-molecule-import` — this skill is its⋯ 14 unchanged lines ⋯ | render/ + deps (APM) | yes | yes |  Decide by the board itself: Adom machine pins + MP1-MP4 markers -> molecule;-otherwise board. Both shapes get `<slug>.glb` from step2glb (never an-EDA-native GLB), `model_3d_path` pointing at it, and the APM stages below.+otherwise board. Both shapes get a validated `<slug>.glb` from step2glb or the+qualified textured-model alternative above, `model_3d_path` pointing at it, and the APM stages below.  ## Contract — inputs vs the published set  **The user supplies sources; this skill generates and attaches the rest.** The published page always carries the full set — **GLB + STEP + schematic + board + metadata** — and every downstream tool expects all five (import-reuses the GLB, wiring reads the metadata). The GLB and footprint/symbol-JSON are never user-supplied: they come out of the OCCT conversion below.+reuses the GLB, wiring reads the metadata). Footprint/symbol JSON comes from the gated conversion below. The GLB is+either that conversion output or the verified anchored textured alternative above.  ### Inputs — the bare-minimum bundle ⋯ 3 unchanged lines ⋯ | yes | Board/layout (`.kicad_pcb` or `.brd`) | what footprint+symbol generation parses | | yes | Schematic — `.kicad_sch` (EVERY sheet: root + sub-sheets) or `.sch` | source completeness + APM's hierarchical schematic view renders from these | | board shape | `.kicad_pro` + any `.kicad_sym`/`.pretty` used | APM render sources |-| generated | GLB | OCCT conversion output — never user-supplied, always published |+| generated | GLB | Gated OCCT output or verified anchored textured model; always published | | generated | Metadata | OCCT footprint/symbol JSONs + the authored `package.json` | | board shape | Bundled 3D — `3d/<basename>` for every CUSTOM `(model ...)` | see below (#16); recipients render blank without it | | optional | Silk PNGs (top/bottom) | white artwork on transparent |⋯ 229 unchanged lines ⋯   curl -fsSL "https://wiki.adom.inc/blob/component/<slug>/<slug>.glb" -o /tmp/check.glb   sha256sum /tmp/check.glb <slug>.glb   # MUST match — if not, the page is   # serving a different GLB (e.g. the wiki's plain auto-conversion): re-push-  # your OCCT GLB as <slug>.glb and re-verify.+  # your validated GLB as <slug>.glb and re-verify.   ```   Your conversion's stats block (`molecule_anchored: true`, no warnings) plus   this checksum equals a verified anchored GLB on the page.⋯ 182 unchanged lines ⋯ - `kicad-export-molecule` / `fusion-export-molecule` / `altium-export-molecule` — the EDA → bundle front-ends that hand off here - `adom-step2glb` — the conversion CLI/service this skill drives - `molecule-pipeline` — the top-level router across the whole chain+

Comments

Ray · 1mo ago

Published the shared workflow skills as Logic Molecule Workflows v0.1.0. Verified the registry download against the reviewed skill sources. Install with adom-wiki pkg install adom/logic-molecule-workflows; both Claude and Codex are supported. This PR remains for owner review of the existing skill updates.

Ray · 1mo ago

The texture-preserving step this PR describes now has a supported home: step2glb 0.13.0 (adom/adom-step2glb 1.3.0, adom-inc/step2glb bd8408c) ships anchor-glb, which is the reference root-transform adapter as a CLI verb with explicit frame, unit and anchor validation. Suggest the "Detailed textured EDA models" section point at it instead of the skill's local script, so the gate is one command everyone runs the same way:

step2glb convert board.step --board board.kicad_pcb -o stage.glb        # for <stem>_footprint.json
step2glb anchor-glb dist/lib/index/3d.glb --footprint stage_footprint.json -o molecule-<slug>.glb

anchor-glb adds one MoleculeFrame root (mm/Y-up to m/Z-up, MP1 at the footprint origin, contact plane at footprint z), verifies every MP/MC marker against the footprint JSON within --tolerance (default 0.0001 mm), proves meshes/materials/textures/images/accessors and the binary payload are byte-identical before writing, refuses a GLB with no textures or more than one scene, and writes .model-quality.json with source and published sha256 plus the verified positions. --source-frame is explicit; only tscircuit exists. Verified on the five published gates: binary and every section identical to the source, root matrix identical to the script's.

Drew: nothing else in the PR changes; this only names the tool the section already asks for.

Log in to comment.