Adom Wiki
Public Made by Adomby adom
How the Adom Wiki (wiki.adom.inc) works and how to drive it with the adom-wiki CLI: the two storage layers (git page repo vs package registry), hosting source by pushing files (not a tarball), making packages, cutting per-platform releases, and the three-tier skill layout (user skills ship, dev-skills/ and publish-skills/ stay source-only). adom-wiki is the current tool; adompkg is deprecated. Read this first before publishing or installing.
Board pipeline emitted a degraded render/board.glb (35 meshes vs 336) that pages then served
Problem
The board publish pipeline wrote a degraded render/board.glb for some boards and a faithful copy for others, from the same run of the same pipeline. Because those pages declare model_3d_path = render/1.0.0/board.glb, the degraded file is what the 3D tab actually served.
Worst case: adom/workcell-control-mainboard-static-xxyy-v1-1 was showing 35 meshes instead of 336 — under a tenth of the board's geometry. Visitors saw a bare green plate with a few stubs where the real model has stepper drivers, electrolytics, a terminal block, USB-C and standoffs.
Mesh counts, render/board.glb vs the page-level <slug>.glb, across the four workcell boards:
| page | render/board.glb |
<slug>.glb |
|
|---|---|---|---|
workcell-control-toolboard-zu-v1 |
190 | 190 | identical |
workcell-control-toolboard-pinch-v1 |
155 | 155 | identical |
workcell-xory-motor-breakoutboard-v1-1 |
11 | 20 | degraded |
workcell-control-mainboard-static-xxyy-v1-1 |
35 | 336 | degraded |
Same pipeline, same publish batch, two of four correct. That inconsistency is the bug — it is not an intentional LOD, or it would be consistent across all four (and #364 tracks a real web-grade LOD separately, which would be a .web.glb, not a silent replacement of board.glb).
Data repaired, pipeline not
I replaced render/board.glb and render/1.0.0/board.glb on both affected pages with the full model, and verified by re-cloning that all three GLB copies now agree (commits 770fa264 on xory, 5116d61c on the mainboard). Whatever emits these files will reintroduce it on the next publish.
Second, related: which .glb gets served is decided alphabetically
findPartFile (server.js) falls back to tree.find(e => e.path.endsWith(ext)) — the first .glb in the tree — when model_3d_path is not declared. That makes the served 3D model depend on filename sort order: render/1.0.0/board.glb beats render/board.glb beats <slug>.glb. Here it happened to select the pipeline's copy over the page's own model. A page that ships more than one .glb is relying on luck about which one visitors see.
Worth deciding a deliberate precedence (the page-level <slug>.glb seems the right default), or making the indexer declare model_3d_path explicitly at publish rather than leaving it to a find.
Scope — checked, so nobody re-does it
I swept 709 component pages and probed the 106 whose slug suggests this pipeline. Findings:
- Exposed: only pages declaring
model_3d_path = render/..., which is just the four workcell boards. Two were degraded, both now repaired. - Benign:
zuandpinchdiffer by 28 bytes between the two files but are mesh-identical — padding or a generator string, not geometry. - Not a bug: 8 adom molecules (
bmv080,bmi270,lan9370-stm32,18650-battery,bma580, …) have very differentrender/board.glband<slug>.glb, but every one of them serves its top-level GLB, so therender/copy is never shown. In several therender/file is the larger one — these are two different artifacts, not a degraded copy. - Other orgs:
cosmiic/502535-lipo-moleculeandcosmiic/cosmiic-power-module-eval-board-357000show the same size divergence. Both also serve their top-level GLB, so neither is currently exposed. Untouched — not our repos, but the same pipeline produced them and they are worth a heads-up.
Warning for whoever fixes this
Do not detect this by file size. Size produced both false positives (the 28-byte deltas) and false alarms (molecules where render/ is legitimately larger and different). The reliable signal is mesh count of the same model, combined with which file the page actually resolves. Repairing on the size signal alone would have overwritten eight molecules' legitimate models with unrelated geometry.
Reported by Ray. Related: adom/wiki#87 (heroes are rendered from these same GLBs, so a degraded model silently degrades the hero too — which is how this surfaced).