← Commit history

standard 0.23.7: coverage reads Fusion 1.13.23 (219)

Colby Knox ·02ff2514eb ·11d ago ·parent 7b30477
5 files changed +47−22
README.md+3−2
@@ -63,9 +63,9 @@ verb by verb: [docs/coverage.md](docs/coverage.md). | **core** | 93 | 93 | 90 | 89 | | **native** | 47 | 47 | 43 | 40 | | **checks** | 37 | 37 | 35 | 37 |-| **app** | 62 | 62 | 44 | 49 |+| **app** | 62 | 62 | 44 | 53 | | **platform** | 18 | 18 | 0 | 1 |-| standard (all but platform) | 239 | 239 | 212 | 215 |+| standard (all but platform) | 239 | 239 | 212 | 219 | <!-- coverage:end -->  The **checks** tier is where the other bridges are furthest behind, and it is the cheapest to close: those verbs are@@ -158,6 +158,7 @@ Decisions so far (proposals from the KiCad and Fusion bridges, 2026-10-27; issue  ## Status +Version 0.23.7: coverage reads Fusion 360 bridge 1.13.23 (219 of 239: diagnostics, instances, progress, foreground; panel and selection unsupported). Version 0.23.6: `variants` moves from platform to native (Altium, Fusion and KiCad 10 all have assembly variants), so the standard is 239 verbs; coverage reads Fusion 360 bridge 1.13.22 (variants and silkscreen_prep, partial). Version 0.23.5: coverage reads Fusion 360 bridge 1.13.21 (213 of 238: replicate_layout, symbol_prims, set_visibility, and partial place_on_pcb, place_on_sch, pcb_report). Version 0.23.4: the reference is Altium bridge 0.2.83 (engine 0.20.0, turned bodies, simulate noise and monteCarlo, a 20x faster board model on large boards).
docs/coverage.md+9−9
@@ -1,6 +1,6 @@ # Coverage: every standard verb on each bridge -Altium bridge 0.2.83 (the reference), KiCad bridge 1.0.87, Fusion 360 bridge 1.13.22. 56 verbs came from other bridges' proposals (tools/proposed/); they are marked *proposed*.+Altium bridge 0.2.83 (the reference), KiCad bridge 1.0.87, Fusion 360 bridge 1.13.23. 56 verbs came from other bridges' proposals (tools/proposed/); they are marked *proposed*. `exact` is the same job under the same or an equivalent name; `partial` does part of it or does it differently (`verbs/coverage.json` names what in `note`); `unsupported` answers `not_supported` for the whole job and is not counted; blank is missing. Generated by `tools/generate.py` from `verbs/coverage.json`; do not edit by hand. @@ -9,9 +9,9 @@ Generated by `tools/generate.py` from `verbs/coverage.json`; do not edit by hand | **core** | 93 | 93 | 90 | 89 | | **native** | 47 | 47 | 43 | 40 | | **checks** | 37 | 37 | 35 | 37 |-| **app** | 62 | 62 | 44 | 49 |+| **app** | 62 | 62 | 44 | 53 | | **platform** | 18 | 18 | 0 | 1 |-| standard (all but platform) | 239 | 239 | 212 | 215 |+| standard (all but platform) | 239 | 239 | 212 | 219 |  ## core @@ -231,7 +231,7 @@ Driving the application itself (launch, licence, dialogs, windows, views). Each | `cross_probe` *proposed* | From a schematic part to the board part linked to it, and back, by designator, the schematic symbol's id or its sheet path; optionally select them in the tool. | `altium_cross_probe` | `kicad_cross_probe` | `fusion_cross_probe` | | `demo` | The tour. Default: one background beat per call with a screenshot. live:true = the narrated FOREGROUND show: ab caption + document + in-bridge camera... | `altium_demo` | `kicad_demo` | `fusion_demo` | | `describe` | This list - the bridge's verbs and schemas for ab's Verbs tab. | `altium_describe` | `kicad_describe` | `fusion_describe` |-| `diagnostics` | Bridge-side facts for a bug report: environment variables, every Altium install found, Altium's windows, the agent status block and the cache directory. | `altium_diagnostics` | `kicad_diagnostics` |  |+| `diagnostics` | Bridge-side facts for a bug report: environment variables, every Altium install found, Altium's windows, the agent status block and the cache directory. | `altium_diagnostics` | `kicad_diagnostics` | `fusion_diagnostics` | | `dialog_log` | What the standing dialog reaper (and the bridge's own recoveries) pressed, newest last: nuisance boxes, script-error boxes, discarded save prompts, silent... | `altium_dialog_log` | `kicad_dialog_log` | `fusion_dialog_log` | | `dismiss_dialogs` | Press one named button (default OK) on the detected Altium dialogs through UIA - no cursor, no focus steal. titles narrows it to dialogs whose title... | `altium_dismiss_dialogs` | `kicad_dismiss_dialogs` | `fusion_dismiss_dialogs` | | `document_info` *proposed* | The active document: its name, what kind it is, whether it has unsaved changes, where it is saved and which version it is. Read only; opens nothing. | `altium_document_info` | `kicad_state` (partial) | `fusion_document_info` |@@ -239,11 +239,11 @@ Driving the application itself (launch, licence, dialogs, windows, views). Each | `eval` | Run a DelphiScript snippet inside Altium (optional Var block, then Begin ... End;) on the CURRENT document, or on filePath opened first. | `altium_eval` | `kicad_eval` | `fusion_run_modeling_script` (partial) | | `export_spice` *proposed* | Write the design's SPICE netlist with the tool's own exporter, and say what it holds. | `altium_export_spice` | `kicad_export_spice` | `fusion_export_spice` | | `extension_ping` | Does the AdomBridge .NET extension answer? Sends AdomBridge:Ping through the -R lane and waits up to 30 s for its result file. | `altium_extension_ping` |  | `fusion_addin_status` (partial) |-| `foreground` | Bring Altium in front of the user - the sanctioned exception to the never-foreground rule. | `altium_foreground` | `kicad_foreground` |  |+| `foreground` | Bring Altium in front of the user - the sanctioned exception to the never-foreground rule. | `altium_foreground` | `kicad_foreground` | `fusion_foreground` | | `install` | Install Altium Designer on this machine, STAGED, with the rules in the verb (from 0.2.29). stage: preflight / get_installer / launch / wait / license, or... | `altium_install` | `kicad_upgrade` (partial) | `fusion_install` | | `install_extension` | Install, update or remove the AdomBridge .NET extension (the PowerShell installer shipped beside the bridge). Altium must be CLOSED. | `altium_install_extension` |  | unsupported | | `install_receipt` | The last bundle install's full receipt (proof frame included), for a client whose install call outlived ab's budget. | `altium_install_receipt` |  | unsupported |-| `instances` | Every running Altium (Designer + Designer Develop can run together). | `altium_instances` | `kicad_state` (partial) |  |+| `instances` | Every running Altium (Designer + Designer Develop can run together). | `altium_instances` | `kicad_state` (partial) | `fusion_instances` (partial) | | `launch` | Start Altium (the newest numbered install, or the one install names) and wait for its main window, then hand the user's own window back. Answers... | `altium_launch` | `kicad_launch` | `fusion_launch` | | `library_views` *proposed* | Pictures of library parts for review, each as an image file: the schematic symbol, the footprint (pads and layers), the 3D body seated on the footprint, and... | `altium_library_views` | `kicad_library_views` | `fusion_library_views` | | `license` | Drive the License Management page (UIA first - no cursor, no foreground). | `altium_license` |  | `fusion_account` (partial) |@@ -251,15 +251,15 @@ Driving the application itself (launch, licence, dialogs, windows, views). Each | `list_commands` | Search Altium's process-launcher catalog (about 1,100 Server:Command entries parsed from the install's System/*.rcs files) by text and/or server. | `altium_list_commands` | `kicad_menu_items` (partial) | `fusion_list_commands` | | `open_document` | Open a document or project by path through the agent and show it without focusing it. An already-open document is activated, not reloaded. | `altium_open_document` | `kicad_open_board / kicad_open_schematic` (partial) | `fusion_open_document` | | `open_project` | Open a project (.PrjPcb / .PrjScr / .PrjMbd / .PrjHar / .LibPkg) by path. Same handler as altium_open_document. | `altium_open_project` | `kicad_open_board / kicad_open_schematic` (partial) | `fusion_open_cloud_file` (partial) |-| `panel` | Activate a docked panel TAB (SCH Library, PCB Library, Components, Projects, Properties) in the BACKGROUND - the 'ganged-up view' needs the right panels in... | `altium_panel` |  |  |-| `progress` | The bridge's timing book: phases in flight right now (percent/ETA blocks ab paints on the taskbar), measured phase history and per-verb run statistics. | `altium_progress` | `kicad_progress` |  |+| `panel` | Activate a docked panel TAB (SCH Library, PCB Library, Components, Projects, Properties) in the BACKGROUND - the 'ganged-up view' needs the right panels in... | `altium_panel` |  | unsupported |+| `progress` | The bridge's timing book: phases in flight right now (percent/ETA blocks ab paints on the taskbar), measured phase history and per-verb run statistics. | `altium_progress` | `kicad_progress` | `fusion_progress` | | `readiness` | The one-call gate: is Altium installed, running, licensed, and is the resident agent alive? Answers with Altium closed and never touches the script engine. | `altium_readiness` | `kicad_readiness` | `fusion_readiness` | | `run_command` | Run an Altium process (Server:Command) through the agent, on the CURRENT document or on filePath opened first. | `altium_run_command` | `kicad_send_key` (partial) | `fusion_run_command` | | `run_script` | One shot: run a procedure of YOUR OWN .PrjScr through Altium's -R command line. Only for when the agent is NOT resident. | `altium_run_script` | `kicad_run_script` | `fusion_run_script` | | `save` | Save the focused document, or the document at filePath (opened first if need be, saved by its path, never whatever happens to have focus). | `altium_save` | `kicad_save` (partial) | `fusion_save` | | `sch_zoom` | Find parts on a sheet: select them (everything else deselected), frame the view on them and return a proof frame. The schematic half of cross-probing (the... | `altium_sch_zoom` |  | `fusion_sch_zoom` | | `select_net` | Select one net as a whole on the current board (tracks, arcs, vias, pads, pours) and nothing else, optionally framing it; no net clears the selection. | `altium_select_net` | `kicad_select_net` | `fusion_select_net` |-| `selection` | What the user has selected in the current board (components with position mm, rotation, side, footprint, size) or sheet (components with location mils and... | `altium_selection` | `kicad_selection` (partial) |  |+| `selection` | What the user has selected in the current board (components with position mm, rotation, side, footprint, size) or sheet (components with location mils and... | `altium_selection` | `kicad_selection` (partial) | unsupported | | `selftest_script_error` | Regression test for the script-error safety net (from 0.2.23): makes the agent raise a REAL DelphiScript runtime error on purpose and checks that the bridge... | `altium_selftest_script_error` |  | unsupported | | `set_layer_visibility` | Show or hide one layer of the current board (by layer id) and refresh the view and the layer tabs. | `altium_set_layer_visibility` | `kicad_set_layer_visibility` | `fusion_set_layer_visibility` | | `setup_trial` | Onboarding state machine: from nothing to a working trial. Each call reports the stage it found (install / launch / signin / done) and the ONE next action;... | `altium_setup_trial` |  | `fusion_install_fusion` (partial) |
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "eda-bridge-standard",-  "version": "0.23.6",+  "version": "0.23.7",   "type": "skill",   "title": "EDA Bridge Standard: one way for an AI to drive every PCB tool",   "description": "The standard every Adom EDA bridge follows so one AI can drive Altium, KiCad, Fusion 360 and any future PCB tool the same way: shared verb names in tiers, the board model JSON, reply and refusal conventions, and a coverage table of each bridge against the Altium reference.",
verbs/coverage.json+32−8
@@ -1,5 +1,5 @@ {- "standard": "0.23.6",+ "standard": "0.23.7",  "reference": {   "bridge": "altium",   "version": "0.2.83"@@ -7,7 +7,7 @@  "proposed": 56,  "compared": {   "kicad": "1.0.87",-  "fusion360": "1.13.22"+  "fusion360": "1.13.23"  },  "tiers": {   "core": "Read and edit the design. Every bridge provides these: they are how an AI sees and changes a board.",@@ -3281,7 +3281,11 @@     "verb": "kicad_diagnostics",     "match": "exact"    },-   "fusion360": null+   "fusion360": {+    "verb": "fusion_diagnostics",+    "match": "exact",+    "note": "Fusion's facts: launcher, processes, windows (sign-in, licensing), add-in answering, environment with credential values hidden"+   }   },   {    "name": "dialog_log",@@ -3412,7 +3416,11 @@     "verb": "kicad_foreground",     "match": "exact"    },-   "fusion360": null+   "fusion360": {+    "verb": "fusion_foreground",+    "match": "exact",+    "note": "the user is notified why and given three seconds before Fusion comes forward"+   }   },   {    "name": "install",@@ -3475,7 +3483,11 @@     "match": "partial",     "note": "KiCad runs one project manager; state lists every window it owns"    },-   "fusion360": null+   "fusion360": {+    "verb": "fusion_instances",+    "match": "partial",+    "note": "Fusion runs one instance per user: its processes, not several editions side by side"+   }   },   {    "name": "launch",@@ -3606,7 +3618,11 @@     "match": "exact"    },    "kicad": null,-   "fusion360": null+   "fusion360": {+    "verb": "fusion_not_supported",+    "match": "unsupported",+    "note": "Altium's docked panel tabs; Fusion's editors show their own panels, and the bridge opens a surface (library, symbol, footprint, board, schematic, 3D) with fusion_show_* in the background"+   }   },   {    "name": "progress",@@ -3620,7 +3636,11 @@     "verb": "kicad_progress",     "match": "exact"    },-   "fusion360": null+   "fusion360": {+    "verb": "fusion_progress",+    "match": "exact",+    "note": "the long operation in flight, phase and verb timings, recent runs"+   }   },   {    "name": "readiness",@@ -3736,7 +3756,11 @@     "match": "partial",     "note": "the PCB editor's selection only (kicad_get_selection); the Schematic Editor has no API for its selection"    },-   "fusion360": null+   "fusion360": {+    "verb": "fusion_not_supported",+    "match": "unsupported",+    "note": "Fusion does not show the user's board selection to the bridge: a ULP's ingroup() reads no part even right after a GROUP (checked live on Fusion 2706, 2026-10-30). Name the parts instead; fusion_electron_select shows one to the user"+   }   },   {    "name": "selftest_script_error",
verbs/standard.json+2−2
@@ -1,5 +1,5 @@ {- "standard": "0.23.6",+ "standard": "0.23.7",  "reference": {   "bridge": "altium",   "version": "0.2.83"@@ -7,7 +7,7 @@  "proposed": 56,  "compared": {   "kicad": "1.0.87",-  "fusion360": "1.13.22"+  "fusion360": "1.13.23"  },  "tiers": {   "core": "Read and edit the design. Every bridge provides these: they are how an AI sees and changes a board.",