docs(overhaul): stop S4-c2 after final review

This commit is contained in:
Erik 2026-09-04 09:22:06 +02:00
parent ac74fbd84e
commit dc971ea2be
3 changed files with 112 additions and 8 deletions

File diff suppressed because one or more lines are too long

View file

@ -1,9 +1,11 @@
# Campaign OVERHAUL v2 — hand-off at S4 chunk 2, fix round 1 DONE / round review NOT started (2026-09-04 ~12:20 local)
# Campaign OVERHAUL v2 — hand-off at S4 chunk 2 STOPPED UNLANDED after the final allowed round (2026-09-04)
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.
No subagent is running at hand-over: the chunk-2 fixer finished and committed
(`cc8e5677a` in worktree `s4-c2-impl`); §3 is the exact state of chunk 2 and what is left on it.
**2026-09-04 takeover closeout:** packet §12's final-fix implementation is
`c4cbc1d0d` in `s4-c2-impl`, but both sequential final lenses FAIL on real
EnvCell code/test/register defects. A further fix is round 3, so the campaign
stop rule fired. The implementation is clean and deliberately UNLANDED; the
campaign branch still contains S4-c1 renderer code `766f9e749`. Read packet
§13 and this file's §3 before any stale “review then land” instruction below.
## 0. Read order
@ -53,7 +55,7 @@ Scratch worktrees (detached):
| Worktree | At | Purpose |
|---|---|---|
| `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-c2-impl` | `c4cbc1d0d` (final fix round) on `cc8e5677a` on `048d5b12f` on `766f9e749`; clean | **STOPPED evidence only; do not land** — packet §13 |
| `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) |
| `s3-review-fix` | `6575cfcee` | pre-S4 control build; stalls at the foundry login (#462) — not usable as a control |
@ -95,9 +97,23 @@ every deviation gets a register row in the same commit.
chamber; the zoomed-out FRONT view from the stairwell (hall arches + sky);
#458's far-block admission (AD-118, 0.5 % edge-plane precision).
## 3. S4 chunk 2 — where it stands (fix round 1 DONE, review of the round NOT started)
## 3. S4 chunk 2 — STOPPED UNLANDED after final-round review
**Two commits sit in worktree `s4-c2-impl`, NOT yet on the campaign branch:**
**Binding current state (supersedes the historical procedure later in this
section):** lead contract `ac74fbd84` added packet §12. Final implementation
`c4cbc1d0d` passed its implementer matrix, then the retail lens and the
production/gate lens both returned FAIL. The blockers are: transparent
EnvCell subsets still draw in the opaque pass before FIFO submission; CLIP
and detail-immediate subsets use alpha/no-depth state rather than retail's
clip-test/depth-writing state; the tests omit the preceding opaque draw and
pipeline descriptors; source-owned EnvCell lists are not bounded under
capacity rejection; the 0-B tests bypass the claimed scan/filter/RHI paths;
AP-238/AP-240 and the result note are therefore false. Packet §13 is the full
file:line/evidence record. A code/test/register repair is a forbidden third
round. No cherry-pick, graphical gate, or soak ran. G3/G4 remain unpassed.
**Historical state before the final round (kept for audit; do not execute its
landing procedure):**
| Commit | What | State |
|---|---|---|

View file

@ -720,3 +720,90 @@ change is a third round: STOP, leave the implementation unlanded, and write
the chunk failure into the packet/ledger. Comment-only clarification that
does not change a claim may be adjudicated by the lead; it may not conceal a
behavior or test defect.
## 13. S4-c2 final-round result — STOPPED UNLANDED (2026-09-04)
**Stop rule fired.** Final-fix implementation `c4cbc1d0d` (directly on
`cc8e5677a`, worktree `s4-c2-impl`) passed its implementer matrix, but BOTH
sequential §12 lenses found code/test/register changes that would require a
third fix round. Section 12 explicitly bars that round. None of
`048d5b12f`, `cc8e5677a`, or `c4cbc1d0d` was cherry-picked to the campaign
branch; the branch's latest renderer code remains S4-c1 `766f9e749`.
### 13.1 Retail-faithful lens — FAIL
Paired executable/PDB was re-confirmed (`{9e847e2f-777c-4bd9-886c-22256bb87f32}`,
age 1). The particle row-5 fix and exact EnvCell `ConstructMesh` mask/list
selection are correct. The following are not:
1. **BLOCKING — a deferred EnvCell subset already draws at the cell turn.**
`WalkProductionLeafRenderer.DrawCellShell` calls `DrawOpaqueCellShells`
before `SubmitOrDrawTransparentCellShell`. `EnvCellRenderer`'s opaque pass
does not exclude a non-additive `IsTransparent` batch, so canonical pure
ClipMap `F4180104` / surface `08000BFF` is drawn immediately before its
CLIP token is appended, then drawn again at the drain. Retail row 3 only
appends. The new production fixture starts at dispatch and never executes
this preceding opaque-shell call.
2. **MAJOR — CLIP/detail-immediate surface state is wrong.** All non-additive
EnvCell transparent ranges bind `_alphaPipeline` (StraightAlpha,
depth-write off). Retail's pure ClipMap replay uses ONE/INVSRCALPHA,
alpha test, and depth-write on (`SetSurface` 0x0059c6e40x0059c806;
`SetDepthBufferMode` call 0x0059c866). Detail-active row 1 uses that same
retail base state before its detail combine. The port also hardcodes
`overrideClipmap:true` although the router's ordinary mask-`0x08` row has
false; replay ignores the flag. Tests assert draw counts, not bound
pipeline/blend/depth/override state, and construct mask-`0x08` as
`AlphaBlend`, so the wrong state stays green.
3. **MAJOR — register/result claims are false.** AP-238's “token granularity
only” statement omits premature/double draw and surface-state divergence;
AP-240's EnvCell “CLIP feeder” is only queue bookkeeping while the visible
subset has already drawn. The implementation's §12 result repeats those
claims.
4. **MINOR truth:** the mesh-particle pipeline summary still says it shares
the billboard depth bracket despite the opaque depth-write exception; an
EnvCell test comment cites a nonexistent `Assert.Empty(log)`.
The lens reproduced 46/46 relevant queue/particle/EnvCell/PView tests and
42/42 particle/EnvCell renderer tests. Green tests do not contradict the
findings because they omit the preceding opaque pass and pipeline state.
### 13.2 Production/gate-honesty lens — FAIL
The second lens independently confirmed both rendering blockers and added:
1. **MAJOR — source scratch is not queue-bounded.** Each fixed-list
`EnvCellAlphaDrawSource` retains pending/prepared/draw `List<uint>`
buffers. Payload is reserved before queue admission; after 3,000 entries
`TryAppend` rejects, but the source continues growing and `Reset` only
clears capacity. The queue's scratch budget/capacity therefore does not
bound retained source memory under rejection pressure.
2. **MAJOR — allocation evidence is vacuous for the claimed paths.** The two
0-B tests feed route flags directly into static dispatch with no-op sinks;
they do not run the production EnvCell scan/filter/RHI path, and the
particle test does not run `DrawImmediateParticleSubmissionRhi`.
3. R2-3's rejected-first-use cleanup itself is correct for flush/end/abort;
M1, M3, and A1 have material production pins; allowed scope and
`git diff --check` pass.
This lens reproduced Release 0 warnings/errors, 81/81 focused production
tests, and 32/32 shader tests. Its official hermetic no-retry run was
16,727 pass / 1 pre-existing `Console.Out` capture-race failure; isolated App
rerun passed 6,875/6,875. InstalledDat was unavailable in that lens because
the opt-in DAT environment was not configured. The implementer's clean-state
evidence remains: hermetic 16,728/16,728; InstalledDat 255 pass / 10 expected
fail / 1 skip; shaders 32/32; corrected focused 211/211. Those counts prove
the tested behavior only; they do not repair the missing discriminators.
### 13.3 Disposition
- `s4-c2-impl` remains clean, detached at unlanded `c4cbc1d0d` for evidence.
- No code fix, cherry-pick, graphical client, validation self-gate, or
stationary A/B was performed after the stop. The user-required graphical
gate is deliberately inapplicable to unlanded code.
- A technically complete next attempt would need to fix pass membership,
carry exact clip/override state into an EnvCell clip/depth-writing pipeline,
bound source-owned payload under rejection, add end-to-end walk-leaf plus
pipeline-state/allocation discriminators, and rewrite AP-238/AP-240/result
truth. That is a THIRD fix round and is NOT authorized by this campaign
chunk. Resume only by an explicit owner decision that changes the process;
otherwise S4-c2 is stopped and G3/G4 remain unpassed.