fix(world): #344 — a mid-teleport world-frame disagreement defers the projection instead of crashing
Some checks are pending
Headless portability / portable-headless (ubuntu-latest) (push) Waiting to run
Headless portability / portable-headless (windows-latest) (push) Waiting to run
Headless portability / linux-graphical (push) Waiting to run
Headless portability / linux-vulkan (push) Waiting to run
Some checks are pending
Headless portability / portable-headless (ubuntu-latest) (push) Waiting to run
Headless portability / portable-headless (windows-latest) (push) Waiting to run
Headless portability / linux-graphical (push) Waiting to run
Headless portability / linux-vulkan (push) Waiting to run
During a portal transit the two world-frame owners legitimately rebase on different edges (Runtime at TeleportAdvanced, streaming only after old-window retirement), and a spawn projection landing in that window hit the #283 invariant as an unhandled render-path throw — the crash the user hit entering a dungeon. The guard's check is unchanged; only the disagreement RESPONSE is discriminated on the canonical transit authority (RuntimeWorldTransitState.IsTeleportActive, the same field the App layer already reads for portal-in-flight): in transit -> the materializer's existing "not yet" return, parking the projection on its established retry rides (OnLandblockLoaded's re-attempt loop, whose ordering guarantees agreement on retry because the recenter coordinator adopts the new origin BEFORE unblocking new landblock loads — verified at source; plus OnPosition recovery and OnAppearance). Outside transit -> still throws: genuine corruption stays loud. The implementer explicitly ruled out riding the Runtime placement pump, which would have acknowledged-and-discarded the completion receipt and silently dropped the entity forever. Sabotage: removing the discriminator reddened the pre-existing #283 throw tests as well as the new not-in-transit test — the sabotage defeats the original contract, not merely the new coverage. Four new tests cover defer, defer-then-agree-then-succeed (projected exactly once), throw-outside-transit, and the agreeing pass-through. Clean-room suite: 11,261 passed / 6 skipped / 0 failed. #346 filed for a sixth, distinct load-sensitive allocation flake observed during the runs. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
3f2b2dc3ed
commit
52bdf4df71
5 changed files with 205 additions and 12 deletions
|
|
@ -201,9 +201,32 @@ reasoned-from-source diagnoses.
|
|||
|
||||
---
|
||||
|
||||
## #346 — `PortalProjectionTests.ProjectToClipLease_ReusesPooledWorkWithoutResultArrays` is a SIXTH load-sensitive flake
|
||||
|
||||
**Status:** OPEN. LOW. Allocation-count assertion, passed in isolation and on
|
||||
two subsequent full runs. Same FILE as #302 but a DIFFERENT test — filed
|
||||
separately per the never-conflate rule.
|
||||
**Filed:** 2026-08-08, observed during #344's suite runs.
|
||||
|
||||
---
|
||||
|
||||
## #344 — Mid-teleport crash: world-frame owners disagree during a long portal into a dungeon
|
||||
|
||||
**Status:** OPEN — HIGH, user-hit during live play 2026-08-07 evening.
|
||||
**Status:** FIXED 2026-08-08 — defer-don't-crash, discriminated on the
|
||||
canonical transit authority. `TryEnsureAgreesWithRuntimeFrame` defers (the
|
||||
materializer's existing "not yet" outcome) when
|
||||
`RuntimeWorldTransitState.IsTeleportActive`, and STILL THROWS otherwise —
|
||||
the #283 invariant stays loud for genuine corruption, and the sabotage run
|
||||
proved the discriminator's removal reddens the original #283 tests, not
|
||||
just the new ones. The retry ride is `OnLandblockLoaded`'s re-attempt loop,
|
||||
whose ordering GUARANTEES agreement on retry: the recenter coordinator
|
||||
calls `Recenter` before `TryCommitOriginRecenter` unblocks new landblock
|
||||
loads (verified at source at landing). Entity projected exactly once,
|
||||
never dropped. Clean-room suite 11,261/6/0.
|
||||
|
||||
**Original filing:**
|
||||
|
||||
**Status (original):** OPEN — HIGH, user-hit during live play 2026-08-07 evening.
|
||||
**Filed:** 2026-08-07 (`339-fix-gate.log`, full stack).
|
||||
|
||||
During a long-distance portal into dungeon landblock `0x5A48`, entity
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue