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>
26 KiB
Cathedral rendering review — FABLE (2026-08-30)
Independent report-only review of the cathedral-terrace defect (falls
particles + marker stalks over terrain; landblock 0xF418, camera in
0xF4180104/0xF4180106), baseline 37febd1f, HEAD bb9212c7, branch
claude/campaign-w-retail-frame-walk.
Evidence basis and honesty note. Everything below marked with a citation
was read directly by this reviewer (oracle trace files, decomp pseudocode
docs + their byte-verification notes, commit messages/diffs, git topology,
ISSUES/register/memory docs, id-allocator source). Three deeper evidence
threads (fresh decomp re-reads of the alpha/particle path, a raw DAT parse
of 0xF418, and the HEAD code-flow + probe-log audit) were dispatched but
had not returned when this report was due; every claim that depended on
them is explicitly marked unverified. Per the prompt's rule, unverified
is stated as unverified — nothing below is a plausible guess dressed as
fact.
1. Executive verdict (≤10 lines)
The six fixes failed because they accepted a false premise about WHERE this
scene's content sits in retail's frame. The posed oracle traces show that at
both defect poses retail's interior flood is EXACTLY ONE cell (DC ov=1 n=1: f4180104 / f4180106) — every other cathedral cell, including the falls'
stab-owner cells, draws as a building look-in inside the landscape scope,
pre-depth-clear, its alpha drained against full landscape depth
(posed/terrace-center.log F5, posed/cathedral-arrival.log F1-2;
PView::DrawCells @0x005a4840 model §5). Our pipeline instead treats the
whole complex as interior-flood content drawing post-clear, then tried to
rescue it with seals (slice 2) and a non-retail exit-plane-straddle
classifier (slices 4/5) that under-covers exactly the fully-outside falls
emitters. Fix = route every object's particles to its owner cell's actual
walk turn (look-in ⇒ landscape scope ⇒ pre-clear drain), delete the straddle
classifier, and re-land the quarantined marker-degrade port for the stalks.
2. Retail frame reconstruction (for an interior root with exit portals)
2.1 The frame skeleton — verified from the FW0 model + live traces
Source of truth used: docs/research/2026-08-30-fw-walk-pseudocode.md
(§1, §2, §3, §5, §9 — its seal loop, deferred z-clear, DEPTHTEST_ALWAYS,
punch-Z constants are recorded there as byte-verified against the raw
pseudo-C at @0059a49af, @005a48a9, @0059be02, @0059bf4b), the
extraction appendix 2026-08-30-fw-walk-pseudocode-appendix.md (notably
the DrawBuilding/DrawMeshInternal full-sequence note at appendix line 811),
and the live cdb traces in docs/research/2026-08-30-fw-walk-oracle/posed/.
Order of one interior-rooted frame (SmartBox::RenderNormalMode
@0x00453aa0 → PView::DrawInside @0x005a5860 → ConstructView →
PView::DrawCells @0x005a4840):
- Flood (
ConstructView(CEnvCell)@0x005a57b0): view-driven — a neighbor cell enterscell_draw_listonly if its portal polygon survivesPView::GetClip@0x005a4320 against the current view (the ONLY CPU polygon clip in the frame). Exit portals (other_cell_id == 0xFFFFFFFF) raiseoutside_view. - If
outside_view.view_count > 0(the traces'ov): a.Render::PortalList = &outside_view;LScape::draw@0x00506330 — the whole landscape walk THROUGH the exit views: sky, terrain blocks far-to-near (view-CULLED per cell/block bydraw_check_blocks' in_view union — never view-clipped, never scissored;set_viewinstalls NO GPU state), buildings far-to-near, and — per building — the look-in machinery:DrawBuilding@0x0059f2a0 → BSP portal pass 1 punches apertures (DrawPortalPolyInternalflag=1: far-Z 0.999998987, DEPTHTEST_ALWAYS, z-write ON, alpha 0) → pass 2 recursesConstructView(CEnvCell)+DrawCells(ov=0— no landscape, no clear, no seals) drawing look-in EnvCells + their objects into the punched aperture (appendix line 811).DrawBuildingitself callsFlushAlphaList(0f)before each building;DrawBlock@0x005a17c0 has the mid-walk pressure valveFlushAlphaList(flush=0.75)(appendix lines 700, 1027). b.FlushAlphaList(0f)— the pre-clear boundary drain: EVERYTHING queued during the landscape scope (terrain alpha, building alpha, look-in cell content alpha — and the particle polys of objects drawn in that scope) drains against full landscape depth. This is the drain that occludes the falls with terrain/water/trees. c. Gated depth clear (if (forceClear || portalsDrawnCount != 0) Clear(z), model §5;portalsDrawnCountcounts ONLY flag-0 seals — appendix line 811). Color is preserved; only depth clears. d. Exit seals: for the FLOODED cells' exit portals only,DrawPortalPolyInternal(poly, 0)— the portal's own projected depth, DEPTHTEST_ALWAYS, z-write ON, invisible (model §2, §5; byte-verified per model §9). - Interior passes (post-clear):
DrawEnvCellfar-to-near (BSP shells), thenDrawObjCellForDummies(the flooded cells' objects) — depth accumulates fresh. - Final drain:
FlushAlphaList(0f)back inRenderNormalMode— the flooded cells' alpha/particles drain against interior depth + the seals.
2.2 The four prompt questions
(a) clipped vs culled vs whole. CPU-clipped: ONLY the portal chain's own
polygon (GetClip @0x005a4320 — the model calls it "the only CPU polygon
clip in the frame"). View-culled (coarse sphere-vs-cone,
Render::viewconeCheck @0x0054c250, PARTIAL draws whole): objects.
Cell/block-granular culled (in_view interval grids): terrain blocks/cells.
Drawn whole with no per-view test: everything that passes those gates —
shells, meshes, particles. No GPU clip planes/scissor exist anywhere in this
frame (set_view = CPU globals only, model §6).
(b) order relative to clear and seals. PRE-clear: sky, terrain, water (terrain-hosted — see §3, unverified detail), building shells, building punches, look-in EnvCell shells + look-in cell objects + their emitters, and all their alpha via the boundary drain. POST-clear: seals first, then ONLY the root flood's EnvCell shells + objects + their emitters, drained at the final flush. Seals draw exactly the flooded cells' exit-portal polygons at own depth, color-write effectively off (alpha 0), depth ALWAYS + write ON.
(c) alpha list. ONE list. Flush sites established from the docs:
per-building FlushAlphaList(0f) in DrawBuilding (appendix 811); the
DrawBlock pressure valve at flush=0.75 (~2250 meshes, appendix 1032);
the DrawCells pre-clear boundary FlushAlphaList(0f) (model §5); the
RenderNormalMode end-of-frame FlushAlphaList(0f) (model §1). Depth in
place: landscape depth at the first three; interior + seal depth at the
final one. Unverified: an exhaustive caller enumeration of
D3DPolyRender::FlushAlphaList @0x0059d2e0 from the decomp itself, and
the exact particle-poly insertion path (the dispatched decomp read had not
returned; the MP2-era digest additionally records
CPhysicsObj::ShouldDrawParticles @0x0050FE60 = authored degrade range +
cell->IsInView(), from claude-memory/project_render_pipeline_digest.md).
(d) depth at final-drain time. Aperture pixels: the seal's own depth (near the camera) — anything beyond the exits z-fails, so interior particles cannot repaint the vista. Vista pixels visible through the aperture ARE aperture pixels (the opening's polys); pixels covered by interior geometry hold that geometry's depth. The falls are never in this drain in retail at these poses — they drained pre-clear with the landscape. Unverified residual: whether any visible vista pixel can lie OUTSIDE the union of authored exit-portal polygons at the live chase camera (slice 6's observation implies yes for the WALK's clipped views; whether that reflects portal-poly authoring or our clip is open — §8 Q1).
2.3 The live traces at the defect poses (decisive, read directly)
posed/terrace-center.log F5 (camera cell f4180104 — the owner's
teleloc cell):
DI f4180104
DC pv=009d4e38 ov=1 n=1: f4180104 ← the interior flood is ONE cell
LS
BLD f518002e … BLD f4180014 BLD f418000a BLD f418000c BLD f418000b (14 buildings)
posed/cathedral-arrival.log F1-2 (camera cell f4180106):
DI f4180106
DC pv=009d4e38 ov=1 n=1: f4180106 ← flood = root cell only
LS
BLD f3180020 … BLD f418000c
DC pv=009d4398 ov=0 n=2: f4180101 f4180100 ← look-in punch during LS
… BLD f418000b
DC pv=009d4398 ov=0 n=1: f4180104 ← 0xF4180104 IS A LOOK-IN
BLD f418000a
posed/terrace-edge.log F5 (outdoor root, camera cell f418000b): look-in
punches n=1: f4180106, n=1: f4180101, n=1: f4180104 interleaved with
the building walk — no clear, no seals, everything drains against full
depth (why the owner sees a correct scene outdoors).
Conclusion: at the defect poses, 0xF4180104 and 0xF4180106 are in
DIFFERENT buildings' interiors (f418000b vs the f418000a/c group —
consistent with the "seam" being a building boundary), retail's interior
flood never crosses it, and ALL non-root cathedral cells + their stabs
compose in the landscape scope, pre-clear. The "toggles with which side of
the seam the camera is on" symptom is the root flip between these two
one-cell floods (and outdoor).
3. DAT geometry findings
Verified:
- The falls' observed particle owners
0x4F418012–0x4F418015decode persrc/AcDream.Core/World/InteriorEntityIdAllocator.cs:48(0x40000000 | X<<20 | Y<<12 | counter) to interior EnvCell-stab statics of landblock F418, counters 0x12–0x15 — NOT landblock objects (0xC0000000+ namespace) and NOT scenery (0x80000000+). The slice-5 commit message (0d6cd5c0) reached the same identification ("EnvCell STAB-LIST statics … ids minted by InteriorEntityIdAllocator"). - Retail cell topology at the poses (from the traces, §2.3):
0xF4180104belongs to buildingf418000b's look-in set;0xF4180100/0101tof418000c's;0xF4180106is punched separately (arrival trace); interior floods do not cross between them at the captured camera states. - The prior campaign's offline sightline probe (recorded in
claude-memory/project_pview_visibility_campaign.mdand the PV plan) established: the exit portal of the terrace cell and the building's never-drawn panel are the SAME surface, and the "#456 seam band" IS the terrace cell's portal[4] polygon — i.e. at least one exit aperture is a thin band, corroborating slice 6's live finding that scissoring terrain to the walk's exit views starves most of the vista of depth/color.
Unverified (the DAT parse thread had not returned): the per-cell portal
tables (flags/0x4 exits/other_cell ids) for 0x0104/0x0105/0x0106/0x010D/ 0x010F; WHICH EnvCell's stab list carries counters 0x12–0x15 (the counter
is allocated in ascending cell order in LandblockBuildFactory
src/AcDream.App/Streaming/LandblockBuildFactory.cs:494-503, so the DAT
stab tables resolve it mechanically); the exit-portal polygon vertex
extents vs the visible opening; whether the lake water is terrain-hosted;
the cathedral shell GfxObj roster (0x01001FB2/B0/B3 — asserted by the
owner's prior analysis and consistent with the PV panel model
(0x01001FB0/B2/B3/B7 panels, PV plan §"established model" item 3), but
not independently re-read here).
4. Divergence table (ranked by causal weight for THIS defect)
| # | Divergence | Ours | Retail | Evidence |
|---|---|---|---|---|
| D1 | Particle emission site for cell statics/dynamics | flood-membership + SphereStraddlesExitPlane classifier decides pre- vs post-clear emission (slices 4/5) |
the owner object's actual walk turn decides: drawn during LS (shadow-cell overlap or look-in) ⇒ landscape scope ⇒ pre-clear drain; drawn in the root flood ⇒ final drain | traces §2.3; model §5; appendix 811; commit msgs f3a03efc/0d6cd5c0 |
| D2 | Interior "flood" membership for the cell-owners route | the production cell set treats the connected cathedral complex as interior content (slice-2/3 messages: "the cell-owners route", "the OLD apparatus flood"); walk conformance proves the WALK floods n=1, but consumers were still being cut over one at a time | flood = what survives GetClip from the root; at these poses exactly ONE cell; everything else is landscape-scope | traces §2.3; commit msgs c40aecfc/5f7ccdea; plan FW3.2b-2 "prepareCells UNIONED" |
| D3 | Dynamics-last (register row AD-19, docs/architecture/retail-divergence-register.md:147): ALL dynamics in one z-buffered final pass |
per-landcell painter-ordered draws inside the landscape pass; interior per cell turn | register row (self-declared); DrawBlock 0x005a17c0 / DrawSortCell pc:430124 |
|
| D4 | No degrade/LOD admission on this branch — the marker stalks (Setup 0x0200085A → GfxObj 0x010001EC, ladder 0x1100002E = {self at MaxDist 0, id 0 to ∞}) are DRAWN |
retail selects gfxobj[deg_level] via get_degrade @0x0051E4B0 and never draws this model at any distance (gates in DrawBuilding @0x0059F2A0 and CPhysicsPart::Draw @0x0050D7A0) |
fce250ec exists ONLY on claude/cathedral-rendering-debug-47a417 (git branch -a --contains; git merge-base --is-ancestor fce250ec HEAD = false; git grep IsNeverDrawnByDegrade -- src = empty at HEAD) |
|
| D5 | Seal/vista coverage geometry: post-clear alpha can z-pass wherever the visible vista is not covered by a stamped seal; slice 6 proved the walk's exit views at this seam are "thin BANDS far narrower than the real opening" | retail is not exposed to this because the leaking content class isn't post-clear in the first place (D1/D2) | commit msg bb9212c7; PV sightline probe (campaign memory) |
|
| D6 | (regression candidate) straddle-classified emitters now emit pre-clear on interior roots — an interior emitter drained at the landscape flush is subsequently over-painted by the post-clear interior repaint | retail: root-cell emitters drain at the final flush, after interior geometry | mechanism prediction from f3a03efc/0d6cd5c0 + model §5; matches the owner's new "particles WITHIN the cathedral are wrong" report — unverified until probed |
The pre-existing #451 fix (owner-accepted 2026-08-27, docs/ISSUES.md:249-289)
had already implemented the D1-correct contract for exterior particles
("submits attached and ownerless exterior particles inside LScape::draw
for every PView root"). The FW2/FW3 window (git diff --stat e102fb36..37febd1f -- src/AcDream.App/Rendering = ~7,081 insertions:
the whole Walk/ tree, WalkFrameDriver, the static cutover) is the
regression window that displaced it.
5. Per-commit verdicts
37febd1f (slice 1 — interior outside-view slices from the walk): KEEP.
Correct single-source-of-truth move (retail has ONE visibility structure);
fixed a real dual-path desync (the #119-family grass flash) with a real
mechanism (old-apparatus fat/degenerate exit views + walk-indexed punch
fans). Not causal for the cathedral defect either way. Its per-view terrain
slice FAN was still non-retail — superseded by slice 6, which it should be
read together with.
c40aecfc (slice 2 — exit seals stamp the walk's flood): KEEP the code,
REJECT the diagnosis (wrong-mechanism). Stamping the walk's own flood's
exit portals is exactly retail (model §5 seal loop, pc:432785-6, and the
walk flood is conformance-proven against the traces). But the commit's
premise — falls emitters submitting POST-clear is "retail's own timing" —
is refuted by the traces: retail composes those cells pre-clear as
look-ins. Seals could never fix an over-draw whose correct rendering is
"drawn pre-clear with landscape depth"; at best they would z-reject the
falls and make them wrongly INVISIBLE through the aperture. The plan's
slice-2 paragraph (docs/plans/2026-08-30-campaign-fw-frame-walk.md
FW4 slice 2) carries the same false premise and should be corrected.
5f7ccdea (slice 3 — outside-stage predicate reads the walk flood):
KEEP. Feeding predicates from the walk's VisitedCells (root flood +
look-in floods — "all of whose objects retail draws inside LScape::draw,
pre-clear") is the correct retail-shaped direction and removed one more
old-apparatus consumer. Insufficient alone: it gates the DYNAMIC split,
and the falls turned out to be cell statics (slice 5's own finding).
f3a03efc (slice 4 — straddler dynamics' particles pre-clear, once):
WRONG-MECHANISM — revert once D1 lands. Retail has no exit-plane-straddle
classifier for emission timing; the cited rule ("retail submits an
emitter's polys at its object's FIRST draw — the landscape stage for
anything overlapping outdoor shadow cells") is right, but the
implementation substitutes a plane-straddle test for draw-site membership.
It under-covers emitters wholly OUTSIDE the exit plane (they never
"straddle" ⇒ stay post-clear ⇒ still leak) and over-covers interior
straddlers into the pre-clear drain where the interior repaint erases them
(divergence D6 — the likely source of the new in-cathedral particle
wrongness). Drawn-once bookkeeping (each owner emits exactly once) is worth
preserving in whatever replaces it.
0d6cd5c0 (slice 5 — straddling cell-statics' particles pre-clear):
WRONG-MECHANISM — revert once D1 lands. Its identification work is the
best of the six (falls = EnvCell stab statics; the shadow-cell rule
correctly cited at DrawBlock pc:430056-430064), but it ports the rule as
the same geometric straddle test instead of the actual membership question
("is this object drawn during the landscape scope this frame?" — for the
falls cells at these poses: yes, as building look-ins, regardless of any
plane test). Same under/over-coverage failure modes as slice 4.
bb9212c7 (slice 6 — interior roots draw landscape unclipped): KEEP.
Matches retail exactly: landscape content is view-CULLED, never
view-CLIPPED (model §3: the views feed only draw_check_blocks' in_view
union; set_view installs no GPU state; no scissor exists). Its probe
finding — falls submitted pre-clear with depth LESS still passed because
the scissored terrain had left the vista without depth — is the
load-bearing discovery of the round and independently confirms the thin-band
aperture geometry. It cannot, by itself, fix emitters that still submit
post-clear on other frames/poses, and it does not address D6.
6. Why the symptom survived all six fixes
- A wrong premise was locked in at slice 2 and never re-examined against
the traces the campaign itself captured. "The falls submit post-clear —
retail's own timing" is contradicted by
posed/terrace-center.log/posed/cathedral-arrival.log: retail's interior flood at these poses is ONE cell and the falls' owner cells are landscape-scope look-ins. Every subsequent fix (seals, predicates, straddle emission) tried to make a post-clear world safe instead of putting the content in the pre-clear world where retail has it. - The corrective classifier is not retail's rule. The straddle test (slices 4/5) approximates "overlaps outdoor shadow cells" with "sphere crosses the exit plane" — a strictly narrower predicate that misses fully-outside emitters (the falls hang OVER the lake) and wrongly captures interior straddlers.
- Mixed visibility sources during the staged cutover. Slices 2 and 3
each discovered another consumer still reading the OLD apparatus's flood
(seal set, outside-stage predicate). The FW3.2b-2 design explicitly runs
old visibility for dynamics beside the walk for statics
(
docs/plans/2026-08-30-campaign-fw-frame-walk.md); every such seam is a place where the walk's correct n=1 flood is not what production consumes. AD-19 (dynamics-last) keeps the weenie stalks post-clear regardless. - Two of the leaking content classes cannot be fixed by ANY ordering/seal work: the marker stalks should never be drawn at all (D4 — the degrade admission port is quarantined off-branch), and pre-slice-6 the vista had no depth to occlude against (D5) — so even correct pre-clear emission "passed" its z-test into stale color.
- Each fix was validated against the previous fix's failure, not against a falsifiable retail prediction. The probes pinned real facts (phase=pre/post, straddler classification) but the acceptance question was "did the leak stop" rather than "does the frame now match §2.1's shape at this pose" — so five plausible partial mechanisms shipped in one day without any landing the frame-shape divergence (D1/D2).
7. Recommended fix plan (mechanism-first)
Step 0 — probes before code (falsifiable predictions):
- P1: With
ACDREAM_PROBE_WALK_ROOTat the terrace pose on HEAD, the falls owners0x4F418012-15will log submission OUTSIDE the landscape scope (post-clear route or final drain) on defect frames, while the walk's own event stream visits their owner cells at BUILDING LOOK-IN turns (not in the interior flood, which stays n=1). If instead they already log landscape-scope submission + pre-clear drain on defect frames, D1 is falsified — investigate the drain's depth state (attachment, compare op) instead. - P2: The DAT stab tables will place stabs #0x12-0x15 in cell(s) OTHER than the frame's root cell at the defect poses (look-in-reached cells). If they are stabs of the root cell itself, the look-in theory is falsified.
- P3: Forcing the falls emitters to submit at their owner cell's look-in turn (landscape scope, drained at the pre-clear boundary flush) removes the over-draw at EVERY camera on interior roots, while the falls stay visible through the opening and terrain-occluded exactly as on outdoor roots.
- P4: Reverting slices 4/5's straddle emission (in favor of the walk-turn rule) makes the new "particles within the cathedral are wrong" report disappear (root-cell emitters return to the final drain).
- P5 (optional, owner-assisted): a cdb capture at the terrace with a
breakpoint on the particle-poly alpha-list insertion will show falls
polys entering the list BEFORE
DrawCells' depth clear on interior-rooted retail frames.
Step 1 — the emission-site port (fixes the falls). An object's
particles submit when and where the object itself draws in the walk:
look-in cell content and outdoor shadow-cell content submit during the
landscape turn and drain at the pre-clear boundary flush; root-flood cell
content submits at its cell turn and drains at the final flush. Retail
pins: appendix 811 (look-in DrawCells inside the landscape scope),
DrawBlock pc:430056-430064 (shadow-cell object draw), model §5 (the two
drain sites). Delete SphereStraddlesExitPlane-based emission (slices
4/5) in the same commit; keep the emit-once ledger.
Step 2 — finish the flood-consumer cutover (fixes the class). Every remaining consumer of the old apparatus's cell set (cell-statics particle owners, dynamics routes, prepare unions) reads the walk's per-turn visited sets. AD-19's interior-root half retires when dynamics draw at their cell's walk turn; if that is deferred, dynamics must at minimum gate on the walk's visited set so a non-visited cell's weenies cannot draw at all.
Step 3 — re-land the marker-degrade admission (fixes the stalks being
visible at all). fce250ec's mechanism (never-drawn degrade ladders:
get_degrade @0x0051E4B0; gfxobj[deg_level] != 0 gates) is a retail
port stranded on the quarantined branch. Re-land it cleanly on this branch
(fresh commit, not a cross-merge from quarantine), covering static AND
dynamic classifiers. If stalk-like shapes remain afterwards, identify by
guid before theorizing (they'd be weenies with a different model —
campaign-memory rule).
Step 4 — verification gates. The ten oracle fixtures stay green (the walk itself is already conformant); add a fixture-level assertion that the DRIVER's submission stream places look-in-cell content in the landscape scope (the current conformance compares walk events, not submission scope — that gap is how D1 shipped); then the owner matrix: terrace both cells, seam crossing, outdoor falls, interior candles, doorway flap, Holtburg exit.
8. Open questions
- Q1: Why are the walk's exit views at this seam thin bands — is the full visible opening authored as multiple portals (0/1/2/4) of which only portal 4 survives GetClip at these camera states, or is our clip/winding at fault, or does the chase camera sit outside the cell volume? (Slice 6 measured the symptom; the cause is unestablished. The PV probe's "panel ∪ solid covers every sightline" was measured at ≤6 m camera rises only.)
- Q2: Which EnvCell(s) own falls stabs #0x12-0x15, and do the falls additionally exist as dynamics (slice 3 probed entities "f4243/f4285" as [walk-dyn] — the relationship between those ids and the stab owners is unestablished). DAT parse owed.
- Q3: The exact HEAD drain/depth state of
ParticleRendererunder Vulkan (depth attachment, compare op, write mask) at each drain site — required to close P1's alternative branch. Code audit owed. - Q4: Whether
ShouldDrawParticles(@0x0050FE60) is evaluated per-frame or per-view in our port, and against which cell set at HEAD. - Q5: The gated clear's
portalsDrawnCountsemantics across frames (seals increment it AFTER the clear check — does the first interior frame after an outdoor frame skip the clear in retail?), and whether ourslices>0production gate is equivalent. - Q6: Whether the seal fans at HEAD still apply the old assembly's per-cell slice clips ("where present", slice 2) and whether that can shrink a seal below its authored polygon.
- Q7: The uncharacterized in-cathedral particle wrongness (owner
report #3) — D6 is a prediction, not a diagnosis; one probe frame with
[walk-part]/[walk-alpha]at a candle would settle it.
Reviewer: Fable. All decomp addresses cite the named 2013 build
(docs/research/named-retail/); trace lines cite files under
docs/research/2026-08-30-fw-walk-oracle/posed/; commit claims cite the
SHAs in §5; everything not directly read is marked unverified above.