docs: Phase A8.F visual-gate failure handoff + issue #103

A8.F (retail portal-frame port) shipped Tasks 0-8 but failed its visual gate:
indoor branch renders broadly wrong at runtime (terrain over walls, transparent/
invisible walls). Default game unaffected (branch gated behind
ACDREAM_A8_INDOOR_BRANCH). Two compounding root causes documented (OutsideView
under-produces; Job-A/B else-branch floods ungated terrain) + apparatus + a
first-fix hypothesis + pickup prompt. Filed #103.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-05-29 14:43:24 +02:00
parent 7c3ee438bd
commit cf3d49cbd7
2 changed files with 220 additions and 0 deletions

View file

@ -44,6 +44,35 @@ Copy this block when adding a new issue:
---
## #103 — Phase A8.F portal-frame indoor rendering broken at runtime (visual-gate failure)
**Status:** OPEN
**Severity:** MEDIUM (opt-in branch only — default game unaffected)
**Filed:** 2026-05-29
**Component:** render (indoor visibility)
**Description:** With `ACDREAM_A8_INDOOR_BRANCH=1`, the A8.F retail portal-frame port
renders indoor/outside-in broadly wrong: cottage/cellar interiors covered in outdoor
terrain with transparent walls; invisible walls in other houses from inside and outside.
Default game (env var off) is unaffected — `cameraInsideBuilding = a8IndoorBranchEnabled
&& inside` (GameWindow.cs:7343). The old cellar flap remains in the default path.
**Root cause / status:** Two compounding causes (evidence in the handoff): (1) the
`OutsideView` builder under-produces — `OUTSIDEVIEW polys=0` most frames, and when
non-empty it doesn't recursively narrow (cellar shows ~full window). (2) The Task-6
Job-A/B decoupling draws terrain UNGATED when `OutsideView` is empty (`else` branch),
flooding the cell interior over the (correctly-rendered) walls. Cell walls DO render
(`[opaque]` tris=50-108). Projection math is correct; the builder integration is fragile.
**Files:** `src/AcDream.App/Rendering/PortalVisibilityBuilder.cs` (builder under-produces);
`src/AcDream.App/Rendering/GameWindow.cs` `RenderInsideOutAcdream` Step-4 `else` ungated-terrain (~11142).
**Research:** [docs/research/2026-05-29-a8f-visual-gate-failure-handoff.md](research/2026-05-29-a8f-visual-gate-failure-handoff.md) (root-cause analysis, apparatus, first-fix hypothesis, pickup prompt).
**Acceptance:** Holtburg cottage cellar renders with solid walls and no terrain flood;
terrain shows only through correctly-clipped portal openings; no invisible walls.
Related: #102 (builder dungeon-scaling fixpoint).
# Active issues
---