docs(plan): complete GameWindow slice 4
This commit is contained in:
parent
aa90c64666
commit
2b10e91e07
7 changed files with 81 additions and 36 deletions
|
|
@ -838,8 +838,10 @@ Current movement/collision ownership:
|
|||
shared retail inventory-request owner; Slice 2 moved final animation
|
||||
presentation into `LiveEntityAnimationPresenter`; Slice 3 moved the complete
|
||||
session generation into `LiveSessionController` plus its focused host and
|
||||
routers. Slice 4 live-entity App integration is next. The reconciled ledger
|
||||
and sequence live in `docs/architecture/code-structure.md`. This decision
|
||||
routers; Slice 4 moved hydration, teardown, inbound authority, network
|
||||
updates, and reusable motion-runtime policy over canonical
|
||||
`LiveEntityRuntime`. Slice 5 landblock presentation is next. The reconciled
|
||||
ledger and sequence live in `docs/architecture/code-structure.md`. This decision
|
||||
does not reclassify the remaining L.2 conformance work or Track LH.
|
||||
|
||||
Full `GameEntity` type aggregation remains a separate, higher-risk target after
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# acdream — code structure & extraction sequence
|
||||
|
||||
**Status:** Living document. Created 2026-05-16; implementation reconciliation
|
||||
completed 2026-07-21; Slices 1–3 landed the same day. This is the active
|
||||
completed 2026-07-21; Slices 1–4 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
|
||||
|
|
@ -26,6 +26,7 @@ baseline cf50ee3d 15,723 lines / 278 fields / 205 method
|
|||
after Slice 1 14,912 lines / 278 fields / 191 methods
|
||||
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
|
||||
```
|
||||
|
||||
`GameWindow` is the single object that:
|
||||
|
|
@ -393,7 +394,7 @@ useful ordering seam, but its ownership status is **partial**.
|
|||
|---|---|---|
|
||||
| Startup options | **Complete** | `RuntimeOptions` owns startup configuration (`eda936dc`). Remaining direct environment reads are legacy runtime diagnostics, not startup configuration. |
|
||||
| Network session | **Complete** | `LiveSessionController` owns resolve/create/bind/Connect/selection/EnterWorld/Tick/stop/reconnect/disposal; `LiveSessionLifecycleHost` is the narrow App composition boundary; `LiveSessionEventRouter` and `LiveSessionCommandRouter` own exact inbound/outbound lifetimes. `GameWindow` retains one controller field and focused domain sink factories only (`d9ccf8a6`, `6a5d9e2e`). |
|
||||
| Live identity/lifetime | **Complete core owner** | `LiveEntityRuntime` owns incarnation identity, accepted snapshots/timestamps, runtime components, logical/spatial lifetime, and teardown. `GameWindow` still owns large hydration and wire-to-presentation adapter bodies. |
|
||||
| Live identity/lifetime | **Complete App integration** | `LiveEntityRuntime` owns incarnation identity, accepted snapshots/timestamps, runtime components, and logical/spatial lifetime. `LiveEntityHydrationController`, `LiveEntityRuntimeTeardownController`, and `LiveEntityNetworkUpdateController` own DAT-backed hydration, retryable cleanup, and accepted Position/Vector/State/Movement presentation without a second GUID owner (`aa90c646`). |
|
||||
| Inbound/object-frame order | **Partial** | `RetailInboundEventDispatcher`, `RetailLiveFrameCoordinator`, `LiveEntityAnimationScheduler`, `LiveEntityAnimationPresenter`, static scheduler, remote/projectile updaters, and teleport owners are shipped. `AdvanceLiveObjectRuntimeCore` retains the visible cross-owner order until Slice 6. |
|
||||
| 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. |
|
||||
|
|
@ -500,11 +501,10 @@ client processes exited normally.
|
|||
`GameWindow` fell another 236 lines and three fields to 14,310 lines / 274
|
||||
fields / 190 methods. Slice 4 is next.
|
||||
|
||||
#### Slice 4 — extract live-entity App integration
|
||||
#### Slice 4 — extract live-entity App integration — COMPLETE 2026-07-21
|
||||
|
||||
Detailed execution ledger:
|
||||
[`docs/plans/2026-07-21-gamewindow-slice-4-live-entity-integration.md`](../plans/2026-07-21-gamewindow-slice-4-live-entity-integration.md)
|
||||
(active).
|
||||
[`docs/plans/2026-07-21-gamewindow-slice-4-live-entity-integration.md`](../plans/2026-07-21-gamewindow-slice-4-live-entity-integration.md).
|
||||
|
||||
This is two owners, not one replacement god object:
|
||||
|
||||
|
|
@ -534,8 +534,15 @@ subtree recovery now use independent authority transactions and preserve the
|
|||
same logical/runtime identities. Checkpoint E is complete in `f38822c4`:
|
||||
Delete, visibility prune, retryable exact-incarnation component cleanup, and
|
||||
derived remote stop-observation lifetime now have focused owners. Checkpoint F
|
||||
(Position/Vector/State/Movement and equal-generation CreateObject routing) is
|
||||
active.
|
||||
completed in `aa90c646`: accepted Position/Vector/State/Movement and the
|
||||
equal-generation CreateObject tail now route through focused owners.
|
||||
Independent authority/version captures survive reentrant callbacks and GUID
|
||||
reuse; shared motion-runtime policy is one-way bound and no extracted owner
|
||||
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 is active next.
|
||||
|
||||
#### Slice 5 — extract landblock presentation
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue