LearnNewsExamplesServices
Frontmatter
id14769
titleDock workspace cross-window participation: source hooks + target wiring
stateClosed
labels
enhancementaiarchitecture
assigneesneo-fable
createdAtJul 4, 2026, 3:16 PM
updatedAtJul 11, 2026, 6:04 PM
githubUrlhttps://github.com/neomjs/neo/issues/14769
authorneo-fable-clio
commentsCount2
parentIssue13158
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[x] 14866 Dock dockPreview.v1 producer + unit test (compute half), [x] 14857 Dock cross-zone tab drag: functional tab-into model move (hit-test → moveItem), [x] 14670 CrossWindowDragTarget: the receiving-window contract implementation, [x] 14768 transferItem executor operation: atomic cross-document item transfer
blocking[]
closedAtJul 11, 2026, 3:42 AM

Dock workspace cross-window participation: source hooks + target wiring

Closed Backlog/active-chunk-4 enhancementaiarchitecture
neo-fable-clio
neo-fable-clio commented on Jul 4, 2026, 3:16 PM

Context

The integration half of ADR 0029 §2.3 (learn/agentos/decisions/0029-harness-docking-design.md): #14670 lands the receiving-window target as a thin owner-seam shell (PR #14757); #14768 lands the transferItem executor op. This leaf wires a REAL dock workspace into both. Filed to the delegatable bar: non-fable implementable — the target's JSDoc + the ADR tables carry the full contract.

The Problem

A CrossWindowDragTarget with no owner is inert. The dock adapter tier must (a) register a target per window with the five owner seams filled from the LANDED machinery, (b) implement the §2.3 source-side mandatory hooks (onRemoteDropOut, suspendWindowDrag, resumeWindowDrag) so a dock drag can leave its window, and (c) map a foreign-item drop descriptor into #14768's transferItem (the C3 boundary #14757 deliberately does not own).

The Architectural Reality

  • Owner tier: src/dashboard/DockLayoutAdapter.mjs (+ apps/agentos/view/DockPreview.mjs as the preview seam the owner passes in — the app layer keeps authoring visuals; src/dashboard/ still imports no app module: seams are passed BY the app-side workspace composition, matching #14757's layer note).
  • Seam mapping: hitTest → workspace rect containment; previewFor → the landed hover→dockPreview compute path; previewToOperationDockPreview.previewToOperation; commitOperation(op, draggedItem) → same-document ops commit as today; foreign draggedItem → compose transferItem (source/target workspace ids resolved here) → apply via #14768 → commit BOTH documents through the landed change-notification path.
  • Source-side hooks live with the drag-source embodiment (the #13025/#13028 lineage surfaces) — consumed, not reopened.
  • Binding invariants (review-checkable): no parallel drag system; DragCoordinator stays dock-blind; live component instances move, never re-instantiate (§2.6 reparent-never-recreate).

The Fix

One PR: adapter-tier target registration lifecycle (create on workspace mount, destroy on unmount) + the five seams bound to landed machinery + source-side hook implementations + the foreign-item→transferItem commit mapping with durable placement-hint updates (owningWorkspaceId, fallbackTarget) in the same commit per §2.3. Unit specs: seam binding (target fires the landed preview path), foreign-vs-local drop discrimination, hint updates ride the commit, registration lifecycle.

Acceptance Criteria

  • A dock workspace registers/unregisters its target with the coordinator across mount/unmount (spec).
  • Local drops commit same-document ops; foreign drops compose transferItem — one pipeline, discriminated at commit (spec).
  • Durable hints update in the same commit; no geometry persists (§2.1 table).
  • Source-side hooks satisfy the §2.3 mandatory table; coordinator remains dock-blind (review-checkable).
  • Cross-family review.

Out of Scope

The executor op itself (#14768) · edge affordances (own leaf) · demo scene (own leaf) · OS-window spawning (#13028 boundary).

Related

Parent #13158 · authority ADR 0029 §2.3/§2.6 · blocked_by #14670 + #14768 · consumed by the G3 demo leaf + #14590. Decision Record impact: aligned-with ADR 0029. Live latest-open sweep: latest 20 at 2026-07-04T13:15Z, no equivalent. A2A in-flight sweep: all-states 30 at 13:15Z, no competing claim. Origin Session ID: fa2a6fd5-7488-4af6-a0d2-3855c86003e4 Retrieval Hint: "dock workspace cross-window wiring source hooks transferItem commit"

tobiu referenced in commit 5231d4d - "feat(dashboard): dock workspace cross-window participation — owner seams + source hooks + transferItem wiring (#14769) (#15017) on Jul 11, 2026, 3:42 AM
tobiu closed this issue on Jul 11, 2026, 3:42 AM