# Cathedral rendering — the seven-report synthesis and adjudicated plan 2026-08-30. Synthesizes: the fable review, the opus review, the external model review (owner-supplied), the code+probe-log audit, the DAT-format report, the F418 DAT-geometry report, and the retail decomp reconstruction (`2026-08-30-cathedral-review-*.md`). Where reports disagreed, the adjudication below names the winner and the evidence. ## Adjudications (the disagreements, settled) 1. **Root kind at the terrace.** The fable review said "retail never roots interior at the terrace" (top-level free traces: zero DI); the external review cited `DI f4180104, ov=1, n=1`. BOTH are right about different captures: `posed/terrace-center.log` (the defect pose) shows 39× `DI f4180104` + `DC ov=1 n=1`; the top-level free captures rooted outdoor. VERDICT: retail roots interior at our defect pose, with a ONE-CELL flood and healthy exit views. The divergence to chase is the FLOOD SHAPE and the exit-view survival, not the root kind. 2. **The falls' identity.** Opus said cell-0x106 stabs; the DAT-geometry report proves the falls emitters are OUTDOOR LANDBLOCK OBJECTS (0xCF418000–13: 7 east jets Setup 0x0200085A, 7 north jets 0x02000859, 6 lake mist 0x020003C5), and 0x4F418012–15 are cell 0x106's TORCHES + prop + plant. VERDICT: DAT-geometry wins (byte-exact parse); slice 5 moved torches — the in-cathedral particle regression. Confirmed by the external review. Residual: trace the 0xC owners' live route (never directly observed in any probe — instrumentation step 1). 3. **"Thin authored seam bands."** REFUTED by the DAT: all exits at 0x104/0x106 are full-size (10.72×10.20 m facades, 24×9.2 m arches). Thin/empty exit views (the 66 ov==0 frames) are OUR projection/clip/traversal loss. The REAL seam: 0x104's south exit and 0x106's north exit are the SAME coincident rectangle at y=48, EACH authored exit-to-outside — two abutting buildings; retail cannot flood between these cells (they meet only through 0xFFFF portals). 4. **"Retail gates clear+seals on ov>0."** Refined by the decomp reconstruction: the WHOLE landscape→drain→stamp→clear→seals block is inside `ov > 0` (pc:432715), and the depth clear is additionally a ONE-FRAME LATCH armed by the previous frame's seals (`portalsDrawnCount`, pc:432725-32). Ours emits clear+seals unconditionally — divergence confirmed, mechanism refined. 5. **"Stale color."** Retail full-clears COLOR+depth every frame at BeginScene (Clear(7), pc:68673-86). Whether our ov==0 frames show stale color depends on our world-pass color-load behavior — UNVERIFIED; the instrumentation phase settles it. Either way the ov==0 frames are wrong (retail has ov=1 at those poses). ## The frame truth (retail, interior root — the decomp reconstruction) See `2026-08-30-cathedral-review-decomp.md` for the full pc-cited version. Load-bearing facts: - TWO PViews: the root's (draw_landscape=1) and the look-ins' (draw_landscape=0, ov always 0) — look-in floods are ISOLATED from the root flood and never trigger landscape/clear/seals. - Landscape (sky, terrain in_view-culled + drawn whole, buildings with punches + look-in interiors, outdoor objects INCLUDING the falls emitters' parts) all draws PRE-clear; the full alpha drain at pc:432720 resolves outdoor translucency vs outdoor depth. - m_nFrameStamp re-arms mid-frame (pc:432722): straddling parts draw in BOTH scopes. "Emit once" is anti-retail. - z-only clear (latch-gated) → exit seals: EVERY 0xFFFF portal of EVERY flooded cell, TRUE depth, DEPTHTEST_ALWAYS + write, invisible fan, clipped to the installed view. - Interior shells (whole, once, z-test only) → interior objects/emitters (per-view sphere-cull, whole) → final drain vs interior+seal depth. - Alpha lists: two FIFOs, NO sort at flush; order = the walk + per-cell CYpt insertion sort. Full-flush sites: DrawBuilding (0f!), DrawCells pre-clear, RenderNormalMode final; DrawBlock's per-cell 0.75 pressure valve (BN misread resolved — it DOES fire). - ShouldDrawParticles = UPDATE-time NoDraw (distance; cell test VACUOUS for interior emitters — CEnvCell inherits constant PARTIALLY_INSIDE, PDB-verified ICF fold @0x005269f0). ## Why six fixes failed (unanimous) Slices 1–3+6 repaired real seams of the hybrid renderer; slices 4–5 acted on a misidentified target (torches ≠ falls) with an invented mechanism (sphere-straddle) — and no round measured depth at the artifact pixels or verified the target's identity against the DAT before editing. The two live defect mechanisms (the ov==0 frames; the missing degrade admission for marker anchors) were never in any slice's scope. ## Per-commit ledger (final) - 37febd1f slice 1 — KEEP (transitional; the walk owns outside views; fixed real punch-fan index aliasing). - c40aecfc slice 2 — KEEP the rule (seal the walk's flood); REWORK: use the walk cell's installed views for the clip, not legacy per-cell slices/no-clip fallback (plan step 4). - 5f7ccdea slice 3 — KEEP mechanically for now; REWORK: VisitedCells is a union of root flood + look-ins — retail stages those differently (plan step 2 splits the sets and re-sources the predicate). - f3a03efc slice 4 — REVERTED (7f500b97). - 0d6cd5c0 slice 5 — REVERTED (7f500b97). - bb9212c7 slice 6 — KEEP the one-turn/no-hard-clip principle; FIX: the interior terrain currently uses the full camera frustum — restore retail's in_view landcell culling under the active exit views (draw_check_blocks @0x00505f80) (plan step 8). ## The plan (instrument-first; each step gated) PHASE I — instrumentation (NO rendering edits): 1. **Falls-owner trace**: watch owners 0xCF418000–13 live — route (outdoor-static vs other), walk turn, submission phase, drain point, projected bounds/depth. Never infer identity from aggregate sets again. 2. **Depth checkpoints**: read back depth at one known-bad pixel after terrain / around punches / before the pre-clear drain / after clear / after seals / before the final drain. Distinguishes missing terrain depth vs punch overwrite vs clear/seal mis-gating vs particle depth state. 3. **Pose conformance**: drive OUR walk at posed/terrace-center's exact camera. Retail truth: DI f4180104, root flood n=1, ov=1, and separate look-ins. Compare our root flood size, exit-view survival, and the VisitedCells composition (root vs look-in members). If we produce ov=0 or a multi-cell ROOT flood there, fix WalkPView projection/side/clip math FIRST — the F67–79 foundry residue is the same family, and the coincident y=48 double-exit plane is the prime suspect surface. PHASE II — decomp-pinned repairs (one at a time, each with a falsifiable prediction and a connected check): 4. Split the stage sets: InteriorFloodCells (root flood, post-clear) / look-in cells (pre-clear, landscape scope) / VisitedLandscapeCellIds — delete every union-based stage decision (incl. slice 3's predicate source and the cell-owners particle union). 5. Gate clear+seals as retail does (the ov>0 block; note the seal-latch nuance for the clear). 6. Seals from the walk cell's installed views (drop the legacy clip borrow + unclipped fallback). 7. Retail particle staging: emitters draw at their owner cell's actual walk turn; adopt the frame-stamp boundary (mid-frame re-arm) so straddling parts draw in both scopes; delete SphereStraddlesExitPlane. 8. Alpha parity: DrawBuilding barrier = FULL flush; the queue preserves insertion order (remove the global distance sort); keep the 0.75 per-cell valve semantics. 9. Terrain: whole + unclipped (slice 6) but culled by the walk's in_view landcell set (draw_check_blocks port). 10. Re-land the runtime-hidden degrade admission for outdoor objects (the stalks = drawn never-drawn marker anchors; fce250ec is NOT an ancestor of this branch). If a stalk survives, log its live GUID→Setup→GfxObj chain. PHASE III — FW4 completion: delete the legacy PortalVisibilityBuilder production role, legacy clip frames/viewcone feeds, packed dynamic routes; the walk becomes the sole frame-decision owner; architecture doc updated (it currently overstates single ownership). ## Open questions carried - Depth at the leaking pixel pre-drain (Phase I.2 answers). - The 0xC falls owners' actual live route (Phase I.1 answers). - Why full-size authored portals yield thin/zero views at some poses (Phase I.3 localizes; the fix lands in WalkPView). - Our world-pass color-load behavior (stale color vs black on ov==0). - Seal/punch clip equivalence vs retail setup_view+polyClipFinish. - The ~1.5 MB/frame walk alloc tail (FW6).