← Commit history

Integration test results: footprint writer fix VERIFIED (4-sided LQFP-64); minting yields wipprod not eagle URN; binding wipprod fails. Record owned-popup error-capture technique + bridge hint.

John Lauer ·0e2b880933 ·4mo ago ·parent f0c8699
3 files changed +42−2
FUSION_3D_FINDINGS.md+35
@@ -82,3 +82,38 @@ The one step not yet automated end-to-end: minting + mapping the eagle URN (the in-library generator). Current plan: open the footprint env with the chip placed (sections 4-5), let the human align + FINISH/save once, then export that `.lbr`, read the exact `package3d` markup + eagle URN, and from there automate the edit-and-reupload for every future chip.++## 9. Integration test (adom-lbr.fusion3d/1 sidecar) - results++Tested the adom-lbr-fixed `.lbr` + `ads.fusion3d.json` sidecar end to end:+- **Footprint writer fix: VERIFIED.** The new `adom-lbr generate` emits a real 4-sided LQFP-64+  (16 left / 16 right / 16 top / 16 bottom `<smd>`, X & Y ±5.74 mm), 64 `<connect>` intact. Opens in+  Fusion as a proper QFP, not a 2-column placeholder. (Format nit: the `<smd>` have **no `rot=`** - fine+  for square pads, but non-square pads on the top/bottom sides would need `rot="R90"`.)+- **URN minting: the assumed scheme is WRONG.** Running the 3D Package Generator+  (`Create3DPackage` -> import model -> `Package3DStop`/FINISH -> Save) mints+  **`urn:adsk.wipprod:dm.lineage:...`** (a regular user cloud design), NOT the+  **`urn:adsk.eagle:package:NNN/V`** the manifest expects. Fusion's generator saves a *custom* 3D model+  as an ordinary cloud file (wipprod), not a managed eagle package.+- **Binding the wipprod URN: FAILS.** Writing `<packages3d><package3d urn="urn:adsk.wipprod:dm.lineage:...">`+  + a device `<package3dinstance package3d_urn="...">` into the `.lbr` and reopening gives+  **"<file>.lbr has errors and cannot be opened. Close the empty design file..."** So a wipprod URN is+  not valid in `package3d`; the `.lbr` genuinely needs an `adsk.eagle:package` URN.+- **THE REMAINING BLOCKER:** how to mint an `adsk.eagle:package` URN for a custom model. The standalone+  generator path does not produce one. The in-library `Electron::AddCustom3DModel` + `AttachToFootprintCmd`+  path (section 6) is the likely minter, but it is interactive. This is the crux to crack next.++## 10. Capturing GUI error dialogs (Fusion) - ALWAYS check owned popups++Fusion error dialogs (e.g. "<file>.lbr has errors and cannot be opened") are **owned popups**: they do+NOT enumerate in `desktop_list_windows` and are invisible to a plain capture of the main window. A+`fusion_*` verb can return `success:true` while an error dialog is actually up.++**`desktop_screenshot_window {hwnd}` (AD v1.8.177+) captures them automatically** and returns them at the+TOP LEVEL: **`ownedPopupCount`** (always present; 0 = none) + **`_screenshots[]`** (each owned popup:+`title`, `kind:"owned_popup"`, `localSafePath`, `rect`, `coordMap`). The CLI auto-pulls each popup PNG.++RULE: after every Fusion open / `execute_text_command` / generator FINISH, grab+`desktop_screenshot_window` on the Fusion main hwnd and **check `ownedPopupCount` / read `_screenshots[]`** -+do NOT just read `output.data.image` (that is the main window only and misses the dialog). Treat+`ownedPopupCount > 0` as "an error/confirm dialog is up - read it before proceeding."
lib-08-fixed-4sided-footprint.pngadded
⋯ 1 unchanged line ⋯
server.py+7−2
@@ -1003,9 +1003,14 @@ def _orchestrate_open_lbr(args: dict) -> dict:         "data": {"results": results, "filePath": file_path},         "_hint": (             "Library opened in the Electronics Library editor (Content Manager). "+            "ALWAYS VERIFY VIA SCREENSHOT: a .lbr can FAIL to open ('<file>.lbr has errors and cannot be "+            "opened') while this call still returns success - that error is an OWNED POPUP. Grab "+            "desktop_screenshot_window on the Fusion main hwnd and CHECK ownedPopupCount + read the "+            "_screenshots[] array (AD v1.8.177+ captures owned dialogs invisible to a plain capture); "+            "ownedPopupCount>0 means an error/confirm dialog is up. "             "NOTE: an adom-lbr .lbr is 2D ONLY - symbol + footprint + a PLACEHOLDER 3D package. "-            "The real 3D chip is NOT attached; that requires uploading the model to the Fusion "-            "cloud for a URN and linking it. See the 'fusion-libraries' skill before claiming the 3D is present."+            "The real 3D chip is NOT attached; that needs an adsk.eagle:package URN (a wipprod URN does NOT "+            "work in package3d). See the 'fusion-libraries' skill / FUSION_3D_FINDINGS.md."         ),     }     if symbol_name: