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 626fc604..c2b91389 100644 --- a/docs/plans/2026-09-01-campaign-overhaul-world-solidity.md +++ b/docs/plans/2026-09-01-campaign-overhaul-world-solidity.md @@ -692,8 +692,8 @@ Update immediately when a slice changes state. Chat is not the ledger. | S5-c1 | **LANDED 2026-09-04 after the owner-authorized documentation/evidence exception.** Mandatory stop `efb075619` remains in history; final campaign tip `1718832e2`, reviewed scratch tip `b2d56f9e3`. | G4 UNPASSED | Narrow exception re-review PASS. Clean evidence: hermetic 16,760/16,760; inclusive InstalledDat 385 pass / the same documented 10 fail / 1 skip; both exact `d6592d3ac`, `WorktreeDirty=false`, manifests fully verified. Fresh campaign Release 0W/0E, Core 111/111, visibility 38/38, allocation/AP-116 4/4. Lead graphical portal-haze gate PROVISIONAL PASS, exit 0/graceful, 10 PNGs under `logs/selfgate-20260904-171137-s5c1-particle-visibility`; owner inspection pending. | | S5-c2 | **LANDED + REVIEW-CLOSED 2026-09-04; lead graphical gate PROVISIONAL PASS.** Campaign stack `a4de2efc4` -> `048027e71` -> `ef819eedf`; reviewed scratch tip `521f5edda54`; packet §§14–16. The opt-in IA-24 path borrows the exact prior-completed landscape set/flag, selects world casters through S2 CELLARRAY or building `EffectCellId`, selects authored terrain slots, and projects exact active instance runs without rebuilding retained topology. Pack-off remains unchanged. | G4 UNPASSED | Retail/deviation PASS; production's documentation-only fix round 1 narrowly re-reviewed PASS. Fresh campaign Release 0W/0E and affected 137/137. Official evidence: hermetic 16,768/16,768; broader InstalledDat 468 pass / 10 fail / 1 skip; canonical 385 pass / the same 10 fail / 1 skip; manifests and nonpassing identities exact. Valid lead gate `logs/selfgate-20260904-183925-s5c2-candidate-shadow-ab`: seven PNGs, exit 0, graceful logout, no fatal match, no client left. Exact parent `5c106bcdf` A/B at `s5-c2-ab-parent/logs/selfgate-20260904-183815-s5c2-parent-shadow-ab` proves the gate-visible dark lighting switch predates c2; #469/IA-24 carry it for resolution or explicit owner acceptance before G4. Owner PNG inspection pending. | | S5-c3 | **LANDED + REVIEW-CLOSED 2026-09-04** at `c673f767e` (reviewed scratch `01e5a15d0`; packet §§17–21). | **C3 SCOPE SELF-GATE PROVISIONAL PASS; whole-renderer finding #470 OPEN. G4 UNPASSED.** | OpenAI retail pass 3/10 PASS and production narrow re-review pass 5/10 PASS. Fix round 3 added ordinary landblock-lifetime ownership for every unique nonzero ladder GfxObj, rearmed walk-frame miss requests, and made the one-tick-before-BeginFrame proof discriminating. Fresh clean campaign: Release 0W/0E; focused 101/101; hermetic 16,811/16,811; InstalledDat 469 pass / the unchanged documented 10 fail / 1 skip; manifests 30/30. Self-gate `logs/selfgate-20260904-223345-s5c3-building-degrade` produced five PNGs, exited 0/gracefully, and left no client. The selected building shells are complete; the Holtburg frame also exposed pre-existing atmospheric ordered-draw sidecar defect #470, which is not a c3 regression and blocks renderer-solid/G4 until repaired. | -| S5-c4 | **IMPLEMENTED; RETAIL REVIEW PASSES 1–2/10 FAILED 2026-09-05. FIX ROUND 2 CONTRACTED** in packet §24. Scratch stack `91fb80de6` → `70751ef0e` remains unlanded. | G4 UNPASSED | Fix round 1 correctly carries raw blend/Clip/fog state through recipe 10 and passed clean hermetic 16,959/16,959 plus inclusive InstalledDat 469/10/1. Pass 2 found one remaining production mismatch: every blended+Clip row keeps depth writes off, while retail enables them whenever its alpha test remains armed. §24 requires depth-write-ON variants selected by the carried alpha-test state in both Wb/EnvCell, corrected real-pipeline oracles and mutations, narrow retail pass 3, then the full production lens. Nothing lands or launches yet. | -| S5 | IN FLIGHT — c1–c3 landed/review-closed/provisionally self-gated; c4 fix round 2 contracted; c5, #469/#470 disposition, closeout, and G4 remain | G4 | Packet §§7 and 12–24 are binding. Next: implement S5-c4 fix round 2 on `70751ef0e`, then sequential review; never merge main before G4. | +| S5-c4 | **IMPLEMENTED; RETAIL PASS 3/10 PASS, FULL PRODUCTION PASS 4/10 FAIL; FIX ROUND 3 CONTRACTED 2026-09-05** in packet §25. Scratch stack `91fb80de6` -> `70751ef0e` -> `472dc4fb7` remains unlanded. | G4 UNPASSED | Fix round 2 correctly adds depth-write-ON siblings for all five alpha-tested blend families; clean hermetic 16,964/16,964 and InstalledDat 469/10/1. The retail lens found no issue. The full production lens found one P2: the classic/private detail-off arm changed from the prior unconditional AlphaBlend/coalesced run to raw blend-family pipelines and split runs. §25 restores only that frozen path, keeps detail-active exact material state, and preserves c4's valid receiver-half narrowing of #470. Narrow production pass 5/10 follows; nothing lands or launches yet. | +| S5 | IN FLIGHT — c1–c3 landed/review-closed/provisionally self-gated; c4 fix round 3 contracted; c5, #469/#470 disposition, closeout, and G4 remain | G4 | Packet §§7 and 12–25 are binding. Next: implement S5-c4 fix round 3 on `472dc4fb7`, narrow production review, integrate and self-gate c4; never merge main before G4. | --- diff --git a/docs/research/2026-09-01-overhaul/s5-consumers-material-closeout-packet.md b/docs/research/2026-09-01-overhaul/s5-consumers-material-closeout-packet.md index be18313c..d29645d4 100644 --- a/docs/research/2026-09-01-overhaul/s5-consumers-material-closeout-packet.md +++ b/docs/research/2026-09-01-overhaul/s5-consumers-material-closeout-packet.md @@ -2121,3 +2121,126 @@ the depth-write rule from the paired binary, inspect real production pipeline descriptors, verify AP truth, and reproduce at least three new mutations. Only after it passes may the full production/gate-honesty lens run over the complete S5-c4 stack. Nothing lands or launches graphically before both lenses pass. + +## 25. S5-c4 fix round 3 — restore classic/private detail-off state + +### 25.1 Full production review pass 4/10 + +Retail/material re-review pass 3/10 returned **PASS** on clean fix-round-2 tip +`472dc4fb7fd246a6efe6ed4ed20ffc26419c9ffa`. It independently re-derived the +Clip/depth-write rule from named `D3DPolyRender::SetSurface @0x0059C4D0` and +paired bytes, inspected all ordinary/atmospheric Wb and EnvCell pipeline +descriptors, reproduced three mutations, and found no retail/material issue. + +The subsequent full production/gate-honesty review returned **FAIL** on one P2 +regression and no other code finding. Before c4, +`DrawImmediateTransparentRhi` always bound `pipelines.AlphaBlend` for the +classic grouped path's non-detail transparent commands and coalesced adjacent +non-detail commands without a blend-family split. C4 instead binds +`PipelineForBlend(pipelines, blend)` and adds `Translucency` equality to that +run boundary. This changes detail-disabled/unavailable Additive and InvAlpha +compositing and splits a previously coalesced run. + +This is reachable production behavior, not a dead compatibility arm: +`PrivateEntityViewportRenderer.Draw` calls the classic dispatcher without a +collecting world-alpha queue, which reaches +`ExecuteClassifiedGroups -> SubmitRhi -> DrawImmediateTransparentRhi`. +The reviewer drove that exact path with detail disabled and one ordinary +instance. Additive expected `wb-mesh-alpha-1x` but recorded +`wb-mesh-additive-1x`; InvAlpha expected `wb-mesh-alpha-1x` but recorded +`wb-mesh-inverse-1x`. Each case issued exactly one physical MDI. Temporarily +changing only the false arm back to `pipelines.AlphaBlend` made both witnesses +pass, and the reviewer restored the worktree byte-exactly afterward. + +The rest of the complete-stack audit passed: opacity and immutable material +state reach recipe-10 publication and every consumer; the 16-byte GPU batch +ABI, shared shaders, one-pass equations, overlay deletion, #471 ordered arm, +all five depth-write pairs, disposal/rollback, allocation, migration and +artifact provenance are sound. Restored focused suites passed App 265/265, +Content 92/92, and Launcher 8/8. The exact-tip hermetic artifact is +16,964/16,964 with manifest 32/32; InstalledDat is the unchanged documented +469 pass / 10 accepted fail / 1 accepted skip with manifest 30/30. The scratch +worktree returned clean at `472dc4fb7`. + +The review also corrected the chunk boundary: c4 necessarily repairs the +**receiver half** of #470 by selecting the frame-aware atmospheric ordered +pipeline and binding its receiver resources. That is valid support for the +required atmospheric one-pass path and must remain. #470 stays open because +`mesh_modern.vert` still uses the absolute transform index for locally based +alpha/selection/light/detail sidecars. Describe #470 as narrowed at landing; +do not claim c4 left all of it untouched or closed it. + +### 25.2 Bounded production repair + +On top of `472dc4fb7`, restore the pre-c4 detail-off behavior in +`DrawImmediateTransparentRhi` only: + +1. when the current command has no active detail material, bind + `pipelines.AlphaBlend` regardless of its `TranslucencyKind` or carried raw + SetSurface state; +2. restore the prior coalescing rule for consecutive non-detail transparent + commands: do not split a run merely because `TranslucencyKind` changes; + when detail is enabled, the next detail-bearing command remains a boundary; +3. keep each detail-active command on the exact + `PipelineForMaterial(pipelines, materialState, pipelines.Opaque)` result, + armed once on its existing physical draw, with neutral push state restored + afterward; and +4. preserve cull-run splitting inside `DrawIndirectRangeRhi`; this repair + restores only the outer material-run boundary that c4 changed. + +Do not generalize this into a detail-off retail correction. AP-244 remains the +truthful disclosure for the existing detail-off Wb/EnvCell collapses. Do not +change deferred-alpha submission, ordered-stream submission, EnvCell, +extraction, recipe 10, GPU batch ABI, shaders/SPIR-V/manifest, blend enums or +pipeline construction, alpha-test/depth/fog/reference state, queue membership, +FIFO order, transforms/sidecars, lighting, allocation ownership, #469, or the +remaining #470 sidecar-index repair. In particular, retain c4's frame-aware +ordered receiver selection/bindings. + +Allowed production change: only +`src/AcDream.App/Rendering/Wb/WbDrawDispatcher.Rhi.cs`. Tests may change only +in the directly affected existing Wb production-transcript suite. No register +change is expected because this restores the disclosed prior behavior; if a +new deviation or wider production dependency is discovered, stop and return +the exact fact before expanding scope. No packet, plan, issue, architecture, +package, artifact, or evidence file is changed by the implementer. + +### 25.3 Discriminating proof and return + +Add permanent tests through the actual classic production path, without a +collecting alpha queue: + +1. with detail disabled, one Additive and one InvAlpha ordinary instance each + bind `wb-mesh-alpha-1x` and issue exactly one physical MDI; +2. with the detail category unavailable, the same two rows retain that result; +3. adjacent same-cull Alpha -> Additive -> InvAlpha detail-off commands remain + one outer material run/MDI range rather than three blend-family runs; +4. detail enabled with an eligible command still selects its exact carried + detail-active material pipeline and arms slot/tiling/reference/fog once; +5. non-detail -> detail -> non-detail adjacency does not leak detail state and + preserves the two required boundaries; and +6. existing deferred-alpha, ordered ordinary/atmospheric, EnvCell, depth-pair, + disposal/rollback, allocation, shader/ABI and recipe-10 pins remain green. + +Apply and independently restore these mutations, recording the first failing +test/assertion for each: + +1. restore `PipelineForBlend(pipelines, blend)` on the non-detail arm; +2. restore the `TranslucencyKind` equality run split while leaving the pipeline + arm correct; and +3. force the detail-active command onto `pipelines.AlphaBlend`. + +Return one clean fix-round-3 commit atop `472dc4fb7`; exact changed-file and +line counts; mutation first failures; both `git diff --check` forms; Release +solution build 0W/0E; focused classic/private material and complete affected +Wb/EnvCell/ordered/content/launcher suites; exact-tip clean official hermetic +and inclusive InstalledDat artifacts with manifests and every accepted +nonpassing identity named. Recipe 10 is unchanged, so no bake is required. No +graphical client launch. + +Because this repair restores a production-only frozen detail-off path and +changes no retail/material fact, the next review is the narrow production/ +gate-honesty pass 5/10 over this finding and its non-change boundary; no new +retail lens is required. A PASS unlocks landing the complete c4 stack and its +lead graphical gate. A FAIL receives another bounded contract within the +owner-authorized ten-pass limit. Nothing lands or launches before that result.