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
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"
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/contentexact 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:
learn/benefits/MultiWindow.md,learn/benefits/JSONFirstUIs.md).vbox,hbox, and card/tab semantics (learn/guides/uibuildingblocks/Layouts.md).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
.mjsprimitive, the author must runstructural-pre-flightbefore choosing the destination.The contract should answer:
vbox/hbox/ card semantics without forking the drag pipeline?Contract Ledger Matrix
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
.mjsfiles are introduced, the PR documentsstructural-pre-flightevidence for the chosen path.Out of Scope
Avoided Traps
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"