LearnNewsExamplesServices
Frontmatter
id14587
titleNeural Link dock-layout tools: topology readout + semantic operation execution
stateClosed
labels
enhancementaiarchitecture
assigneesneo-fable-clio
createdAt3:57 AM
updatedAt7:11 AM
githubUrlhttps://github.com/neomjs/neo/issues/14587
authorneo-fable-clio
commentsCount4
parentIssue13158
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAt7:11 AM

Neural Link dock-layout tools: topology readout + semantic operation execution

Closed Backlog/active-chunk-3 enhancementaiarchitecture
neo-fable-clio
neo-fable-clio commented on 3:57 AM

Context

Operator seed (2026-07-04, live session, verbatim substance): "docking layouts: we will need new NL tools… NL-driven layout changes with animations" — the Lane-3 bar (D#14561: "NL changes layouts live, animated, e2e-tested") requires agents to DRIVE and VERIFY dock layouts natively, and today they cannot: the Neural Link observes motion (observe_motion), drag state (get_drag_state/get_drag_trace), and components (query_component), but has no dock-semantic surface — no way to read a dock topology or execute a dock operation.

The Problem

The two showcase demos, the whitebox-e2e leaf, and the FM-cockpit consumers (#14560 pop-out cards; seam-v0 on #14423) all need programmatic dock control. Without NL tools, "NL-driven docking" degrades to simulated pointer events against private DOM — brittle, animation-blind, and contract-free. The tools are also the recording substrate: a scripted NL run IS the demo tour (see the sibling showcase tickets).

The Architectural Reality

  • The semantic-operation executor is SHIPPED: src/dashboard/DockZoneModel.mjs (v1 vocabulary incl. resizeSplit, setItemAutoHidden, split/tab adapters via src/dashboard/DockLayoutAdapter.mjs). Contract of record: learn/agentos/HarnessDockZoneModel.md (dockZone.v1).
  • NL tool substrate + discipline: the neural-link MCP tool modules (sibling precedent — structural-pre-flight Stage-1 fast-path applies: new tool files join the existing tool-module directory pattern); schema discipline per the x-pass-as-object fixes (#14542/#14543).
  • Verification siblings: examples/dashboard/dock/ (#13247) as the correctness surface; observe_motion for animation assertions.
  • Guardrail inherited from the epic: no parallel layout-mutation path — every mutation rides the model executor.

The Fix

One PR, two tools + handbook + unit coverage:

  1. get_dock_topology — serialized dock-model tree for a given root (and window, multi-window-aware where the substrate already is): items, splits, tabs, auto-hide states, active perspective metadata when present. Read-only; JSON-first output (no live refs/DOMRects).
  2. execute_dock_operation — validated passthrough to the dockZone.v1 executor for the SHIPPED v1 vocabulary (move/split/tab/setItemAutoHidden/resizeSplit); fail-closed on unknown operations (unknown op = error naming the vocabulary, never a guess). Returns the post-operation topology delta so agents verify without a second call.

Both tools registered in the NL handbook with worked examples; unit specs per the unit-test skill (custom playwright configs — never default npx playwright test).

Contract Ledger Matrix

Target Surface Source of Authority Proposed Behavior Fallback Docs Evidence
get_dock_topology (new NL tool) dockZone.v1 model (DockZoneModel.mjs) Read-only serialized topology absent tool = status quo (DOM scraping) NL handbook entry unit spec + live example run
execute_dock_operation (new NL tool) the model executor (same) Validated v1-vocabulary passthrough, fail-closed, returns delta absent tool = simulate_event fallback NL handbook entry unit spec incl. unknown-op rejection

Decision Record impact

aligned-with ADR 0020 + the dockZone.v1 contract. Perspective/cross-window tool extensions are explicitly #14423-spec-gated (see Out of Scope) — this ticket adds no semantics the shipped model doesn't already own.

Acceptance Criteria

  • Both tools registered + handbook entries + x-pass-as-object-compliant schemas.
  • execute_dock_operation rejects unknown ops fail-closed with the vocabulary named.
  • Post-operation topology delta returned and asserted in unit specs.
  • Verified live against examples/dashboard/dock/ (topology read + one op of each v1 class).
  • No mutation path outside the model executor (review-checkable).
  • Cross-family review before merge.

Out of Scope

  • capture_perspective / restore_perspective / cross-window move tools — follow-up leaf AFTER #14423 settles §2/§3 semantics.
  • Demo apps and e2e suites (sibling leaves).
  • Any dockZone.v1 model changes.

Related

Parent: #13158 (linked native). Design gate for follow-ups: #14423 (+ seam-v0 comment). Consumers: the two showcase leaves + the whitebox-e2e leaf (filed same batch), #14560 cockpit cards. Precedent: #14562/#14563 (Euclid's FM NL-proof pattern). Sweeps: latest-20 live at 2026-07-04T01:56Z — no equivalent; A2A all-status scan same minute — no docking-scoped claim (Lane 3 is mine, D#14561 DC…3Wl).

Origin Session ID: fa2a6fd5-7488-4af6-a0d2-3855c86003e4 Retrieval Hint: "NL dock tools topology readout execute dock operation fail-closed vocabulary"

tobiu referenced in commit c876fc8 - "feat(ai): Neural Link dock tools — get_dock_topology + execute_dock_operation (#14587) (#14625) on 7:11 AM
tobiu closed this issue on 7:11 AM