Skip to content

feat(navigation): observe editor capabilities - #396

Closed
dubesinhower wants to merge 12 commits into
mixelpixx:mainfrom
dubesinhower:feat/editor-capabilities-observation
Closed

feat(navigation): observe editor capabilities#396
dubesinhower wants to merge 12 commits into
mixelpixx:mainfrom
dubesinhower:feat/editor-capabilities-observation

Conversation

@dubesinhower

@dubesinhower dubesinhower commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a typed KiCad IPC observation model for the running version, addressable schematic/PCB editors, open-document identities, and navigation capability availability
  • add provisional get_editor_state MCP observation behind the editor_navigation toolset
  • preserve the distinction between live IPC evidence and structural file evidence; never infer active context from open-document order
  • return structured editor_unavailable, unsupported_capability, and stale_target refusals

Navigation 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

  • enumerating every independent KiCad endpoint/frame from one configured endpoint
  • foreground editor, active document, and active hierarchical-sheet observation where KiCad 10 has no stable typed query
  • activation, reveal/center/fit, selection mutation, and cross-probe (later slices)

Unsupported capabilities are reported explicitly. Active fields remain null; open-document order is not presented as active-state evidence.

Verification

  • cargo fmt --all -- --check — pass
  • cargo test -p konnect-ipc --test mock_server_test — 38 passed, 1 ignored
  • cargo test -p konnect-core editor_navigation --lib — 3 passed
  • cargo test --workspace --all-targets — pass (live/installed-tool tests remain ignored by their existing contracts)
  • cargo clippy --workspace --all-targets -- -D warnings — pass
  • xtask fix-doc-counts --check — 21 toolsets, 222 registered tools, 229 total; current
  • git diff --check — pass
  • cargo 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 activation

Risks

  • KiCad 10 schematic DocumentSpecifier exposes a hierarchical sheet path rather than a schematic filename; this PR keeps document_path null rather than deriving it from disk
  • capability availability is version- and runtime-probe-derived; later slices must still verify each operation by result readback
  • public MCP names and request compatibility are awaiting maintainer direction in Design Priority 1 semantic editor navigation MVP #395

Checklist

  • New tests added for affected behavior
  • Documentation/tool counts updated
  • Public behavior outside the new toolset preserved

@neusse

neusse commented Aug 30, 2026

Copy link
Copy Markdown
Collaborator

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.

@neusse

neusse commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator

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.

@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