fix(portal): synchronize destination presentation state

This commit is contained in:
Erik 2026-07-16 21:17:13 +02:00
parent 4b1bceefbb
commit e95f55f25b
42 changed files with 2815 additions and 288 deletions

View file

@ -332,6 +332,37 @@ the Lifestone recall boundary and a MagicPortal casting timeline. The user
confirmed `/ls` and spell-recall arrivals no longer replay their animation
tails; additional portal visual polish is explicitly deferred.
**2026-07-16 corrective portal gate (#218).** A side-by-side retail observer
check found three distinct state-publication defects after the arrival-tail
fix. Hidden now recomposes the post-`HandleEnterWorld` cyclic pose without
advancing animation time before its zero-time purple PES hooks run. Portal
space now waits for both completed static/EnvCell mesh uploads (including the
texture flush) and collision residency; dense
outdoor landblocks no longer abort at the obsolete 256-entry procedural
scenery id boundary (`0x8XXYYIII`, 4,096 entries). Finally, successful indoor
transitions commit the full resolved EnvCell/frame into the canonical outbound
Position, preventing stop-time snaps to the dungeon entrance on retail
observers. GPU-evicted meshes are re-staged from a bounded texture-complete CPU
cache instead of becoming false-ready or permanently absent. Portal readiness
also requires Near-tier ownership throughout the ring; stale worker completions
carry a hard-recenter generation and cannot overwrite a newer tier/window, and
a first Near completion demoted in flight is published as its equivalent
terrain-only Far payload rather than dropped. Upload completion is separate
from logical mesh ownership; landblock/static/EnvCell pins now balance across
unload and zero-owner late uploads remain evictable. A self-contained promotion
that supersedes a queued Far load publishes directly as a real Near landblock;
there is no provisional transaction waiting indefinitely for a base that the
streamer intentionally cancelled. Near-to-Far now has an explicit cross-layer
demotion transaction that preserves terrain while retiring EnvCells, indoor
physics/buildings, static collision, lights, translucency state, entities, and
render pins. Cross-landblock static shadow footprints are removed by logical
owner while dynamic registrations remain refloodable; duplicate Near
completions are publication-idempotent. Full unload shares the static-owner
teardown, and surviving adjacent owners remember withdrawn prefixes so their
cross-seam rows return when a landblock is promoted again.
Automated gates are green; the connected single-/two-client visual gate is
pending.
---
#### (historical M1.5 working notes below)