From db3ca59fd0b83b4f83dd14cd9e420d58d14e5c66 Mon Sep 17 00:00:00 2001 From: Erik Date: Tue, 21 Jul 2026 22:50:38 +0200 Subject: [PATCH] docs(architecture): record landblock cutover Mark Slice 5G complete, record the 44 percent GameWindow reduction and origin-lifetime barrier, and advance the active ledger to deterministic and connected closeout. --- AGENTS.md | 11 ++++++---- CLAUDE.md | 11 ++++++---- docs/architecture/code-structure.md | 15 ++++++++------ docs/plans/2026-04-11-roadmap.md | 13 +++++++----- docs/plans/2026-05-12-milestones.md | 13 ++++++------ ...mewindow-slice-5-landblock-presentation.md | 20 ++++++++++++++++++- 6 files changed, 57 insertions(+), 26 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index b372b44a..0c6f40d3 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -115,7 +115,7 @@ and the final two-client portal-out/materialization observer flow are user-gated. Deterministic world-lifecycle automation protects fresh login, outdoor/world-edge/dungeon travel, same-location revisit, exact graceful disconnect, and uncapped fresh-process reconnect with JSON/PNG artifacts. -Release builds; 6,940 tests pass / 5 skip. +Release builds; 7,052 tests pass / 5 skip. **Active prerequisite before new M4 subsystem work:** continue the behavior-preserving `GameWindow` decomposition reconciled on 2026-07-21. @@ -123,9 +123,12 @@ Selection/interaction Slice 1, live-animation-presentation Slice 2, complete live-session ownership Slice 3, and live-entity App integration Slice 4 are landed. Focused hydration, teardown, inbound-authority, network-update, and motion-runtime owners now sit over canonical `LiveEntityRuntime` without a -second GUID dictionary. `GameWindow` is 10,301 lines, 267 fields, and 163 -methods. Slice 5 extracts landblock presentation next; later slices finish -update/render orchestration and composition cleanup. +second GUID dictionary. Slice 5 checkpoints A–G have moved the complete DAT +build, render/physics/static publication, retryable retirement, and shared- +origin lifetime barrier out of `GameWindow`; it is now 8,793 raw lines, down +44% from the 15,723-line campaign baseline. Slice 5H lifecycle/connected +closeout is active; later slices finish update/render orchestration and +composition cleanup. See `docs/architecture/code-structure.md`. **Carried:** #153, #116, remaining R6 ownership cleanup, TS-50/TS-51, Modern Pipeline MP1b+, and #225's lifestone/particle alpha visual gate. diff --git a/CLAUDE.md b/CLAUDE.md index 44e9d230..eb7fed10 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -113,7 +113,7 @@ and the final two-client portal-out/materialization observer flow are user-gated. Deterministic world-lifecycle automation protects fresh login, outdoor/world-edge/dungeon travel, same-location revisit, exact graceful disconnect, and uncapped fresh-process reconnect with JSON/PNG artifacts. -Release builds; 6,940 tests pass / 5 skip. +Release builds; 7,052 tests pass / 5 skip. **Active prerequisite before new M4 subsystem work:** continue the behavior-preserving `GameWindow` decomposition reconciled on 2026-07-21. @@ -121,9 +121,12 @@ Selection/interaction Slice 1, live-animation-presentation Slice 2, complete live-session ownership Slice 3, and live-entity App integration Slice 4 are landed. Focused hydration, teardown, inbound-authority, network-update, and motion-runtime owners now sit over canonical `LiveEntityRuntime` without a -second GUID dictionary. `GameWindow` is 10,301 lines, 267 fields, and 163 -methods. Slice 5 extracts landblock presentation next; later slices finish -update/render orchestration and composition cleanup. +second GUID dictionary. Slice 5 checkpoints A–G have moved the complete DAT +build, render/physics/static publication, retryable retirement, and shared- +origin lifetime barrier out of `GameWindow`; it is now 8,793 raw lines, down +44% from the 15,723-line campaign baseline. Slice 5H lifecycle/connected +closeout is active; later slices finish update/render orchestration and +composition cleanup. See `docs/architecture/code-structure.md`. **Carried:** #153, #116, remaining R6 ownership cleanup, TS-50/TS-51, Modern Pipeline MP1b+, and #225's lifestone/particle alpha visual gate. diff --git a/docs/architecture/code-structure.md b/docs/architecture/code-structure.md index 6698e2aa..9878bb36 100644 --- a/docs/architecture/code-structure.md +++ b/docs/architecture/code-structure.md @@ -27,6 +27,7 @@ after Slice 1 14,912 lines / 278 fields / 191 method after Slice 2 14,546 lines / 277 fields / 190 methods after Slice 3 14,310 lines / 274 fields / 190 methods after Slice 4 10,301 lines / 267 fields / 163 methods +after Slice 5G 8,793 lines (field/method closeout in H) ``` `GameWindow` is the single object that: @@ -399,7 +400,7 @@ useful ordering seam, but its ownership status is **partial**. | World reveal | **Complete** | `WorldRevealCoordinator` owns login/portal readiness and reveal lifetime (`a4ef5788`). The accepted deterministic lifecycle trace did not change after extraction. | | Retained gameplay UI | **Mostly complete feature ownership** | `RetailUiRuntime` and focused panel/controllers own layout and behavior. `GameWindow.OnLoad` still performs substantial service composition, which is allowed until the final composition cleanup. | | Selection/interaction | **Complete** | `WorldSelectionQuery` owns read-only picking/classification/range queries; `SelectionInteractionController` owns selection intent, Use/PickUp transport, exact-incarnation queues, and auto-walk deferral; `ItemInteractionController` owns ItemHolder policy plus the shared retail inventory-request transaction. `GameWindow` retains construction and narrow lifecycle forwarding only. | -| Landblock presentation | **Not extracted** | Residency scheduling is extracted, but DAT build, scenery/EnvCell construction, apply, collision/resource publication, and retirement glue remain a large `GameWindow` body. | +| Landblock presentation | **Complete; closeout active** | `LandblockBuildFactory` owns the captured-origin DAT transaction; concrete render/physics/DAT-static publishers and `LandblockPresentationPipeline` own publication and exact retryable retirement. `StreamingOriginRecenterCoordinator` serializes old-window retirement with teleport/session origin lifetimes. `GameWindow` retains construction and one pipeline field only (`c79d0a49`). | | Render-frame orchestration | **Not extracted** | `OnRender` plus its portal/PView/alpha/particle helpers still own the draw graph and frame-local scratch state. There is no `RenderFrameOrchestrator` yet. | | Unified `GameEntity` | **Deferred target** | `LiveEntityRuntime` already supplies the critical canonical owner. Full type aggregation is a separate high-risk migration and is not required to make `GameWindow` thin. | @@ -542,13 +543,15 @@ keeps a second identity dictionary. ForcePosition serializes and stamps one exact canonical outbound Position. Three corrected-diff reviews, the complete 6,940-test Release suite, and the 310-second seven-destination connected R6 route all passed. `GameWindow` is 10,301 lines / 267 fields / 163 methods. -Slice 5 checkpoints A–F are complete. The pipeline owns the serialized worker +Slice 5 checkpoints A–G are complete. The pipeline owns the serialized worker build, concrete render/physics/static publication, and retryable Near/full -retirement; `GameWindow.cs` is 9,011 lines and no longer owns a retirement -coordinator or callback body. Checkpoint G direct cutover/dead-facade cleanup -is active next, followed by deterministic and connected closeout in H. +retirement. The direct cutover deleted the legacy apply/facade/scratch body and +added one retained shared-origin lifetime transaction for teleport, logout, +and fast relogin. `GameWindow.cs` is 8,793 raw lines and no longer owns +landblock build/apply/retirement behavior. Deterministic and connected closeout +is active in H. -#### Slice 5 — extract landblock presentation +#### Slice 5 — extract landblock presentation — CHECKPOINTS A–G COMPLETE Detailed execution ledger: [`docs/plans/2026-07-21-gamewindow-slice-5-landblock-presentation.md`](../plans/2026-07-21-gamewindow-slice-5-landblock-presentation.md) diff --git a/docs/plans/2026-04-11-roadmap.md b/docs/plans/2026-04-11-roadmap.md index 4ef6f227..417106a9 100644 --- a/docs/plans/2026-04-11-roadmap.md +++ b/docs/plans/2026-04-11-roadmap.md @@ -47,12 +47,15 @@ passes 6,940 tests with five intentional skips. The 310-second connected R6 gate passed seven destinations/revisits, movement/jump/combat exercises, and graceful close. -**Current:** Slice 5 checkpoints A–F have extracted the DAT-backed worker +**Current:** Slice 5 checkpoints A–G have extracted the DAT-backed worker build plus render, physics, DAT-static, and retryable Near/full presentation -ownership into `LandblockPresentationPipeline`. `GameWindow` is 9,011 lines -and the Release suite passes 7,039 tests with five intentional skips. Slice 5G -now removes the obsolete callback bodies and scratch/facade state before the -deterministic and connected closeout in H. +ownership into `LandblockPresentationPipeline`. Production has no callback +facade back into the deleted GameWindow apply bodies. A retained shared-origin +transaction retires the complete old window before teleport recenter or +session replacement, including failure/retry and fast relogin. `GameWindow` is +8,793 raw lines (44% below the campaign baseline) and the Release suite passes +7,052 tests with five intentional skips. Slice 5H deterministic and connected +closeout is active. This is a behavior-preserving structural program. Severe regressions still get root-cause fixes in separate commits; ordinary feature work resumes with M4 diff --git a/docs/plans/2026-05-12-milestones.md b/docs/plans/2026-05-12-milestones.md index 3c75ea9d..3ac80c58 100644 --- a/docs/plans/2026-05-12-milestones.md +++ b/docs/plans/2026-05-12-milestones.md @@ -19,13 +19,14 @@ layer, the active structural prerequisite is the behavior-preserving The 2026-07-21 audit baseline was 15,723 lines, 278 fields, and 205 methods. Selection/interaction Slice 1, live-animation-presentation Slice 2, complete live-session ownership Slice 3, and live-entity App integration Slice 4 are -complete. Slice 5 landblock-presentation checkpoints A–F are also complete: +complete. Slice 5 landblock-presentation checkpoints A–G are also complete: the worker DAT transaction, render/physics/static publishers, and retryable -Near/full retirement now have focused owners. `GameWindow` is 9,011 lines, -down 1,290 from the Slice-5 baseline and 6,712 from the campaign baseline. The -full Release suite passes 7,039 tests / 5 skips; Slice 4's seven-destination -connected R6 route passed in 310 seconds. Slice 5G direct cutover and dead -facade/scratch cleanup is active next. +Near/full retirement now have focused owners. The direct production cutover +also serializes complete old-window retirement with teleport and session +origin lifetimes. `GameWindow` is 8,793 raw lines, down 1,508 from the Slice-5 +baseline and 6,930 (44%) from the campaign baseline. The full Release suite +passes 7,052 tests / 5 skips; Slice 4's seven-destination connected R6 route +passed in 310 seconds. Slice 5H deterministic/connected closeout is active. Carried: #153 far-teleport residual, #116 slide-response, the remaining R6 ownership cleanup plus 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 e1493beb..750ae702 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 @@ -96,7 +96,7 @@ test, and bisectable commit rather than being hidden in a mechanical move. impossible. Three corrected-diff reviews are clean. Release gate: 7,039 passed / 5 skipped; build green with 17 pre-existing test-project warnings; `GameWindow.cs` is 9,011 lines. -- [ ] G — cut `StreamingController` and `GameWindow` directly to the pipeline; +- [x] G — cut `StreamingController` and `GameWindow` directly to the pipeline; delete old bodies, scratch state, and callback facades. - [ ] H — three-agent corrected-diff review, full Release suite, deterministic lifecycle gate, seven-destination resource soak, documentation, and durable @@ -375,8 +375,26 @@ AdvanceLandblockPresentationRetirement apply-diagnostic scratch state that now have focused owners. - Add structural source tests and remeasure GameWindow lines/fields/methods. +**Complete in `c79d0a49`.** Production constructs one concrete pipeline; +legacy callback constructors are internal test seams and structural tests keep +them out of the composition root. The old GameWindow apply methods and their +building/diagnostic scratch state are deleted. A retained +`StreamingOriginRecenterCoordinator` now joins complete old-window +presentation retirement to teleport recenter and session cancellation before +the shared origin may be reused. Reviews closed full-window overlap, radius +reconfiguration, sealed-dungeon bootstrap, committed-callback retry, +reentrancy, fast-relogin, and ordinary-logout gaps. Three final reviews are +clean; the zero-warning Release build and 7,052 tests pass with five skips. +`GameWindow.cs` is 8,793 raw lines, 1,508 below the Slice-5 baseline and 6,930 +(44%) below the campaign baseline. + ### H — closeout +**Active.** No new landblock ownership moves are planned in H; it proves the +landed graph under deterministic and connected lifecycle churn, reconciles +divergence pointers/documentation, and records the final Slice-5 structural +measurement before Slice 6 begins. + - Run focused App/Core/Net tests after each checkpoint. - After each code checkpoint, run three independent read-only reviews: retail/ WorldBuilder conformance, architecture/integration, and adversarial failure