docs(plan): complete GameWindow slice 4

This commit is contained in:
Erik 2026-07-21 19:29:04 +02:00
parent aa90c64666
commit 2b10e91e07
7 changed files with 81 additions and 36 deletions

View file

@ -38,9 +38,19 @@ tests with five intentional skips. Its connected gate passed capped login,
five travel/revisit checkpoints, graceful close, and uncapped fresh-process
reconnect in 306 seconds.
**Next:** Slice 4 extracts live-entity App integration into focused hydration
and network-update controllers over the existing canonical
`LiveEntityRuntime`, without adding a second GUID or resource owner.
Slice 4 live-entity App integration landed 2026-07-21: focused hydration,
retryable teardown, inbound authority, network-update, equal-generation
CreateObject, and reusable motion-runtime owners now sit over the canonical
`LiveEntityRuntime`. No extracted owner adds a second GUID dictionary.
`GameWindow` is now 10,301 lines, 267 fields, and 163 methods; the Release suite
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.
**Next:** Slice 5 extracts DAT-backed landblock build, publication, demotion,
and retirement into `LandblockPresentationPipeline` while preserving
`StreamingController` residency decisions and `GpuWorldState` spatial
ownership.
This is a behavior-preserving structural program. Severe regressions still get
root-cause fixes in separate commits; ordinary feature work resumes with M4

View file

@ -17,10 +17,12 @@ layer, the active structural prerequisite is the behavior-preserving
`GameWindow` decomposition in
[`docs/architecture/code-structure.md`](../architecture/code-structure.md).
The 2026-07-21 audit baseline was 15,723 lines, 278 fields, and 205 methods.
Selection/interaction Slice 1, live-animation-presentation Slice 2, and
complete live-session ownership Slice 3 are complete. `GameWindow` is now
14,310 lines, 274 fields, and 190 methods. Slice 4 — live-entity App
integration — is active next.
Selection/interaction Slice 1, live-animation-presentation Slice 2, complete
live-session ownership Slice 3, and live-entity App integration Slice 4 are
complete. `GameWindow` is now 10,301 lines, 267 fields, and 163 methods. The
full Release suite passes 6,940 tests / 5 skips, and Slice 4's seven-destination
connected R6 route passed in 310 seconds. Slice 5 — landblock presentation —
is active next.
Carried:
#153 far-teleport residual, #116 slide-response, the remaining R6 ownership cleanup plus

View file

@ -1,6 +1,6 @@
# GameWindow Slice 4 — live-entity App integration
**Status:** Active 2026-07-21.
**Status:** Complete 2026-07-21.
**Parent program:** [`docs/architecture/code-structure.md`](../architecture/code-structure.md), Slice 4.
**Baseline:** `ed9dc366`; `GameWindow.cs` is 14,310 lines, 274 fields, and
190 methods before this slice. Release baseline: 6,714 passed / 5 skipped.
@ -30,10 +30,10 @@ them inside a mechanical extraction.
identity across leave-world/re-entry. Landed in `fe551496`; 6,877 Release
tests passed / 5 skipped after three clean retail, architecture, and
adversarial re-reviews on 2026-07-21.
- [ ] E — Delete/prune and retryable exact-incarnation teardown ownership.
- [ ] F — Position/Vector/State/Movement controller, same-generation CreateObject
- [x] E — Delete/prune and retryable exact-incarnation teardown ownership.
- [x] F — Position/Vector/State/Movement controller, same-generation CreateObject
tail, independent authority gates, and direct inbound cutover.
- [ ] G — `GameWindow` cleanup, three-agent review cycle, full Release suite,
- [x] G — `GameWindow` cleanup, three-agent review cycle, full Release suite,
connected gates, documentation, and durable memory closeout.
## 1. Outcome and non-goals
@ -343,6 +343,20 @@ skips and no errors; all three corrected-diff re-reviews were clean.
- Route session callbacks directly and remove old GameWindow handlers.
- Full Release build/test; review cycle.
Completed in `aa90c646`. `LiveEntityNetworkUpdateController` now owns accepted
Position, Vector, State, and Movement routing;
`LiveEntitySameGenerationUpdateRouter` owns the retail equal-generation
CreateObject tail. `LiveEntityInboundAuthorityGate` pins the exact record,
independent channel authority, and velocity authority before any reentrant App
callback. `LiveEntityMotionRuntimeController` owns the shared physics-host,
Setup, MoveTo/Sticky, Hidden-target, and server-controlled-cycle policy behind
a once-bound construction bridge. ForcePosition preserves retail's
blip-then-immediate-F7B1 order and stamps the exact Position snapshot serialized
on the wire. Focused tests cover stale/equal/wrapped timestamps, callback
replacement, GUID reuse, projectile/body/remote Vector precedence, mixed
same-generation routing, bridge binding, and the exact 56-byte autonomous
position payload. All three corrected-diff re-reviews were clean.
### G — closeout
- Structural tests prove both controllers lack identity dictionaries and
@ -358,6 +372,16 @@ skips and no errors; all three corrected-diff re-reviews were clean.
ledger, `AGENTS.md`/`CLAUDE.md` when current-state pointers change, and
durable GameWindow/live-runtime memory.
Completed 2026-07-21. `GameWindow` fell from the Slice-3 baseline of 14,310
lines to 10,301 lines; its top-level field and method declarations are now 267
and 163. Release build completed with zero warnings/errors and the full suite
passed 6,940 tests with five intentional skips. The 310-second connected R6
route passed login, Caul/Sawato/Rynthid/Aerlinthe/Sawato-revisit/Holtburg/
Caul-return materialization, turn sampling, three locomotion/jump/combat
exercises, and graceful close. Live-server population churn, previously known
missing DAT VFX diagnostics, and empty world-edge landblocks remained warnings,
not lifecycle failures. Slice 5 is the next structural owner boundary.
## 5. Adversarial acceptance matrix
Automated acceptance includes: