Skip to content

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

Merged
neusse merged 1 commit into
mixelpixx:mainfrom
neusse:neusse/reconstruct-401
Sep 7, 2026
Merged

feat(navigation): resolve exact cross-probe targets#495
neusse merged 1 commit into
mixelpixx:mainfrom
neusse:neusse/reconstruct-401

Conversation

@neusse

@neusse neusse commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator

Closes #395.

This is the terminal N6 slice of the approved Navigation MVP. It reconstructs the unique cross-probe work from draft #401 directly on current main after #488, #491, #492, #493, and #494 landed. The rejected #400 activation tool is intentionally absent. Original implementation authorship from @dubesinhower is preserved.

User-visible capability

  • Adds the read-only resolve_cross_probe_target tool with the exact maintainer-approved public name.
  • Resolves schematic symbol to PCB footprint and PCB footprint to schematic symbol from saved KiCad symbol-path linkage.
  • Requires explicit project identity, both saved documents, the exact schematic instance path, source editor, and source KIID.
  • Returns exact source and destination identities plus separate saved-structure and live-document evidence.
  • Proves both requested documents through typed GetOpenDocuments IPC readback.
  • Refuses missing, duplicate, malformed, stale, instance-inconsistent, and reference-inconsistent linkage with structured errors.
  • Performs no activation, reveal, viewport, selection, raw-action, mouse, or keyboard side effects.

Navigation MVP acceptance accounting

  1. Editor, version, document, sheet-instance, active-state availability, and capability observation: feat(navigation): observe editor capabilities #488 and test(navigation): complete unavailable capability matrix #494.
  2. Deterministic C10 to exact schematic KIID/instance resolution: feat(navigation): resolve exact editor targets #492.
  3. Exact activation or typed unsupported: feat(navigation): observe editor capabilities #488/test(navigation): complete unavailable capability matrix #494 report activation, reveal, center, and fit unavailable; per the maintainer decision no public pretend-to-act tool ships.
  4. Exact selection and full readback: feat(navigation): observe exact editor selection #491 observes selection and feat(navigation): verify editor selection mutations #493 verifies clear/add/remove mutations by complete readback.
  5. Exact cross-probe to one PCB footprint KIID: this PR.
  6. PCB destination action or typed unsupported: this PR returns the destination without side effects; feat(navigation): verify editor selection mutations #493 provides the supported exact selection operation, while feat(navigation): observe editor capabilities #488/test(navigation): complete unavailable capability matrix #494 report activation unsupported.
  7. Destination document and selection proof: this PR proves the destination document; feat(navigation): observe exact editor selection #491/feat(navigation): verify editor selection mutations #493 provide exact selection observation/mutation readback when the client requests it.
  8. Structured ambiguity, stale, wrong-context, closed-editor, unresolved-destination, unsupported, and readback-mismatch refusals: covered across feat(navigation): observe editor capabilities #488, feat(navigation): observe exact editor selection #491, feat(navigation): resolve exact editor targets #492, feat(navigation): verify editor selection mutations #493, and this PR.

This closes the issue under the smaller five-operation composition explicitly approved in the maintainer decision.

Current-main conflict resolution

The old #401 branch also contained #400's rejected activation API and stale generated counts. The reconstruction keeps current-main board safety and capability-model changes, excludes activation completely, and adds only the cross-probe resolver. Tool counts were regenerated rather than hand-merged.

Evidence

  • cargo test -p konnect-core cross_probe --lib - 7 passed.
  • cargo test -p konnect-core editor_navigation --lib - 14 passed.
  • cargo test -p konnect-ipc --test mock_server_test - 55 passed, 1 intentionally ignored.
  • Guard-neutering proof: disabling reference agreement made missing_duplicate_and_reference_mismatch_destinations_fail_closed fail; restoring it made the test pass.
  • cargo xtask fix-doc-counts --check - 21 toolsets, 226 registered, 233 total; current.
  • cargo fmt --all -- --check - passed.
  • cargo clippy --workspace --locked --all-targets -- -D warnings - passed.
  • cargo test --workspace --locked --lib --tests - passed.
  • cargo test --workspace --locked --doc - passed.
  • git diff --check - passed.

Hermetic coverage includes exact forward/reverse mapping, root and nested sheet paths, human C10 resolution, missing/duplicate/mismatched linkage, stale sources, wrong instances, both live-document proofs, and absence of mutation commands.

Validation debt and boundaries

No disposable live KiCad GUI endpoint was available for a new manual integration run. The operation is focused and read-only, and its IPC and saved-design behavior is covered deterministically. Saved footprint symbol-path representation remains a KiCad-version compatibility surface. Pin/pad/net expansion remains unsupported until one stable destination can be modeled.

@neusse
neusse requested a review from mixelpixx as a code owner September 7, 2026 20:12
@neusse
neusse merged commit cfe3427 into mixelpixx:main Sep 7, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Design Priority 1 semantic editor navigation MVP

2 participants