← All Pull Requests

Draft: R32 Rust migration source checkpoint; conversion incomplete #20

Closed Draft opened by Drew Owens 2026-10-19
Merges rust-migration-r32-source-2026-10-19 → master

The canonical source still contains the earlier migration checkpoint. This draft shares frozen R32 and its build/test dependencies so the current Rust implementation can be reviewed. Conversion is incomplete. This proposes source only, with no runtime release, installation, default-backend switch or version bump.

The checkpoint adds finite native board reads, Rust routing/electronics cores, Rust authoring/release helpers, and optional host-approved Windows process ingress. The native SDK workspace remains byte-exact R31 (272 files). Frozen implementation bytes are preserved; the current status pointer and unreleased changelog note are editorial additions.

Current scope is 24/61 legacy mechanical operations with finite native implementations and 37 without native handlers, not full parity or a completion percentage. The default package still has 23 add-in Python files and nine embedded Python files. See current status.

Validation: 322 Linux host tests, 44 release-tooling tests and six wrapper cases passed; 324 Windows host test executions (including one inert fixture helper) and the release link passed. R31's reused native DLL passed 715 Windows tests. Root's 23-request live read/refusal campaign preserved the original two documents, 48 independently observed placement values and shared definitions. Test counts overlap and must not be summed as unique coverage. Normal stop released SDK references, joined workers, left zero outstanding work, unloaded the product and closed both private listeners. Independent verification found zero closed-journal rows; the installed bridge was untouched.

A wake-acknowledgment issue remains: the native runtime reported 12 wake failures (last status 7) despite 12 completed callbacks. This does not overturn the finite read/refusal or cleanup results, but general wake reliability is unqualified.

The metadata diagnostic identifies the SDK's explicit offline part-number/description limitation (error 3). Full metadata and successful live exploded plans remain unqualified. Wrong-product board access cleanly refused with typed status 6; a positive actual-board SDK snapshot is still unqualified. General authenticated AB delivery, deployment, signing/update/rollback and full conversion/regressions remain release gates.

The source selection starts from the exact 840-file release source set, adds necessary developer documentation, and sends only changed/new files. It includes build/test assets, but no compiled binaries, runtime descriptors, generated source archives, screenshots, signing material or formatter before-copies. The source manifest is ccf7ed0f22638e66a9c00ee9d1580a87884325caac1865bb0c28acc0c3a3c246; source review prefix is 070fd971.

PR #19 was merged on 17 October and is not being reopened. This draft targets master 023d7be01c0ce44a28eedda85cf123f172eadfe8. The exact removals of rust/bridge/src/routing_planner.py and tools/freeze-contract.py are prepared locally. If branch-safe deletion remains unavailable, those two unreferenced historical files are an explicit follow-up; this PR does not claim complete Python removal.

Publication readback verified all 1,854 files at commit 1c732dfb7d3e6cf423acc420e52e295e1f38d4ff against the canonical base plus the exact 601-file overlay (579 additions, 22 modifications), with no unintended changes. The wiki's large-diff endpoint currently returns a server output-buffer error. A complete source review copy is available with adom-wiki repo clone adom/fusion-bridge --ref 1c732dfb7d3e6cf423acc420e52e295e1f38d4ff --dir fusion-r32-review. This is source review only; do not run the package-switch helper as an installation step.

Diff Skip to comments (2)

No diff was attached to this pull request.

Comments

John Lauer · 23d ago

Thanks, Drew. I checked this draft against everything that shipped this week (1.11.40 to 1.11.44), since your base 023d7be is the head right after the 1.11.44 publish.

Preserved. These are byte-identical to main in this branch:

  • the routing preflight (routing_script.py, any closed outline and the 1/320000 mm grid snap from #123)
  • the floating panel and progress bar (activity_palette.py, palette.rs)
  • the complete CHANGE forms (electronics.py)
  • the single add-in copy guard (AdomBridge.py, #124)
  • the d3d12 dialog rule (dialog_rules.json, dialogs.rs)
  • the tour fixes (tour.rs, index.html, #121)
  • the silk crop (services.rs)
  • the dashboard service in install.sh

The only overlap is routing.rs, where plan_route moves to your Rust planner.

The Rust planner keeps the #123 outline behaviour. routing_planner/geometry.rs has the closed-loop chaining, arcs with sagitta, cutouts and the edge-clearance test from outline_problem. So once this routing.rs lands, routing_planner.py really is unreferenced and its removal is fine. On today's main it is still embedded (include_str!), so the deletion has to land together with this routing.rs, never ahead of it.

Leaving it as a draft and not merging, as you describe it: source only, conversion incomplete, wake reliability and the release gates still open. When you want it merged, rebase on the head of the day and I will re-run this check.

Drew Owens · 13d ago

Closing as superseded by #21 to #26, which landed the mechanical layer on the exe-owns-verbs pattern (the Rust exe validates and journals; the Python add-in does the Fusion work). This draft is the earlier native in-process approach, which was shelved on 2026-10-20.

A review against master 1.13.21 found:

  • 10 of its 22 modified files conflict (validate.yml, .gitignore, CHANGELOG.md, bridge.json, contracts/describe.json, rust/bridge/Cargo.toml, main.rs, routing.rs, promote.sh, release.sh).
  • Merged, its four integration tests do not compile (cannot find savedoc in the crate root), and its own tools/contract.sh check fails.
  • 178 of its files are evidence copies. Some carry retired naming and a container hostname that master has since removed.

Worth salvaging later, as small PRs re-ported onto master without the evidence trees:

  1. The Rust versions of the route_net dry-run check, the routing and pour reports, and board_bom, schematic_plan and board_seed. They fit the current pattern, ideally inside adom-eda-checks.
  2. The Rust release helpers (PE certificate check, zip, version staging), if they are wanted.

The native runtime, native client, native mode, fusion_native, routing_planner and the catalog switch are superseded.

🤖 Generated with Claude Code

Log in to comment.