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>
157 lines
9 KiB
Markdown
157 lines
9 KiB
Markdown
# Cathedral review — code + probe-log audit (companion report)
|
||
|
||
Delivered 2026-08-30 by the code/log audit agent (separate from the
|
||
fable/opus mechanism reviews; this one audited the six commits, the exact
|
||
HEAD frame flow, and every `fw3-*`/`fw4-*` probe log of the day). The full
|
||
text below is verbatim from the agent's report.
|
||
|
||
## Executive synthesis
|
||
|
||
1. All six FW4 slices behave as written on frames where the walk yields
|
||
exit views — the post-slice-6 log shows the falls emitting pre-clear
|
||
and draining over full-screen terrain depth on those frames.
|
||
2. Two defect mechanisms visible in the FINAL log are untouched by all
|
||
six commits:
|
||
- **Anomaly 1 — `ov==0` frames:** 66 of 26,601 interior frames at the
|
||
terrace produced ZERO walk exit views → `RetailFrameWalk.DrawInside`
|
||
skips `DrawLandscape` entirely → no terrain color, no terrain depth,
|
||
no sky that frame. Everything drawn that frame (pre-clear alpha
|
||
included — 17 frames had the falls straddler set drain against an
|
||
EMPTY depth buffer) composites over stale color. These are the seam
|
||
frames. Slices 1–5 fixed staging; slice 6 fixed clipping WHEN the
|
||
landscape turn runs; nothing addressed the no-views case.
|
||
- **Anomaly 2 — cell `0xF418010D` never floods:** the connecting
|
||
portal from `f418010c` classifies `inview=1` (a FACING SURFACE, not
|
||
an armed opening) at the terrace viewpoint (`[walk-portal] init
|
||
cell=f418010c i=1 dest=f418010d d=-23..-50 pside=0 inview=1`), so
|
||
the walk never traverses into it: never sealed, always fails the
|
||
outside-stage flood gate (`outside=0` in every sampled `[walk-dyn]`
|
||
line since the probe existed), and its r≈10 m weenies (the STALKS:
|
||
f428a/f428b etc.) ride DynamicLast — post-clear meshes that z-pass
|
||
over every vista pixel no seal covers, on EVERY interior frame.
|
||
3. Combined with the fable review's oracle-trace finding (retail has ZERO
|
||
interior-rooted frames at the terrace — `terrace-center.log` and
|
||
`terrace-edge.log` contain no `DI` lines at all; the whole cathedral
|
||
arrives as `ov=0 n=1` building look-ins under an OUTDOOR root), the
|
||
remaining user-visible defects reduce to:
|
||
- ROOT DIVERGENCE A: our camera-cell resolution roots INTERIOR at the
|
||
terrace where retail roots OUTDOOR. An outdoor root has no clear, no
|
||
seals, no ov==0 case — the entire problem class does not exist in
|
||
retail's frame shape at these poses.
|
||
- ROOT DIVERGENCE B: the walk's portal side classification at
|
||
`f418010c → f418010d` (facing-surface vs opening — `PortalSide` vs
|
||
the sign of `d`, `WalkPView.cs:103-120`) — the same family as the
|
||
FW1 foundry F67–79 residue.
|
||
4. UNVERIFIED (flagged, not papered over): whether the old apparatus's
|
||
flood contains f418010d (needed for the stalk meshes' DynamicLast
|
||
viewcone admission); the exact dat portal/panel geometry behind the 66
|
||
`ov==0` frames; the color-attachment load behavior behind slice 6's
|
||
"stale color" claim.
|
||
|
||
## Full audit text
|
||
|
||
### PART 1 — The six same-day commits (times: 18:21 / 19:22 / 19:28 / 19:37 / 19:58 / 20:06)
|
||
|
||
- `37febd1f` slice 1: interior outside-view slices from the walk
|
||
(`ClipFrameAssembler.ReassembleOutsideViewFromWalk`; PrepareClipFrame
|
||
moved below the walk block; Landscape event carries ViewCount; the
|
||
per-view TerrainSlice fan; `activeTerrainSliceCount` deleted;
|
||
`ACDREAM_PROBE_WALK_ROOT` added). 4 new materializer tests.
|
||
- `c40aecfc` slice 2: exit seals stamp the walk's own flood
|
||
(`WalkFrameDriver.InteriorFloodCells`; `DrawWalkExitPortalMasks` — the
|
||
walk decides WHICH cells seal, the OLD assembly still decides the
|
||
per-cell CLIP, unclipped fallback). Phase-tag probe apparatus added.
|
||
No test changes.
|
||
- `5f7ccdea` slice 3: `outsideStageFlood = walkDriver.VisitedCells`
|
||
passed to BOTH `DynamicDrawsInOutsideStage` call sites (renderer +
|
||
frame product). `[walk-dyn]` probe. No test changes.
|
||
- `f3a03efc` slice 4: interior roots keep outside-stage owners
|
||
(straddlers included) in the pre-clear union, record them in
|
||
`_preClearParticleOwnerScratch`, both DrawDynamicsLast arms subtract.
|
||
Outdoor keeps ExceptRoute(DynamicLast). No test changes.
|
||
- `0d6cd5c0` slice 5: the falls re-identified as EnvCell stab statics;
|
||
`SphereStraddlesExitPlane` extracted; straddling flood-cell statics'
|
||
owners submit pre-clear, post-replay cell union subtracts.
|
||
`[walk-emit]`/`[walk-portal]` probes. No test changes.
|
||
- `bb9212c7` slice 6: one TerrainSlice(0) fan; interior roots draw
|
||
terrain+sky UNCLIPPED (view-culled only); outdoor keeps the sliced
|
||
path. Latent: the bounds check at `WalkLeaf.cs:81-86` still throws if
|
||
the reassembly yields 0 slices while a Landscape turn fired. No test
|
||
changes.
|
||
|
||
Test posture: slice 1 shipped tests; slices 2–6 shipped zero test
|
||
changes (probe + production only).
|
||
|
||
### PART 2 — HEAD frame flow for an interior-rooted production frame
|
||
|
||
Setup: BeginFrame (phase:=pre) → OLD PortalVisibilityBuilder.Build →
|
||
BuildInteriorRootLookIns (old apparatus) → AssembleClipFrame +
|
||
AppendLookInClipFrames (old per-cell slices) → walk Collect (no GPU;
|
||
flood → optional Landscape turn iff `OutsideView.ViewCount > 0` →
|
||
building turns → OnInteriorFloodDrawTurn: Clear/Seals events +
|
||
InteriorFloodCells + flood cell turns) → ReassembleOutsideViewFromWalk →
|
||
the ONE PrepareClipFrame → prepareCells = old ∪ look-in ∪ walk →
|
||
ViewconeCuller.Build (outside planes = walk-derived; per-cell planes =
|
||
OLD) → BuildAndBorrow with outsideStageFlood = walk VisitedCells →
|
||
routes: LookInObject (old-assembly slices), LandscapeOutsideDynamic
|
||
(walk slices + cone), DynamicLast (indoor dynamics; viewcone from OLD
|
||
per-cell planes — a cell with NO plane set returns false).
|
||
|
||
Replay (pre-clear only when a Landscape turn recorded): Sky (unclipped,
|
||
interior) → TerrainSlice(0) (unclipped, depth write ON) → interleaved
|
||
static/building/look-in mesh ranges + AlphaBarrier partial drains +
|
||
punch fans (stencil far-Z, clipped by the walk view pinned at emission)
|
||
→ ClearInteriorDepth event → closure: [static-owner particles +
|
||
slice-5 straddler statics + DrawLandscapeDynamicsPhase (EARLY-OUTS
|
||
ENTIRELY if OutsideViewSlices.Length == 0) ] → FlushLandscapeAlpha (the
|
||
pre-clear drain, full far→near over true landscape depth) →
|
||
ClearInteriorDepth (depth aspect only, color preserved; phase:=post) →
|
||
ExitSeals (walk InteriorFloodCells × old-assembly clips; TRUE depth,
|
||
ALWAYS+write, no color; cells not in the walk flood never seal) →
|
||
flood CellShell + statics (the interior repaint).
|
||
|
||
Post-replay: cell-owner particles (walk flood minus look-ins minus
|
||
straddlers; post, deferred) → DrawDynamicsLast (post-clear meshes,
|
||
old-plane viewcone; particles minus pre-set) → unattached-interior →
|
||
MarkVisibleCells(old ∪ look-in ∪ walk) → final alpha EndFrame drain
|
||
(far→near, depth LESS/no write vs clear+seal+repaint depth) →
|
||
ParticleVisibilityController admission = the union of both apparatuses.
|
||
|
||
Structural observations: the walk decides the seal CELL SET, the OLD
|
||
assembly still decides seal clips, look-in slices, and the DynamicLast
|
||
per-cell viewcone; the walk's thin exit views still gate all dynamics
|
||
staging; if ViewCount == 0 no Landscape turn fires at all while clear +
|
||
seals + repaint still run.
|
||
|
||
### PART 3 — Probe-log findings
|
||
|
||
Log-era map: `fw3-walk-root-probe.log` 18:09 = pre-slice-1 AND NOT the
|
||
cathedral (all roots 0xA9B4… — the stairwell investigation);
|
||
`fw3-falls-probe.log` 19:23 ≈ slice-2; `fw4-seal-gate` 19:27;
|
||
`fw4-slice3-gate` 19:32; `fw4-slice4-gate` 19:44; `fw4-portal-probe`
|
||
19:50 (slice-4 + uncommitted slice-5 probes); `fw4-slice5-gate` ≈19:59;
|
||
`fw4-slice6-gate` 20:23 = the ONLY post-slice-6 run.
|
||
|
||
- The falls emitters are `4f418012..15` + `f4180106` (InteriorEntityId-
|
||
Allocator statics of cell 0xF4180106), riding a per-look-in-cell
|
||
`DrawCellParticles` union; `viewer=0xF4180106` appears in ZERO
|
||
[walk-root] lines (the 8-frame post-flip sampler never caught it).
|
||
- Post-slice-6 frames WITH exit views: falls pre-clear, no
|
||
cell-owners/dyn-owners post — the staging repairs work as written.
|
||
- ANOMALY 1: 66/26,601 interior frames with NO landscape turn (no
|
||
SkyPreScene, no outdoor static-owners, no unattached-outdoor) — the
|
||
ov==0 shape; all 66 carry `dyn-owners n=2 ids=[f4243,f4287]
|
||
phase=post`, and 17 carry a pre-clear falls drain against EMPTY depth.
|
||
- ANOMALY 2: cell f418010d in ZERO walkCells lists across all 7
|
||
cathedral logs; `init cell=f418010c i=1 dest=f418010d d=-23..-50
|
||
pside=0 inview=1`; its dynamics f428a/f428b always `outside=0`; their
|
||
particles appear in NO dyn-owners set — the visible stalks are the
|
||
MESHES, drawn post-clear.
|
||
- ANOMALY 3: 17 seam FLIPs at nearly identical eye positions
|
||
(interior 0xF4180104 eye=(31.09,61.34,172.05) vs outdoor 0xF418000B
|
||
eye=(30.90,63.04,172.05)).
|
||
- ANOMALY 4: `[walk-emit]` empty in ALL logs — the interior-unattached
|
||
route carried no emitters (the falls are attached statics).
|
||
- ANOMALY 5: the surviving exit views are thin (n=4 clips on portals
|
||
j=1/2/4; j=0 often n=0) — consistent with the authored polys being
|
||
narrow bands.
|