docs(architecture): record GameWindow automated closeout

Reconcile the architecture, roadmap, milestones, issue ledger, session instructions, and durable memory with the 1,622-line native shell, canonical soak evidence, connected framebuffer comparison, and sole remaining user visual gate.

Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-22 20:52:25 +02:00
parent 69650b1946
commit 5c955c36ec
11 changed files with 239 additions and 201 deletions

View file

@ -2,11 +2,12 @@
## Current state
The behavior-preserving App ownership campaign is complete through Slice 7 and
Slice 8 checkpoints AH. `GameWindow.cs` moved from the 2026-07-21 baseline of
15,723 lines / 278 fields / 205 methods to 3,689 lines / 162 fields / 37
methods: 12,034 lines (76.5%) were removed without changing accepted gameplay
or rendering behavior.
All eight behavior-preserving App ownership slices and their automated closeout
are complete. `GameWindow.cs` moved from the 2026-07-21 baseline of 15,723
lines / 278 fields / 205 methods to a 1,622-line native
composition/callback shell: 14,101 lines (89.7%) were removed without changing
accepted gameplay or rendering behavior. Only the user's final connected
visual matrix remains before the campaign is marked complete.
| Slice | Ownership moved out | Closeout size |
|---|---|---:|
@ -21,6 +22,9 @@ or rendering behavior.
| 8 F | sole gameplay action route, typed commands, retained-root callback lifetime | 4,057 / 198 / 54 |
| 8 G | pre-window/runtime settings ownership, one startup snapshot, inert late target binding | 3,663 / 162 / 37 |
| 8 H | render/UI/frame/portal resource roots plus checked retryable GL leaves | 3,689 / 162 / 37 |
| 8 I | executable ordered startup composition and terminal session start | 1,945 / startup shell |
| 8 J | retryable typed lifetime/shutdown owner | 1,625 / lifetime shell |
| 8 KL | acknowledged canonical soak capture and automated closeout | 1,622 / native shell |
Slice 8 is an ordered checkpoint campaign rather than another feature-body
move. A froze/pruned the shell boundary; B gave all nine native window callback
@ -141,6 +145,23 @@ review rule live in `docs/architecture/code-structure.md`.
## Accepted verification
- Final automated closeout: 293 focused Slice 8 tests pass; App Release passes
3,451 / 3 intentional skips; the complete Release suite passes 7,823 / 5.
The Release build retains only the 17 pre-existing test-project warnings
tracked by #228. Behavior/retail, architecture/ownership, and adversarial
failure reviews are clean.
- Checkpoint K (`bca41487`, `6c5e0604`): two fresh-process 403-second
nine-stop soaks produce the exact ordered same-frame canonical checkpoints,
zero pending teardown/retirement/staging/warmup work, no unconfounded owner
growth, unchanged process/performance gates, and graceful exits. #232 is
closed.
- Checkpoint L connected lifecycle/reconnect passes in 314.4 seconds with six
valid PNGs and graceful capped/uncapped exits. The uncapped final checkpoint
is 174.74 FPS / 5.72 ms. Frames reconstructed from exact Slice 7 commit
`9d7df1bf` preserve deterministic geometry, UI/paperdoll layering, private
viewports, depth/alpha, and world reveal; remaining differences are live
entities, particles, vitals, and sub-frame camera timing.
- Slice 8 Checkpoint H: 61 focused ownership/lifetime tests pass; App Release
passes 3,236 tests / 3 intentional skips. Four corrected-diff cycles closed
every architecture, retail, and adversarial finding; all three final reviews
@ -177,11 +198,10 @@ review rule live in `docs/architecture/code-structure.md`.
all movement/jump/combat exercises, and graceful exit passed; update p95 was
at or below 0.8 ms. Caul return → plateau working/private delta was
+85.7/+59.3 MiB, inside the unchanged gate.
- Two immediately preceding identical-binary runs exceeded the coarse process-
residency threshold while deterministic ownership/lifecycle/timing checks
passed. #232 adds canonical resource-owner snapshots; do not solve this by
loosening the process-memory threshold or treating residency alone as an
identified owner leak.
- Two Slice-7 identical-binary runs exceeded the coarse process-residency
threshold while deterministic ownership/lifecycle/timing checks passed.
Checkpoint K closed #232 by adding canonical owner snapshots; it did not
loosen the process threshold or treat residency alone as an identified leak.
- The 1833 missing VFX table/emitter diagnostics are known DAT-driven records,
not a Slice 7 regression.
- TS-50, TS-51, and TS-53 remain registered; Slice 7 introduced no new retail
@ -189,13 +209,12 @@ review rule live in `docs/architecture/code-structure.md`.
## Next work
Slice 8 checkpoints IL group the remaining ordered startup composition,
shutdown wiring, canonical soak snapshots, and closeout and reduce Silk callbacks to
narrow calls into input, update, render, resize, focus, and shutdown owners.
It removes leftover feature state only where Slices 17 already established a
canonical owner; it does not redesign gameplay, rendering, or resource lifetime.
The reviewed AL execution ledger is
`docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md`.
Run the final connected visual matrix: first login/radar; movement, mouse,
resize, focus, and combat; shared inventory/skills/spellbook panel; outdoor,
building, dungeon, portal, paperdoll, particle, and alpha presentation; then
graceful close and fresh reconnect. After user confirmation, mark Checkpoint L
and the campaign complete and resume M4. Full `GameEntity` aggregation remains
a separate migration and must not be folded into the visual handoff.
## Do not retry
@ -207,7 +226,9 @@ The reviewed AL execution ledger is
- Do not add a second GUID, session, spatial, or resource owner.
- Do not fold full `GameEntity` aggregation into this campaign; evaluate it
after Slice 8.
- Do not loosen the soak process-memory threshold to hide #232. Add canonical
owner snapshots and preserve process residency as a secondary guard.
- Do not revert Checkpoint K to exact cache equality: normal retirement may
shrink owners, and visible/server workload changes may change populations.
Hard-fail owner growth only when workload is stable, name workload-confounded
growth explicitly, and preserve the unchanged process-residency limits.
- Small value/policy callbacks and diagnostics are acceptable only when they do
not call a substantial window body or hide mutable ownership.