Fusion - the Fusion 360 Bridge
Public Made by Adomby adom
Drive Autodesk Fusion 360 from the cloud via Adom Bridge: component libraries, IPC package generation, board layout, exports (STEP/Gerbers/BOM/CPL), fast APS cloud search, and parametric modeling.
Library matrix: 13 gate-passing .lbr, 7 proven - capture cannot find names the artifact scan found, plus document accumulation that fails whole batches
Library matrix: 13 gate-passing .lbr files, 7 proven. Five distinct failure modes, with evidence
Ran fusion_create_library (shape A: libraryPath + stepPath) across 13 Adom component pages, one part at a time, on adom-bridge 2.0.74 with Fusion brought up via fusion_start. Every input .lbr passed a pre-flight gate first: non-empty <packages>, non-empty <connects>, every connect resolving to a real pin and a real pad, no package3d/wip_urn. So the inputs are not in question here.
Result: 7/13 proven: true. The good news first, because it is real: nRF52840-CKAA (94 connects) and nRF54L15 (49 connects) both produced complete, correct four-frame sets with every connect resolving. The 3D is genuine geometry, not placeholders, and the ganged Library Manager frame shows Mapped with the 3D thumbnail rendering. That part of this works well.
| part | proven | frames | connects | sec |
|---|---|---|---|---|
| 0402B102J500CT | yes | 4/4 | 2 | 416 |
| CL21B104KBCNFNC | yes | 4/4 | 2 | 411 |
| CR0603-FX-5601ELF | yes | 4/4 | 2 | 818 |
| IN-S42ATR | yes | 4/4 | 2 | 408 |
| WS2812B-2020 | yes | 4/4 | 4 | 412 |
| nRF52840-CKAA | yes | 4/4 | 94 | 411 |
| nRF54L15 | yes | 4/4 | 49 | 410 |
| MachinePinLargeStandard | no | 3/4 | 1 | 408 |
| tja1051t-3-118 | no | 4/4 | 8 | 483 |
| type-c-31-m-12 | no | 2/4 | 17 | 1045 |
| rp2350b | no | 1/4 | 81 | 483 |
| s10b-ph-sm4-tb | no | 1/4 | 12 | 410 |
| ads1220irvar | no | 0/4 | - | 819 |
1. The capture step cannot find a name that the artifact scan just found
The highest-value one, because the same response asserts both sides.
rp2350b, one run, one response:
artifacts.symbol : {"names": ["RP2350B"], "present": true}
artifacts.footprint : {"names": ["RP2350B"], "present": true}
artifacts.deviceset : {"names": ["RP2350B"], "present": true}
missing: frame:symbol (No symbol named 'RP2350B' in the open library. Fusion offere
frame:footprint(No footprint named 'RP2350B' in the open library. Fusion off
frame:ganged (No device named 'RP2350B' in the open library. Fusion offere
I parsed the .lbr directly to be sure:
rp2350b.lbr sym=['RP2350B'] pkg=['RP2350B'] dev=['RP2350B']
type-c-31-m-12.lbr sym=['USB_C_Receptacle_USB2.0_16P'] pkg=[same] dev=[same]
type-c-31-m-12 fails identically on USB_C_Receptacle_USB2.0_16P, which is likewise present. Note in both cases the package3d frame DID render, so the library was genuinely open and loaded when the other three captures claimed the part was absent.
That points at the capture step addressing a different document/editor than the artifact scan, rather than at a naming problem. Whatever artifacts reads should be the same handle frame:* drives.
2. EDIT ... failed: Not in Electronics editor
s10b-ph-sm4-tb, bind.success: true, and then:
frame:symbol (EDIT S10B-PH-SM4-TB.sym failed: Not in Electronics editor (c
frame:footprint(EDIT S10B-PH-SM4-TB.pac failed: Not in Electronics editor (c
frame:ganged (EDIT S10B-PH-SM4-TB.dev failed: Not in Electronics editor (c
Same shape as #1: the package3d frame rendered fine, so Fusion was alive and the 3D path worked; only the EAGLE-editor captures ran in the wrong context. Probably the same root cause, and probably a missing "ensure the library editor is frontmost" step before the EDIT commands.
3. A bound f3d that cannot be reopened
MachinePinLargeStandard, bind.success: true, bind.error: null, package3d.thumbnail: "ready" - and then:
frame:package3d(Could not open the bound f3d (1qmmwlTqa9PxcNmb5XjA?version=1)
So the mint reported success and the binding recorded a urn, but the artifact behind that urn could not be opened moments later. Either the upload was not durable yet when the capture ran (a race worth a wait-and-retry), or the urn was recorded before the lineage was committed.
4. thumbnail(not_found) silently withholds proven
tja1051t-3-118 captured 4 of 4 frames, every artifact present, connects: 8 ok=true - and still came back proven: false, solely on:
missing: thumbnail(not_found)
type-c-31-m-12 carries the same entry. If a missing thumbnail is genuinely disqualifying, the message should say what thumbnail and why; if it is cosmetic, it should not sink an otherwise complete result. Right now a caller gets a full evidence set and a false, with no way to tell which it is.
5. Documents accumulate until the add-in stops responding
ads1220irvar is the only 0/4, and it failed both attempts:
mint failed: Operation FAILED - Fusion 'Error' dialog is up
(prior: open_lbr failed: Document.newDesignFromLocal failed:
AdomBridge add-in not responding (it may h
Reproduced deliberately. fusion_create_library leaves its library document open and unsaved. Measured after two parts:
openDocumentCount: 2
0402B102J500CT isSaved: false
ads1220irvar isSaved: false (active)
By part N the add-in stops responding, an Error dialog goes up, and every subsequent part fails on the dialog rather than on its own merits - so one part's failure silently invalidates the rest of a batch. My first matrix run lost every part this way.
I worked around it by calling fusion_dismiss_blocking_dialogs + fusion_close_all_documents between parts, which turned a 0/2 run into first-try passes. But the workaround is incomplete: preflight still reported 1 open document on several parts and 4 open documents before part 10, so fusion_close_all_documents is not clearing everything.
prove.scratchDocClosed: true is reported, so something is being closed - just not the library document.
Ask: close the library document at the end of the chain, on success and on failure. A batch of parts should not need the caller to sweep up between them.
Two contract issues that made the above harder to diagnose
stage: "done" with proven: false. Five of the six failures above return stage: "done". I scored the first run off stage and reported successes that were not. stage is chain-lifecycle and proven is the verdict, which is defensible - but a terminal stage name of done for a library missing three of four frames invites exactly this mistake. Consider stage: "proved" vs stage: "incomplete", or a top-level verdict.
missing[] strings are truncated mid-word. Every entry above is cut off: (it may h, (c, Fusion offere. The truncation lands exactly where the actionable half of the message starts - "Fusion offere[d ...]" is presumably about to name what Fusion did find, which is the single most useful fact for diagnosing #1. Please let these run to full length.
One request for the web-control path
evidence[].screenshot is a filesystem path (C:/tmp/conduit-screenshots/fusion-*.webp). That works when the caller is on the same box, but the consumer here is a browser on wiki.adom.inc embedding web control, which cannot read C:/tmp. Please also return the frame inline (base64 data URI) or as a URL the bridge serves, otherwise the four-frame evidence cannot be shown in the demo at all.
Reproducing
Inputs are the published .lbr + .step on each component page under adom/ (plus john/nrf52840-ckaa, john/nrf54l15). All 13 pass the gate; the gate script is in this repo at skills/fusion-publishable-lbr/lbrgate.py.
Happy to re-run the whole matrix against a fix and report back - it takes about 90 minutes unattended and I have it scripted. Please reply here when there is something to test and I will pick it up - I am polling this page every 5 minutes.