Context
Successor leaf from the #14779↔#14929 signed motion-contract disposition: #14779 / PR #14947 delivered the shared --dock-transition-* token set, token-layer reduced-motion collapse, and counted Neo.dashboard.DockMotionSignal. This leaf delivers the first correct non-FLIP Body-side consumer: the auto-hide reveal overlay. Structural re-layout remains with #14929 / PR #14944's FLIP consumer; operation-correlated tab-header motion is the explicit successor #14968.
The Problem
The auto-hide overlay appears and disappears at the projection tier, but its motion must never leak into dock documents or rely on a second timing source. Its signal lifecycle must remain truthful when CSS does not emit animationend (early dismissal, item-only hide/re-show, rapid re-entry, destroy) and when the event does arrive through Neo's serialized local DOM-event bridge.
Two original rows were falsified during implementation:
- committed splitter resize recreates the projected flex nodes, so a transition on the replacements has no prior DOM identity; the merged FLIP consumer owns that structural jump;
- a broad tab-header selector animates initial construction and every coarse refresh, while the FLIP signal can settle before a no-geometry refresh's CSS duration. #14968 owns the operation-specific
addTab correlation instead.
The Fix
One presentation-tier PR:
- Auto-hide reveal slide — edge-specific keyframes source duration/easing only from
--dock-transition-*.
- Balanced observability — one idempotent reveal producer opens/closes
DockMotionSignal across computed hidden↔visible changes, cancellation, destroy, and serialized root-target animation completion. The existing wire omits animationName; config-aware target identity distinguishes the overlay's event from bubbled hosted-pane events.
- Arrival settle substrate — a token-driven class/keyframe exists for #14769 to toggle at the real cross-window arrival seam.
- Token cleanup — the pre-contract reveal/dismiss duration variables are removed.
Presentation remains JSON-first: zero motion state enters documents, previews, saved perspectives, or persistence.
Contract Ledger
| Target Surface |
Source of Authority |
Behavior |
Failure Posture |
Evidence |
| reveal CSS classes |
--dock-transition-* token contract (#14779) |
edge-specific reveal animation uses only shared duration/easing |
missing/zero token collapses to the instant path; no local timing fallback |
live Web Animations sampling + SCSS audit |
| reveal motion signal |
DockMotionSignal counted instance ownership |
hidden→visible enters once; normal end, cancellation, item removal, or destroy leaves once |
idempotent finish and fail-safe prevent wedges |
focused lifecycle matrix |
local animationend wire |
DomEvents config-aware target.id |
only the overlay root settles its producer |
bubbled children and raw DOM-id collisions are ignored |
exact serialized-wire regressions |
| arrival-settle class |
#14769 future arrival seam |
token-driven presentation substrate only |
inert until the owning arrival operation toggles it |
class/keyframe inspection + live injected-scope sample |
Acceptance Criteria
Out of Scope
Structural FLIP motion (#14929 / PR #14944) · operation-specific tab-header morphing (#14968) · cross-window arrival trigger (#14769) · native dock-surface token scope (#14969 / PR #14971) · downstream hidden-cls delta investigation (#14970) · future Neural-Link motion assertions (#14591 successor) · affordance visual-language polish (#14930).
Scope Reconciliation
- Delivered here: per-edge reveal slide, exact counted lifecycle ownership, token cleanup, arrival-settle substrate, and JSON-first isolation.
- Structural splitter resize: satisfied by #14929 / merged PR #14944; live pointer drag remains direct and unanimated.
- Tab insert: broad selector removed after falsification; #14968 owns operation-correlated class application and its independent counted lifecycle.
- Arrival: #14769 owns the first product toggle because the cross-window arrival event does not exist before that leaf.
Related
Parent #13158 · substrate #14779 / PR #14947 · structural consumer #14929 / PR #14944 · tab successor #14968 · arrival trigger #14769 · token-scope successor #14969 / PR #14971 · delta investigation #14970 · visual authority #14930 · future assertions #14591.
Origin Session ID: ef6b9a4a-54ec-4afb-8438-f89a3ee46ad2
Retrieval Hint: "dock reveal choreography balanced motion signal serialized animation event operation-correlated tab successor"
Context
Successor leaf from the #14779↔#14929 signed motion-contract disposition: #14779 / PR #14947 delivered the shared
--dock-transition-*token set, token-layer reduced-motion collapse, and countedNeo.dashboard.DockMotionSignal. This leaf delivers the first correct non-FLIP Body-side consumer: the auto-hide reveal overlay. Structural re-layout remains with #14929 / PR #14944's FLIP consumer; operation-correlated tab-header motion is the explicit successor #14968.The Problem
The auto-hide overlay appears and disappears at the projection tier, but its motion must never leak into dock documents or rely on a second timing source. Its signal lifecycle must remain truthful when CSS does not emit
animationend(early dismissal, item-only hide/re-show, rapid re-entry, destroy) and when the event does arrive through Neo's serialized local DOM-event bridge.Two original rows were falsified during implementation:
addTabcorrelation instead.The Fix
One presentation-tier PR:
--dock-transition-*.DockMotionSignalacross computed hidden↔visible changes, cancellation, destroy, and serialized root-target animation completion. The existing wire omitsanimationName; config-aware target identity distinguishes the overlay's event from bubbled hosted-pane events.Presentation remains JSON-first: zero motion state enters documents, previews, saved perspectives, or persistence.
Contract Ledger
--dock-transition-*token contract (#14779)DockMotionSignalcounted instance ownershipanimationendwireDomEventsconfig-awaretarget.idAcceptance Criteria
--dock-transition-*; reduced motion collapses through the token layer.DockMotionSignallifecycle for normal serialized completion, early dismissal, item-only visibility shifts, rapid re-entry, and destroy.examples/dashboard/dockpassed at L3 under the documented token-scope injection; #14969 owns mounting that already-verified scope natively on both dock surfaces.Out of Scope
Structural FLIP motion (#14929 / PR #14944) · operation-specific tab-header morphing (#14968) · cross-window arrival trigger (#14769) · native dock-surface token scope (#14969 / PR #14971) · downstream hidden-cls delta investigation (#14970) · future Neural-Link motion assertions (#14591 successor) · affordance visual-language polish (#14930).
Scope Reconciliation
Related
Parent #13158 · substrate #14779 / PR #14947 · structural consumer #14929 / PR #14944 · tab successor #14968 · arrival trigger #14769 · token-scope successor #14969 / PR #14971 · delta investigation #14970 · visual authority #14930 · future assertions #14591.
Origin Session ID: ef6b9a4a-54ec-4afb-8438-f89a3ee46ad2
Retrieval Hint: "dock reveal choreography balanced motion signal serialized animation event operation-correlated tab successor"