LearnNewsExamplesServices
Frontmatter
id13061
titleHarness docking: define dock-zone model contract
stateClosed
labels
enhancementdesignaiarchitecture
assigneesneo-gpt
createdAtJun 13, 2026, 5:52 AM
updatedAtJun 13, 2026, 8:40 AM
githubUrlhttps://github.com/neomjs/neo/issues/13061
authorneo-gpt
commentsCount0
parentIssue13012
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[x] 13063 Define stale componentRef restore behavior for dock-zone layouts
closedAtJun 13, 2026, 8:40 AM

Harness docking: define dock-zone model contract

Closed v13.1.0/archive-v13-1-0-chunk-2 enhancementdesignaiarchitecture
neo-gpt
neo-gpt commented on Jun 13, 2026, 5:52 AM

Context

Epic #13012 names the infinite-canvas / enterprise-desktop migration vector as part of the Agent Harness product line. Issue #13030 captured the market-signal and scoping anchor for QT-grade docking strategies: dock zones, nested split containers, tabbed dock panels, and save/restore layouts on top of Neo's existing multi-window and JSON blueprint substrate.

This ticket is the first concrete leaf split from #13030. It deliberately starts with the model contract, not the full UI. The prior intake comment on #13030 identified direct implementation as unsafe until the primitive boundary is chosen.

Live duplicate evidence before filing: latest 20 open issues checked at 2026-06-13T03:51:31Z; the only overlapping live issue was #13030 itself. Scope-specific search for dock-zone / docking / tabbed dock / split layout found #13030, #13028, old SortZone/grid work, and unrelated layout tickets, but no concrete dock-zone model contract leaf. Local resources/content exact sweep returned no dock-zone leaf. A2A last-50 scan showed no recent lane-claim/lane-intent on this scope; #13032 benchmark progress is separate.

The Problem

#13030 is intentionally a scoping anchor. If an implementation branch starts there directly, it risks bundling five separate concerns: semantic dock-zone model, split/tab container integration, drag-to-dock previews, blueprint persistence, and demand validation. That would make the first PR too broad and would force reviewers to decide architecture, interaction behavior, and persistence format in one cycle.

The first missing substrate is narrower: a Neo-owned model contract for what a docked layout is before any preview UI or persistence code commits to a shape.

The Architectural Reality

Existing substrate found by repo and KB checks:

  • Neo already has multi-window/shared-worker state and JSON blueprint persistence primitives (learn/benefits/MultiWindow.md, learn/benefits/JSONFirstUIs.md).
  • Neo already has layout building blocks such as vbox, hbox, and card/tab semantics (learn/guides/uibuildingblocks/Layouts.md).
  • Drag/drop and window choreography already exist in adjacent surfaces named by #13030, including dashboard sorting and window-manager surfaces.
  • The KB did not surface a dedicated docking manager or dock-zone layout primitive. That absence is the reason this leaf starts with a contract.

The model must compose with Neo primitives instead of cloning QT, Golden Layout, or Dockview. External libraries are reference semantics only.

The Fix

Define the minimal dock-zone model contract for the harness/infinite-canvas lane. The PR can be docs-only if that is the lowest-risk shape; if it introduces a new .mjs primitive, the author must run structural-pre-flight before choosing the destination.

The contract should answer:

  • What is the minimal tree shape for edge zones, nested splits, and tabbed dock slots?
  • Which layer owns the model: general layout primitive, dashboard/container primitive, or harness-specific adapter?
  • How does the model map onto existing vbox / hbox / card semantics without forking the drag pipeline?
  • Which fields are serializable as a future Neo blueprint, and which are runtime-only hover/preview state?
  • What is the second independent use shape beyond the anonymized QT-migration signal before implementation locks?

Contract Ledger Matrix

Target Surface Source of Authority Proposed Behavior Fallback / Boundary Docs / Evidence
Dock-zone model contract #13030 + Epic #13012 infinite-canvas vector Define a minimal serializable tree for edge zones, nested splits, and tabbed slots Do not implement preview UI or persistence in this first leaf Contract doc or JSDoc-backed code plus review evidence
Ownership boundary Existing Neo layout/dashboard/window substrates Decide whether the model is general layout, dashboard/container, or harness adapter If uncertain, document the rejected alternatives and defer implementation Cite existing repo surfaces read during the PR
Drag integration boundary Existing drag/drop and dashboard sorting pipeline State how future preview state will ride existing drag events No parallel drag system in this leaf Evidence from source reads, not external-library habit
Blueprint compatibility Neo JSON-first / blueprint substrate Separate serializable layout fields from runtime-only preview state No hardcoded harness-only persistence shape JSON example or schema-like table in the contract
Demand validation #13030 market signal + harness self-use Name a second independent use shape before locking the model Partner-specific presets stay out of public repo Body/review evidence names the second use shape generically

Decision Record impact

Aligned-with ADR 0020 (#13020). This leaf refines the harness infinite-canvas / dashboard-composition direction and does not amend an ADR.

Acceptance Criteria

  • A dock-zone model contract exists in a durable repo surface or JSDoc-backed code surface.
  • The contract covers edge zones, nested split orientation, tabbed slots, stable item identity, and serializable ordering.
  • The contract explicitly states the ownership layer and why the alternatives were rejected.
  • The contract distinguishes serializable blueprint fields from runtime-only drag/preview state.
  • The contract names one second independent use shape besides the anonymized QT-migration signal.
  • Drag-to-dock preview UI, layout persistence implementation, and split/tab rendering are not bundled into this first PR.
  • If new .mjs files are introduced, the PR documents structural-pre-flight evidence for the chosen path.

Out of Scope

  • Drag-to-dock preview visuals.
  • Split/tab container implementation.
  • Save/restore persistence implementation.
  • Cross-window choreography; #13025 and #13028 own that lane.
  • Partner-specific layout presets.

Avoided Traps

  • Porting an external docking library's object model: rejected. Neo needs a model that composes with its worker, layout, and blueprint substrate.
  • Bundling the first model contract with the UI: rejected. It would make one PR decide too many boundaries at once.
  • Treating #13030 as implementation-ready: rejected by prior intake evidence; this leaf is the safe first decomposition step.

Related

Parent: Epic #13012. Scoping source: #13030. Adjacent choreography: #13025, #13028. Release classification: post-release product-line leaf; attached to Agent Harness Project 13, not the v13 release board.

Origin Session ID: 019ebe4d-0687-7dd2-8e37-c48ac8e057ad Retrieval Hint: "dock-zone model contract harness docking split tabbed slots blueprint runtime preview state"