Move #106 to Recently closed (user-verified collision + solid walls; probe-verified 49 clean transitions incl. south A9B4->A9B3 at y=-0.19, east A9B3->AAB3 at x=192.2, and room-by-room tracking through the originally-failing A9B3 cottage). Records the three adjacent pre-existing bugs the gate runs surfaced and fixed (legacy Resolve bare ids, bogus-indoor-claim recovery, entry-hold streaming deadlock). Correct the capture doc's attribution: the outdoor running distortion was NOT fully the stale anchor — gate 4 shows residual background-color screen artifacts persist with a correctly-following anchor. The residual is the render §4 flap family (render digest), not membership. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
6.5 KiB
#105 capture analysis — outdoor membership FREEZES at landblock boundaries (#106 PINNED)
Date: 2026-06-09 (evening). Branch: claude/thirsty-goldberg-51bb9b.
Evidence: flap-105-capture.log (53 MB UTF-16LE, ACDREAM_PROBE_FLAP=1, 136,736 lines,
30,698 [flap-cam] frames, 16,587 [render-sig], 750 [pv-trace]), analyzed by 3 parallel
workers (throwaway scripts q105_*.py in the worktree root). User live-reproduced during
capture: entered a cottage and "EVERYTHING disappears, like I'm standing outside."
0. TL;DR
- #106 PINNED: the player's OUTDOOR cell membership never crosses a landblock boundary.
playerCellfroze at0xA9B40031(line 93363) and stayed frozen for 10,449 frames: ~130 m of outdoor walking south across theA9B4→A9B3boundary (player y reaching −109.65 in A9B4-local coords = ~82 m inside A9B3) plus an 8,929-frame stand INSIDE an A9B3 cottage. Zero indoor candidates ever flickered. Within-landblock outdoor transitions are clean (96/96, e.g.0x0031↔0x0029flipping exactly at the x=144 cell line). - The discriminator landed hard: all 10 successful outdoor→indoor entries this session (7 distinct buildings: 0170, 0150, 0164, 016E, 016C, 010B, 0118) were buildings in the SAME landblock as the player's outdoor cell — each a single clean flip with the viewer cell trailing ~48 frames (camera boom still outside), no flicker. The ONE failing entry was the only CROSS-landblock building entered.
- Rendering is downstream and healthy: while membership said "outdoor,"
[render-sig]shows the flood drawing the A9B3 interior cells (0xA9B30100/0103/.../0110) — the renderer could see the rooms membership refused to enter. 89 distinct indoor cells flood under outdoor roots across the session; ids==draw (no misses); no never-flooding building exists; no indoor flood ever collapsed empty (all 17 indoor roots always vis≥2).feedback_render_downstream_of_membershipproven again. - The outdoor "running distortion" is the same freeze: the render root stays anchored at
the stale outdoor cell while the player runs away from it (10,415-frame root run at
0x0031), so the whole view is built from a wrong anchor. The capture REFUTES flood-level causes outdoors: in all 26,960 outdoor-root frames,outPolys=1andvis=1with zero exceptions.⚠️ Attribution PARTIALLY corrected post-fix (2026-06-09, #106 gate 4): with #106 fixed and the anchor following correctly (49 clean transitions incl. cross-block), the user still reports transient parts-of-screen-turn-background-color artifacts while running and at cottage/room enter–exit. The stale anchor amplified the artifact but was not its only cause — the residual is the §4 flap family (render digest), not membership.
- The §4 indoor flap is unchanged and separate: vis oscillation exists only under indoor roots (520 changes, longest 9 consecutive flips, cells 0x013F/0x0143/0x0150/0x0171) plus ~11 one-to-three-frame OUT↔IN root blips at doorways (e.g. lines 31704..31713) — the known doorway flap, untouched today.
1. What #106 explains vs what stays in #105
- #106 explains: "enter house → everything disappears, looks like outside" (cross-landblock buildings), most of the day's per-session "some houses broken" reports (which houses break depends on where you've walked = which boundaries you crossed), and the outdoor running distortion (stale render anchor).
- Still #105 (residual, twice-observed earlier): a single wall section missing
(sky/clear color) while membership/viewer were demonstrably INDOOR-correct
(
viewerCell=0171, props drawn, collision present). All data/upload/registration layers are exonerated by 4 silent tripwire rounds; if it reproduces, the draw-level clip path (§4 family) is the remaining suspect space.
2. Fix pointers for #106 (next session)
- Membership chokepoint: the outdoor candidate-cell proposal. The capture shows the
resolver flips outdoor cells fine WITHIN a landblock but never proposes another landblock's
outdoor cell. Look at
PhysicsEngine.ResolveCellId+CellTransit.AddAllOutsideCells(its coord-convention bug was fixed 2026-05-25 —feedback_latent_bug_masked_by_fallback; cross-landblock proposals may be missing or clamped to the current landblock's 8×8 grid). - Check the
b3ce505#98 stopgap first: it GATED the outdoor sweep (a flagged WORKAROUND that already caused #99). If the gate suppresses the sweep that would propose neighboring-landblock cells, #106 is its fallout — fixing the root (per-cell shadow architecture A6.P4) or narrowing the gate may be the real fix. Readclaude-memory/project_physics_collision_digest.mdDO-NOT-RETRY before touching anything. - Retail oracle:
CObjCell::find_cell_listPosition-variant (acclient_2013_pseudo_c.txt:308742-308783) +LandDefsoutside-coordinate handling (get_outside_lcoordfamily) — retail resolves outdoor cells from GLOBAL coordinates, so landblock crossings are inherent. Cross-check ACEPhysics/Common/LandDefs.cs. - Cheap probe for the fix loop:
ACDREAM_PROBE_CELL=1([cell-transit], low volume) while walking across each Holtburg boundary; acceptance in #106's entry.
3. Apparatus notes (carried forward)
[pv-trace]is hard-gated to roots0x016F..0x0175(PortalVisibilityBuilder.cs:606-647) andBuildFromExteriorhas NO trace hook — outside-looking-in cull reasons are unobservable until one is added (needed if #105's residual reproduces).[flap]'svis/outPolysare PRE-merge (emitted inBuild, beforeMergeNearbyBuildingFloodsinRetailPViewRenderer.cs:48-61); post-merge truth is[render-sig] ids=/draw=.- Tripwires still live (keep until #105/#106 close): rounds 1–3 +
[up-null](known-benign ids0x010002B4,0x010008A8— deterministic empty meshes, ignore). - Capture + scripts:
flap-105-capture.log,q105_*.py(untracked throwaways).
4. The day's full arc (for the next session's orientation)
dat-reader direction chosen → read path EXONERATED (audit + 1.1M-read hammer, b3920d8) →
teardown dispose-during-read AV FIXED (8fadf77) → white-walls trapped through 4 tripwire
rounds (all silent) → live capture → #106 pinned (membership, cross-landblock). The day's
"render bug" was a physics bug all along, exactly per
feedback_render_downstream_of_membership. Next session: fix #106 (membership/A6 territory,
read the physics digest first).