fix: close Freerouting bridge acceptance gaps - #367
Merged
Conversation
15 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #337
Summary
This is the terminal closeout for the merged Freerouting bridge series (#338, #339, #340) and the optional KiCad 10 native-export bridge (#342).
engine_found,native_mcp_available, andbridge_availableas separate observed readiness boundaries;type fix, while continuing to refuse unlocked routing, routed arcs, zones, and unsupported geometry before mutation;preferorrequireopt-in;base_designaliases and vias whose net is inherited from their validated enclosingnetwork_out/net;KiCad 10 transaction boundary
Live testing found that KiCad 10 publishes neither
GetItemsnorSaveDocumentToStringchanges while a commit is open. The import therefore keeps all pre-mutation validation and per-item result/KIID checking inside the single named commit, ends that commit, and then performs exact IPC read-back, candidate serialization, and direct KiCad DRC.If a post-commit evidence step fails, Konnect deletes only the KIIDs returned by
CreateItemsin a compensating transaction and verifies that the exact pre-import serialization returned. The successful path is still oneImport Freerouting SESundo step. The source board file is never overwritten; DRC findings and remaining unrouted items are reported as evidence instead of being hidden or reclassified as transport failure.Compatibility
export_specctra_dsn.native_bridge_modenow defaults fromprefertodisable. This reconciles #342 with #337's Rust-only default contract. KiCad 10 users can still opt into the authenticated native bridge withpreferorrequire. The migration is recorded indocs/API_MIGRATIONS.md.Evidence
Required workspace gate:
cargo fmt --all -- --checkcargo clippy --workspace --locked --all-targets -- -D warningscargo test --workspace --locked --lib --testscargo test --workspace --locked --docInstalled Freerouting 2.3.0 / Java tests also passed for readiness probing, native-MCP routing, overall-timeout cleanup, task-cancellation reaping, Rust-export routing, and native-KiCad-export round trip. No Freerouting Java process remained afterward.
The manual real-KiCad gate routed the disposable locked fixture to 13 segments / 2 vias, then one Ctrl+Z restored the original 1 locked segment / 1 locked via and the exact pre-import IPC serialization. Runtime implementation remains IPC-only; computer interaction was used solely to provide the one UI undo action that KiCad IPC does not expose.