From b3ef4027a22b6dc155e130947c41bcac41dcf3f3 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 3 Sep 2026 17:51:01 +0200 Subject: [PATCH] =?UTF-8?q?docs(render):=20ledger=20=E2=80=94=20post-hoc?= =?UTF-8?q?=20lenses=20all=20PASS=20on=20chunk=204=20round=202;=20hygiene?= =?UTF-8?q?=20chunk=20H=20dispatched?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5.1 --- docs/plans/2026-09-01-campaign-overhaul-world-solidity.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/plans/2026-09-01-campaign-overhaul-world-solidity.md b/docs/plans/2026-09-01-campaign-overhaul-world-solidity.md index 0b0c5705..788f3647 100644 --- a/docs/plans/2026-09-01-campaign-overhaul-world-solidity.md +++ b/docs/plans/2026-09-01-campaign-overhaul-world-solidity.md @@ -660,7 +660,7 @@ Update immediately when a slice changes state. Chat is not the ledger. | S1 Geometry | **CLOSED — G1 PASSED 2026-09-02** | `oh2-cellstruct-surface-contract.md` (§3.5 arbitrated on the binary) | chunk A `acf17246`; chunk B `b681717c`; hygiene `0840d5fb`; review fixes `e2543d0e`; G1 regression fix `8c6563ca` (segment/batch pairing) + its pin test (next commit) | lead verified both chunks against the named pseudo-C and the paired binary; two Opus lens reviews, 8 findings all verified by the lead and fixed; the review round's own upload-order change desynchronized cell-shell index segments from batches (first G1 launch: magenta/stretched/missing walls in every dungeon) and was root-caused and fixed by the lead before the re-gate | build 0/0; Content 213/213 (incl. PreparedPackage on the recipe-8 pak); Core 4,948/4,948 (one load-sensitive allocation test outside S1 passes alone); Bake 21/21; Launcher.Core 365/365; Runtime 1,884/1,884; App hermetic 6,757/6,757 | **G1 PASS**: Facility Hub stairs/doorways, Holtburg house interior, ordinary dungeon, town portal network all whole with correct materials on `8c6563ca` + recipe 8; cathedral shows the ORIGINAL symptom family (neighbor-cell walls drawn through portals over the room), explicitly outside G1 and carried to S3/S4 | dev pak recipe 8 (597,369,112 B; `acdream.recipe7.pak` kept); TOC delta explained; corpus scan old-only 3,197 (all untextured), new-only 0, unexplained 0 | | Capture | READY | §7 + `tools/walk-oracle/oh/README.md` | scripts committed `ebaa41df` + `14d8fe64`; lead resolved DBObj::m_DID=+0x28 and the cdecl alpha-function conventions; recon attach re-confirms | — | recon dt/x/uf dumps at session start | owner session ~1 h | before S3 | | S2 World graph | CLOSED — G2 PASSED (owner, 2026-09-03): Facility Hub PASS, Holtburg house PASS, cathedral leak unchanged/not worse (S3/S4 target), portal haze FIXED by chunk 6 and owner-confirmed; the terrain doorway-punch finding is carried to S4; the chunk-6 retail-lens review (Opus) returned no blocking finding; its one MAJOR (a cell reached through two portals got two particle turns per frame) and the minor items are fixed in the follow-up commit: frame-scoped particle-turn dedupe beside the shell dedupe, zero-emitter cells cost one count check, the scope-cost counter maintained on the cell path, the dead `OutdoorSceneParticleEntityIds` stub chain deleted through the composition root, AD-117 item 4 names the owner-cell substitution and the absent per-emission `AddPartToShadowCells`, and a sink-level pin that an emitter's cell membership is the owner's pose cell and survives the projection-visibility switch (the review's F7 one-frame eligibility lag is the per-frame view pass, documented in the pin). RETAIL AXIOM (owner, 2026-09-03, at the capture session, 2013 v11.4186 client on local ACE): standing on the cathedral stairs, RETAIL ITSELF shows part of the same artifact — the outside structure leaking into the interior — CONFIRMED in BOTH the 2013 v11.4186 client and the 2015 EoR client (owner switched clients to check), so the cathedral leak is retail behavior S3/S4 must REPRODUCE, not remove; the retail transcript at that pose is captured as `logs/oh-capture/cathedral-leak.{walk,parts,alphadepth}.log` (walk 5 frames with LC/SC landscape order, parts 3 frames, alpha-depth 5 frames, recon-verified offsets); owner's retail screenshot at the pose: an exterior wall slab cutting diagonally through the stair chamber over the interior ramps (`logs/oh-capture/cathedral-leak.retail.png`, owner-saved) | `s2-membership-ownership-map.md` (`e7ad25a7`) + Contracts A/B; closeout evidence §8/§9 | chunk 1a `059b8883`; chunk 1b `5a2792d6`; chunk 2 `707d2803` (render statics borrow the registry's retail array; render flood deleted); chunk 3 `afbd2410` (one flood per registration feeds collision rows and render entries; staged SetPosition carries both products); chunk 4 `75ea269d` (movement publishes from the transition's cells; children inherit at registration); chunk 5 + closeout `c94a1a40` (borrowed per-cell views, render-only registration, sweeps/fallbacks deleted; reflood forwards the part array; NON-COLLIDING DAT STATICS register render-only from both publishers; the dual-review fix batch: Suspend clears the retail product, attach/detach advance the mutation revision, an attached child never floods on its own, RemoveLandblock/RetireOwnerFromLandblock prune retail rows, render-only owners move with their destination cell (retail's zero-sphere `find_cell_list` 0x0052b4e0, verified statically 2026-09-03 — AD-117 item 1 dropped), empty part array == null, per-move closures removed, EnvCell shells out of the entity-id index, index predicate compares the id, dead per-cell scene indices deleted) | lead corrected 1a's route decision before landing; chunk 2 verified by the lead; chunk 5's agent report missed the non-colliding-static population (found by the self-gate PIXEL DIFF, not by eye: Facility wall panels grey); S2 dual review (arch + retail lens, Opus) produced 12 + 7 findings, every one lead-verified against the source before an edit; the four BLOCKING/MAJOR lifetime gaps were real | at `c94a1a40`: Core 4,984/4,984; Content 214/214; Runtime 1,884/1,884; App hermetic lane 6,760/6,760; App InstalledDat 217 pass / 1 skip / 2 pre-existing #383; App Windows 1/1 | G2 PROVISIONAL PASS. Self-gate runs (kit `ea546f38`, pwsh): `logs/selfgate-20260902-231426-baseline-g1-binary` (reference), `…231642-s2-chunk3`, `…233845-s2-chunk4` (identical), `logs/selfgate-20260903-002632-s2-chunk5-reflood` (FAIL: Facility wall panels grey, left-wall mean RGB 29,26,23 vs baseline 65,17,21 — missing non-colliding statics), `logs/selfgate-20260903-010022-s2-review-fixes-3` (candidate: panels back at 79,20,25 = chunk-3/4; cathedral 13.6% / Facility 15.0% / house 13.4% px differ vs baseline, the chunk-3/4 band; graceful logout, zero exceptions). Membership-probe run `logs/selfgate-20260903-003013-s2-chunk5-membership-probe`: `[walk-membership]` fired only on two transient Holtburg login frames, never in Facility Hub or the cathedral. Connected R6 soak on the chunk-4 build `6717a3e5` (`logs/connected-r6-soak-20260902-234016.report.json`): 9 destinations in 511 s, zero invariant failures, graceful exit — route PASS (its `-CollisionShadowEvery` referee is the obsolete I5 graph-vs-flat comparator; retire in S5). Connected R6 soak on the FINAL S2 build (`logs/connected-r6-soak-20260903-010403.report.json`, binary matches source, exit 0, graceful=True): 9 canonical checkpoints, 0 failures, 10 warnings (server-side population drift + DAT VFX table messages), 522 s — route PASS. OWNER G2 CHECK 2026-09-03 (client at `4b0b29e4`): Facility Hub PASS, Holtburg house PASS; cathedral: the original leak unchanged, NOT worse (S3/S4 target, G2 bar met); TWO NEW OWNER FINDINGS block G2 closure — (a) parts of buildings leak through terrain outdoors in Holtburg — owner screenshot shows doorway-sized fragments of the houses on the terrace BELOW showing through the hill; mechanism identified: `PortalDepthMaskRenderer` draws every visited cell's `OtherCellId == 0xFFFF` portal fan (`RetailPViewPassExecutor` `DrawDepthFan`) with depth compare `Always` + depth write, so a building doorway BEHIND terrain still punches far depth through the hill and the interior draws through the hole; retail's far punch cannot be `Always` against terrain — the exact z-func is S4's first question (the #117 punch stencil is already on S4's delete list; the retail-world contract §5.4 wording must be re-read at the capture). Pre-existing (not an S2 regression), assigned to S4; (b) the purple portal-exit haze on the character no longer appears on arrival — ROOT CAUSE FOUND (instrumented runs `logs/selfgate-20260903-053731-haze-candidate`, `…-054153-haze-candidate-2`, chunk-4 control `…/bisect-chunk4/logs/selfgate-20260903-054328-haze-chunk4`): the server keeps the player Hidden until acdream sends LoginComplete at reveal `complete` (retail-correct); the Hidden-state script's emitters spawn in the arrival cell at `materialized`, are view-eligible at `world-visible`, and are never DRAWN (frame `h02-arrive-400ms`: room, no character, no cloud) because the walk draws an owner's emitters only through the owner's registry rows and a hidden owner's shadow is suspended; the deleted chunk-5 fallback used to carry them. Retail gives every emitter its OWN cell membership (`add_particle_shadow_to_cell` 0x00514a70, one shadow in its own cell, no clip planes, drawn at that cell's turn regardless of the parent's hidden state) — the branch AD-117 item 4 had deferred as 'no production path'. Fix = S2 chunk 6 `f6b4584b` (packet §10): `ParticleSystem` per-pass cell→handles index + `DrawForCell`; the walk draws particles BY CELL at the existing turns; every owner-union particle path deleted; the post-replay per-cell pass deleted (it double-submitted the root flood — the implementer flagged it, the lead verified `EmitCellContentsTurn` fires `CellParticles` for root-flood and look-in cells alike); AD-117 item 4 → port note; temporary probes removed. VERIFIED: `logs/selfgate-20260903-062522-haze-chunk6` frame `h02-arrive-400ms` shows the purple cloud at the character in Facility Hub; three-pose self-gate `logs/selfgate-20260903-062615-s2-chunk6` in the accepted band (cathedral 12.7% / Facility 15.1% / house 13.9% px vs baseline, wall-panel mean 79,20,25), zero exceptions. Gates at `f6b4584b`: Core 4,987/4,987; Content 214/214; Runtime 1,884/1,884; App hermetic 6,760/6,760; App InstalledDat 217 / 2 pre-existing #383. Owner re-check of the haze: CONFIRMED FIXED 2026-09-03 ("Ok yeah it is fixed now"). Morning handoff: `docs/research/2026-09-01-overhaul/2026-09-03-g2-morning-handoff.md` | owner double-checks G2 (handoff checklist); then the owner capture session (the S3 packet §7 names the two traces); then S3 | -| S3 Walk | CHUNK 2 LANDED 2026-09-03 (`be9b4c1f` + comment `2f5373c7` + review follow-ups `434a7df2`); CHUNK 3 DISPATCHED (contract §9); contracts §8–§11 written; CAPTURE SESSION COMPLETE (five poses, fixtures at `docs/research/2026-09-01-overhaul/oh-capture/`). Chunk 2 verification: three Opus lenses (retail decomp / driver correctness / build+test truth) all PASS — one MINOR (the off-by-default seal-skip probe had gained a second effect through the seal count → probe DELETED in `434a7df2`), notes on the Collect/Replay consume-vs-re-arm split (no retail analogue, documented), the enumerated-vs-degenerate-guarded seal count (inert: the consumer is `!= 0`), and two weak-but-in-spec pins (the interior PView flag is now wired explicitly). Implementer deviations (accepted): the two-floods-in-one-Collect whole-once test stays at ov=0 (no retail analogue for two root floods per frame); R1 pinned as field wiring, not a look-in integration fixture. Gates at `be9b4c1f`/`434a7df2`: App hermetic 6,765/6,765; focused 297/1 skip; InstalledDat 241 pass / 1 skip / 3 known (2× #383 + TowerAscent KnownFailure). Self-gate `logs/selfgate-20260903-075507-s3-chunk2` at `4c364412` (four poses incl. the NEW owner-supplied Holtburg terrain-leak pose): vs the chunk-6 run 1.8% / 4.0% / 1.6% px differ — ONLY the player's idle pose, the Facility drudge, and daylight through the Holtburg doorway (diff sheet inspected), no structural change; Facility wall-panel mean (78,20,25) = panels present; zero exceptions. `04-holtburg-terrain-leak.png` shows the doorway-sized fragments through the hill = chunk 3's BEFORE reference. Chunk 3 contract finding: the ported ring order, closest-cell table and ring-to-LOD mapping reproduce every captured LC/SC sequence at both cathedral poses with zero mismatches (LOD cell ids are `x*8+y+1` in LOD coordinates). Chunk 2 finding: retail gates the landscape flush, stamp advance, Z clear and exit seals on `outside_view.view_count > 0` (`PView::DrawCells` 0x005a4840) and the Z clear additionally on the persistent seal counter `D3DPolyRender::portalsDrawnCount` (fed by exit seals alone in the building path) — acdream's unconditional clear/seals and the `_skyDrawnThisFrame` proxy are the divergence chunk 2 retires | `s3-walk-ownership-map.md` (retail table, current owners, four chunks, review lenses, gate, the three exact captures to ask for) + built-mesh/world contracts | — | — | — | folded into G3 | CHUNK 4 IMPLEMENTED `6ba4b0b8` (cherry-picked `62c2231d`): the per-slice weather loop, the dead clip routing, the slot-list classifier shape, six cathedral probes + rows, equivalence pins for the kept seal/punch clips, and chunk 1's O1–O4 (the weather `OC` printed at Collect time with real pins); review: retail lens PASS, build/renderer lenses FAIL on the once-per-frame weather pin (counts calls, so a loop still passes) plus leftovers → FIX ROUND 1 (§10.4 K1–K8, incl. K4: the sky drawn once unclipped like terrain/weather) = `d60ca4ea0`, FAILED all three lenses 2026-09-03: BLOCKING (all three) the draw-side weather gate is unpinned — restoring the round-0 gate `clipAssembly.OutsideViewSlices.Length != 0` leaves every lane green, and the transcript test's doc falsely claims to be the draw-side pin; MAJOR: K4 kept `BeginScissor/EndScissor`/`NdcScissorRect` on the false comment 'ClearInteriorDepth still ends an active scissor' (zero producers remain); `sky.vert:88-102` still says retail clips the sky and cites the deleted `SetTerrainClip`; the K6 pin runs through `ClipFrameAssembler.Assemble` (zero production callers; the slice construction is duplicated at :394/:533); MINOR: K3 replaced one per-frame publish with a 144-byte zeroed ring allocation per terrain flush + per sky draw, kept dead `_terrainBytes` state for an unfailable pin, left `ClipFrame.cs:140` naming the deleted method, left `Issue130DoorwayStripTests` pinning the deleted scissor, no `DrawWalkSky` loop-shape pin, and the commit message deferred the mutation texts. → FIX ROUND 2 (§10.5 L1–L9, the LAST allowed: pin the gate's CONDITION in IL with three mutations; delete the scissor stack and the dead TerrainClip UBO from the three shaders with recompiled SPIR-V; one shared outside-view slice constructor for the K6 pin; #130 test cut to what production reads; sky loop-shape pin; every mutation text inline) contract `65675e77a`; the fixer landed round 2 as `2e3ae95ff` in `s3-chunk4-impl` (hermetic 6,827/6,827; InstalledDat 244/1/4 known; five mutation checks inline; lead-verified: the 570-line `WorldScenePassExecutor.cs` diff is a CRLF→LF normalization around two deleted `BindTerrainClip()` calls, and Vulkan legality rests on `VulkanFrameBindings` seeding every declared uniform binding with the dummy range). LEAD SELF-GATE of round 2 (Release at `2e3ae95ff`, `logs/selfgate-20260903-153812-s3-chunk4-r2-validation` under the chunk-4 worktree, Khronos validation layer forced through the loader): 00-login / 01-cathedral-stairs / 02-facility-stairs / 03-holtburg-house / 04-holtburg-terrain-leak all PASS provisional — vs the chunk-3 r2 baseline the cathedral, facility and house frames differ only at actors and the player (4.4 / 1.7 / 4.5 %), the hill frame differs 80 % from a five-hour daylight shift with the terrain-punch fragments still gone and no sky through interior walls at the house pose; validation: ONE error (`VUID-VkShaderModuleCreateInfo-pCode-08740`, five fragment shaders declare `DemoteToHelperInvocation` without the feature — pre-existing, the SPIR-V set is identical on the tip; filed #459) and ten pre-existing 'vertex attribute at location 1 not consumed' perf warnings; nothing from round 2. A SAME-TIME tip baseline (`logs/selfgate-20260903-154036-tip-validation-baseline`, two minutes later, same validation set: 2 errors / 10 perf warnings) tightens the diff to 1.2 / 3.3 / 1.3 / 15 % with the hill's 15 % confined to the drifting sky band and the player — terrain, trees and houses identical. Three-lens re-review: FIVE attempts (Opus, then the session model, parallel then sequential) killed by API overload (529) at zero tokens over ~90 minutes. LEAD VERIFICATION instead (recorded here so the owner can audit it): L1 pin read + M1 re-performed by hand (fails `Expected: typeof(WalkFrameDriver) / Actual: typeof(ClipFrameAssembly)`, passes restored); L4 one `AppendOutsideSlice` helper called from both `Assemble` and `ReassembleOutsideViewFromWalk`, the pin drives `BeginWalkFrame` + `ReassembleOutsideViewFromWalk`; L2 zero `BeginScissor/EndScissor/NdcScissorRect` hits, the pass encoder sets the full scissor at pass begin (`VulkanGpuPassEncoder.cs:87`) and nothing narrows it; L3 `VulkanFrameBindings` seeds every declared uniform binding with the dummy range (`VulkanFrameBindings.cs:128-130`), binding 2 now bound by the portal-depth clip only, the 34 shader tests (descriptor contract / manifest / SPIR-V validator / sky layout) pass; L5/L6/L7 comments truthful (sky.vert:88-99, both terrain shaders, `Issue130DoorwayStripTests` cut to the plane half the punch fans consume); L8 pin present; lanes reproduced (hermetic 6,827/6,827; InstalledDat 244/1/4 known); the `TerrainClipMode` enum stays for `WorldSceneRenderer`'s flat-path flag (documented). **CHUNK 4 LANDED** on the campaign branch as `ff607a1e0` (round 1) + `7df0b94c9` (round 2); the three independent lenses run POST-HOC as soon as subagent capacity returns and BEFORE the S3 review is dispatched — a blocking post-hoc finding becomes an S3-review item, not a third chunk round. Register: AD-17 rewritten and AP-117 narrowed in the landing docs commit (the scissor fallback they described no longer exists). **G3 SELF-GATE part A (lead, 2026-09-03 16:20, Release at `5b43d8d55` = code `7df0b94c9`, `logs/selfgate-20260903-162027-g3/artifacts/screenshots/`, Khronos validation layer on — same two pre-existing #459 errors, nothing new):** 00-login PASS; 01-cathedral-stairs PASS (retail's own exterior slab reproduced, nothing extra); 02-facility-stairs PASS; 03-holtburg-house PASS (no sky through walls); 04-holtburg-terrain-leak PASS (no house fragments through the hill); 05-cathedral-south-0106 PASS and 06-cathedral-south-0104 PASS (player and walls whole, no depth inversion at the transition); 07-cathedral-stairs-0107 PASS and 08-cathedral-stairs-0112 PASS (every slab stable, no wall-textured triangles); 09-cathedral-terrace-edge PASS (the #456 pose: terrace, arches and the lit lantern whole, no panel loss); 10-facility-015E PASS and 11-facility-015F PASS (stairs, pillars and the drudge stable). 12-nanto-falls INCOMPLETE: the reveal for `0xE43D001E` outran the route's 90 s wait (probe timeout at `client.log:709`, readiness at `:714`, world-visible at `:718`), the probe aborted before its `close-client`, and the client then ignored two external close requests (filed #460); re-run as part C with a 300 s wait. NOT COVERED by the self-gate (owner items): the cathedral wall actor (two clients), the exterior ramp (no coordinates in the matrix), Tusker Island, the Holtburg town route beyond poses 03/04, and the two ordinary dungeons (unnamed). All verdicts PROVISIONAL until the owner looks. **G3 SELF-GATE part B (lead, 2026-09-03 16:56, the four retail capture poses as PLAYER poses — each walk log's frame-2 `P` line is the camera eye, so the player lands on the floor below it with the camera's yaw; `logs/selfgate-20260903-165634-g3b/artifacts/screenshots/`, validation on, same #459 error only, graceful logout confirmed):** 13-capture-terrace-edge PASS (cathedral exterior wall and grass whole); 14-capture-cathedral-arrival PASS (lit lantern, walls whole, retail's own exterior slab at the lower left — the axiom, nothing extra); 15-capture-holtburg-doorway PASS (the player lands outside the house: house, door, NPC, hills and water whole); 16-capture-foundry-deep PASS (walls and the portal glow whole). PROVISIONAL. **G3 SELF-GATE part C (lead, 2026-09-03 17:04, Nanto with a 300 s readiness wait, three headings; `logs/selfgate-20260903-170456-g3c/artifacts/screenshots/`, validation on, same #459 error only, graceful logout confirmed):** 12-nanto-falls PASS (hut, torches and the falls' spray at the left edge whole); 12b-nanto-falls-east PASS (the falls visible behind the pier, torches and rocks — the houses occlude, the falls persist); 12c-nanto-falls-west PASS (pagoda, trees and hills whole). The matrix invariant is sampled at three static headings, not a continuous rotation — the owner's spin is still the real test. Part C's FIRST attempt (`selfgate-20260903-165745-g3c`) never left portal space: the Login reveal into the foundry stalled `ready=True materialized=False` for 180 s (#462, intermittent — the next two logins into the same cell materialized), the aborted script requested a graceful logout, and a late local-player motion update then crashed the client on the retired movement controller (#461, exit `0xE0434352`). **G3 self-gate summary:** 20 of 20 captured frames PASS provisional (poses 00–16 plus the two extra Nanto headings); three matrix rows remain owner-only (wall actor, exterior ramp, Tusker) and the ordinary-dungeon row is unnamed; three lifecycle defects filed from the run (#460, #461, #462) and one validation defect (#459). **#459 FIXED** the same evening (`e33fd2472`, lead — a one-feature enable in the existing Vulkan 1.3 chain plus the required-feature gate): the four-pose validation launch at that commit (`logs/selfgate-20260903-171009-fix459-validation`, `logs/vk-validation-459.log`) reports ZERO validation errors; ten pre-existing unconsumed-vertex-attribute perf warnings remain (noted in #459). The validation layer is now a clean signal for every later gate. S4 packet DRAFT written (`s4-depth-alpha-packet.md`): S3 chunk 2 already delivered S4's chunk-1 latch/gate/seal scope; S4's body is the two-list alpha cutover. **#458 RESOLVED 2026-09-03** (`37e42aafc`, register AD-118): two live cdb captures at the Holtburg doorway (`oh-capture-blockset` / `oh-capture-blockcheck` templates) show retail tests `a9c9` twice a frame and that acdream's replay at the same P pose reproduces the interval sentinels, the four edge planes and both verdicts — the fixture's extra `LC:a9c9` is a 0.5 % edge-plane precision boundary (one far block, one corner, one plane; retail's clip heights 300.4/310.2 m vs ours 298.8/308.5 m), not a walk defect; the KnownFailure row stays as the standing example; the tip with chunk 4 cherry-picked (`62c2231d`, docs `386b1327`) is green: hermetic 6,829/6,829, InstalledDat 244/1 skip/4 known, zero `PROBE_CATHEDRAL` rows. Prior: CHUNK 4 DISPATCHED (worktree `s3-chunk4-impl` at `38cedde0`, §10 + chunk 1's carried O1–O4 on the weather path); then the S3 review round (§5; script ready) and the G3 self-gate over the §10 matrix + the four capture poses + a rainy interior pose. CHUNK 1 IMPLEMENTED `079483bb6` (worktree `s3-chunk1-impl`: the print-only `ACDREAM_DUMP_WALK_TRANSCRIPT` emitter, EC/OC parsing + parts/alpha-depth readers, the five OH captures as fixtures, the four kit poses in the still-frame conformance harness — the foundry-deep row exposed that its exit chain reaches 12 real buildings the FW0 stub landscape never had, fixed with the full DAT-built world; hermetic 6,814/6,814; InstalledDat 245/1 skip/3 known); its three-lens review FAILED on real findings → FIX ROUND 1 in progress (§11.5 G1–G10): a vacuous flag-off pin (one frame + a parser that drops the open frame), LC/SC LOD-id arithmetic outside the flag, no flag-on LC/SC/BLD round trip, and — the transcript gate's first two real catches — `SC` printed AFTER `BLD` (retail's `DrawSortCell` entry precedes `DrawBuilding`, which it calls) and the trailing outdoor `OC ` that is retail's weather pass (`GameSky::Draw` 0x00506ff0 → `DrawObjCellForDummies(after_sky_cell)` 0x005070da); every new pin now carries a mutation check. ROUND 1 LANDED (`02a82881` chunk + `be81475c` round 1; four mutation checks documented) — MILESTONE: at the eight-kind level (LS/LC/SC/BLD/DI/DC/EC/OC) the walk reproduces retail's transcript EXACTLY for three of the four kit poses (terrace-edge, cathedral-arrival, foundry-deep); the fourth, holtburg-doorway-still frame 2, diverges at token 165: acdream admits land block `a9c9` (`LC/SC a9c90001`) that retail does not draw at that position — a `WalkLandscape.CheckBlocks` block-visibility question at a LOD-ring boundary, filed as #458 and tagged `Status=KnownFailure` on its conformance row (the InstalledDat lane therefore shows FOUR known failures until #458 is resolved; it is an OPEN S3 item for the review round, not a chunk-1 defect). The re-review (three lenses) FAILED on: the weather `OC` printed per outside-view SLICE inside `DrawLandscapeSliceLate` (2–4 lines for an interior root with the player outside; retail prints one) with the viewer cell instead of the after-sky land cell and NO pin/mutation check; G9's second comment site untouched; the oracle side's EC/OC derived from DC lists (non-discriminating — retail's literal EC/OC lines must be compared); the unconditional `OnSortCellTurn` validation ahead of the flag read; the launch-options volume figure (measured ≈1,200–1,400 lines/outdoor frame). → FIX ROUND 2 (§11.6) LANDED `88c70072` (fixer `ea4da8c7`): H2–H6 closed with two documented mutation checks (the literal EC/OC comparison now fails on a reversed derivation at cathedral-arrival token 1241); H1's production change is retail-faithful and STAYS (the weather mesh is drawn ONCE, unclipped, after the landscape — `GameSky::Draw(sky,1)` 0x00506ff0 / 0x005070da — instead of N scissored per-doorway draws; the ledger notes it here because no capture/visual gate has looked at rain since; the G3 self-gate adds a rainy interior pose). The re-review (three lenses) still FAILS H1's PIN: the IL-offset order check cannot fail when `DrawWeatherOnce` is moved back inside the slice loop (the reviewers reproduced the round-1 regression with the suite green), nothing pins the OC's cell argument (`ViewerCellId` vs `PlayerCellId`), and for an INTERIOR root the weather `OC` prints at the frame's end (the Replay-time LandscapeFlush leaf) where retail prints it between the landscape and the flood — plus a dead `EnableClipDistances` in `DrawLandscapeSliceLate`. CHUNK 1 STOPS HERE per plan rule §5 (two fix rounds used) and is written up, not forced: the emitter, the parser/readers, the fixtures, the offline diff and the three exactly-reproducing poses are LANDED and useful; OPEN ITEMS carried: O1 a real once-per-frame pin for the weather OC (observe the printed lines through the executor's post-loop call, not IL offsets); O2 pin the OC cell argument = the `P` cell; O3 interior-root OC position (print it at the Collect-time landscape turn's end, i.e. where `LandscapeFlush` is emitted, so the transcript order matches retail's `GameSky::Draw(1)` slot; the DRAW itself stays at Replay); O4 the dead `EnableClipDistances`; O5 #458 (see the degrade note below). O3/O4 fall naturally to chunk 4 (it deletes the per-slice loop and gives the weather draw its single home); O1/O2 are for chunk 4's review or the S3 review round. NOTE on #458 (transcript lens): the FW0 doorway row pins `DegradeMultiplier = 0f` because that capture ran under cdb load with `Render::deg_mul` depressed; the OH doorway capture ALSO ran under cdb (this session) — the extra `a9c9` block may be a degrade-level difference rather than `CheckBlocks`; #458 amended. Lanes at `88c70072`: hermetic 6,823/6,823; InstalledDat 244/1 skip/4 known (2× #383, TowerAscent, #458). CHUNK 3 LANDED 2026-09-03 (`4ee2866a` implementer + `651badc2` fix round 1 + `e10765aa` review follow-ups). SELF-GATE `logs/selfgate-20260903-100043-s3-chunk3` at `e10765aa`: the Holtburg terrain-punch fragments are GONE at the owner's pose (`04-holtburg-terrain-leak.png`, clean hill) with NO depth-function change — the §9 R4 order-only hypothesis holds; cathedral / Facility / house structurally unchanged (diffs 10.5% / 0.9% / 7.0% vs the chunk-2 run = dawn-vs-night lighting + actors; the cathedral's upper opening shows sky in both runs; Facility wall-panel mean (79,20,25)); zero exceptions. Re-review after fix round 1: three Opus lenses PASS (remaining minor/notes fixed in `e10765aa`: enum doc, alpha-mark comment, pending-batch clears, try/finally around the terrain-frame completion, particle doc order, the outdoor pin now observes a cell turn). Gates at `e10765aa`: App hermetic 6,795/6,795; focused 335/1 skip; InstalledDat 241/1 skip/3 known; Core Vfx 109/109. PERF GATE FAILED at `e10765aa` (soak `logs/connected-r6-soak-20260903-100400` vs the S2-final `…-010403`, same runner, both Uncapped=false): CPU p50 31.2 ms flat at every outdoor destination (baseline 2.0–15.5), FPS 32 (baseline 51–452), GPU p50 2–4× — ~500 terrain submissions/frame because a StreamMark after nearly every land cell (scenery statics) splits the batch. FIX ROUND 2 (§9.7, the last allowed): an opaque ordered-stream flush is not a terrain flush point (opaque-vs-opaque is depth-resolved; only punches, alpha drains, clear/seals, sky, shells and emitting particle turns split), with a punch-order pin and the soak re-run as the gate. ROUND 2 LANDED (`896c63fe` fixer + `74ac7aa2` lead follow-up): the StreamMark arm no longer flushes the terrain batch (pipeline-state citation: the ordered stream is opaque-only, `GpuBlendMode.None`, depth test+write — `WalkStaticStreamPopulator.cs:179`, `WbDrawDispatcher.OrderedStream.cs:569-571`, `WbDrawDispatcher.Rhi.cs:240/245/343`); three lenses: driver PASS, order and build FAIL on ONE finding — the re-expressed StreamMark pin was vacuous (an empty landscape view admitted no statics, so no StreamMark fired) — fixed by the lead in `74ac7aa2` (real full-viewport view + trace: two FLUSH lines precede the merged three-cell batch); hermetic 6,796/6,796 at `74ac7aa2`. GATE PASSED 2026-09-03: (a) four-pose self-gate `logs/selfgate-20260903-104516-s3-chunk3-r2` at `74ac7aa2` — the Holtburg fragments still gone in full daylight, cathedral/Facility/house 2.3% / 1.3% / 1.9% px vs the chunk-3 run (actors + weather), wall-panel mean (79,20,25), zero exceptions; (b) PERF: the first two soaks (`…-100400` at `e10765aa`, `…-104718` at `674fa8e8`) read a flat CPU p50 31.2 ms / 32 FPS at EVERY destination — an ENVIRONMENT signature, not a workload one: the S2 baseline soak (`…-010403`) ran at 01:04 on the console (only the AMD adapters listed) while today's ran under the owner's RDP session (`query session` → `rdp-tcp#0 Active`; `VideoControllers` gained a Microsoft Remote Display Adapter), whose presentation cadence caps every frame at ~31 ms. Honest A/B: the S2-final binary (`78068b2c`, worktree `.claude/worktrees/s2-final-ab`, kept for future same-session baselines) soaked under the SAME RDP session (`s2-final-ab/logs/connected-r6-soak-20260903-105827`) reads the identical 31.2 ms / 32 FPS everywhere; GPU p50 S2-final vs chunk-3 round 2: Caul 10.6→7.7, Sawato 0.6→0.6, Rynthid 1.7→2.0, Aerlinthe 2.4→3.1, Holtburg 3.8→4.4, Caul return 9.8→12.0, Caul plateau 9.5→8.6 — every destination within the §9.7 gate (≤1.3× +0.5 ms); round 2's batching cut Caul's GPU from round 1's 12.9 to 7.7. CHUNK 3 CLOSED (implementer `4ee2866a`, fix round 1 `651badc2`+`e10765aa`, fix round 2 `896c63fe`+`74ac7aa2`; two fix rounds used, the plan's maximum). Lesson filed: [[feedback_soak_numbers_need_same_session_type]]. History — chunk 3 fix round 1 (worktree `s3-chunk3-impl`: implementer commit `671eb3ad`; the three-lens review found three BLOCKING defects — terrain slot map keyed `0xXXYYFFFF` vs the walk's `0xXXYY0000` (no terrain drawn at all), adjacent-same-landblock batching that can never merge because retail's own sort turn interposes a particle event after every land cell (~530 terrain submissions/frame), and the timing diagnostic moved inside the per-batch loop — plus the deleted `TERRAIN:0` pins, an inverted mechanism comment, a vacuous T2 assertion and a stale oh1 row; all lead-verified real; §9.6 is the fix contract: normalized slot key, ONE pending terrain batch across landblocks flushed only before a submitting leaf with empty particle turns kept open (order-identical by construction), one timing sample per frame, LandCell driver pins). Round 1 of the two the plan allows. After it: chunk 1 (§11), chunk 4 (§10), the S3 review round (§5) | +| S3 Walk | CHUNK 2 LANDED 2026-09-03 (`be9b4c1f` + comment `2f5373c7` + review follow-ups `434a7df2`); CHUNK 3 DISPATCHED (contract §9); contracts §8–§11 written; CAPTURE SESSION COMPLETE (five poses, fixtures at `docs/research/2026-09-01-overhaul/oh-capture/`). Chunk 2 verification: three Opus lenses (retail decomp / driver correctness / build+test truth) all PASS — one MINOR (the off-by-default seal-skip probe had gained a second effect through the seal count → probe DELETED in `434a7df2`), notes on the Collect/Replay consume-vs-re-arm split (no retail analogue, documented), the enumerated-vs-degenerate-guarded seal count (inert: the consumer is `!= 0`), and two weak-but-in-spec pins (the interior PView flag is now wired explicitly). Implementer deviations (accepted): the two-floods-in-one-Collect whole-once test stays at ov=0 (no retail analogue for two root floods per frame); R1 pinned as field wiring, not a look-in integration fixture. Gates at `be9b4c1f`/`434a7df2`: App hermetic 6,765/6,765; focused 297/1 skip; InstalledDat 241 pass / 1 skip / 3 known (2× #383 + TowerAscent KnownFailure). Self-gate `logs/selfgate-20260903-075507-s3-chunk2` at `4c364412` (four poses incl. the NEW owner-supplied Holtburg terrain-leak pose): vs the chunk-6 run 1.8% / 4.0% / 1.6% px differ — ONLY the player's idle pose, the Facility drudge, and daylight through the Holtburg doorway (diff sheet inspected), no structural change; Facility wall-panel mean (78,20,25) = panels present; zero exceptions. `04-holtburg-terrain-leak.png` shows the doorway-sized fragments through the hill = chunk 3's BEFORE reference. Chunk 3 contract finding: the ported ring order, closest-cell table and ring-to-LOD mapping reproduce every captured LC/SC sequence at both cathedral poses with zero mismatches (LOD cell ids are `x*8+y+1` in LOD coordinates). Chunk 2 finding: retail gates the landscape flush, stamp advance, Z clear and exit seals on `outside_view.view_count > 0` (`PView::DrawCells` 0x005a4840) and the Z clear additionally on the persistent seal counter `D3DPolyRender::portalsDrawnCount` (fed by exit seals alone in the building path) — acdream's unconditional clear/seals and the `_skyDrawnThisFrame` proxy are the divergence chunk 2 retires | `s3-walk-ownership-map.md` (retail table, current owners, four chunks, review lenses, gate, the three exact captures to ask for) + built-mesh/world contracts | — | — | — | folded into G3 | CHUNK 4 IMPLEMENTED `6ba4b0b8` (cherry-picked `62c2231d`): the per-slice weather loop, the dead clip routing, the slot-list classifier shape, six cathedral probes + rows, equivalence pins for the kept seal/punch clips, and chunk 1's O1–O4 (the weather `OC` printed at Collect time with real pins); review: retail lens PASS, build/renderer lenses FAIL on the once-per-frame weather pin (counts calls, so a loop still passes) plus leftovers → FIX ROUND 1 (§10.4 K1–K8, incl. K4: the sky drawn once unclipped like terrain/weather) = `d60ca4ea0`, FAILED all three lenses 2026-09-03: BLOCKING (all three) the draw-side weather gate is unpinned — restoring the round-0 gate `clipAssembly.OutsideViewSlices.Length != 0` leaves every lane green, and the transcript test's doc falsely claims to be the draw-side pin; MAJOR: K4 kept `BeginScissor/EndScissor`/`NdcScissorRect` on the false comment 'ClearInteriorDepth still ends an active scissor' (zero producers remain); `sky.vert:88-102` still says retail clips the sky and cites the deleted `SetTerrainClip`; the K6 pin runs through `ClipFrameAssembler.Assemble` (zero production callers; the slice construction is duplicated at :394/:533); MINOR: K3 replaced one per-frame publish with a 144-byte zeroed ring allocation per terrain flush + per sky draw, kept dead `_terrainBytes` state for an unfailable pin, left `ClipFrame.cs:140` naming the deleted method, left `Issue130DoorwayStripTests` pinning the deleted scissor, no `DrawWalkSky` loop-shape pin, and the commit message deferred the mutation texts. → FIX ROUND 2 (§10.5 L1–L9, the LAST allowed: pin the gate's CONDITION in IL with three mutations; delete the scissor stack and the dead TerrainClip UBO from the three shaders with recompiled SPIR-V; one shared outside-view slice constructor for the K6 pin; #130 test cut to what production reads; sky loop-shape pin; every mutation text inline) contract `65675e77a`; the fixer landed round 2 as `2e3ae95ff` in `s3-chunk4-impl` (hermetic 6,827/6,827; InstalledDat 244/1/4 known; five mutation checks inline; lead-verified: the 570-line `WorldScenePassExecutor.cs` diff is a CRLF→LF normalization around two deleted `BindTerrainClip()` calls, and Vulkan legality rests on `VulkanFrameBindings` seeding every declared uniform binding with the dummy range). LEAD SELF-GATE of round 2 (Release at `2e3ae95ff`, `logs/selfgate-20260903-153812-s3-chunk4-r2-validation` under the chunk-4 worktree, Khronos validation layer forced through the loader): 00-login / 01-cathedral-stairs / 02-facility-stairs / 03-holtburg-house / 04-holtburg-terrain-leak all PASS provisional — vs the chunk-3 r2 baseline the cathedral, facility and house frames differ only at actors and the player (4.4 / 1.7 / 4.5 %), the hill frame differs 80 % from a five-hour daylight shift with the terrain-punch fragments still gone and no sky through interior walls at the house pose; validation: ONE error (`VUID-VkShaderModuleCreateInfo-pCode-08740`, five fragment shaders declare `DemoteToHelperInvocation` without the feature — pre-existing, the SPIR-V set is identical on the tip; filed #459) and ten pre-existing 'vertex attribute at location 1 not consumed' perf warnings; nothing from round 2. A SAME-TIME tip baseline (`logs/selfgate-20260903-154036-tip-validation-baseline`, two minutes later, same validation set: 2 errors / 10 perf warnings) tightens the diff to 1.2 / 3.3 / 1.3 / 15 % with the hill's 15 % confined to the drifting sky band and the player — terrain, trees and houses identical. Three-lens re-review: FIVE attempts (Opus, then the session model, parallel then sequential) killed by API overload (529) at zero tokens over ~90 minutes. LEAD VERIFICATION instead (recorded here so the owner can audit it): L1 pin read + M1 re-performed by hand (fails `Expected: typeof(WalkFrameDriver) / Actual: typeof(ClipFrameAssembly)`, passes restored); L4 one `AppendOutsideSlice` helper called from both `Assemble` and `ReassembleOutsideViewFromWalk`, the pin drives `BeginWalkFrame` + `ReassembleOutsideViewFromWalk`; L2 zero `BeginScissor/EndScissor/NdcScissorRect` hits, the pass encoder sets the full scissor at pass begin (`VulkanGpuPassEncoder.cs:87`) and nothing narrows it; L3 `VulkanFrameBindings` seeds every declared uniform binding with the dummy range (`VulkanFrameBindings.cs:128-130`), binding 2 now bound by the portal-depth clip only, the 34 shader tests (descriptor contract / manifest / SPIR-V validator / sky layout) pass; L5/L6/L7 comments truthful (sky.vert:88-99, both terrain shaders, `Issue130DoorwayStripTests` cut to the plane half the punch fans consume); L8 pin present; lanes reproduced (hermetic 6,827/6,827; InstalledDat 244/1/4 known); the `TerrainClipMode` enum stays for `WorldSceneRenderer`'s flat-path flag (documented). **CHUNK 4 LANDED** on the campaign branch as `ff607a1e0` (round 1) + `7df0b94c9` (round 2); the three independent lenses run POST-HOC as soon as subagent capacity returns and BEFORE the S3 review is dispatched — a blocking post-hoc finding becomes an S3-review item, not a third chunk round. **POST-HOC LENSES RAN 2026-09-03 16:59–17:16 (after six overload kills): ALL THREE PASS** on `2e3ae95ff` — production-path safety, retail faithfulness + pin non-vacuity, build/test truth (the third lens re-performed M1 by hand and re-ran every lane). Findings are documentation/dead-state hygiene, itemized in the S3 packet §10.6: AD-17's scissor text (already rewritten on the branch at `5b43d8d55`; its particle clause corrected — the walk feeds parts and particles the whole-mesh slot), the #130 harness header claiming two zero-caller stages, `ClipPlaneSet`'s scissor-era members/docs, dead terrain-clip parameters on `TerrainModernRenderer.Draw` and `PrepareClipFrame`, several stale sentences, and a pin limit (the L1 condition pin accepts a conjoined gate). Dispatched as the landing-hygiene chunk H (one Sonnet agent in `s3-hygiene` at `6435655d7`, one lens, no third round). Register: AD-17 rewritten and AP-117 narrowed in the landing docs commit (the scissor fallback they described no longer exists). **G3 SELF-GATE part A (lead, 2026-09-03 16:20, Release at `5b43d8d55` = code `7df0b94c9`, `logs/selfgate-20260903-162027-g3/artifacts/screenshots/`, Khronos validation layer on — same two pre-existing #459 errors, nothing new):** 00-login PASS; 01-cathedral-stairs PASS (retail's own exterior slab reproduced, nothing extra); 02-facility-stairs PASS; 03-holtburg-house PASS (no sky through walls); 04-holtburg-terrain-leak PASS (no house fragments through the hill); 05-cathedral-south-0106 PASS and 06-cathedral-south-0104 PASS (player and walls whole, no depth inversion at the transition); 07-cathedral-stairs-0107 PASS and 08-cathedral-stairs-0112 PASS (every slab stable, no wall-textured triangles); 09-cathedral-terrace-edge PASS (the #456 pose: terrace, arches and the lit lantern whole, no panel loss); 10-facility-015E PASS and 11-facility-015F PASS (stairs, pillars and the drudge stable). 12-nanto-falls INCOMPLETE: the reveal for `0xE43D001E` outran the route's 90 s wait (probe timeout at `client.log:709`, readiness at `:714`, world-visible at `:718`), the probe aborted before its `close-client`, and the client then ignored two external close requests (filed #460); re-run as part C with a 300 s wait. NOT COVERED by the self-gate (owner items): the cathedral wall actor (two clients), the exterior ramp (no coordinates in the matrix), Tusker Island, the Holtburg town route beyond poses 03/04, and the two ordinary dungeons (unnamed). All verdicts PROVISIONAL until the owner looks. **G3 SELF-GATE part B (lead, 2026-09-03 16:56, the four retail capture poses as PLAYER poses — each walk log's frame-2 `P` line is the camera eye, so the player lands on the floor below it with the camera's yaw; `logs/selfgate-20260903-165634-g3b/artifacts/screenshots/`, validation on, same #459 error only, graceful logout confirmed):** 13-capture-terrace-edge PASS (cathedral exterior wall and grass whole); 14-capture-cathedral-arrival PASS (lit lantern, walls whole, retail's own exterior slab at the lower left — the axiom, nothing extra); 15-capture-holtburg-doorway PASS (the player lands outside the house: house, door, NPC, hills and water whole); 16-capture-foundry-deep PASS (walls and the portal glow whole). PROVISIONAL. **G3 SELF-GATE part C (lead, 2026-09-03 17:04, Nanto with a 300 s readiness wait, three headings; `logs/selfgate-20260903-170456-g3c/artifacts/screenshots/`, validation on, same #459 error only, graceful logout confirmed):** 12-nanto-falls PASS (hut, torches and the falls' spray at the left edge whole); 12b-nanto-falls-east PASS (the falls visible behind the pier, torches and rocks — the houses occlude, the falls persist); 12c-nanto-falls-west PASS (pagoda, trees and hills whole). The matrix invariant is sampled at three static headings, not a continuous rotation — the owner's spin is still the real test. Part C's FIRST attempt (`selfgate-20260903-165745-g3c`) never left portal space: the Login reveal into the foundry stalled `ready=True materialized=False` for 180 s (#462, intermittent — the next two logins into the same cell materialized), the aborted script requested a graceful logout, and a late local-player motion update then crashed the client on the retired movement controller (#461, exit `0xE0434352`). **G3 self-gate summary:** 20 of 20 captured frames PASS provisional (poses 00–16 plus the two extra Nanto headings); three matrix rows remain owner-only (wall actor, exterior ramp, Tusker) and the ordinary-dungeon row is unnamed; three lifecycle defects filed from the run (#460, #461, #462) and one validation defect (#459). **#459 FIXED** the same evening (`e33fd2472`, lead — a one-feature enable in the existing Vulkan 1.3 chain plus the required-feature gate): the four-pose validation launch at that commit (`logs/selfgate-20260903-171009-fix459-validation`, `logs/vk-validation-459.log`) reports ZERO validation errors; ten pre-existing unconsumed-vertex-attribute perf warnings remain (noted in #459). The validation layer is now a clean signal for every later gate. S4 packet DRAFT written (`s4-depth-alpha-packet.md`): S3 chunk 2 already delivered S4's chunk-1 latch/gate/seal scope; S4's body is the two-list alpha cutover. **#458 RESOLVED 2026-09-03** (`37e42aafc`, register AD-118): two live cdb captures at the Holtburg doorway (`oh-capture-blockset` / `oh-capture-blockcheck` templates) show retail tests `a9c9` twice a frame and that acdream's replay at the same P pose reproduces the interval sentinels, the four edge planes and both verdicts — the fixture's extra `LC:a9c9` is a 0.5 % edge-plane precision boundary (one far block, one corner, one plane; retail's clip heights 300.4/310.2 m vs ours 298.8/308.5 m), not a walk defect; the KnownFailure row stays as the standing example; the tip with chunk 4 cherry-picked (`62c2231d`, docs `386b1327`) is green: hermetic 6,829/6,829, InstalledDat 244/1 skip/4 known, zero `PROBE_CATHEDRAL` rows. Prior: CHUNK 4 DISPATCHED (worktree `s3-chunk4-impl` at `38cedde0`, §10 + chunk 1's carried O1–O4 on the weather path); then the S3 review round (§5; script ready) and the G3 self-gate over the §10 matrix + the four capture poses + a rainy interior pose. CHUNK 1 IMPLEMENTED `079483bb6` (worktree `s3-chunk1-impl`: the print-only `ACDREAM_DUMP_WALK_TRANSCRIPT` emitter, EC/OC parsing + parts/alpha-depth readers, the five OH captures as fixtures, the four kit poses in the still-frame conformance harness — the foundry-deep row exposed that its exit chain reaches 12 real buildings the FW0 stub landscape never had, fixed with the full DAT-built world; hermetic 6,814/6,814; InstalledDat 245/1 skip/3 known); its three-lens review FAILED on real findings → FIX ROUND 1 in progress (§11.5 G1–G10): a vacuous flag-off pin (one frame + a parser that drops the open frame), LC/SC LOD-id arithmetic outside the flag, no flag-on LC/SC/BLD round trip, and — the transcript gate's first two real catches — `SC` printed AFTER `BLD` (retail's `DrawSortCell` entry precedes `DrawBuilding`, which it calls) and the trailing outdoor `OC ` that is retail's weather pass (`GameSky::Draw` 0x00506ff0 → `DrawObjCellForDummies(after_sky_cell)` 0x005070da); every new pin now carries a mutation check. ROUND 1 LANDED (`02a82881` chunk + `be81475c` round 1; four mutation checks documented) — MILESTONE: at the eight-kind level (LS/LC/SC/BLD/DI/DC/EC/OC) the walk reproduces retail's transcript EXACTLY for three of the four kit poses (terrace-edge, cathedral-arrival, foundry-deep); the fourth, holtburg-doorway-still frame 2, diverges at token 165: acdream admits land block `a9c9` (`LC/SC a9c90001`) that retail does not draw at that position — a `WalkLandscape.CheckBlocks` block-visibility question at a LOD-ring boundary, filed as #458 and tagged `Status=KnownFailure` on its conformance row (the InstalledDat lane therefore shows FOUR known failures until #458 is resolved; it is an OPEN S3 item for the review round, not a chunk-1 defect). The re-review (three lenses) FAILED on: the weather `OC` printed per outside-view SLICE inside `DrawLandscapeSliceLate` (2–4 lines for an interior root with the player outside; retail prints one) with the viewer cell instead of the after-sky land cell and NO pin/mutation check; G9's second comment site untouched; the oracle side's EC/OC derived from DC lists (non-discriminating — retail's literal EC/OC lines must be compared); the unconditional `OnSortCellTurn` validation ahead of the flag read; the launch-options volume figure (measured ≈1,200–1,400 lines/outdoor frame). → FIX ROUND 2 (§11.6) LANDED `88c70072` (fixer `ea4da8c7`): H2–H6 closed with two documented mutation checks (the literal EC/OC comparison now fails on a reversed derivation at cathedral-arrival token 1241); H1's production change is retail-faithful and STAYS (the weather mesh is drawn ONCE, unclipped, after the landscape — `GameSky::Draw(sky,1)` 0x00506ff0 / 0x005070da — instead of N scissored per-doorway draws; the ledger notes it here because no capture/visual gate has looked at rain since; the G3 self-gate adds a rainy interior pose). The re-review (three lenses) still FAILS H1's PIN: the IL-offset order check cannot fail when `DrawWeatherOnce` is moved back inside the slice loop (the reviewers reproduced the round-1 regression with the suite green), nothing pins the OC's cell argument (`ViewerCellId` vs `PlayerCellId`), and for an INTERIOR root the weather `OC` prints at the frame's end (the Replay-time LandscapeFlush leaf) where retail prints it between the landscape and the flood — plus a dead `EnableClipDistances` in `DrawLandscapeSliceLate`. CHUNK 1 STOPS HERE per plan rule §5 (two fix rounds used) and is written up, not forced: the emitter, the parser/readers, the fixtures, the offline diff and the three exactly-reproducing poses are LANDED and useful; OPEN ITEMS carried: O1 a real once-per-frame pin for the weather OC (observe the printed lines through the executor's post-loop call, not IL offsets); O2 pin the OC cell argument = the `P` cell; O3 interior-root OC position (print it at the Collect-time landscape turn's end, i.e. where `LandscapeFlush` is emitted, so the transcript order matches retail's `GameSky::Draw(1)` slot; the DRAW itself stays at Replay); O4 the dead `EnableClipDistances`; O5 #458 (see the degrade note below). O3/O4 fall naturally to chunk 4 (it deletes the per-slice loop and gives the weather draw its single home); O1/O2 are for chunk 4's review or the S3 review round. NOTE on #458 (transcript lens): the FW0 doorway row pins `DegradeMultiplier = 0f` because that capture ran under cdb load with `Render::deg_mul` depressed; the OH doorway capture ALSO ran under cdb (this session) — the extra `a9c9` block may be a degrade-level difference rather than `CheckBlocks`; #458 amended. Lanes at `88c70072`: hermetic 6,823/6,823; InstalledDat 244/1 skip/4 known (2× #383, TowerAscent, #458). CHUNK 3 LANDED 2026-09-03 (`4ee2866a` implementer + `651badc2` fix round 1 + `e10765aa` review follow-ups). SELF-GATE `logs/selfgate-20260903-100043-s3-chunk3` at `e10765aa`: the Holtburg terrain-punch fragments are GONE at the owner's pose (`04-holtburg-terrain-leak.png`, clean hill) with NO depth-function change — the §9 R4 order-only hypothesis holds; cathedral / Facility / house structurally unchanged (diffs 10.5% / 0.9% / 7.0% vs the chunk-2 run = dawn-vs-night lighting + actors; the cathedral's upper opening shows sky in both runs; Facility wall-panel mean (79,20,25)); zero exceptions. Re-review after fix round 1: three Opus lenses PASS (remaining minor/notes fixed in `e10765aa`: enum doc, alpha-mark comment, pending-batch clears, try/finally around the terrain-frame completion, particle doc order, the outdoor pin now observes a cell turn). Gates at `e10765aa`: App hermetic 6,795/6,795; focused 335/1 skip; InstalledDat 241/1 skip/3 known; Core Vfx 109/109. PERF GATE FAILED at `e10765aa` (soak `logs/connected-r6-soak-20260903-100400` vs the S2-final `…-010403`, same runner, both Uncapped=false): CPU p50 31.2 ms flat at every outdoor destination (baseline 2.0–15.5), FPS 32 (baseline 51–452), GPU p50 2–4× — ~500 terrain submissions/frame because a StreamMark after nearly every land cell (scenery statics) splits the batch. FIX ROUND 2 (§9.7, the last allowed): an opaque ordered-stream flush is not a terrain flush point (opaque-vs-opaque is depth-resolved; only punches, alpha drains, clear/seals, sky, shells and emitting particle turns split), with a punch-order pin and the soak re-run as the gate. ROUND 2 LANDED (`896c63fe` fixer + `74ac7aa2` lead follow-up): the StreamMark arm no longer flushes the terrain batch (pipeline-state citation: the ordered stream is opaque-only, `GpuBlendMode.None`, depth test+write — `WalkStaticStreamPopulator.cs:179`, `WbDrawDispatcher.OrderedStream.cs:569-571`, `WbDrawDispatcher.Rhi.cs:240/245/343`); three lenses: driver PASS, order and build FAIL on ONE finding — the re-expressed StreamMark pin was vacuous (an empty landscape view admitted no statics, so no StreamMark fired) — fixed by the lead in `74ac7aa2` (real full-viewport view + trace: two FLUSH lines precede the merged three-cell batch); hermetic 6,796/6,796 at `74ac7aa2`. GATE PASSED 2026-09-03: (a) four-pose self-gate `logs/selfgate-20260903-104516-s3-chunk3-r2` at `74ac7aa2` — the Holtburg fragments still gone in full daylight, cathedral/Facility/house 2.3% / 1.3% / 1.9% px vs the chunk-3 run (actors + weather), wall-panel mean (79,20,25), zero exceptions; (b) PERF: the first two soaks (`…-100400` at `e10765aa`, `…-104718` at `674fa8e8`) read a flat CPU p50 31.2 ms / 32 FPS at EVERY destination — an ENVIRONMENT signature, not a workload one: the S2 baseline soak (`…-010403`) ran at 01:04 on the console (only the AMD adapters listed) while today's ran under the owner's RDP session (`query session` → `rdp-tcp#0 Active`; `VideoControllers` gained a Microsoft Remote Display Adapter), whose presentation cadence caps every frame at ~31 ms. Honest A/B: the S2-final binary (`78068b2c`, worktree `.claude/worktrees/s2-final-ab`, kept for future same-session baselines) soaked under the SAME RDP session (`s2-final-ab/logs/connected-r6-soak-20260903-105827`) reads the identical 31.2 ms / 32 FPS everywhere; GPU p50 S2-final vs chunk-3 round 2: Caul 10.6→7.7, Sawato 0.6→0.6, Rynthid 1.7→2.0, Aerlinthe 2.4→3.1, Holtburg 3.8→4.4, Caul return 9.8→12.0, Caul plateau 9.5→8.6 — every destination within the §9.7 gate (≤1.3× +0.5 ms); round 2's batching cut Caul's GPU from round 1's 12.9 to 7.7. CHUNK 3 CLOSED (implementer `4ee2866a`, fix round 1 `651badc2`+`e10765aa`, fix round 2 `896c63fe`+`74ac7aa2`; two fix rounds used, the plan's maximum). Lesson filed: [[feedback_soak_numbers_need_same_session_type]]. History — chunk 3 fix round 1 (worktree `s3-chunk3-impl`: implementer commit `671eb3ad`; the three-lens review found three BLOCKING defects — terrain slot map keyed `0xXXYYFFFF` vs the walk's `0xXXYY0000` (no terrain drawn at all), adjacent-same-landblock batching that can never merge because retail's own sort turn interposes a particle event after every land cell (~530 terrain submissions/frame), and the timing diagnostic moved inside the per-batch loop — plus the deleted `TERRAIN:0` pins, an inverted mechanism comment, a vacuous T2 assertion and a stale oh1 row; all lead-verified real; §9.6 is the fix contract: normalized slot key, ONE pending terrain batch across landblocks flushed only before a submitting leaf with empty particle turns kept open (order-identical by construction), one timing sample per frame, LandCell driver pins). Round 1 of the two the plan allows. After it: chunk 1 (§11), chunk 4 (§10), the S3 review round (§5) | | S4 Depth + alpha | PLANNED — the Holtburg terrain-punch finding carried from G2 may close in S3 chunk 3 by draw ORDER alone (retail draws every nearer land cell's terrain AFTER a farther building's far-Z punch; acdream draws all terrain first — `s3-walk-ownership-map.md` §9 R4); S4 re-reads its "exact z-func" question only if the Holtburg self-gate still shows the fragments after chunk 3 | depth/alpha contracts + captures | — | — | — | G3 | retires AP-34 | | S5 Consumers + closeout | PLANNED | landscape contract; AP-232 | — | — | — | G4 | retires AP-117/AP-232; deletes probes |