Three-branch falsification spike per the design's RR0: HEAD (2bfeafd, R3.5 v2): Issue C YES; Issue A YES (varies by building) R3 baseline (60f07bc): Issue C YES; Issue A YES (same as HEAD) main (7034be9, no A8 work): Issue C NO; Issue A NO flicker; BUT constant #78 symptom (houses-below-terrain visible from inside) Diagnosis: R3 (stencil pipeline wire-in) successfully fixes the original #78 main symptom but introduces Issues A and C as new transition artifacts. R3.5 v1+v2 patches didn't help (R3 baseline shows same A+C as HEAD). Per the design's decision gate (Outcome 2): PAUSE plan; re-brainstorm via superpowers:brainstorming to address A+C without re-introducing #78 constant leak. The original restructure design assumed A+C might be pre-existing and could be filed as separate out-of-A8-scope issues. RR0 invalidates that. The restructure must address them OR the brainstorm needs a third option between "stencil-gate everything" (causes A+C) and "no stencil work" (causes #78). Open questions for the re-brainstorm captured in the findings doc. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5.1 KiB
A8 RR0 falsification — are Issues A and C pre-existing or A8-caused?
Date: 2026-05-26 (PM) Method: three-branch launch + visual repro at Holtburg cottage entry / exit transitions.
Observations
| Branch | Commit | Issue C (entry transparent floor) | Issue A (exit through-ground / walls missing) | #78 (constant houses-below-terrain visible from inside) |
|---|---|---|---|---|
| HEAD | 2bfeafd (R3.5 v2) |
YES | YES (varies by building) | (gone — R1+R2+R3 fixed) |
| R3 baseline | 60f07bc |
YES | YES (same as HEAD) | (gone — R1+R2+R3 fixed) |
| main | 7034be9 |
NO | NO flicker — but DIFFERENT SYMPTOM: houses below terrain visible from inside, constant (not transition) | YES, constant |
User screenshots from HEAD captured during the spike:
- Cottage interior: floor partly see-through to outdoor grass; misplaced textured panel visible
- Cottage exterior: brown floor/wall panel floating in space; surrounding building walls missing
User quote on main observation:
"No floor is not transparent." "When I now stand in the cottage and look out I can see houses below the terrain. There is no flick when I pass out. They are just visible all the time"
Diagnosis
Issues A and C are NOT pre-existing. They are caused by R3 (the stencil pipeline wire-in):
- R3 successfully closes the original #78 symptom (constant houses-below-terrain visibility from inside) ✓
- R3 introduces two new artifacts as side-effects:
- Issue C — cottage floor transparent showing cellar during entry transition
- Issue A — through-ground objects + walls-missing flicker during exit transition
The R3.5 v1+v2 patches were attempts to mitigate, didn't help (R3 baseline and HEAD show identical A+C symptoms).
Decision
Per the design's decision gate at RR0-S5:
- Outcome 2 selected: Only R3 + HEAD reproduce → A and/or C caused by R3 work specifically. PAUSE the plan. Re-brainstorm via
superpowers:brainstormingto address them; update the design doc; resume.
The original restructure design assumed Issues A and C might be pre-existing and could be filed as separate out-of-A8-scope issues. RR0 invalidates that assumption. The restructure must address them OR accept that A8 trades one bug class for another (which the user has not approved).
Open questions for the re-brainstorm
-
Mechanism of Issue C (entry transparent floor): what about R3's stencil work makes cottage floor transparent during entry? Hypotheses:
- Stencil bit 1 set on portal silhouettes but cleared next frame; during the entry the camera-cell hadn't yet promoted, so VisibleCellIds was empty, so MarkAndPunch had no portals to mark → outdoor pass effectively ungated, terrain re-draw beats indoor cell mesh at the floor pixels.
- Depth-clear-if-inside firing too early or too late, leaving the depth buffer in a bad state.
- The cottage cell's mesh + the cellar cell's mesh both included in IndoorPass at adjacent Z values, Z-fight is fundamental.
-
Mechanism of Issue A (exit through-ground flicker): during grace frames after exit,
cameraInsideCell=truebutcameraReallyInside=false. Sky skipped, terrain drawn, depth-clear skipped, stencil branch skipped, outdoor Draw(All) runs. Why do entities below terrain win the depth test in these specific frames? -
Will the WB-faithful restructure help, hurt, or be neutral on A and C? The restructure removes the depth-clear and initial-terrain workarounds. During grace frames after exit, it gates terrain on
!cameraInside(true since cameraInside is strict). So terrain DRAWS unconditionally during grace (because !cameraInside = !false = true → draws). Behavior identical to main during these frames → likely re-introduces #78 main symptom for ~3 grace frames after exit. Trade-off: 3 frames of #78 vs 3 frames of Issue A. -
Should we shorten or eliminate the cell-switch grace mechanism? Currently 3 frames. If 0 frames, the gate flips strict and cleanly at the threshold. PointInCell epsilon (0.01f) provides minimal hysteresis but might be enough.
-
Is there a third option between "stencil pipeline gates outdoor visibility" (causes A+C) and "no stencil work" (causes #78)? Possibilities:
- Stencil work but with different cell-set scoping (only camera-cell's portals, not BFS-extended; already in R3).
- Hybrid: stencil-gate outdoor scenery but NOT terrain (let terrain draw unconditionally + accept #78 leak for terrain only).
- Frame-based heuristic: skip stencil for first N frames after entry/exit to mask the transition artifact.
Logs
launch-a8-rr0-head.log/launch-a8-rr0-head-take2.log/launch-a8-rr0-head-take3.log— HEAD launches (2bfeafd)launch-a8-rr0-r3.log— R3 baseline launch (60f07bc, GameWindow.cs single-file checkout)launch-a8-rr0-main.log— main launch (7034be9, side worktree at .claude/worktrees/tmp-main-baseline with WorldBuilder ref junction)
Cleanup performed
- Restored HEAD's GameWindow.cs in this worktree (no working-tree changes left)
- Removed Windows junction
tmp-main-baseline/references/WorldBuilder→ strange-albattani-3fc83c - Removed side worktree
.claude/worktrees/tmp-main-baseline