Context
Operator direction (2026-06-13, reviewing PR #13116): "dock zones sounds more like a neo layout topic, and should be available to other apps => src folder." This is the out-of-scope follow-up to the docking-line PRs, and it resolves the placement-coherence question the line surfaced.
Release classification: boardless — harness/dashboard line refactor, not a v13 release blocker.
The Problem
The dock-zone subsystem currently lives split across hemispheres:
- model:
AgentOS.dock.DockZoneModel in apps/agentos/dock/ (PR #13116, #13115)
- adapter:
Neo.dashboard.DockLayoutAdapter in src/dashboard/ (PR #13107, #13105)
Root cause: learn/agentos/HarnessDockZoneModel.md is internally inconsistent on ownership — the decision-tree (line ~35) says "place the adapter in the harness app layer", while the Split/Tab Adapter Boundary (line ~289) says "ownership starts in the Agent Harness / dashboard layer." The two PRs each followed a different line, producing the split. @neo-opus-vega's #13107 RA1 flagged the adapter placement specifically.
The Architectural Reality
The dock-zone model + adapter are reusable docking primitives, not harness-specific UI — the contract's own Demand Validation names the Portal learning workspace as the candidate second consumer; the harness is merely the first. They are pure-JSON / config-projection logic with no apps/agentos coupling. So the operator's call — a Neo layout topic in src/, available to other apps — is the correct durable home, and it makes the harness app a consumer of the subsystem rather than its owner.
The Fix
- Move
AgentOS.dock.DockZoneModel (apps/agentos/dock/DockZoneModel.mjs) into src/, renamed to the Neo.* namespace (Neo.dashboard.DockZoneModel to co-locate with the adapter, or Neo.dock.DockZoneModel if the subsystem warrants its own home).
- Confirm/co-locate
Neo.dashboard.DockLayoutAdapter in the same src/ home.
- Run
structural-pre-flight to choose the exact sub-location (src/dashboard/ to match the adapter, vs a new src/dock/); record the decision.
- Reconcile
learn/agentos/HarnessDockZoneModel.md's ownership inconsistency to bless the single src/ home (the line ~35 / ~289 contradiction).
- Relocate the unit spec (
test/playwright/unit/apps/agentos/dock/ → the matching test/playwright/unit/.../) and update imports / references.
Pure relocation + contract-doc reconciliation — no behavior change.
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Evidence |
DockZoneModel namespace/location |
operator direction + HarnessDockZoneModel.md (reconciled) |
Moves to src/ under Neo.*; behavior identical |
If a sub-location is contested, structural-pre-flight rationale recorded in the PR |
Relocated unit spec passes unchanged |
HarnessDockZoneModel.md ownership boundary |
this ticket |
Single src/ home; the ~35/~289 contradiction removed |
n/a |
Doc diff + the two PRs cite the reconciled boundary |
Decision Record impact
aligned-with ADR 0020; amends learn/agentos/HarnessDockZoneModel.md (reconciles the ownership-decision inconsistency to a single src/ home).
Acceptance Criteria
Out of Scope
- Any behavior change to the model/adapter (pure relocation + doc reconciliation).
- The drag-time producer and the live workspace integration (separate docking leaves).
Sequencing
Do after PR #13116 (model) and PR #13107 (adapter) merge — relocating before they land would churn open PRs. Until then this stays parked.
Related
Parent: #13030. Refs #13012, #13115, #13116, #13105, #13107. Source of authority: learn/agentos/HarnessDockZoneModel.md.
Origin Session ID: 4c598c8f-d8a7-4288-9420-e825a45d310e
Retrieval Hint: "relocate dock-zone subsystem src DockZoneModel DockLayoutAdapter reusable layout HarnessDockZoneModel ownership reconcile"
Context
Operator direction (2026-06-13, reviewing PR #13116): "dock zones sounds more like a neo layout topic, and should be available to other apps => src folder." This is the out-of-scope follow-up to the docking-line PRs, and it resolves the placement-coherence question the line surfaced.
Release classification:boardless — harness/dashboard line refactor, not a v13 release blocker.The Problem
The dock-zone subsystem currently lives split across hemispheres:
AgentOS.dock.DockZoneModelinapps/agentos/dock/(PR #13116, #13115)Neo.dashboard.DockLayoutAdapterinsrc/dashboard/(PR #13107, #13105)Root cause:
learn/agentos/HarnessDockZoneModel.mdis internally inconsistent on ownership — the decision-tree (line ~35) says "place the adapter in the harness app layer", while the Split/Tab Adapter Boundary (line ~289) says "ownership starts in the Agent Harness / dashboard layer." The two PRs each followed a different line, producing the split. @neo-opus-vega's #13107 RA1 flagged the adapter placement specifically.The Architectural Reality
The dock-zone model + adapter are reusable docking primitives, not harness-specific UI — the contract's own Demand Validation names the Portal learning workspace as the candidate second consumer; the harness is merely the first. They are pure-JSON / config-projection logic with no
apps/agentoscoupling. So the operator's call — a Neo layout topic insrc/, available to other apps — is the correct durable home, and it makes the harness app a consumer of the subsystem rather than its owner.The Fix
AgentOS.dock.DockZoneModel(apps/agentos/dock/DockZoneModel.mjs) intosrc/, renamed to theNeo.*namespace (Neo.dashboard.DockZoneModelto co-locate with the adapter, orNeo.dock.DockZoneModelif the subsystem warrants its own home).Neo.dashboard.DockLayoutAdapterin the samesrc/home.structural-pre-flightto choose the exact sub-location (src/dashboard/to match the adapter, vs a newsrc/dock/); record the decision.learn/agentos/HarnessDockZoneModel.md's ownership inconsistency to bless the singlesrc/home (the line ~35 / ~289 contradiction).test/playwright/unit/apps/agentos/dock/→ the matchingtest/playwright/unit/.../) and update imports / references.Pure relocation + contract-doc reconciliation — no behavior change.
Contract Ledger Matrix
DockZoneModelnamespace/locationHarnessDockZoneModel.md(reconciled)src/underNeo.*; behavior identicalHarnessDockZoneModel.mdownership boundarysrc/home; the ~35/~289 contradiction removedDecision Record impact
aligned-with ADR 0020; amends
learn/agentos/HarnessDockZoneModel.md(reconciles the ownership-decision inconsistency to a singlesrc/home).Acceptance Criteria
DockZoneModellives undersrc/in theNeo.*namespace, co-located withDockLayoutAdapter;structural-pre-flightdecision recorded.HarnessDockZoneModel.mdownership guidance is internally consistent and names the singlesrc/home.Out of Scope
Sequencing
Do after PR #13116 (model) and PR #13107 (adapter) merge — relocating before they land would churn open PRs. Until then this stays parked.
Related
Parent: #13030. Refs #13012, #13115, #13116, #13105, #13107. Source of authority:
learn/agentos/HarnessDockZoneModel.md.Origin Session ID: 4c598c8f-d8a7-4288-9420-e825a45d310e Retrieval Hint: "relocate dock-zone subsystem src DockZoneModel DockLayoutAdapter reusable layout HarnessDockZoneModel ownership reconcile"