docs(architecture): close live animation slice
Record the shipped presentation owner, exact frame-handoff lifetime, retail short-frame behavior, current GameWindow metrics, and Slice 3 as the next structural boundary.
This commit is contained in:
parent
833520253a
commit
9a150e2421
7 changed files with 94 additions and 23 deletions
|
|
@ -1,7 +1,7 @@
|
|||
# acdream — code structure & extraction sequence
|
||||
|
||||
**Status:** Living document. Created 2026-05-16; implementation reconciliation
|
||||
completed 2026-07-21; Slice 1 landed the same day. This is the active
|
||||
completed 2026-07-21; Slices 1 and 2 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
|
||||
|
|
@ -24,6 +24,7 @@ The structural debt is concentrated in **one file**:
|
|||
```
|
||||
baseline cf50ee3d 15,723 lines / 278 fields / 205 methods
|
||||
after Slice 1 14,912 lines / 278 fields / 191 methods
|
||||
after Slice 2 14,546 lines / 277 fields / 190 methods
|
||||
```
|
||||
|
||||
`GameWindow` is the single object that:
|
||||
|
|
@ -388,7 +389,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 | **Partial** | `LiveSessionController` owns endpoint resolution, `WorldSession` construction, ticking, and disposal (`0b25df53`). `TryStartLiveSession`, character choice/entry, session clearing, about 440 lines of subscriptions, and most App packet handlers remain in `GameWindow`. |
|
||||
| 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. |
|
||||
| Inbound/object-frame order | **Partial** | `RetailInboundEventDispatcher`, `RetailLiveFrameCoordinator`, `LiveEntityAnimationScheduler`, static scheduler, remote/projectile updaters, and teleport owners are shipped. `AdvanceLiveObjectRuntimeCore`, final part/mesh/effect composition, and several integration tails remain in `GameWindow`. |
|
||||
| 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. |
|
||||
| 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. |
|
||||
|
|
@ -443,7 +444,7 @@ legacy state for composed owners. Three independent retail, architecture, and
|
|||
adversarial review loops finished clean. Release build passed; 6,558 tests
|
||||
passed and five fixture/conformance tests skipped intentionally.
|
||||
|
||||
#### Slice 2 — finish live animation presentation — NEXT
|
||||
#### Slice 2 — finish live animation presentation — COMPLETE 2026-07-21
|
||||
|
||||
Move `TickAnimations`, final rigid/visual part composition, effect-pose
|
||||
publication, and motion-done binding into `LiveEntityAnimationPresenter`.
|
||||
|
|
@ -457,7 +458,17 @@ rigid effect poses, part availability, same-frame hook pose publication, and
|
|||
incarnation replacement. Run the R6 object-frame and projectile/effect suites
|
||||
plus the connected locomotion/projectile gate.
|
||||
|
||||
#### Slice 3 — complete live-session ownership
|
||||
Result: `LiveEntityAnimationPresenter` owns final visual/rigid part
|
||||
composition, effect-pose publication, MotionDone binding, and typed diagnostics.
|
||||
Schedules carry exact record/entity/component/epoch/projection/presentation
|
||||
identity and own their authored frame prefix until the next scheduler tick.
|
||||
Appearance and static-owner rebinding invalidate stale work. Named-retail
|
||||
`CPartArray::UpdateParts` short-frame retention now preserves both visual and
|
||||
rigid trailing poses. `GameWindow` lost 366 lines, two methods, and one net
|
||||
field. Three independent retail, architecture, and adversarial review loops
|
||||
finished clean; focused App/Core tests and the complete App suite pass.
|
||||
|
||||
#### Slice 3 — complete live-session ownership — NEXT
|
||||
|
||||
Expand `LiveSessionController` to own connect, character-list validation,
|
||||
character selection, EnterWorld, graceful character logout, reconnect, and
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue