Resolves #14968
Adds the operation-correlated tab-insert motion seam that the broad selector approach could not provide. The dock refresh owner now carries one successful addTab descriptor into exactly one projection; DockLayoutAdapter decorates only the matching recreated header; and DockTabEnterButton brackets the real CSS animation with the shared counted DockMotionSignal. Initial construction, restore, reorder, unrelated refreshes, later projections, and invalid correlation remain motion-free.
Evidence: L2 (23/23 exact dependency-integrated units on af20c7cf53; syntax and theme build green) → L3 required (exact post-rebase DockMotionNL.spec.mjs rerun for the real insertion/signal journey). Residual: AC6 [#14968].
Related: #13158
Deltas
- The transient carrier lives on the workspace refresh owner and is cleared after the consuming projection; no operation, preview, dock document, saved layout, or perspective schema gains animation state.
- The adapter uses a dedicated header-button subclass only for the exact correlated
itemId; there is no global tab-header selector and no second timing source.
- The producer settles
DockMotionSignal on normal end, zero duration, cancellation/replacement, rapid successive inserts, and destroy. Duration/easing come only from --dock-transition-*.
- The branch was rebased after PR #15067 merged, so the formerly blocked adapter discovery path now executes locally.
- The draft keeps AC6 visible: the browser suite passed 7/7 on patch-identical pre-rebase head
718c7bd828, but the post-rebase Chrome run could not be launched because the author harness's out-of-sandbox execution quota was exhausted. Patch-id is unchanged (adee8f5ab44d69eeedc0e711d45f52441cce44e7); this is useful evidence, not a substitute for the exact-head rerun.
Test Evidence
NEO_CHROMA_PORT_TEST=18201 NEO_TEST_SKIP_CI=true npx playwright test test/playwright/unit/dashboard/DockLayoutAdapter.spec.mjs test/playwright/unit/dashboard/DockTabEnterButton.spec.mjs -c test/playwright/playwright.config.unit.mjs --workers=1 → 23/23 passed on af20c7cf53.
DockMotionNL.spec.mjs → 7/7 passed on pre-rebase head 718c7bd828 after #15070; old/new commits have the same stable patch-id.
node --check passed for MainContainer.mjs, DockLayoutAdapter.mjs, and DockTabEnterButton.mjs.
node buildScripts/build/themes.mjs -f -n -e dev completed successfully; Container.scss compiles into the development themes.
git diff --check origin/dev..HEAD → clean.
Post-Merge Validation
Authored by Euclid (GPT-5.6 Sol, Codex Desktop). Session 837ad74b-c2d2-413d-9aab-b7165a93a82a.
Resolves #14968
Adds the operation-correlated tab-insert motion seam that the broad selector approach could not provide. The dock refresh owner now carries one successful
addTabdescriptor into exactly one projection;DockLayoutAdapterdecorates only the matching recreated header; andDockTabEnterButtonbrackets the real CSS animation with the shared countedDockMotionSignal. Initial construction, restore, reorder, unrelated refreshes, later projections, and invalid correlation remain motion-free.Evidence: L2 (23/23 exact dependency-integrated units on
af20c7cf53; syntax and theme build green) → L3 required (exact post-rebaseDockMotionNL.spec.mjsrerun for the real insertion/signal journey). Residual: AC6 [#14968].Related: #13158
Deltas
itemId; there is no global tab-header selector and no second timing source.DockMotionSignalon normal end, zero duration, cancellation/replacement, rapid successive inserts, and destroy. Duration/easing come only from--dock-transition-*.718c7bd828, but the post-rebase Chrome run could not be launched because the author harness's out-of-sandbox execution quota was exhausted. Patch-id is unchanged (adee8f5ab44d69eeedc0e711d45f52441cce44e7); this is useful evidence, not a substitute for the exact-head rerun.Test Evidence
NEO_CHROMA_PORT_TEST=18201 NEO_TEST_SKIP_CI=true npx playwright test test/playwright/unit/dashboard/DockLayoutAdapter.spec.mjs test/playwright/unit/dashboard/DockTabEnterButton.spec.mjs -c test/playwright/playwright.config.unit.mjs --workers=1→ 23/23 passed onaf20c7cf53.DockMotionNL.spec.mjs→ 7/7 passed on pre-rebase head718c7bd828after #15070; old/new commits have the same stable patch-id.node --checkpassed forMainContainer.mjs,DockLayoutAdapter.mjs, andDockTabEnterButton.mjs.node buildScripts/build/themes.mjs -f -n -e devcompleted successfully;Container.scsscompiles into the development themes.git diff --check origin/dev..HEAD→ clean.Post-Merge Validation
Authored by Euclid (GPT-5.6 Sol, Codex Desktop). Session 837ad74b-c2d2-413d-9aab-b7165a93a82a.