acdream/docs/research/2026-05-19-indoor-cell-rendering-verification.md
Erik 73288657fd docs(research): Phase 2 verification — floor renders, fix landed
User visually confirmed floors render in Holtburg Inn after the WB
TryGet<Setup> guard. Probe re-capture: 0 [wb-error] lines (was 385),
0 NULL_RESULT (was 55), Holtburg 123/123 cells complete (was 97/123).

Documents the nine pre-existing indoor bugs the user observed during
verification (see-through floor, indoor collision, stairs, walls,
clicking, indoor lighting artifacts, stabs-don't-react-to-atmospheric-
lighting, slope terrain lighting). All pre-existing; filed for follow-up
phases via docs/ISSUES.md.

Phase 2 complete.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 13:12:53 +02:00

2.9 KiB

Indoor Cell Rendering — Phase 2 Verification

Date: 2026-05-19 Outcome: Floor renders in Holtburg Inn. User visually confirmed. Predecessor: Phase 2 cause report.


Probe re-capture

After applying the one-line WB fix at ObjectMeshManager.cs:1230:

Metric Pre-fix Post-fix
[wb-error] lines 385 0
[indoor-upload] NULL_RESULT 55 0
[indoor-upload] FAILED 0 0
Total [indoor-upload] requested 1157
Total [indoor-upload] completed 1157
Holtburg (0xA9B4) requested 123 123
Holtburg (0xA9B4) completed 97 123
Holtburg (0xA9B4) missing 26 0

100% success rate on EnvCell uploads. Zero swallowed exceptions. Zero null returns.

Visual confirmation

User walked into Holtburg Inn (and other nearby buildings whose cells were previously failing) and confirmed:

"Yes floors are rendering now inside houses."

The previously-failing cells (0xA9B40100, 0xA9B40111, 0xA9B40112, 0xA9B40117, 0xA9B4011B, etc.) now upload successfully, the dispatcher finds their render data, and the floor / wall / ceiling geometry renders.

Regressions checked

  • Outdoor terrain still renders correctly. ✓
  • Outdoor scenery (trees, rocks, stabs) still render. ✓
  • NPCs, mobs, world entities still render. ✓
  • Build clean, no new warnings. ✓
  • No new test failures. ✓

Other observations during the walk

The user reported other indoor-related bugs that are now observable because the floor is rendering. These are all pre-existing (not caused by this Phase 2 fix) but were hidden by the missing-floor bug. They are filed as separate issues for follow-up phases:

  1. See-through floor — other buildings visible "below" / "through" the rendered floor (depth/stab-culling).
  2. Spot lights on walls indoors (point-light positioning).
  3. Camera on 2nd floor goes very dark (per-cell ambient or trigger).
  4. Static building stabs don't react to atmospheric lighting changes (shader path).
  5. Some slope terrain lit incorrectly (terrain normal calculation).
  6. Collision "blocked by air" indoors (cell BSP misalignment).
  7. Walking up stairs broken (stair-step physics on EnvCell geometry).
  8. Pass through walls from outside→in (one-sided wall collision).
  9. Click selection penetrates walls (WorldPicker raycast not testing cell BSP).

These nine items are tracked in docs/ISSUES.md with proposed phase groupings. None block Phase 2 closure.

Conclusion

Phase 2 of the indoor cell rendering fix is complete. The single-root-cause exception was identified via the diagnostic chain shipped in Phase 1 + Phase 2, and resolved with a one-line guard at the WB call site that prevented blind TryGet<Setup> deserialization of GfxObj-typed stab ids.

Total runtime for Phase 2: ~4 client launches.