From b77989c32331d20b8d9d6b2efeb5c55bdcd8527b Mon Sep 17 00:00:00 2001 From: Erik Date: Sat, 5 Sep 2026 04:16:26 +0200 Subject: [PATCH] docs(overhaul): contract s5 c5 cleanup --- ...-09-01-campaign-overhaul-world-solidity.md | 3 +- .../s5-consumers-material-closeout-packet.md | 222 ++++++++++++++++++ 2 files changed, 224 insertions(+), 1 deletion(-) 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 e69654d6..39a2df58 100644 --- a/docs/plans/2026-09-01-campaign-overhaul-world-solidity.md +++ b/docs/plans/2026-09-01-campaign-overhaul-world-solidity.md @@ -695,7 +695,8 @@ Update immediately when a slice changes state. Chat is not the ledger. | S5-c4 | **LANDED + REVIEW-CLOSED 2026-09-05; LEAD GRAPHICAL GATE PROVISIONAL PASS.** Campaign stack `75664805f` -> `15ed57a1e` -> `d5cfd1c91` -> `03a108ffa`; reviewed scratch tip `db8136448`; packet §§22–26. | G4 UNPASSED | Retail/material pass 3/10 PASS. Full production pass 4/10 found one classic/private detail-off regression; fix round 3 restored the prior AlphaBlend/coalescing path, and narrow production pass 5/10 PASS reproduced all three mutations. Fresh campaign Release 0W/0E, App 245/245, Content 71/71; scratch hermetic 16,971/16,971 and InstalledDat 469/10/1 with both manifests 32/32. Full recipe-10 bake: 2,237,865 keys, zero failures, SHA `4E0FA6C5…29B59B`. Gate `logs/selfgate-20260905-020703-s5c4-onepass-detail`: 13/13 PNGs, exit 0, graceful, no client left; visual PASS provisional. #471 DONE; #470 narrowed to local-sidecar indexing. | | S5-#470 | **LANDED + REVIEW-CLOSED 2026-09-05; LEAD GRAPHICAL A/B PROVISIONAL PASS.** Campaign implementation stack `15a796c3a` -> `7506e5f14` -> `b333edb4f`; route `19b44e5e3`; reviewed scratch `51f974da4` -> `2cad9c84` -> `98c004aa7`; packet §§27–30. | G4 UNPASSED | Retail/behavior pass 2/10 and production pass 4/10 closed the two evidence-only findings. Fresh campaign Release 0W/0E and focused 48/48; exact scratch hermetic 16,976/16,976 and canonical InstalledDat 386/10/1, manifests 30/30. Pinned gate `logs/selfgate-20260905-032132-s5-470-pinned-shadow-ab-r1`: retail/off -> High -> retail/off, 3/3 PNGs, exit 0, graceful, no client; visual PASS provisional. The stale recipe-8 pre-route launch is excluded and recorded in §30. | | S5-#469 | **LANDED + REVIEW-CLOSED 2026-09-05; LEAD GRAPHICAL TRANSITION PROVISIONAL PASS.** Contract `809887524`; reviewed scratch `c09b6cf0f`; campaign implementation `94ddde69a`; route `62efc72cb`; packet §§31–32. | G4 UNPASSED | Retail/deviation pass 1/10 and production pass 2/10 both PASS with no finding. The two atmospheric vertex receivers keep retail's authored unnormalized `uLights` direction across every shadow gate; celestial direction remains for opt-in shadow/volumetric projection; IA-24 corrected in the same commit. Exact scratch: Release 0W/0E, focused 126/126, Vulkan 2/2, hermetic 16,983/16,983, InstalledDat 386/10/1. Fresh campaign Release 0W/0E, focused 82/82, Vulkan 2/2. Gate `logs/selfgate-20260905-040449-s5-469-lighting-transition-r1`: five PNGs, active 2,500-caster/four-cascade High rows, no near-black relight, exit 0/graceful, no client; visual PASS provisional. | -| S5 | IN FLIGHT — c1–c4 plus #470/#469 landed, review-closed, and provisionally self-gated; c5, closeout, and G4 remain | G4 | Packet §§7 and 12–32 are binding. Next: write and execute c5 cleanup, then closeout and G4. Never merge main before G4. | +| S5-c5 | **CONTRACTED 2026-09-05; implementation next.** Packet §33. | G4 UNPASSED | Delete the callerless portal-BFS/research types, obsolete renderer probes and hidden scratch/call sites; preserve the one typed walk transcript; correct architecture/register/launch-option truth; add guards for one graph owner, no frame-time DAT dependency, no independent visibility builder, order-preserving submission, and absence of deleted diagnostics. | +| S5 | IN FLIGHT — c1–c4 plus #470/#469 landed, review-closed, and provisionally self-gated; c5 contracted; closeout and G4 remain | G4 | Packet §§7 and 12–33 are binding. Next: implement/review/self-gate c5, then closeout and G4. 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 be15833c..ba2dbedb 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 @@ -2927,3 +2927,225 @@ relight is gone; the retail-before/after frames restore, while High retains its expected shadows and post-processing. This closes #469; no new divergence row is required beyond the truthful IA-24 amendment. Next is S5-c5, then closeout and G4. Nothing has merged to `main`. + +## 33. S5-c5 contract — delete the superseded visibility/probe apparatus and pin the final graph + +This is a deletion-and-architecture chunk. It changes no retail draw decision, +no membership result, no event order, no alpha route, no material state, and no +shader. The retained production authority is the already-reviewed +`RetailFrameWalk`/`WalkFrameDriver` path. The work removes the independently +compiled research path and output-only diagnostics that can otherwise be +mistaken for production owners. + +### 33.1 Lead-verified boundary + +The named Sept-2013 retail decomp has one normal-world call chain: + +- `SmartBox::RenderNormalMode @0x00453AA0` calls `LScape::draw`; +- `LScape::draw @0x00506330` reaches the retained PView path; +- `PView::DrawCells @0x005A4840` owns the landscape/cell-pass boundary; and +- `PView::DrawInside @0x005A5860` constructs and draws the one PView graph. + +These anchors were re-read in +`docs/research/named-retail/acclient_2013_pseudo_c.txt` at lines +92635/92683, 267912, 432709/432719, and 433793/433819. The paired executable +was re-hashed before this contract: +`C:\Users\erikn\Downloads\acclient.exe`, SHA-256 +`006FFEADC5D679C871497112A5BD1F87714D0E273E2166BAE5052DDE369297B1`, +paired with `refs/acclient.pdb`, SHA-256 +`B1AA774B458C7EFDED9F3BB7E1B18B31A508514D6F2089800629B1B51C154925` +(the already-verified CodeView identity is +`{9E847E2F-777C-4BD9-886C-22256BB87F32}`, age 1). The first 64 bytes at the +four executable anchors hash respectively to +`B69DF08F6B30118463B6148A09CEAF2D47F640303039912224DB4D29FCB93FC7`, +`9319B607C0505D0656935719C27E9F7C00B5281574643614A367C02C88EA7CC3`, +`16E12B476CDABE0F7CD0B1380A31EF194B00901A76D5AFB295CD0C30B4DB36CC`, +and +`DE6E16EC73EDFC04632E2C7A059AB26519099391637318805EF15AB6DBA682C4`. + +Current-source reachability was also checked independently. Outside its own +file, production contains no construction or call of +`PortalVisibilityBuilder`, `PortalVisibilityFrame`, `IndoorDrawPlan`, or +`ViewconeCuller`. The only surviving `PortalVisibilityFrame` production uses +are the dead `ClipFrameAssembler.Assemble` overload and +`IndoorDrawPlan.ShellPass`; both are called only by tests. The live assembler +entry points are `BeginWalkFrame` and `ReassembleOutsideViewFromWalk`. +`RetailFrameWalk` alone retains the interior/outdoor `WalkPView` objects, and +`RetailPViewRenderer` alone retains the `RetailFrameWalk`/`WalkFrameDriver` +frame owner. + +Therefore this chunk is not a new retail port. Its retail claim is narrower: +deleting an unreachable competing implementation cannot alter the one live +walk. If a compile repair would change a live walk, draw, queue, material, or +shader method, stop and return that fact instead of widening this contract. + +### 33.2 C1 — remove the independently compiled portal-BFS research path + +Delete these production artifacts outright: + +- `Rendering/PortalVisibilityBuilder.cs`, including + `PortalVisibilityFrame` and `ExteriorPortalSeed`; +- `Rendering/IndoorDrawPlan.cs`, including `CellDrawEntry`; +- `Rendering/ViewconeCuller.cs`; and +- the `ClipFrameAssembler.Assemble(ClipFrame, PortalVisibilityFrame, ...)` + overload and its builder-only comments. + +Keep `LoadedCell`, `CellVisibility`, `PortalView`/`CellView`, +`PortalProjection`, `ClipPlaneSet`, `ClipFrame`, `BeginWalkFrame`, and +`ReassembleOutsideViewFromWalk`: the current walk, portal fan, and preparation +paths still consume those primitives. Rewrite their stale comments to name the +walk rather than the deleted builder; comments must not imply the synthetic +outdoor node performs a second portal flood. + +Delete old-builder-only tests rather than keeping a second implementation alive +as test code. This includes the dedicated builder/robustness/flood-replay, +`IndoorDrawPlan`, `ViewconeCullerReuse`, and `TowerAscentReplay` files, plus the +builder-only cases in mixed files. Preserve the first two live +`ClipFrameAssemblerTests` (`BeginWalkFrame` outdoor/interior reset) and every +`WalkOutsideViewReassemblyTests` case by driving `BeginWalkFrame` directly. +`OutdoorCellNodeTests` keeps its construction invariant and drops only the +deleted-builder assertion. A currently live CELLARRAY/walk assertion may be +moved to a focused file if it is unique; do not retain a builder dependency to +save a redundant diagnostic test. + +### 33.3 C2 — remove obsolete renderer probes and their hidden frame cost + +Delete the complete Facility stair family named by the plan: + +- `RenderingDiagnostics.ProbeFacilityStairsEnabled` and the environment read; +- `WbDrawDispatcher.FacilityStairProbe.cs`; +- all Facility/cathedral signature, classifier, ordered-stream, upload, and + submission probe fields/methods/call sites in `RetailPViewRenderer`, + `WalkPView`, `WalkProductionWorldData`, `WalkStaticStreamPopulator`, and + `WbDrawDispatcher.OrderedStream/WalkClassify`; and +- the probe-only `WalkProductionWorldData.StaticBucketContains` method and + `[walk-membership]` print. Keep + `UnregisteredRenderMembershipCount` itself and its exact tests: it remains a + cheap invariant/result, not a logging owner. + +The remaining renderer flags explicitly documented as throwaway, relic, or +closed-investigation probes are deleted in the same sweep: + +- `ProbeIndoorWalkEnabled`, `ProbeIndoorLookupEnabled`, + `ProbeIndoorUploadEnabled`, `ProbeIndoorXformEnabled`, + `ProbeIndoorCullEnabled`, and their `IndoorAll` cascade; +- `ProbeVisibilityEnabled`/`EmitVis` and `ProbeEnvCellEnabled`; +- `ProbeFlapEnabled`, `ProbePvInputEnabled`, `ProbeGlStateEnabled`, + `ProbeClipRouteEnabled`, and `ProbePortalChurnEnabled`; +- `ProbeIndoorLightEnabled`/`EmitIndoorLight`; and +- `ProbeSeamDrawEnabled`/`SeamDrawTargetCells` and their parse/format helpers. + +Remove every production output branch and scratch field used only by those +flags, including the `[flap*]`, `[pv-input]`, `[render-sig]`, `[vis]`, +`[gl-state*]`, `[clip-route*]`, `[indoor-*]`, `[envcells]`, `[light]`, +`[seam-*]`, and `[facility-*]` families. `WorldRenderDiagnostics` keeps its +terrain timing/publication responsibility but loses the dead raw-GL reader, +state/scissor records, and the obsolete render-probe methods. +`WorldSceneDiagnosticsController` keeps collision/debug-fact publication but +loses the two probe-only interface methods and the post-world GL sample. + +Delete the corresponding tests and `docs/launch-options.md` rows. Historical +research/capture documents remain historical evidence and are not rewritten. +Comments in still-live production code may describe a historical capture, but +must not cite a deleted runtime flag or claim a deleted probe remains callable. + +The retained diagnostics are explicit nonchanges: +`RenderingDiagnostics.LightDebugMode`, `ShouldRenderIndoor`, +`FrameProfEnabled`, and `DumpWalkTranscriptEnabled`. In particular, +`ACDREAM_DUMP_WALK_TRANSCRIPT` is the plan's one retained, typed, print-only +retail-conformance flag; c5 must not remove or weaken its existing pins. +Physics/audio/streaming probes outside the renderer cleanup inventory are also +out of scope. + +### 33.4 C3 — make architecture and register prose match the landed renderer + +Update `docs/architecture/acdream-architecture.md` so it states that the old +builder is deleted, not merely callerless. Replace the stale three-item +“known non-retail order” paragraph with the landed S3/S4 facts: per-landcell +terrain and sort-cell turns, outside-view/latch-gated clear+seals, and the two +bounded CLIP/ALPHA FIFO lists drained at exact barriers. Name the still-live +AP-238 through AP-243 residuals without resurrecting the superseded model. + +Update `docs/architecture/worldbuilder-inventory.md` to remove the deleted +`[walk-membership]`/Facility flag claim while retaining the +`UnregisteredRenderMembershipCount` invariant and its AD-116 meaning. Amend +AD-116 accordingly in `retail-divergence-register.md`. Retire AP-19 in the +same commit because its only implementation, the deleted builder's 1 cm +epsilon, no longer exists; do not reuse its id. AP-238–AP-243 remain active. +Remove stale current claims from `docs/launch-options.md`; do not erase old +research or the superseded ledger history. + +### 33.5 C4 — architecture guards + +Add one focused compiled/source architecture test file with these +discriminating guards: + +1. the App assembly contains no `PortalVisibilityBuilder`, + `PortalVisibilityFrame`, `ExteriorPortalSeed`, `IndoorDrawPlan`, + `CellDrawEntry`, or `ViewconeCuller` type; +2. only `RetailFrameWalk` declares `WalkPView` fields and only + `RetailPViewRenderer` declares a `RetailFrameWalk` field; the renderer owns + exactly one such field; +3. the frame-time walk/renderer/submitter owner types have no raw + `DatCollection`/`IDatReaderWriter` field, property, parameter, or return + dependency. Construction-time DAT adapters such as `WalkBuildingFactory` + remain outside this frame-time list; +4. no consumer reconstructs a second portal visibility result: production + source has no banned old type/symbol and no call/new edge to a second graph + builder; +5. `WbDrawDispatcher.OrderedStream.cs` contains no `Sort`, `OrderBy`, or + equivalent cross-stream reorder; existing merge-run tests continue to prove + adjacent-only, order-preserving batching across semantic boundaries; and +6. production source contains none of the deleted probe symbols or environment + names listed in §33.3, while the retained walk transcript symbol is still + present and its flag-off and transcript-conformance tests still run. + +The guards may read repository source where absence itself is the contract, +but paths are resolved from the solution root and comparisons are explicit. +Do not use brittle line numbers or broad words such as `probe`/`visibility` +that would outlaw retained production concepts. + +Required mutations, each restored exactly before return: + +- restore one deleted old type name: guard 1/4 fails; +- restore `ACDREAM_PROBE_FACILITY_STAIRS`: guard 6 fails; +- add a second `RetailFrameWalk` owner field: guard 2 fails; +- add `OrderBy` to `WbDrawDispatcher.OrderedStream.cs`: guard 5 fails; and +- add an `IDatReaderWriter` parameter to a listed frame-time owner: guard 3 + fails. + +### 33.6 Scope, gates, return, and reviews + +Production edits are limited to the deleted/residual files and direct probe or +compile-fallout sites named in §§33.2–33.3. Test edits are limited to deleting +old research tests, preserving/adapting the named live tests, simplifying +direct probe-constructor fixtures, and adding the architecture guard. +Documentation edits are limited to this packet, the plan ledger, +`docs/launch-options.md`, the two architecture documents, the divergence +register, and Current memory. No shader, prepared-content, wire, physics, +membership, walk-order, material, or queue behavior change is allowed. If a +deletion exposes a live dependency outside these bounds, stop and report it. + +Return one implementation commit with every documentation/register change in +the same commit as the deletion. Required evidence: + +- `git diff --check` and a Release solution build with zero warnings/errors; +- focused architecture, walk transcript, `BeginWalkFrame`, outside-view, + ordered-stream, membership, terrain diagnostics, and directly affected + suites; +- official hermetic and canonical InstalledDat lanes, with exact + pass/fail/skip identities and SHA manifests; +- source/type absence searches for every deleted family; and +- all five mutation transcripts. + +Review is sequential. Lens 1 checks retail/deletion faithfulness, retained +walk primitives, AP-19/AD-116/register truth, and absence of a second graph. +Lens 2 checks production reachability, hidden-cost removal, architecture-test +non-vacuity, order/DAT boundaries, allowed scope, and gate provenance. A +failed lens gets one bounded fix contract. Review stops only after pass 10. + +After review and campaign landing, the lead runs a fresh Release/focused gate, +checks tree/ACE/client state, and performs one graphical smoke route over an +outdoor town, Facility stairs, and one interior/portal transition. It must +exit gracefully, leave no client, emit no deleted probe prefix, and record +exact PNG paths. Visual status remains provisional until the owner inspects it.