docs(render): chunk 1 fix round 1 — SC at DrawSortCell entry, the weather OC, EC evidence, eight-kind conformance

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-09-03 11:03:18 +02:00
parent 4215222304
commit 6e3de1bc6b

View file

@ -849,6 +849,49 @@ worktree on top of `079483bb6`; round 1 of the two the plan allows.
bespoke Facts (doorway-still, foundry-deep) — they need the full
DAT-built world the theory body already uses, so either shape is
acceptable; say why in a one-line comment.
- **G7 — `SC` sits at `DrawSortCell` ENTRY, before `DrawBuilding` (blocking,
transcript lens).** Retail's `bp 0059f140` fires at `RenderDeviceD3D::DrawSortCell`
entry and `DrawBuilding` @0x0059f2a0 is called from INSIDE it, so retail
prints `LC``SC``BLD` (`terrace-edge.walk.log:2331-2333`; a not-in-view
cell prints `SC` then `BLD` with no `LC`, `:1042-1044`). acdream prints `SC`
from `OnLandscapeCellTurn`, which `RetailFrameWalk` calls AFTER
`DrawBuilding`. Fix: `RetailFrameWalk.DrawLandscape` calls a new
`IWalkEventSink.OnSortCellTurn(landblockId, side, cellIndex)` at the
`DrawSortCell` entry point (after the LC turn, before `DrawBuilding`, under
the same `AlwaysDrawObjects || in view` gate); the driver prints `SC`
there and nowhere else; the object-list turn after the building is
unchanged. MUTATION: with the print moved back after `DrawBuilding`, the
terrace-edge conformance row (G10) must fail on the first building.
- **G8 — the trailing `OC <viewer land cell>` of every outdoor frame (major).**
It is retail's WEATHER pass: `GameSky::Draw` @0x00506ff0 with `arg2 == 1`
runs `if (LScape::weather_enabled != 0)
DrawObjCellForDummies(this->after_sky_cell)` @0x005070da — the rain
emitters live in the after-sky cell, whose DID is the viewer's land cell
(`terrace-edge.walk.log:1416` `OC f418000b` = the `P` cell, once per
complete frame; 12 EC vs 16 OC in that capture are exactly these four). It
is NOT a walk turn and NOT the creature-mode `DrawObjCellForDummies(creature_cell)`
@0x00452be1. acdream's equivalent is `RenderWeather`
(`RetailPViewPassExecutor.DrawLandscapeSliceLate`, gated on the player
being outside): print `OC <viewer land cell>` at that call when the weather
pass actually runs, print-only, with the addresses in the comment; rewrite
`PrintObjectCellTurn`'s doc, which currently denies the line exists.
- **G9 — the EC evidence comment is false (minor).** "EC and OC counts are
always equal" — terrace-edge has 12 EC / 16 OC (G8). The conclusion (EC is
per flood visit; the stamp dedupe lives inside `DrawEnvCell`, past the
breakpoint) is right; the proof is `holtburg-doorway-still.walk.log:1126,
1131, 1134, 1137` — `EC a9b40100` four times in one frame across four
look-in `DC` turns. Fix both comment sites.
- **G10 — the conformance signature must see the new kinds (minor → required).**
`WalkTraceReplayContext.Signature` drops LC/SC/EC/OC, so no test compares
their placement against retail — which is how G7 shipped green. Extend
the test-side `Recorder` with `OnLandCellTurn`/`OnSortCellTurn` and include
`LC`/`SC` in BOTH signatures; derive `EC`/`OC` for each `DC` from its cell
list (retail's two reverse loops: every shell far-to-near, then every
object list far-to-near — the driver's own order) on both sides; exclude
the trailing weather `OC` from the comparison (assert separately that an
outdoor retail frame ends with `OC <P cell>`). The four kit-pose rows must
then reproduce at the eight-kind level, or the FIRST divergence is
reported in deviations with its position (a real finding, not a skip).
- Gates unchanged (§11.3); the InstalledDat lane must still show only the
three known failures; the new still-fixture rows must still reproduce.