docs(render): OVERHAUL ledger — S2 code-complete, G2 provisional PASS, morning handoff

§13: S2 row records chunk 5 + closeout `c94a1a40`, the review fix batch, the
gate counts, every self-gate run (the chunk-5 FAIL on the Facility wall
panels and the candidate PASS), the membership-probe run and the chunk-4
connected soak; the gate table names the six S2 commits and the revert rule.
The G2 morning handoff gives the owner the candidate build, the checklist,
the PNG paths and the automated-gate summary; G2 stays provisional until the
owner double-checks.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-09-03 01:03:26 +02:00
parent c94a1a407e
commit 78068b2cfe
2 changed files with 97 additions and 2 deletions

View file

@ -0,0 +1,95 @@
# Campaign OVERHAUL — G2 morning handoff (2026-09-03)
**Status:** S2 (World graph) is CODE-COMPLETE and self-gated PROVISIONAL
PASS. The owner double-checks the three spots below; G2 is PASSED only when
the owner says so (plan §13).
**Candidate build:** commit `c94a1a40` (code; the ledger/handoff commit follows it) on `claude/campaign-w-retail-frame-walk`
(worktree `.claude/worktrees/peaceful-blackburn-5333f0`), Release, dev pak
`acdream.pak` recipe 8 in `%USERPROFILE%\Documents\Asheron's Call`.
Launch exactly the way the self-gate does (direct login, no select screen):
```powershell
pwsh -NoProfile -File tools\overhaul-selfgate\run-selfgate.ps1 -Label owner-g2
```
or play it by hand with the usual `ACDREAM_LIVE=1` launch and the three
`/teleloc` poses in `tools\overhaul-selfgate\route.txt`.
## What S2 changed (one paragraph)
The physics registry's retail cell array (`CPhysicsObj::calc_cross_cells_static`
+ `add_shadows_to_cells`) is now the ONLY thing that decides which cells an
object is drawn from. One flood per registration feeds both the collision rows
and the per-part render rows; movement republishes from the transition's cells;
equipped children inherit the root's cells; the walk reads the registry's per-cell
part list and nothing else (every render-side flood, sweep, bucket and fallback is
deleted). Statics with no collision geometry (decorative trim, wall panels) now
register render-only instead of riding a deleted fallback.
## What the night found and fixed after chunk 5
| # | Finding | Fix | Pin |
|---|---|---|---|
| 1 | Streaming reflood re-registered from collision shapes only → every reflooded owner lost render membership | `RefloodOwnerForLandblock` forwards the retained part array | `RefloodLandblock_Keeps*` (Core) |
| 2 | **Self-gate pixel diff:** Facility Hub's purple-lit wall panels went grey — they were MISSING statics (non-colliding, never registered), not a lighting change | both static publishers register non-colliding statics render-only | `CompletePublication_NonCollidingStaticRegistersRenderOnly` (App), `PublishStaticCollision_NonCollidingGfxObjStatic_RegistersRenderOnly` (Content) |
| 3 | Dual review (arch + retail lens): `Suspend` kept render rows; attach/detach invisible to staged commits; an attached child re-flooded on re-registration; landblock removal/retirement left retail rows (unbounded growth); render-only owners could never move; empty part array claimed cells; per-move closures; EnvCell shells aliasing the entity-id index; index predicate missing the id; dead per-cell scene indices | all fixed in the registry / scene | seven new Core pins + two `ArchRenderSceneTests` pins |
Register: AD-116 (chunk 5) and AD-117 (four residual Contract A/B readings, filed
tonight — the render-only destination-cell rule is the one a cdb trace should
retire at the capture session).
## Owner checklist (the G2 gate, plan §10)
Look for objects that flicker, pop, or vanish as you MOVE and ROTATE (the walk
now draws exactly what the registry says, so a membership bug shows as an
object missing from one viewpoint and present from another).
1. **Cathedral (pose 1)** — the floating stairs and the ramp (Setup `0x020009A2`)
stay solid while you walk up/down and turn; no panel of the outside structure
pops through interior walls MORE than on the G1 build (the cathedral leak
itself is S3/S4's target, not G2's).
2. **Facility Hub (pose 2)** — the purple-lit wall panels beside the corridor are
BACK (compare `02-facility-stairs.png` in the two runs below); the stairs
(Setup `0x02000623`) stay solid from both cells `0x8A02015E`/`0x8A02015F`
while moving and rotating on them; the drudge draws in the room.
3. **Holtburg house (pose 3)** — barrel, chest, table, bottle, books all present;
step outside and back in.
4. **Dense Tuskers / remote players** (free roam) — a remote player seen across a
cathedral wall through a portal is drawn where it stands, not where it was;
nothing stays behind after it leaves a room (suspend/retire fixes).
5. **Spell cast** — a travelling spell effect draws along its path (render-only
owners now move with their destination cell).
## Self-gate evidence (lead-run, provisional)
| Run | Build | Verdict |
|---|---|---|
| `logs/selfgate-20260902-231426-baseline-g1-binary` | G1-accepted binary | reference frames |
| `logs/selfgate-20260903-002632-s2-chunk5-reflood` | chunk 5 + reflood fix | **FAIL** — Facility wall panels grey (left-wall mean RGB 29,26,23 vs baseline 65,17,21) |
| `logs/selfgate-20260903-010022-s2-review-fixes-3` | this candidate | **PROVISIONAL PASS** — wall panels back (left-wall mean RGB 79,20,25, identical to the chunk-3/4 builds); cathedral 13.6% / Facility 15.0% / house 13.4% px differ vs baseline, the same band the accepted chunk-3/4 runs sat in (drudge pose + noise); graceful logout, zero exceptions |
Per-pose PNGs sit in `<run>/artifacts/screenshots/0{1,2,3}-*.png`; the client log
is `<run>/client.log`.
## Automated gate on the candidate
Release build 0 errors. Core 4,984/4,984 · Content 214/214 · Runtime 1,884/1,884 · App hermetic lane (CI filter) 6,760/6,760 · App InstalledDat lane 217 pass / 1 skip / 2 pre-existing #383 failures · App Windows lane 1/1.
Known pre-existing non-S2 failures (unchanged tonight): the two installed-DAT
layout sweeps (`LayoutImporterMediaBearingChildSweepTests`,
`LayoutImporterInvisibleSweepTests`#383 fixture drift) and
`TowerAscentReplayTests.TowerAscent_StaircaseStaysConeVisible_EveryStep`
(#119 residual, S3 viewcone).
## After G2
1. The owner's ~1 h retail capture session (`tools/walk-oracle/oh/`, recon attach
first) — add a `CTransition` trace at `num_sphere == 0` to retire AD-117(1).
2. S3 Walk.
Open tails carried into S5: retire the obsolete `-CollisionShadowEvery` referee in
`tools/run-connected-r6-soak.ps1`; the `[walk-membership]` line rides the #177
probe flag scheduled for deletion; `GetRetailPartEntriesInCell` hands out the live
list (document or copy-on-read if a walk-time mutation ever appears).