acdream/docs/research/2026-08-30-cathedral-review-audit.md
Erik 6d990d38b3 docs: the cathedral seven-report synthesis + adjudicated FW4 plan
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>
2026-08-30 20:52:14 +02:00

157 lines
9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 15 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 F6779 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 26 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.