acdream/tests/AcDream.App.Tests/Physics
Erik 2eb39a0250 fix(physics): route remote Positions on contact, not walkability (AP-140)
The two gates that decide whether an accepted remote Position is interpolated
or hard-snapped read `Airborne`, which is `!Body.OnWalkable` — WALKABILITY.
Retail reads CONTACT: InterpolationManager::adjust_offset @0x00555D30 gates its
entire body on `transient_state & 1` @0x00555D52, so a retail body in contact
with a non-walkable face still interpolates.

The two predicates disagree in exactly one state — in contact, not on walkable
ground — which 204d0ae0 turned from unreachable into ordinary. Before it, the
per-tick forge made every non-airborne remote walkable by construction, so the
disagreement could not occur.

Both gates now read `!Body.InContact`: ApplyRemoteContactRouting's flight
carve-out and OnPosition's player-remote arm.

`Airborne` is deliberately NOT re-derived from CONTACT. That would perturb all
five of its writers and contradict a pinned assertion in
RemoteTeleportPlacementTests.Apply_PendingGroundToSteepContact_ (InContact:
true, OnWalkable: false -> Assert.True(remote.Airborne)); a previous
implementer attempted it and correctly backed out rather than editing the
assertion. This narrower shape touches no existing test.

AP-140's register row is retired in this commit, as the row itself specified.

Honest scope: this is a faithfulness fix, not a visible one. ACE derives its
IsGrounded flag with the same floor_z test, so during a slide it almost
certainly reports not-grounded, the classifier returns NoPositionOperation, and
neither arm is taken. Expect no observable change against ACE.

Suite 11,027 passed / 4 skipped / 0 failed (baseline 11,023).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 11:53:48 +02:00
..
C3cF1ProductionWiringTests.cs feat(runtime): C3c - production placement cutover: both hosts on the residence conductors (routes 1+8) 2026-08-02 18:10:33 +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 feat(runtime): C3c - production placement cutover: both hosts on the residence conductors (routes 1+8) 2026-08-02 18:10:33 +02:00
LiveCollisionAssetPublisherTests.cs feat(streaming): shadow-publish flat collision assets 2026-07-25 16:38:54 +02:00
LiveEntityCollisionBuilderTests.cs refactor(app): key live projections by runtime identity 2026-07-25 21:50:58 +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 fix(physics): route remote Positions on contact, not walkability (AP-140) 2026-08-04 11:53:48 +02:00
LiveEntityNetworkRemoteFarSnapIntegrationTests.cs fix(physics): route remote Positions on contact, not walkability (AP-140) 2026-08-04 11:53:48 +02:00
LiveEntityNetworkRemoteSteadyStateIntegrationTests.cs fix(physics): route remote Positions on contact, not walkability (AP-140) 2026-08-04 11:53:48 +02:00
LiveEntityOrdinaryPhysicsUpdaterTests.cs fix(physics): TS-46 - seed the sweep from the Setup's own sphere list 2026-07-30 09:05:44 +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(world): canonicalize live physics host ownership 2026-07-21 14:05:34 +02:00
ProjectileControllerTests.cs fix(vfx): bind effects after canonical placement 2026-08-03 12:10:21 +02:00
PvpBitfieldSurvivesAppearanceRebuildTests.cs fix(physics): #297 — keep the PWD bitfield live so PK status reaches the client 2026-08-03 20:59:01 +02:00
RemoteInboundMotionDispatcherTests.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
RemotePhysicsUpdaterTests.cs feat(runtime): C3c - production placement cutover: both hosts on the residence conductors (routes 1+8) 2026-08-02 18:10:33 +02:00
RemotePlacementDriveFixture.cs fix(physics): route remote Positions on contact, not walkability (AP-140) 2026-08-04 11:53:48 +02:00
RemoteTeleportControllerTests.cs refactor(runtime): close simulation ownership 2026-07-26 15:53:31 +02:00
RemoteTeleportHookTests.cs feat(vfx): port retail hidden and teleport presentation 2026-07-14 14:59:48 +02:00
RemoteTeleportPlacementTests.cs refactor(runtime): own per-session physics simulation 2026-07-26 13:39:57 +02:00