Files the independent review corpus (fable/opus/external + audit, DAT-format, F418 DAT-geometry, retail decomp reconstruction) and the synthesis that adjudicates their disagreements: retail roots INTERIOR at the posed terrace defect pose with a ONE-CELL flood and ov=1 (the free captures rooted outdoor - both were real); the falls are outdoor landblock emitters 0xCF418000-13; the "thin seam bands" claim is DAT-refuted (full-size exits; the seam is a coincident double exit-to-outside plane at y=48); clear+seals live inside retail''s ov>0 block with a one-frame seal latch. Carries the instrument-first plan (falls-owner trace, depth checkpoints, pose conformance) and the decomp-pinned repair sequence toward FW4''s single-owner goal. Also sweeps in the probe scaffolding slice 5''s path-limited add had missed (RenderingDiagnostics field + the launch-options row wording). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
155 lines
8.6 KiB
Markdown
155 lines
8.6 KiB
Markdown
# 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).
|