docs(#186): handoff — connector grey flap narrowed to the doorway-flap flood/pick family

Retail SEAMLESS at the same spot (user-confirmed) => real acdream bug: the eye seats
in a sparse 5-poly connector cell 0xF6820118 looking back at the player's room 0116,
and acdream drops 0116 (back-portal side-culled) so the doorway aperture shows the fog
clear color = grey; retail keeps 0116 drawn. RULED OUT: null-root/AD-20/AD-21 (root
valid, eyeInRoot=Y); the color-clear gating (retail's gated DrawCells Clear is
depth/stencil, post-LScape::draw). Next step = retail cdb trace (viewer_cell +
cell_draw_list at the grey pose) to pin viewer-cell PICK vs portal FLOOD, then a careful
frozen-render fix. Full handoff + apparatus + DO-NOT-RETRY + code/decomp sites in the doc.
Keeps the offline cell-geometry inspection test.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-07-08 14:04:23 +02:00
parent cd42369581
commit 9d35a9786f
3 changed files with 266 additions and 11 deletions

View file

@ -56,18 +56,24 @@ parts of the house. Passing through → a brief **GREY** flap (world background)
spot → the WHOLE screen is grey and stays; **turning the camera clears it, turning back → grey again**
(camera-direction dependent, player stationary).
**Root cause / status (BY CLASS — unconfirmed for this instance):** the doorway-FLAP family. Grey =
the world/sky background drawn via the null-clipRoot legacy fallback (**AD-21**) when the renderer has
no indoor visibility root that frame. The camera-direction dependence points at the **camera-EYE
viewer-cell resolution** (**AD-20**): the eye seats via the *player's* cell stab-list, so a
connecting-room cell/portal topology this house type introduces can seat the eye in the wrong/no cell
→ viewer root null → grey; turning re-seats the eye. **Distinct from #176/#181** (a LIT flicker,
parked) — this is a GREY/background flap. SSOT: `claude-memory/project_render_pipeline_digest.md`
("root at VIEWER cell"; flap DO-NOT-RETRY table).
**Root cause — NARROWED (report-only; retail SEAMLESS at the same spot → real acdream bug). FULL HANDOFF:
`docs/research/2026-07-08-186-connector-grey-flap-handoff.md`.** The eye seats in a sparse 5-render-poly
CONNECTOR cell `0xF6820118` (between player room `0116` and room `0117`), in the doorway threshold looking
BACK toward `0116`; acdream's render DROPS `0116` (its back-portal is side-culled) so the doorway aperture
shows the fog clear color = grey. Retail keeps `0116` drawn. **RULED OUT (do not revisit):** null-root/AD-21
(root valid indoor 88248/88249 frames); viewer-cell root-lag/AD-20 (`eyeInRoot=Y` — eye genuinely inside
`0118`'s BSP); the color-clear gating (retail's gated `Clear` @ DrawCells `0x005a48a9` is depth/stencil,
fires AFTER `LScape::draw` — the tempting "3-line fix" is DEAD). Confirmed via workflow `wf_362bbeda-933`
(4 tracers + synthesis) + live `ACDREAM_PROBE_FLAP` capture + offline cell dump. It's the doorway-FLAP
FLOOD/PICK family (frozen render, DO-NOT-RETRY-heavy — the deleted `EyeInsidePortalOpening` rescue, the
`PortalSideEpsilon` root-lag).
**Next step (apparatus, when resumed):** `ACDREAM_PROBE_FLAP=1` capture at the exact connecting room —
stop where grey, turn to clear, turn back to grey ×2. Confirm the viewer-cell root goes null there,
which cell the eye seats in, and whether the portal flood admits the connecting room.
**Next step (retail cdb, do FIRST — binary MATCHES `refs/acclient.pdb`):** at the grey pose, `bp
SmartBox::update_viewer 0x00453ce0` (dump `viewer_cell` id) and/or `bp PView::DrawCells 0x005a4840` (dump
`cell_draw_list`). retail `viewer_cell==0116` → PICK fix (acdream over-switches to the connector /
boom coasts the eye in at `pulledIn=-0.00`); retail roots `0118` but draws `0116` too → FLOOD fix
(retail admits the back-portal; acdream's side-CULL is the site). Apparatus + code sites + DO-NOT-RETRY
in the handoff.
**Acceptance:** no grey flap passing through OR stopping in the connecting room at any camera angle;
regression pass on the outside→inside doorway + other multi-room houses.