test(vfx): model the post-f24532ad effect cell and canonical body frame
f24532adchanged two presentation contracts that these fixtures still expressed in their pre-change shape. Both failures date exactly to that commit; they are independent of the world-frame family fixed in6dcb94ac. LiveEntityLightControllerTests.Refresh_FollowsCurrentTopLevelRootAndCell moved the entity by writing ParentCellId alone.f24532adnow populates EffectCellId at materialization and keeps it synchronized on canonical rebuckets (LiveEntityRuntime.RebucketLiveEntity:845-856), because retail's CPhysicsObj::set_cell changes the one CObjCell that ShouldDrawParticles reads. EntityEffectPoseRegistry.UpdateRoot:163 resolves EffectCellId ?? ParentCellId, so a production cell move writes both together and the old single-field move left effects and lights on the stale materialization cell. LiveEntityAnimationSchedulerTests.RetainedProjectileWithRemote_WhenMissileClears_TransfersMovementToRemoteOnce seeded its shared remote body by assigning Position directly. Projectile classification now validates and adopts the canonical body's own cell frame (ProjectileController:184-190 - body.CellPosition.ObjCellId / .Frame.Origin) rather than deriving it from the sidecar's FullCellId and the streaming center, since a residence-managed Create legitimately still reports FullCellId 0. A Runtime-committed body always carries its (cell, local) frame, so the fixture now seeds it through the same SnapToCell placement API; leaving it cell-less was correctly refused. Both fixtures keep their original assertions - only the modelled world state moved to match what production now commits. Complete Release solution: 10,831 passed / 4 skipped / 0 failed (App 4,048/3, Bake 15, Cli 4, Content 124, Core.Net 762, Core 4,247/1, Headless 79, Runtime 1,009, UI 543). Closes #281. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
6dcb94ac1b
commit
98e9f9e8c6
3 changed files with 51 additions and 1 deletions
|
|
@ -80,6 +80,36 @@ What does NOT go here:
|
|||
1` (a 3x3 landblock neighborhood), while the normal configured view extends
|
||||
substantially farther; this permits the world viewport to open before its
|
||||
visible static destination is complete.
|
||||
- **#281 — DONE (2026-08-03) — the stabilization commits left the automated
|
||||
suites red, and the world-frame contract they introduced had no coverage.**
|
||||
The 2026-08-03 handoff recorded "six selected fixture failures". A measured
|
||||
baseline found **43**: the App suite was fully green at `01f4791e` and
|
||||
`670f307c` broke 28 tests in one commit (`f24532ad` added 2 more), while the
|
||||
Runtime suite lost 13 — 12 of them in `RuntimeRemoteFirstEntryStateTests`,
|
||||
the exact conductor `670f307c` gated. Both commits were gated on focused
|
||||
runs only. Root cause A (`670f307c`): remote first-entry placement now
|
||||
resolves its landblock-local Create origin through Runtime's world frame
|
||||
(`RuntimeSetPositionState.PrepareMover`) and returns
|
||||
`RetrySetupUnavailable` until that frame exists, and ONLY the accepted
|
||||
local-player Create publishes it
|
||||
(`RuntimeEntityObjectLifetime.RegisterEntityCore` ->
|
||||
`RuntimePhysicsState.ObserveLocalWorldFrame`). Fixtures that drove remote
|
||||
conductors in a player-less world — a state production never occupies —
|
||||
parked forever, so residences never retired. The production gate is correct
|
||||
and matches App's own `LiveWorldOriginState` (initialized from the player
|
||||
spawn; `Recenter` called only from
|
||||
`StreamingOriginRecenterCoordinator.Advance` at a teleport boundary), so the
|
||||
fixtures were stale, not the assertions: every one was repaired by supplying
|
||||
the missing precondition without altering a single expected value. Root
|
||||
cause B (`f24532ad`): `EffectCellId` is now populated at materialization and
|
||||
wins over `ParentCellId` in `EntityEffectPoseRegistry.UpdateRoot`, and
|
||||
projectile classification reads the canonical body's own
|
||||
`CellPosition.ObjCellId` instead of deriving it from the sidecar. Two
|
||||
rendering fixtures still modelled the pre-change shape. New
|
||||
`RuntimeWorldFrameTests` pins the previously untested contract, including
|
||||
the load-bearing rule that ordinary movement across a landblock boundary
|
||||
must NOT rebase the frame while an accepted teleport must. Complete Release
|
||||
solution: 10,831 passed / 4 skipped / 0 failed.
|
||||
|
||||
**Retail oracle:** `CellManager::PreFetchCells @ 0x00455820` sets
|
||||
`blocking_for_cells` until `LScape::PreFetchCells @ 0x00505660` has walked
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue