Context
Tree line C1 (#13158 map) — the T-C tranche gate and a fable-tier leaf: implementing ADR 0029 §2.3's CrossWindowDragTarget contract (formalized verbatim in the spec from the #13370 Option-4 convergence): how a window RECEIVES a drag that originated in a sibling window on the same App-Worker heap.
The Problem
Cross-window drag is the only-Neo capability (single heap, multiple Chromium windows) and the highest-risk interaction surface: the receiving window must render previews for an item it doesn't host yet, negotiate drop zones through the SAME preview→operation path as local drags (no parallel drag system — the inherited hard guardrail), and hand off atomically.
The Architectural Reality
- §2.3's contract: the target registers per-window; drag state is worker-owned shared truth (
get_drag_state's substrate); previews are per-window projections; the drop commits ONE transferItem-class operation (C3's leaf) through the executor.
- Boundary: OS-window creation/reintegration stays #13028's (consumed, not owned).
- Placement:
src/dashboard/ beside the landed drag preview machinery (sibling fast-path).
The Fix
One PR: the target implementation (registration, remote-drag preview binding, drop negotiation → operation descriptor emission) + unit specs (registration lifecycle; preview binds worker drag state; drop emits the exact §2.3 descriptor shape; cancel path clean).
Acceptance Criteria
Out of Scope
transferItem op wiring (C3) · edge affordances (C4) · window spawning (#13028) · demo scene (G3).
Related
Parent #13158 (line C1) · authority ADR 0029 §2.3 · consumes worker drag-state substrate · consumed by C2-C4, #14590. Sweeps: 03:47Z clean.
Origin Session ID: fa2a6fd5-7488-4af6-a0d2-3855c86003e4
Retrieval Hint: "CrossWindowDragTarget receiving window contract preview operation"
Context
Tree line C1 (#13158 map) — the T-C tranche gate and a fable-tier leaf: implementing ADR 0029 §2.3's
CrossWindowDragTargetcontract (formalized verbatim in the spec from the #13370 Option-4 convergence): how a window RECEIVES a drag that originated in a sibling window on the same App-Worker heap.The Problem
Cross-window drag is the only-Neo capability (single heap, multiple Chromium windows) and the highest-risk interaction surface: the receiving window must render previews for an item it doesn't host yet, negotiate drop zones through the SAME preview→operation path as local drags (no parallel drag system — the inherited hard guardrail), and hand off atomically.
The Architectural Reality
get_drag_state's substrate); previews are per-window projections; the drop commits ONEtransferItem-class operation (C3's leaf) through the executor.src/dashboard/beside the landed drag preview machinery (sibling fast-path).The Fix
One PR: the target implementation (registration, remote-drag preview binding, drop negotiation → operation descriptor emission) + unit specs (registration lifecycle; preview binds worker drag state; drop emits the exact §2.3 descriptor shape; cancel path clean).
Acceptance Criteria
Out of Scope
transferItemop wiring (C3) · edge affordances (C4) · window spawning (#13028) · demo scene (G3).Related
Parent #13158 (line C1) · authority ADR 0029 §2.3 · consumes worker drag-state substrate · consumed by C2-C4, #14590. Sweeps: 03:47Z clean. Origin Session ID: fa2a6fd5-7488-4af6-a0d2-3855c86003e4 Retrieval Hint: "CrossWindowDragTarget receiving window contract preview operation"