diff --git a/docs/plans/2026-07-21-gamewindow-slice-5-landblock-presentation.md b/docs/plans/2026-07-21-gamewindow-slice-5-landblock-presentation.md index ed20ff07..fff3df07 100644 --- a/docs/plans/2026-07-21-gamewindow-slice-5-landblock-presentation.md +++ b/docs/plans/2026-07-21-gamewindow-slice-5-landblock-presentation.md @@ -66,8 +66,20 @@ test, and bisectable commit rather than being hidden in a mechanical move. footprints cross the seam. Three corrected-diff reviews are clean. Release gate: 7,008 passed / 5 skipped; zero-warning build; `GameWindow.cs` is 9,043 lines. -- [ ] E — extract static lighting, translucency, default-script, and plugin +- [x] E — extract static lighting, translucency, default-script, and plugin presentation; compose the small `LandblockPresentationPipeline`. + - Landed in `ea0da8c8`: render, physics, and DAT-static publishers now + preflight immutable receipts before mutation and retain exact per-stage + progress through retry. `LandblockStaticPresentationPublisher` owns static + lights, translucency lifetime, and plugin projection; `GpuWorldState` and + `EntityScriptActivator` explicitly rebind same-ID static snapshots without + replaying Setup defaults or resetting animation/light/translucency state, + while omitted IDs take full teardown. Source changes and duplicate IDs fail + before presentation mutation, missing DefaultAnimation never claims an + owner, and fallible reconciliation precedes pending-map consumption. Three + corrected-diff reviews are clean. Release gate: 7,026 passed / 5 skipped; + `GameWindow.cs` is temporarily 9,073 lines because production wiring lands + before checkpoint G deletes the old callback body. - [ ] F — move retryable demotion/full-retirement presentation under the pipeline without changing `LandblockRetirementCoordinator`'s ledger. - [ ] G — cut `StreamingController` and `GameWindow` directly to the pipeline;