feat(navigation): observe editor capabilities - #396
Conversation
|
Thanks for keeping this as a draft and documenting the dependency chain. Please pause additional navigation slices for now and keep the immediate focus on #369. It is now green and mergeable, so we can review its current head and begin landing this stack from the bottom. After each prerequisite lands, we can ask for only its immediate successor to be restacked once. Rebasing #396 now, or adding N3-N6 above it, would multiply the conflict-resolution work because this branch still carries the older stack through #390. Please preserve the unique #396 work so it can be rebuilt on the final IPC base after #390 and after the public API decisions in #395 are settled. |
|
Reconstructed as focused PR #488 directly on current main. The replacement preserves @dubesinhower authorship on the unique N1 commit, drops the cumulative prerequisite history, reconciles the current board-safety contracts, and passes the complete local gate. Closing this superseded draft so the merge queue has one authoritative N1 PR. |
Summary
get_editor_stateMCP observation behind theeditor_navigationtoolseteditor_unavailable,unsupported_capability, andstale_targetrefusalsNavigation MVP rationale
This is N1, the observation foundation for Priority 1 navigation. Later selection, target resolution, mutation, activation, and cross-probe slices need a typed capability/document snapshot so they can fail closed instead of silently retargeting.
Public naming remains provisional under #395, so this PR is intentionally a draft.
Dependency
Intentionally unsupported
Unsupported capabilities are reported explicitly. Active fields remain
null; open-document order is not presented as active-state evidence.Verification
cargo fmt --all -- --check— passcargo test -p konnect-ipc --test mock_server_test— 38 passed, 1 ignoredcargo test -p konnect-core editor_navigation --lib— 3 passedcargo test --workspace --all-targets— pass (live/installed-tool tests remain ignored by their existing contracts)cargo clippy --workspace --all-targets -- -D warnings— passxtask fix-doc-counts --check— 21 toolsets, 222 registered tools, 229 total; currentgit diff --check— passcargo test -p konnect-ipc --test live_kicad_test editor_state_observation_reports_real_version_and_honest_capabilities -- --ignored --exact --nocapture --test-threads=1— 1 passed against the live KiCad 10.0.5 Windows named pipe while a disposable KiCad-authored project was loaded in the project manager; this proves version/capability observation only, not live-document selection or activationRisks
DocumentSpecifierexposes a hierarchical sheet path rather than a schematic filename; this PR keepsdocument_pathnull rather than deriving it from diskChecklist