Skip to content

feat(navigation): resolve exact cross-probe targets - #401

Closed
dubesinhower wants to merge 17 commits into
mixelpixx:mainfrom
dubesinhower:feat/verified-editor-cross-probe
Closed

feat(navigation): resolve exact cross-probe targets#401
dubesinhower wants to merge 17 commits into
mixelpixx:mainfrom
dubesinhower:feat/verified-editor-cross-probe

Conversation

@dubesinhower

Copy link
Copy Markdown
Contributor

User-visible capability

Adds a provisional Navigation MVP cross-probe resolver for exact schematic-symbol ↔ PCB-footprint relationships. The resolver returns stable source and destination KIIIDs, explicit project/document/sheet context, saved-structure evidence, and live IPC evidence that both requested editor documents are open.

Why this belongs in the Navigation MVP

Cross-probing is the final Priority 1 vertical slice: a client can carry a deterministically resolved schematic symbol to its exact PCB footprint, or reverse that relationship, without choosing by a duplicate reference or silently switching hierarchy instances.

Dependency / base

Logical dependency: #400, following #399#398#397#396 and the non-draft Priority 0 IPC foundation #390. Public API design is tracked in #395.

The GitHub PR base remains upstream main because the dependency branches are fork-owned; review this commit as the N6 delta on top of #400. This PR stays draft until the Navigation MVP public naming and compatibility contract in #395 is accepted.

Behavior and structured refusals

  • Requires explicit project, schematic document, PCB document, schematic hierarchy instance path, source editor, and source KIID.
  • Resolves only schematic symbols and PCB footprints through KiCad's saved footprint (path ...) linkage, with reference agreement as an additional consistency check.
  • Requires the saved linkage to identify exactly one destination and verifies both requested document contexts through typed GetOpenDocuments IPC readback.
  • Returns unresolved_cross_probe_destination for absent, duplicate, malformed, or reference-inconsistent linkage.
  • Reuses existing structured stale-target, wrong-project/document/sheet, editor-unavailable, and unsupported-capability refusals.
  • Does not activate, reveal, or mutate selection: the bundled stable KiCad 10 protocol cannot prove exact editor activation, and resolution is never reported as a state change.

Intentionally unsupported

  • Pin/pad/net expansion until a unique stable destination can be modeled.
  • Action IDs, raw RunAction, keyboard/mouse control, or coordinate-based navigation.
  • Automatic activation/selection without an exact typed capability and result-derived readback.

Verification

  • cargo fmt --all
  • cargo fmt --all -- --check
  • cargo test -p konnect-core cross_probe --lib — 7 passed
  • cargo test -p konnect-core editor_navigation --lib — 17 passed
  • cargo test -p konnect-ipc --test mock_server_test — 47 passed, 1 ignored
  • cargo test --workspace --locked --lib --tests — passed; live GUI/CLI-only tests remained explicitly ignored
  • cargo test --workspace --locked --doc — passed
  • cargo clippy --workspace --locked --all-targets -- -D warnings — passed
  • cargo run -p xtask -- fix-doc-counts --check — 21 toolsets, 227 registered, 234 total; current
  • git diff --check — passed

Hermetic coverage includes exact forward/reverse mapping, human C10 → stable symbol KIID → exact footprint KIID, hierarchical sheet paths, missing/duplicate/mismatched linkage, stale source, wrong sheet instance, both live document proofs, and no mutation commands.

Remaining risks

  • The saved KiCad footprint symbol-path format is tested for root and nested sheet instances but remains a KiCad-version compatibility surface.
  • No disposable live KiCad GUI endpoint was available for manual integration verification.
  • Exact activation/reveal and stable schematic-symbol selection remain unsupported by the bundled KiCad 10 protocol and are reported rather than simulated.

@neusse

neusse commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator

Reconstructed as #495 directly on current main with the approved public name resolve_cross_probe_target. The replacement preserves @dubesinhower authorship, excludes #400's rejected activation surface, regenerates current counts, and passes the focused and full local gates. Closing this obsolete cumulative draft in favor of the focused replacement.

@neusse neusse closed this Sep 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status:waiting-on-dependency Next actor: the dependency owner — see linked blocking issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants