Context
Split-leaf of #16499 (classification r1-r3 live there with full receipts). Measured at head ea5b3058ff, film pace: when a vessel returns its stack home, the main window's entire workspace body un-renders for ≥1 frame (~40ms; full-res frame + YAVG receipts on #16499 r1) and the landing region then composites a ghosted re-stage before settling (≤400ms). Every pane blanks — including the ~17 that did not move.
The Problem
The vessel→main transfer projection takes the reconciler's staged FULL path (hidden new shell built, chrome moved, shell swapped) although a stack-return adoption is topologically stable: the structural node set is identical and exactly one tabs node's item set grows. The swap's reveal is the on-camera whole-workspace blank — the film-visible defect class of #16500, second trigger.
The Architectural Reality
DockProjectionReconciler.reconcileProjection owns a strict stable-topology fast path; with reconcileItems: true it explicitly admits tab item/active deltas on the proven-identical shell and materializes arriving pane/button pairs through the same reconcileTabChrome the full path uses (DockProjectionReconciler.mjs:112-213).
refreshDockWorkspace keys that admission to operation === 'detachItem' only (Workspace.mjs:2126 pre-fix), and the return-transfer call site passes no operation at all — so adoption is forced through the full path.
- The validator is its own safety net: any transfer that genuinely mutates structure fails the identity checks and falls back to the staged full path unchanged.
The Fix
Thread operation: descriptor?.operation through the return-transfer's refreshDockWorkspace call and widen the retainTopology admission to 'transferNode'. Witness set: (1) unit — the reconciler's same-topology item-ARRIVAL case on the retained shell (sibling of the existing detachment case); (2) e2e — shell-identity discriminator across the scene-4 return (worker-side pane identity survives BOTH paths; only the shell instance flips) red-proven at the pre-fix head, plus a pane-DOM continuity guard (native reparenting).
Acceptance Criteria
Out of Scope
- #16499's S-3 family (emptied-vessel residue + surviving drag affordance) — stays on the parent.
- The outbound main→vessel transfer's identical admission (same one-line class, different witness scene) — follow-up decision on the parent after this lands.
- The ambient suite-load gesture instability — #16620.
Related
#16499 (parent classification + receipts), #16500 (presentation family), #16620 (ambient race found during this lane's suite table), closed #16497.
Origin Session ID: 84d669f4-2271-4d6a-8878-45e8754be6b3
Retrieval Hint: query_raw_memories("stack-return adoption stable topology fast path shell identity witness")
Context
Split-leaf of #16499 (classification r1-r3 live there with full receipts). Measured at head
ea5b3058ff, film pace: when a vessel returns its stack home, the main window's entire workspace body un-renders for ≥1 frame (~40ms; full-res frame + YAVG receipts on #16499 r1) and the landing region then composites a ghosted re-stage before settling (≤400ms). Every pane blanks — including the ~17 that did not move.The Problem
The vessel→main transfer projection takes the reconciler's staged FULL path (hidden new shell built, chrome moved, shell swapped) although a stack-return adoption is topologically stable: the structural node set is identical and exactly one tabs node's item set grows. The swap's reveal is the on-camera whole-workspace blank — the film-visible defect class of
#16500, second trigger.The Architectural Reality
DockProjectionReconciler.reconcileProjectionowns a strict stable-topology fast path; withreconcileItems: trueit explicitly admits tab item/active deltas on the proven-identical shell and materializes arriving pane/button pairs through the samereconcileTabChromethe full path uses (DockProjectionReconciler.mjs:112-213).refreshDockWorkspacekeys that admission tooperation === 'detachItem'only (Workspace.mjs:2126 pre-fix), and the return-transfer call site passes no operation at all — so adoption is forced through the full path.The Fix
Thread
operation: descriptor?.operationthrough the return-transfer'srefreshDockWorkspacecall and widen theretainTopologyadmission to'transferNode'. Witness set: (1) unit — the reconciler's same-topology item-ARRIVAL case on the retained shell (sibling of the existing detachment case); (2) e2e — shell-identity discriminator across the scene-4 return (worker-side pane identity survives BOTH paths; only the shell instance flips) red-proven at the pre-fix head, plus a pane-DOM continuity guard (native reparenting).Acceptance Criteria
Out of Scope
Related
#16499 (parent classification + receipts), #16500 (presentation family), #16620 (ambient race found during this lane's suite table), closed #16497.
Origin Session ID: 84d669f4-2271-4d6a-8878-45e8754be6b3
Retrieval Hint:
query_raw_memories("stack-return adoption stable topology fast path shell identity witness")