docs: file #111 - ACE-mutated indoor restores start outdoor-classified (transparent until door-press); evidence + retail fix direction

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-06-10 13:54:37 +02:00
parent e4f6750e09
commit 383af0ab5f

View file

@ -3709,6 +3709,50 @@ stable now; this is a draw-order/depth oscillation localized to the door surface
---
## #111 — Indoor login from an ACE-mutated restore starts outdoor-classified (transparent interior until door-press)
**Status:** OPEN
**Severity:** MEDIUM (UX; no wedge — always controllable, heals on door-press)
**Filed:** 2026-06-10 (split out of #107's gate runs)
**Component:** physics / player snap (grounding) + membership lateral recovery
**Symptom (user-gated ×3, wedge-107-gate3/4/5 logs):** logging in indoors, the
interior renders transparent (walls see-through, own char invisible) until the
player presses into the DOORWAY, which promotes membership into the proper room
and everything renders. Collision works throughout. "It feels like I'm logging
in a step up" — correct: ACE restores the player ~1 m above the floor (or 1.8 m
below, in the cellar volume).
**Mechanism (fully evidenced):** ACE does not persist our reported (cell, pos)
pair — `GameActionAutonomousPosition.Handle``SetRequestedLocation` feeds
ACE's SERVER-SIDE physics player, and the logout save is ACE's physics state:
same XY as ours verbatim, but ACE's own Z + cell (observed: claim 0x172 z=95.0;
claim 0x147 z=92.226 cellar; claim 0x14F z=94.85 — stacked volumes under/over
the room 0x171 the user actually stood in at z=94.0). Our entry snap
(PhysicsEngine.Resolve + retail AdjustPosition, #107) validates the claim at
the RESTORED point — geometrically valid for the lofted/sunk point — but never
GROUNDS and re-validates: the first movement drops the player to the floor
where the stacked claim no longer contains them → the pick (correctly
portal-local, P1-validated) cannot laterally recover the 2-hop room → demote
to outdoor INSIDE the building → render (downstream of membership) draws the
outdoor flood → transparent interior until the doorway portal promotes.
**Fix direction (retail-anchored):** retail `SetPositionInternal` does NOT
commit the raw restored position — after AdjustPosition it runs
`CheckPositionInternal → CTransition::find_valid_position` (:283426, :280070),
settling the sphere onto valid floor BEFORE committing, then stores the
SETTLED position. Port shape: at the snap, ground the position (floor under
the point within the claim's visible graph), re-run AdjustPosition at the
settled foot-center (for the gate-5 case: z 95.0→94.0, then 0x172's stab list
corrects to 0x171), commit the corrected pair. ⚠️ Open sub-question: the
gate-5 snap committed the lofted pair VERBATIM (z=95.0, cell unchanged) even
though Resolve's indoor floor-snap should have grounded to the closest floor —
instrument which early-out fired (suspects: `physics is null` landblock-lookup
miss at snap time; step-height reject; bestCell null). Logs:
wedge-107-gate3/4/5-indoor-login.log; scans in Issue107SpawnDiagnosticTests.
---
# Recently closed
## #107 — Indoor-login spawn wedge — [DONE 2026-06-10 · 1090189]