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>
9 KiB
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
- 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.
- Two defect mechanisms visible in the FINAL log are untouched by all
six commits:
- Anomaly 1 —
ov==0frames: 66 of 26,601 interior frames at the terrace produced ZERO walk exit views →RetailFrameWalk.DrawInsideskipsDrawLandscapeentirely → 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
0xF418010Dnever floods: the connecting portal fromf418010cclassifiesinview=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=0in 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.
- Anomaly 1 —
- Combined with the fable review's oracle-trace finding (retail has ZERO
interior-rooted frames at the terrace —
terrace-center.logandterrace-edge.logcontain noDIlines at all; the whole cathedral arrives asov=0 n=1building 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 —PortalSidevs the sign ofd,WalkPView.cs:103-120) — the same family as the FW1 foundry F67–79 residue.
- 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==0frames; 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)
37febd1fslice 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;activeTerrainSliceCountdeleted;ACDREAM_PROBE_WALK_ROOTadded). 4 new materializer tests.c40aecfcslice 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.5f7ccdeaslice 3:outsideStageFlood = walkDriver.VisitedCellspassed to BOTHDynamicDrawsInOutsideStagecall sites (renderer + frame product).[walk-dyn]probe. No test changes.f3a03efcslice 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.0d6cd5c0slice 5: the falls re-identified as EnvCell stab statics;SphereStraddlesExitPlaneextracted; straddling flood-cell statics' owners submit pre-clear, post-replay cell union subtracts.[walk-emit]/[walk-portal]probes. No test changes.bb9212c7slice 6: one TerrainSlice(0) fan; interior roots draw terrain+sky UNCLIPPED (view-culled only); outdoor keeps the sliced path. Latent: the bounds check atWalkLeaf.cs:81-86still 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-cellDrawCellParticlesunion;viewer=0xF4180106appears 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 alwaysoutside=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.