docs(issues): #464 source found — the hall building's shell wins the depth test against the corridor cell's vault; skipping that shell draw restores retail's frame

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-09-03 23:25:23 +02:00
parent 720d04856c
commit bc6ed38380

View file

@ -123,6 +123,8 @@ then `/teleloc F4180113 39.502899 19.589222 181.119247 1 0 0 0`, zoom out, tilt
**A/B round (lead, 2026-09-03 23:0023:20, scratch worktree `464-ab` at `0b9e9b64a` with env-gated skips; route `route-464-tilt3.txt`, artifact frame `01-neg160`):** (1) the per-view clip dump (replay harness, viewport 1760×990) shows NO overflow at any of the three eyes — every outside view has 35 edges and exact planes — so AD-17's unclipped-fan fallback is NOT the mechanism. (2) Skipping EVERY delayed-alpha draw (`AB_SKIP_ALPHA`, both `DrawPreparedAlphaBatch` sites) leaves the artifact frame pixel-for-pixel the same: the hanging piers are OPAQUE geometry; the alpha-flush-versus-Z-clear hypothesis is dead. (3) Skipping the interior depth clear (`AB_SKIP_ZCLEAR`) also changes nothing: the depth-clear order is not it. (4) The S3 walk gate run with the retail `cathedral-stair-arch.walk` capture as a new row, at RETAIL'S exact eye (39.58, 16.99, 182.79, no pitch): our walk matches retail's 2,158-token sequence except one extra land cell (`LC/SC e2290001`) and the harness's known one-EC-per-cell limit (retail draws `f4180106` twice inside two groups; the live client's transcript does too) — no building/cell admission difference AT THAT EYE, and `f3180105` is absent on both sides there. But at the ARTIFACT eye (182.61, and the owner's 182.31 with a slight yaw) our live walk admits `DC pv=1 n=1: f3180105` (a cell of the building at `BLD f3180020` in the next landblock west), plus `BLD f3170034`/`f317003d` (two buildings two blocks west), plus a fourth `f4180104` group; the clean frame (182.32, no yaw) admits none of those. No retail capture exists at the artifact eye, so whether retail refuses them there is unproven; the targeted A/B decides whether their CONTENT is the artifact: skipping the draw of cell f3180105, of the two far-block building shells (f3170034, f317003d), or of cell f4180104 each leaves the artifact frame pixel-identical — NONE of the extra admissions is the artifact's source; the piers come from the cathedral's own content (the next split: the stairwell tower shell 0x01001FB7 versus the corridor cell 0x109 versus the whole hall group, running)
**SOURCE FOUND (lead, 2026-09-03 23:19, `464-ab` runs `464-ab4-*`/`464-ab5-*`):** skipping the stairwell tower's shell (`AB_SKIP_BLDS=F4180009`) changes nothing; skipping cell `0x109` removes its walls and vault but the hanging pieces remain; skipping every hall cell (`0x106``0x110`) opens the view to the exterior and the pieces STILL remain; **skipping the HALL BUILDING'S SHELL (`AB_SKIP_BLDS=F418000A`, model `0x01001FB3` at (36,36,160)) removes them and the frame matches retail's picture: solid far wall above the arch, the vault, no pieces.** The hanging pieces are that shell's own geometry (its inward-facing pilasters/wall faces above and beside the corridor, world z 193205), which the corridor cell `0x109`'s pointed vault (polys `0x0E``0x15`, z 187.2190.7, all `emitPos=True`) must hide from any eye inside the stairwell. They show, so at those pixels the shell WINS the depth test against the vault. Facts checked: both draw paths use `GpuDepthState(Test: true, Write: <opaque>, Less)` (`EnvCellRenderer.Rhi.cs:113` for cell shells via `_envCells.Render(Opaque)`, `WbDrawDispatcher.Rhi.cs:343` for the ordered stream that carries the building shell); the shell's records are appended at `OnBuildingShellTurn` AFTER that turn's `MarkIfGrown()`, so they reach the GPU at the NEXT mark, after `0x109` was drawn — harmless if the depth test is honest, fatal if the two paths disagree on depth. The remaining question is therefore the depth CONTRACT between the EnvCell shell renderer and the ordered-stream dispatcher (view-projection source, depth-write of the opaque cell pass, any bias). Retail draws the shell inside `DrawBuilding` (`CPhysicsPart::Draw(parts, 0)` @0x0059f336) at its turn with one Z-buffer, so any answer that is not 'identical depth for both' is the deviation to port.
## #463 — Soak `turn` samples can report a 0.1 ms GPU p50 (the turn window catches non-world frames)
**Status:** OPEN — found 2026-09-03 by the Campaign OVERHAUL v2 S3 review's perf re-measure.