acdream/tests/AcDream.App.Tests/Physics
Erik c94a1a407e feat(render): Campaign OVERHAUL S2 chunk 5 + closeout — registry is the only render membership owner
Chunk 5 (consumer cutover): WalkProductionWorldData's per-cell views are
borrowed from ShadowObjectRegistry.GetRetailPartEntriesInCell and resolved
through RenderSceneQuery.TryGetByLocalEntityId; every render-side sweep,
bucket, parent-cell and root-position fallback is deleted (AD-116 for the
one-frame registry→scene window, counted in UnregisteredRenderMembershipCount).
A live entity with visual parts but no collision geometry registers
render-only (LiveEntityCollisionBuilder computes the part array before the
empty-shapes gate).

Closeout fixes found while landing it:
- RefloodOwnerForLandblock forwards the retained part array — a reflood is
  retail's recalc_cross_cells over the SAME CPartArray; without it every owner
  touched by a landblock replacement commit lost its render membership.
- Non-colliding DAT statics register render-only from BOTH publishers
  (LandblockPhysicsPublisher.PublishStaticEntity,
  LandblockPhysicsContentBuilder.RegisterRenderOnlyStatic). The G2 self-gate
  pixel diff caught them vanishing (Facility Hub wall panels): retail floods
  every object regardless of collision (CEnvCell::init_static_objects
  0x0052c350, add_shadows_to_cells 0x00514ae0).
- S2 dual review fix batch (arch + retail lens, lead-verified):
  Suspend clears the retail product (remove_shadows_from_cells 0x00511230 is
  one transaction); AttachChild/DetachChild advance the mutation revision so
  a prepared SetPosition cannot clobber a child's rows; an attached child
  never floods on its own re-registration; RemoveLandblock and the non-rooted
  RetireOwnerFromLandblock prune retail rows (render-only statics end with
  their landblock); a render-only owner's no-cell-array commit republishes at
  its destination cell (AD-117); an empty non-null part array is treated as
  null; per-move closures/LINQ replaced by index loops; EnvCell shells stay
  out of the scene's LocalEntityId index (payload-less records); the index
  predicate compares the id; the dead per-cell scene indices are deleted.

Register: AD-116 (chunk 5), AD-117 (four residual Contract A/B readings).
Evidence: s2-membership-ownership-map.md §8 (chunk 5) and §9 (closeout).

Gates (Release): Core 4,984/4,984; Content 214/214; Runtime 1,884/1,884;
App hermetic lane 6,760/6,760; App InstalledDat lane 217 pass / 1 skip /
2 pre-existing #383 layout-fixture failures; App Windows lane 1/1.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 01:01:47 +02:00
..
C3cF1ProductionWiringTests.cs test: replace input and physics source freezes 2026-08-18 15:31:57 +02:00
DeferredLiveEntityMotionRuntimeBindingsTests.cs fix(physics): TS-46 - seed the sweep from the Setup's own sphere list 2026-07-30 09:05:44 +02:00
InboundInterpretedMotionFactoryTests.cs fix(combat): apply server attack motions locally 2026-07-11 13:34:55 +02:00
Issue270ProductionWiringTests.cs test: replace input and physics source freezes 2026-08-18 15:31:57 +02:00
LiveCollisionAssetPublisherTests.cs feat(streaming): shadow-publish flat collision assets 2026-07-25 16:38:54 +02:00
LiveEntityCollisionBuilderTests.cs feat(render): Campaign OVERHAUL S2 chunk 5 + closeout — registry is the only render membership owner 2026-09-03 01:01:47 +02:00
LiveEntityInboundAuthorityGateTests.cs feat(runtime): C3c - production placement cutover: both hosts on the residence conductors (routes 1+8) 2026-08-02 18:10:33 +02:00
LiveEntityMotionRuntimeControllerTests.cs fix(interaction): restore distant use after runtime cutover 2026-08-03 09:36:53 +02:00
LiveEntityNetworkBranchRoutingTests.cs test: replace input and physics source freezes 2026-08-18 15:31:57 +02:00
LiveEntityNetworkOnPositionCollapseMatrixTests.cs feat(physics): S2 chunk 4 - movement publishes from the transition's cells; children inherit at registration 2026-09-02 23:37:34 +02:00
LiveEntityNetworkRemoteFarSnapIntegrationTests.cs feat(physics): C4 route 4b-3 — remote teleport + cell-less through the canonical placement 2026-08-04 16:00:10 +02:00
LiveEntityNetworkRemoteSteadyStateIntegrationTests.cs feat(physics): C4 route 4b-3 — remote teleport + cell-less through the canonical placement 2026-08-04 16:00:10 +02:00
LiveEntityNetworkRemoteTeleportPresentationTests.cs feat(physics): S2 chunk 4 - movement publishes from the transition's cells; children inherit at registration 2026-09-02 23:37:34 +02:00
LiveEntityOrdinaryPhysicsUpdaterTests.cs fix: complete retail parity stability pass 2026-08-28 20:01:39 +02:00
LiveEntityPvpBitfieldSyncTests.cs fix(physics): #297 — keep the PWD bitfield live so PK status reaches the client 2026-08-03 20:59:01 +02:00
PlayerMovementHiddenTests.cs refactor(physics): delete legacy PhysicsEngine.Resolve/ResolvePlacement/HasCellSurface (C5a, AP-1/AD-1) 2026-08-05 14:11:31 +02:00
ProjectileControllerTests.cs fix(physics): C4 route 5 — projectile authoritative placement (#276 partial) 2026-08-04 21:03:41 +02:00
PvpBitfieldSurvivesAppearanceRebuildTests.cs refactor(physics): hoist the live-entity collision builder to Runtime (#330 groundwork) 2026-08-07 01:49:13 +02:00
RemoteInboundMotionDispatcherTests.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
RemotePhysicsUpdaterTests.cs fix(physics): close the AP-156 fix review — real containment oracle, type-level invariant, AP-158 2026-08-06 16:44:48 +02:00
RemotePlacementDriveFixture.cs fix(physics): route remote Positions on contact, not walkability (AP-140) 2026-08-04 11:53:48 +02:00
RemoteTeleportHookTests.cs feat(vfx): port retail hidden and teleport presentation 2026-07-14 14:59:48 +02:00
RetailCellArrayComparatorInstalledDatTests.cs feat(render): S2 chunk 2 - render statics borrow the registry's retail cell array 2026-09-02 22:31:46 +02:00