Report-only per CLAUDE.md's investigation rule; no fix applied and none
approved. Committed so the evidence is not lost.
Verdict: the player arm's airborne-snap block skips the collision-shadow
publish, but the stale shadow self-heals within one object quantum
(~33 ms). Not the #184 invisible-but-solid class.
The reasoning is structural rather than incidental, which is why it
resolved offline instead of needing a connected sample. The per-tick gate
at RuntimeRemotePhysicsUpdater.cs:840 compares the body against
LastShadowSyncPos/Orientation, and those fields are stamped ONLY inside
SyncRemoteShadowToBody immediately after a publish. They therefore record
where the shadow actually is, which makes the gate an invariant check
("is the shadow more than 1 cm / 0.51 degrees from the body?") rather than
a change-detector. The snap's two raw field writes leave that invariant
violated and untouched, so the next quantum sees the full delta and
republishes.
Three findings beyond the question asked:
- One residual does NOT self-heal: past 96 m the activity gate deactivates
the remote while OnPosition is not distance-gated, so a distant
player-remote's render entity moves and its shadow does not, until it
re-enters the bubble. Unobservable in practice — everything that could
sweep against it is gated by the same rule.
- The "LANDING TRANSITION" naming throughout the file is stale: the
predicate is !Body.InContact, the whole airborne period, so it fires on
every airborne update rather than once at the landing edge.
- RuntimeSetPositionState.cs:5037 stamps LastShadowSyncPosition before a
guard at :5138 that can return ahead of the publish at :5148 — a
possible masking hole, deliberately not folded in.
Retail note: retail has no separate shadow at all — SetPositionInternal
0x00515330 calls remove_shadows_from_cells/add_shadows_to_cells in the
same transaction, so the skip is a real divergence, just a 33 ms one.
Recommended next step (NOT approved): an offline two-step test composing
the collapse-matrix player-guid landing fixture with one Tick, asserting
the shadow converges. Strictly stronger than a connected sample, which
could only show that nobody noticed 33 ms.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>