docs(overhaul): hand-off at S4-c2 fix round 1 DONE (cc8e5677a in s4-c2-impl) — what is left on chunk 2, the review and landing procedure; ledger S4 row updated

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-09-04 07:33:34 +02:00
parent 2a35f0a4c3
commit cb71a92d51
2 changed files with 28 additions and 78 deletions

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,4 @@
# Campaign OVERHAUL v2 — hand-off at S4 chunk 2, fix round 1 (2026-09-04 ~11:00 local) # Campaign OVERHAUL v2 — hand-off at S4 chunk 2, fix round 1 DONE / round review NOT started (2026-09-04 ~12:20 local)
Clean state for a fresh session. Everything referenced is on disk under the Clean state for a fresh session. Everything referenced is on disk under the
Windows user `erikn`; a different Claude account on this machine reads it all. Windows user `erikn`; a different Claude account on this machine reads it all.
@ -42,7 +42,7 @@ see §3 for how to find out what the chunk-2 fixer left behind.
| Item | Value | | Item | Value |
|---|---| |---|---|
| Worktree | `C:\Users\erikn\source\repos\acdream\.claude\worktrees\peaceful-blackburn-5333f0` | | Worktree | `C:\Users\erikn\source\repos\acdream\.claude\worktrees\peaceful-blackburn-5333f0` |
| Branch | `claude/campaign-w-retail-frame-walk`; docs tip `2001103ca`, **latest renderer code `766f9e749`** (S4 chunk 1); clean | | Branch | `claude/campaign-w-retail-frame-walk`; docs tip = the commit carrying this file, **latest renderer code ON THE BRANCH `766f9e749`** (S4 chunk 1); clean. Chunk 2 code is in `s4-c2-impl` only (§3). |
| Base | `origin/main` `e102fb36` (2026-08-29); ~275 commits ahead; **nothing merges to main before G4** | | Base | `origin/main` `e102fb36` (2026-08-29); ~275 commits ahead; **nothing merges to main before G4** |
| Dev pak | `%USERPROFILE%\Documents\Asheron's Call\acdream.pak`, bake recipe 8 | | Dev pak | `%USERPROFILE%\Documents\Asheron's Call\acdream.pak`, bake recipe 8 |
| Release binary | `src\AcDream.App\bin\Release\net10.0\AcDream.App.exe` built at `766f9e749` | | Release binary | `src\AcDream.App\bin\Release\net10.0\AcDream.App.exe` built at `766f9e749` |
@ -53,7 +53,7 @@ Scratch worktrees (detached):
| Worktree | At | Purpose | | Worktree | At | Purpose |
|---|---|---| |---|---|---|
| `s4-c2-impl` | `048d5b12f` on `766f9e749` (+ the fixer's round-1 commit when it lands) | **S4 chunk 2 — the chunk commit and its fix round live HERE, not on the branch yet** | | `s4-c2-impl` | `cc8e5677a` (fix round 1) on `048d5b12f` (the chunk) on `766f9e749`; clean | **S4 chunk 2 lives HERE, not on the branch yet** — review the round, then land (§3) |
| `s4-c1-impl` | `9ba8f013e` | S4-c1 baseline BINARY, built (Release App + Cli) for the landing soak A/B; keep until S4-c2 lands | | `s4-c1-impl` | `9ba8f013e` | S4-c1 baseline BINARY, built (Release App + Cli) for the landing soak A/B; keep until S4-c2 lands |
| `s2-final-ab` | `78068b2c` | S2-final binary for same-session perf A/B (keep) | | `s2-final-ab` | `78068b2c` | S2-final binary for same-session perf A/B (keep) |
| `s3-review-fix` | `6575cfcee` | pre-S4 control build; stalls at the foundry login (#462) — not usable as a control | | `s3-review-fix` | `6575cfcee` | pre-S4 control build; stalls at the foundry login (#462) — not usable as a control |
@ -95,86 +95,36 @@ every deviation gets a register row in the same commit.
chamber; the zoomed-out FRONT view from the stairwell (hall arches + sky); chamber; the zoomed-out FRONT view from the stairwell (hall arches + sky);
#458's far-block admission (AD-118, 0.5 % edge-plane precision). #458's far-block admission (AD-118, 0.5 % edge-plane precision).
## 3. In flight: S4 chunk 2 — fix round 1 ## 3. S4 chunk 2 — where it stands (fix round 1 DONE, review of the round NOT started)
**What landed in the worktree:** `048d5b12f` in `s4-c2-impl` (Sonnet, 2026-09-04 **Two commits sit in worktree `s4-c2-impl`, NOT yet on the campaign branch:**
09:35): `RetailAlphaQueue` = retail's two FIFO lists (CLIP/ALPHA, 3000 each,
capacity drop), `RetailAlphaMeshRouter` (DrawMesh rows 15 + ConstructMesh
mask), the new `SortCellExit` walk event for DrawBlock's 0.75 valve, the four
flush sites, `FlushFartherThan`/every viewer distance deleted. Hermetic
6,855/6,855; shaders 32/32.
**Review round 1 (both lenses FAIL; lead verified every finding at the source; | Commit | What | State |
the core port is exact at the bytes):** |---|---|---|
- BLOCKING: the particle site asserts DrawMesh rows 1/2/4/5 "unreachable" and | `048d5b12f` | the chunk: two FIFO lists, `RetailAlphaMeshRouter`, the `SortCellExit` valve event, four flush sites, distance sort deleted | review round 1: both lenses FAIL (recorded in the ledger and packet §11) |
THROWS; `ParticleRenderer.TryAppendMeshDraws` appends Opaque-classified mesh | `cc8e5677a` | **fix round 1 (Sonnet, 2026-09-04 ~11:0012:10)** — every item of packet §11 M1M8 and §11.1 A1A8 | implementer reports all items landed; lead verified the commit shape (27 files, +1,248/352), the register ids, the twelve split Facts and the A1 deletion; **the round's two review lenses have NOT run** |
batches → mask 0x00 → row 5 → exception in the render loop.
- MAJOR: the CLIP list is structurally EMPTY for ordinary content (ClipMap
kinds are `WbDrawDispatcher.IsOpaque` → alpha-to-coverage, never routed;
4,183 of 10,556 captured AM entries are CLIP) — no register row;
contract C3's detail input hardcoded false while building shells reach the
alpha path and the DRAIN applies the detail pass retail's replay never has
(`DrawBuilding` @0x0059f2a0 installs `building_detail_surface` @0x0059f2eb
before its flush → row 1 immediate); C4 (EnvCell detail-off append) skipped
though `EnvCellRenderer.RenderTransparentOrdered` makes it bounded;
`IsFirstForList` = first-since-drain where retail's `new` is per-DrawMesh
invocation (`0059d4cc/0059d4d0`); the AM/FL gate is all-KnownFailure and the
counts are unmatchable by construction; a THIRD `FlushLandscapeAlpha` caller
(`RetailPViewRenderer.cs:485`, the #132 outdoor-root drain) is mislabelled as
retail's DrawCells flush, which never runs on an outdoor root; AP-236 REUSES
an id filed and retired on main by #132.
- MINOR: AP-237's cloud example is disproven (Type 0x10114 has alpha-family
bits → mask 0x02 both sides); `DrawBlock` cited at its loop head
0x005a18d0 (function is 0x005a17c0); "return site" = the call address;
scratch-retention argument; stale comments; §10 transcription off by one.
- Everything is itemized as **packet §11 (M1M8) + §11.1 (A1A8)** on the
campaign branch (`3813f0bbf`, `3e76f71d5`).
**Dispatched:** one Sonnet implementer (plain Agent tool) at ~10:55 local into What `cc8e5677a` did, per the implementer's report (verify each claim against the source before trusting it — `feedback_verify_subagent_claims_against_source`):
`s4-c2-impl`, told to commit ONCE on top of `048d5b12f` with every mutation
check's actual failing assertion and every gate's real output line in the
commit body. **It runs inside the 2026-09-04 lead session; a session switch
kills it.** Find its state:
```bash - **M1** the two router throws deleted; new `ParticleRenderer.RouteParticleSubmission` (testable) and `DrawImmediateParticleSubmissionRhi` for rows 1/5; particle `materialHasAlpha` from retail's `CMaterial::CheckAlphaValues` @0x005396a0 (has_alpha = 0 only when all four channel alphas are 1.0; `CMaterial::SetTranslucencySimple` @0x005396f0 sets them to `1 translucency`), i.e. "current alpha ≠ 1.0" from `ColorArgb`'s top byte. **Verify this quote and the reachability path `Particle::Update` @0x0051c290`CPhysicsPart::SetTranslucency` yourself; it is the round's one new retail rule.**
git -C C:/Users/erikn/source/repos/acdream/.claude/worktrees/s4-c2-impl log --oneline -3 - **M3** detail-surface router input at both Wb sites; new `DrawImmediateAlphaInstance(Rhi)` draws a translucent building-shell instance at its own turn when building detail is on; the drain's detail branch deleted; new register row **AD-120** (the "in place → at the entity's stream mark" adaptation).
git -C C:/Users/erikn/source/repos/acdream/.claude/worktrees/s4-c2-impl status --short - **M6** `RetailPViewPassExecutor.SubmitOrDrawTransparentCellShell` + `EnvCellAlphaDrawSource` (one token per cell, replayed through `RenderTransparentOrdered`); `EnvCellRenderer.TransparentDetailEnabled`.
``` - **M4** `RetailAlphaEntry.IsFirstForList` deleted with its wrong pin.
- **M5** the six Facts split into `AlphaFlushSites_*` (live, but the class carries `Lane=InstalledDat`, so they pass in the InstalledDat lane, never hermetically) and `AlphaFlushCounts_*` (KnownFailure, three-part truthful reason); new live valve pin `WalkFrameDriverTests.SortCellExit_ValveDrainsThroughReplayAtTheExactBoundary`.
- **M2 / A2 / M8c** register: `~~AP-34~~` restored struck-through; AP-236→**AP-238**, AP-237→**AP-239**; new **AP-240** (the structurally empty CLIP list: clip-mapped subsets draw immediately alpha-to-coverage); AD count 92, AP count corrected.
- **M7** the cloud citation disproven; a real Translucent+ClipMap-without-alpha-family instance found by a live DAT scan: surface `0x08000015` on GfxObj `0x010001EC` (6,152 surfaces scanned, 27 matches).
- **A1** the mislabelled outdoor-root `FlushLandscapeAlpha()` at `RetailPViewRenderer.cs:485` deleted (the pass-end `RenderNormalMode` flush in `RetailAlphaQueue.EndFrame` is retail's outdoor drain); pin in `RetailPViewRendererTests.cs`.
- **A4** `ApplyScratchRetention` source-count argument fixed with a pin; **M8a/b/d, A3, A5A7** citations/comments/§10 fixed; `worldbuilder-inventory.md:420` updated.
- Gates the implementer reports: Release 0 warnings; hermetic 6,864/6,864; InstalledDat 255 pass / 10 fail (4 pre-existing + 6 `AlphaFlushCounts_*`) / 1 skip; shaders 32/32; the six focused classes 120/120. Mutation checks with failing text are in the commit body (`git -C <s4-c2-impl> log -1 --format=%B`).
- **Lead reproduction on `cc8e5677a` (2026-09-04 12:15):** `dotnet build AcDream.slnx -c Release` → 0 Error(s); hermetic App lane → `Passed! - Failed: 0, Passed: 6864, Skipped: 0, Total: 6864`. The InstalledDat lane, the shader classes and the focused classes were NOT re-run by the lead — the review lens does that.
- A commit above `048d5b12f` → round 1 finished; its report is the commit **What is left on chunk 2, in order:**
body. Run the two review lenses (below), verify their findings yourself.
- No commit, dirty tree → cut off mid-round. Read the diff against §11/§11.1;
finish it yourself or discard the worktree's changes (it is disposable:
`git worktree remove --force` + re-add detached at `048d5b12f`) and
re-dispatch §11 + §11.1 from scratch. Never stash.
- No commit, clean tree → never started; re-dispatch.
**Round-1 review:** two lenses (Opus or the session model; the Opus tier was 1. **Review round 1 of `cc8e5677a`** — two lenses (Opus, or the session model if Opus 529s): (a) retail-faithful, narrowed to M1's `CheckAlphaValues`/`SetTranslucencySimple` rule and reachability, M3's row-1 immediate path vs `DrawBuilding` @0x0059f2a0 (`curr_detail_surface` set @0x0059f2eb, cleared @0x0059f345; replay `detailEnabled = 0`), M6's `DrawEnvCell` @0x0059f170 detail rule, the router inputs at all three sites, A1's claim that nothing opaque draws between the deleted drain and the pass-end flush; (b) production/gate-honesty: reproduce every gate line, re-perform ≥3 mutation checks, check every sentence of the commit body and packet §10 against the tests, the immediate-draw paths' allocation, the register rows AP-238/239/240 + AD-120 for accuracy (AP-240's consequence text; AD-120's adaptation is honest), no file outside the allowed set. **The lead verifies every finding at the source before acting.** The prompts for both lenses are in this session's transcript (search `LENS = RETAIL FAITHFULNESS` and `LENS = PRODUCTION SAFETY + GATE HONESTY`) — reuse them narrowed to the round-1 diff.
529-overloaded for ~90 min on 2026-09-03): retail-faithful, narrowed to the 2. PASS → **land** (procedure below). FAIL → **fix round 2 = the LAST** (write it as packet §12; a third round STOPS the chunk and is written up in the ledger).
decomp claims of M1/M3/M6 and the router inputs; production/gate-honesty (the 3. **Landing:** cherry-pick `048d5b12f` then `cc8e5677a` onto the campaign branch — the packet conflicts (the worktree's copy has §10 + a "§11 result" paragraph under §10; the campaign's copy has §11/§11.1); resolve by keeping §10 (with its result paragraph) BEFORE §11. Then: Release build 0 warnings; hermetic lane; InstalledDat lane (expect the four known failures + the six `AlphaFlushCounts_*`, nothing else; the six `AlphaFlushSites_*` must PASS there); shader classes; the validation-on self-gate (`route.txt` four poses, then `route-g3b.txt`; one run per background command) diffed against `logs/selfgate-20260903-234934-s4c1-landed-route2` and `logs/selfgate-20260904-062148-g3b-tip-a2` (Facility left-wall mean RGB ≈ (79,20,25) = panels present); a STATIONARY-phase soak A/B against the S4-c1 binary already built in `s4-c1-impl` (`tools/run-connected-r6-soak.ps1 -SkipBuild -PreparedAssetPath "$env:USERPROFILE\Documents\Asheron's Call\acdream.pak"` on the tip, then `-Repository <s4-c1-impl> -SkipBuild`; same Windows session type; judge `stationary` only — #463). Then the §13 S4 row, the digest, and remove `s4-c2-impl`/`s4-c1-impl`.
six live `AlphaFlushSites_*` Facts, the new valve pin, the immediate-draw
paths' allocation, the register). Lead verifies every finding against the
source (`feedback_verify_subagent_claims_against_source`). PASS → land. FAIL →
fix round 2 (the LAST) → PASS → land; a third round STOPS the chunk and is
written up in the ledger.
**Landing procedure:** cherry-pick `048d5b12f` and the round-1 commit onto the **Known residuals that survive chunk 2 (registered, not bugs to chase now):** AP-240 (the CLIP list is fed only by clip-mapped mesh particles — every other clip-mapped subset is alpha-to-coverage opaque), AP-238 (EnvCell one-token-per-cell granularity), AP-239 (the Translucent+ClipMap mask collapse; one real instance), AD-120 (immediate translucent draw at the entity's stream mark rather than in place), AD-119 (portal-depth ColorWrite off vs zero-alpha blend). The `AlphaFlushCounts_*` Facts stay KnownFailure by construction (harness content + per-instance vs per-subset + AP-240); a content-bearing gate would be S5 evidence work only if a slice needs it.
campaign branch (the packet will conflict on §10 vs §11 — both are appends;
keep both, §10 before §11); Release build 0 warnings; hermetic lane
(`dotnet test tests/AcDream.App.Tests/AcDream.App.Tests.csproj -c Release --no-build --filter "Lane!=InstalledDat&Lane!=PreparedPackage&Lane!=Live&Lane!=Manual&Lane!=Timing&Lane!=Windows&Lane!=Linux&Lane!=SystemFont&Purpose!=Diagnostic&Status!=KnownFailure"`);
InstalledDat lane (`ACDREAM_RUN_INSTALLED_DAT_TESTS=1`,
`ACDREAM_DAT_DIR="C:/Users/erikn/Documents/Asheron's Call"`,
`--filter "Lane=InstalledDat"`; expect exactly the four known failures plus
the six `AlphaFlushCounts_*` KnownFailure Facts); shader classes; the
validation-on self-gate (`route.txt` four poses + `route-g3b.txt`) diffed
against the S3-closed run `logs/selfgate-20260903-16*` /
`…-234934-s4c1-landed-route2` with `py scratchpad/selfgate-diff4.py <run> <baseline>`
(PIL; the script lives in the OLD session's scratchpad — re-create it if
missing: per-frame mean-abs-diff sheet); a STATIONARY-phase soak A/B against
the S4-c1 binary in `s4-c1-impl`
(`tools/run-connected-r6-soak.ps1 -SkipBuild -PreparedAssetPath "$env:USERPROFILE\Documents\Asheron's Call\acdream.pak"`,
then `-Repository <s4-c1-impl> -SkipBuild`; same Windows session type; judge
`stationary` only — #463). Then the §13 S4 row, the register, and the digest.
## 4. After chunk 2 ## 4. After chunk 2
@ -261,7 +211,7 @@ Read, in this order, and then tell me the summary you formed before acting:
2. CLAUDE.md, then docs/plans/2026-09-01-campaign-overhaul-world-solidity.md §13 (the S4 row tail). 2. CLAUDE.md, then docs/plans/2026-09-01-campaign-overhaul-world-solidity.md §13 (the S4 row tail).
3. claude-memory/project_overhaul_campaign.md "Current". 3. claude-memory/project_overhaul_campaign.md "Current".
4. docs/research/2026-09-01-overhaul/s4-depth-alpha-packet.md §8, §11, §11.1. 4. docs/research/2026-09-01-overhaul/s4-depth-alpha-packet.md §8, §11, §11.1.
Then check the S4 chunk 2 fixer's state per the hand-off's §3 and report: what landed, what is Then confirm the two chunk-2 commits in s4-c2-impl per the hand-off's §3 and report: what landed, what is
in flight, what you propose next. Continue under the campaign goal: drive the plan until the in flight, what you propose next. Continue under the campaign goal: drive the plan until the
renderer is solid and G4 passes; never merge to main before G4; the §5 model (you write each renderer is solid and G4 passes; never merge to main before G4; the §5 model (you write each
bounded chunk contract, Sonnet implements, you verify every claim against the named retail decomp bounded chunk contract, Sonnet implements, you verify every claim against the named retail decomp