docs(architecture): close GameWindow slice 5
This commit is contained in:
parent
4a205a3e56
commit
d4ecac1da3
7 changed files with 70 additions and 43 deletions
|
|
@ -1,7 +1,7 @@
|
|||
# acdream — code structure & extraction sequence
|
||||
|
||||
**Status:** Living document. Created 2026-05-16; implementation reconciliation
|
||||
completed 2026-07-21; Slices 1–4 landed the same day. This is the active
|
||||
completed 2026-07-21; Slices 1–5 landed the same day. This is the active
|
||||
structural program before new M4 subsystems enter the App layer.
|
||||
**Purpose:** Describe the desired structural state of the App layer,
|
||||
explain the rules we've adopted, and lay out the safe extraction
|
||||
|
|
@ -27,7 +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)
|
||||
after Slice 5 closeout 8,811 lines / 247 fields / 153 methods
|
||||
```
|
||||
|
||||
`GameWindow` is the single object that:
|
||||
|
|
@ -400,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 | **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`). |
|
||||
| Landblock presentation | **Complete** | `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`, closeout `4a205a3e`). |
|
||||
| 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. |
|
||||
|
||||
|
|
@ -547,15 +547,19 @@ Slice 5 checkpoints A–G are complete. The pipeline owns the serialized worker
|
|||
build, concrete render/physics/static publication, and retryable Near/full
|
||||
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.
|
||||
and fast relogin. `GameWindow.cs` was 8,793 raw lines at checkpoint G and no
|
||||
longer owns landblock build/apply/retirement behavior. H then corrected native
|
||||
shutdown ordering so live-session reset converges before the streamer and
|
||||
other reset dependencies are disposed. The final measurement is 8,811 raw
|
||||
lines / 247 fields / 153 methods. The complete Release suite (7,054 pass / 5
|
||||
skip), the 311-second capped/reconnect lifecycle gate, and the synchronized
|
||||
394-second nine-stop resource soak all pass (`4a205a3e`).
|
||||
|
||||
#### Slice 5 — extract landblock presentation — CHECKPOINTS A–G COMPLETE
|
||||
#### Slice 5 — extract landblock presentation — 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)
|
||||
(active).
|
||||
(complete).
|
||||
|
||||
Create `LandblockPresentationPipeline` around the existing immutable
|
||||
`LandblockBuild` transaction. It owns DAT build context, scenery/EnvCell
|
||||
|
|
@ -565,8 +569,8 @@ what is resident; `GpuWorldState` continues owning spatial buckets.
|
|||
|
||||
Tests pin loaded/pending/demoted/unloaded symmetry, stale build generations,
|
||||
resource pin/release balance, collision footprints across landblock seams, and
|
||||
first-login bootstrap replacement. Run the deterministic world-lifecycle gate
|
||||
and the seven-destination resource soak.
|
||||
first-login bootstrap replacement. The deterministic world-lifecycle gate and
|
||||
nine-destination resource soak pass.
|
||||
|
||||
#### Slice 6 — extract update-frame orchestration
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue