Context
#14783's capability-matrix audit found the Neural Link dock pair is registered and dispatchable, but not exposed through the aggregate SDK export or the whitebox fixture layer that journey/demo authors normally consume.
This is not the original dock-tool implementation (#14587), the deterministic tour runner (#14640), the dock vocabulary SSOT (#14715), or the next executor operation (#14768). It is the ergonomic contract gap between the existing MCP verbs and the higher-level authoring surfaces.
The Problem
get_dock_topology and execute_dock_operation exist as MCP/OpenAPI verbs and dispatch through DockService, but callers that use the shared SDK and Playwright whitebox fixture must either wire the service directly or fall back to raw MCP calls. That leaves every dock tour/e2e lane to rederive the same bridge and weakens the #14783 matrix's fixture-support column.
The Architectural Reality
ai/mcp/server/neural-link/openapi.yaml registers get_dock_topology and execute_dock_operation.
ai/mcp/server/neural-link/toolService.mjs dispatches both verbs to ai/services/neural-link/DockService.mjs.
ai/services/neural-link/DockService.mjs exists and calls the App Worker through ConnectionService.
ai/services.mjs exports the Neural Link component, connection, data, health, instance, interaction, and runtime services, but not DockService.
test/playwright/fixtures.mjs wraps many Neural Link operations for whitebox tests, but has no getDockTopology or executeDockOperation wrapper.
The Fix
Add the missing consumer-facing bridge without fattening the MCP server:
- Export
NeuralLink_DockService from ai/services.mjs, matching the existing nlSpec service-export pattern.
- Add
neuralLink.connectToApp() fixture helpers for getDockTopology(...) and executeDockOperation(...), passing sessionId internally like sibling helpers.
- Add a focused regression or fixture proof that the wrapper reaches the existing
DockService contract without introducing a second dock mutation path.
- Update #14783's matrix row once the wrapper exists.
Contract Ledger Matrix
| Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Evidence |
ai/services.mjs aggregate SDK export |
ai/services/neural-link/DockService.mjs |
expose NeuralLink_DockService with existing nlSpec pattern |
direct path import |
static import/export proof |
| Whitebox fixture dock helpers |
existing Neural Link fixture helper style |
getDockTopology read wrapper + executeDockOperation write-locked wrapper that injects sessionId |
raw MCP/service call per test |
focused unit/fixture proof |
Acceptance Criteria
Out of Scope
- Implementing new dock operations (
transferItem remains #14768).
- The tour-runner harness (#14640).
- The original dock MCP verbs (#14587, already closed).
- Demo scene content or video/recording tooling.
Related
Parent: #14783. Related/consumed-by: #14640, #14589, #14590, #14591. Adjacent dock lanes: #14587, #14715, #14768.
Live duplicate sweep: gh issue list for dock fixture/SDK terms and local rg across issues/discussions/source on 2026-07-04 found no equivalent. A2A all-message sweep immediately before filing showed Clio owns #14715/#14768, but no SDK/fixture wrapper claim.
Origin Session ID: 6439a7c5-5f2f-4658-9226-835c317c7a0b
Retrieval Hint: "Neural Link DockService SDK export fixture wrapper get_dock_topology execute_dock_operation"
Context
#14783's capability-matrix audit found the Neural Link dock pair is registered and dispatchable, but not exposed through the aggregate SDK export or the whitebox fixture layer that journey/demo authors normally consume.
This is not the original dock-tool implementation (#14587), the deterministic tour runner (#14640), the dock vocabulary SSOT (#14715), or the next executor operation (#14768). It is the ergonomic contract gap between the existing MCP verbs and the higher-level authoring surfaces.
The Problem
get_dock_topologyandexecute_dock_operationexist as MCP/OpenAPI verbs and dispatch throughDockService, but callers that use the shared SDK and Playwright whitebox fixture must either wire the service directly or fall back to raw MCP calls. That leaves every dock tour/e2e lane to rederive the same bridge and weakens the #14783 matrix's fixture-support column.The Architectural Reality
ai/mcp/server/neural-link/openapi.yamlregistersget_dock_topologyandexecute_dock_operation.ai/mcp/server/neural-link/toolService.mjsdispatches both verbs toai/services/neural-link/DockService.mjs.ai/services/neural-link/DockService.mjsexists and calls the App Worker throughConnectionService.ai/services.mjsexports the Neural Link component, connection, data, health, instance, interaction, and runtime services, but notDockService.test/playwright/fixtures.mjswraps many Neural Link operations for whitebox tests, but has nogetDockTopologyorexecuteDockOperationwrapper.The Fix
Add the missing consumer-facing bridge without fattening the MCP server:
NeuralLink_DockServicefromai/services.mjs, matching the existingnlSpecservice-export pattern.neuralLink.connectToApp()fixture helpers forgetDockTopology(...)andexecuteDockOperation(...), passingsessionIdinternally like sibling helpers.DockServicecontract without introducing a second dock mutation path.Contract Ledger Matrix
ai/services.mjsaggregate SDK exportai/services/neural-link/DockService.mjsNeuralLink_DockServicewith existingnlSpecpatterngetDockTopologyread wrapper +executeDockOperationwrite-locked wrapper that injectssessionIdAcceptance Criteria
NeuralLink_DockServiceis exported fromai/services.mjswithout adding MCP-server logic.test/playwright/fixtures.mjsexposes dock helpers throughneuralLink.connectToApp()and injectssessionIdinternally.DockService/registered Neural Link verbs; no parallel dock mutation path is introduced.Out of Scope
transferItemremains #14768).Related
Parent: #14783. Related/consumed-by: #14640, #14589, #14590, #14591. Adjacent dock lanes: #14587, #14715, #14768.
Live duplicate sweep:
gh issue listfor dock fixture/SDK terms and localrgacross issues/discussions/source on 2026-07-04 found no equivalent. A2A all-message sweep immediately before filing showed Clio owns #14715/#14768, but no SDK/fixture wrapper claim.Origin Session ID: 6439a7c5-5f2f-4658-9226-835c317c7a0b Retrieval Hint: "Neural Link DockService SDK export fixture wrapper get_dock_topology execute_dock_operation"