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

@ -115,57 +115,24 @@ and the final two-client portal-out/materialization observer flow are
user-gated. Deterministic world-lifecycle automation protects fresh login, user-gated. Deterministic world-lifecycle automation protects fresh login,
outdoor/world-edge/dungeon travel, same-location revisit, exact graceful outdoor/world-edge/dungeon travel, same-location revisit, exact graceful
disconnect, and uncapped fresh-process reconnect with JSON/PNG artifacts. disconnect, and uncapped fresh-process reconnect with JSON/PNG artifacts.
Release builds; Checkpoint H passes 61 focused ownership tests, 3,236 App tests Release builds; the automated structural closeout passes 293 focused tests,
/ 3 skips, and 7,606 complete-solution tests / 5 skips. 3,451 App tests / 3 skips, and 7,823 complete-solution tests / 5 skips.
**Active prerequisite before new M4 subsystem work:** continue the **Structural prerequisite before new M4 subsystem work:** all eight
behavior-preserving `GameWindow` decomposition reconciled on 2026-07-21. behavior-preserving `GameWindow` decomposition slices and the automated
Selection/interaction Slice 1, live-animation-presentation Slice 2, complete closeout landed 2026-07-22. The class is now a 1,622-line native
live-session ownership Slice 3, and live-entity App integration Slice 4 are composition/callback shell, down 14,101 lines (89.7%) from baseline. Ordered
landed. Focused hydration, teardown, inbound-authority, network-update, and startup, update/render frame graphs, native/input callbacks, settings,
motion-runtime owners now sit over canonical `LiveEntityRuntime` without a session/reset wiring, canonical checkpoint capture, and retryable shutdown are
second GUID dictionary. Slices 57 are complete: landblock presentation, owned by focused typed collaborators without a service locator or stored
update-frame orchestration, and render-frame orchestration all have typed window back-reference. All 293 focused tests, App Release 3,451/3, the complete
owners. `GameWindow.OnUpdate` and `GameWindow.OnRender` are one-handoff methods; Release suite 7,823/5, connected lifecycle/reconnect, two fresh-process
the frame owners have no direct window or anonymous callback-bag ownership. canonical nine-stop soaks, three corrected-diff reviews, and the exact Slice-7
Slice 8 checkpoints AH are also complete: dead host residue is removed, framebuffer comparison pass. Issue #232 is closed without loosening process
native-window callback intake has reversible lifetime ownership, and limits. Only the user's final connected visual matrix remains before M4 feature
`LiveSessionHost` owns reset/binding composition over the sole canonical bodies resume.
session controller. `WorldEnvironmentController` solely owns the clock, DAT
sky/day group, weather, synchronization, and AdminEnvirons state.
`CameraPointerInputController` and `FramebufferResizeController` now own raw
camera input/focus/scroll and physical framebuffer publication. Silk,
dispatcher, retained-UI, and devtools device edges are reversible,
transactional, and terminal after disposal; live-session retirement precedes
physical callback removal. `GameplayInputActionRouter` now owns the sole
semantic action-priority
graph; typed owners route combat, diagnostics, and remaining commands, and the
retained-root item-drop edge is reversible. `GameWindow` was 4,057 raw lines /
198 fields / 54 methods at F. Checkpoint G adds the sole pre-window/runtime
settings owner, one immutable startup snapshot, ordered one-shot startup
application, and inert late target binding. `GameWindow` is now 3,663 raw lines /
162 fields / 37 methods, down 12,060 lines (76.7%) from the 15,723-line campaign
baseline. The 7,553-test / 5-skip Checkpoint G Release suite, 315.6-second
lifecycle/reconnect gate, and 395.2-second synchronized nine-stop soak pass.
Checkpoint H adds sole terrain/sky render-resource roots, one retained
Host/runtime lease, an atomic update/render frame-root pair, prepared portal
fallback/transfer, and checked retryable GL construction/state boundaries.
Checkpoint I now routes production through the same executable nine-phase
pipeline as its failure oracle, carries exact platform/settings results through
typed phase inputs, atomically publishes frame roots, and makes session start
terminal. `GameWindow` is 1,945 raw lines, down 13,778 lines (87.6%) from
baseline. App Release passes 3,431 tests / 3 skips and the complete Release
suite passes 7,803 / 5 skips. Checkpoint J moves the exact shutdown dependency
graph into `GameWindowLifetime`: immutable typed roots, retry/no-replay state,
hard session/GPU barriers, reportable physical callback cleanup, structured
terminal reporting, and native-window-last release now live outside the shell.
`GameWindow` is 1,625 raw lines, down 14,098 lines (89.7%) from baseline. App
Release passes 3,441 tests / 3 skips and the complete Release suite passes
7,813 / 5 skips. Checkpoints KL—canonical soak snapshots and final connected
closeout—remain active.
See `docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md` and See `docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md` and
`docs/architecture/code-structure.md`. **Carried:** #232, #153, `docs/architecture/code-structure.md`. **Carried:** #153, #116, remaining
#116, remaining
R6 ownership cleanup, TS-50/TS-51/TS-53, Modern Pipeline MP1b+, and #225's R6 ownership cleanup, TS-50/TS-51/TS-53, Modern Pipeline MP1b+, and #225's
lifestone/particle alpha visual gate. lifestone/particle alpha visual gate.
@ -208,8 +175,8 @@ and to stop `GameWindow.cs` from continuing to grow into a 10k-line
god object. The full rationale + the extraction sequence we're god object. The full rationale + the extraction sequence we're
pursuing live in [`docs/architecture/code-structure.md`](docs/architecture/code-structure.md). pursuing live in [`docs/architecture/code-structure.md`](docs/architecture/code-structure.md).
1. **No new substantial feature bodies in `GameWindow.cs`.** It is 1. **No new substantial feature bodies in `GameWindow.cs`.** It is now the
already over 10,000 lines and owns runtime wiring. New runtime roughly 1,600-line native composition/callback shell. New runtime
work goes into a dedicated controller / sink / orchestrator class work goes into a dedicated controller / sink / orchestrator class
in `src/AcDream.App/` (or deeper in `AcDream.Core` when it's pure in `src/AcDream.App/` (or deeper in `AcDream.Core` when it's pure
logic). Adding a handful of fields and a one-paragraph method to logic). Adding a handful of fields and a one-paragraph method to

View file

@ -113,57 +113,24 @@ and the final two-client portal-out/materialization observer flow are
user-gated. Deterministic world-lifecycle automation protects fresh login, user-gated. Deterministic world-lifecycle automation protects fresh login,
outdoor/world-edge/dungeon travel, same-location revisit, exact graceful outdoor/world-edge/dungeon travel, same-location revisit, exact graceful
disconnect, and uncapped fresh-process reconnect with JSON/PNG artifacts. disconnect, and uncapped fresh-process reconnect with JSON/PNG artifacts.
Release builds; Checkpoint H passes 61 focused ownership tests, 3,236 App tests Release builds; the automated structural closeout passes 293 focused tests,
/ 3 skips, and 7,606 complete-solution tests / 5 skips. 3,451 App tests / 3 skips, and 7,823 complete-solution tests / 5 skips.
**Active prerequisite before new M4 subsystem work:** continue the **Structural prerequisite before new M4 subsystem work:** all eight
behavior-preserving `GameWindow` decomposition reconciled on 2026-07-21. behavior-preserving `GameWindow` decomposition slices and the automated
Selection/interaction Slice 1, live-animation-presentation Slice 2, complete closeout landed 2026-07-22. The class is now a 1,622-line native
live-session ownership Slice 3, and live-entity App integration Slice 4 are composition/callback shell, down 14,101 lines (89.7%) from baseline. Ordered
landed. Focused hydration, teardown, inbound-authority, network-update, and startup, update/render frame graphs, native/input callbacks, settings,
motion-runtime owners now sit over canonical `LiveEntityRuntime` without a session/reset wiring, canonical checkpoint capture, and retryable shutdown are
second GUID dictionary. Slices 57 are complete: landblock presentation, owned by focused typed collaborators without a service locator or stored
update-frame orchestration, and render-frame orchestration all have typed window back-reference. All 293 focused tests, App Release 3,451/3, the complete
owners. `GameWindow.OnUpdate` and `GameWindow.OnRender` are one-handoff methods; Release suite 7,823/5, connected lifecycle/reconnect, two fresh-process
the frame owners have no direct window or anonymous callback-bag ownership. canonical nine-stop soaks, three corrected-diff reviews, and the exact Slice-7
Slice 8 checkpoints AH are also complete: dead host residue is removed, framebuffer comparison pass. Issue #232 is closed without loosening process
native-window callback intake has reversible lifetime ownership, and limits. Only the user's final connected visual matrix remains before M4 feature
`LiveSessionHost` owns reset/binding composition over the sole canonical bodies resume.
session controller. `WorldEnvironmentController` solely owns the clock, DAT
sky/day group, weather, synchronization, and AdminEnvirons state.
`CameraPointerInputController` and `FramebufferResizeController` now own raw
camera input/focus/scroll and physical framebuffer publication. Silk,
dispatcher, retained-UI, and devtools device edges are reversible,
transactional, and terminal after disposal; live-session retirement precedes
physical callback removal. `GameplayInputActionRouter` now owns the sole
semantic action-priority
graph; typed owners route combat, diagnostics, and remaining commands, and the
retained-root item-drop edge is reversible. `GameWindow` was 4,057 raw lines /
198 fields / 54 methods at F. Checkpoint G adds the sole pre-window/runtime
settings owner, one immutable startup snapshot, ordered one-shot startup
application, and inert late target binding. `GameWindow` is now 3,663 raw lines /
162 fields / 37 methods, down 12,060 lines (76.7%) from the 15,723-line campaign
baseline. The 7,553-test / 5-skip Checkpoint G Release suite, 315.6-second
lifecycle/reconnect gate, and 395.2-second synchronized nine-stop soak pass.
Checkpoint H adds sole terrain/sky render-resource roots, one retained
Host/runtime lease, an atomic update/render frame-root pair, prepared portal
fallback/transfer, and checked retryable GL construction/state boundaries.
Checkpoint I now routes production through the same executable nine-phase
pipeline as its failure oracle, carries exact platform/settings results through
typed phase inputs, atomically publishes frame roots, and makes session start
terminal. `GameWindow` is 1,945 raw lines, down 13,778 lines (87.6%) from
baseline. App Release passes 3,431 tests / 3 skips and the complete Release
suite passes 7,803 / 5 skips. Checkpoint J moves the exact shutdown dependency
graph into `GameWindowLifetime`: immutable typed roots, retry/no-replay state,
hard session/GPU barriers, reportable physical callback cleanup, structured
terminal reporting, and native-window-last release now live outside the shell.
`GameWindow` is 1,625 raw lines, down 14,098 lines (89.7%) from baseline. App
Release passes 3,441 tests / 3 skips and the complete Release suite passes
7,813 / 5 skips. Checkpoints KL—canonical soak snapshots and final connected
closeout—remain active.
See `docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md` and See `docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md` and
`docs/architecture/code-structure.md`. **Carried:** #232, #153, `docs/architecture/code-structure.md`. **Carried:** #153, #116, remaining
#116, remaining
R6 ownership cleanup, TS-50/TS-51/TS-53, Modern Pipeline MP1b+, and #225's R6 ownership cleanup, TS-50/TS-51/TS-53, Modern Pipeline MP1b+, and #225's
lifestone/particle alpha visual gate. lifestone/particle alpha visual gate.
@ -206,8 +173,8 @@ and to stop `GameWindow.cs` from continuing to grow into a 10k-line
god object. The full rationale + the extraction sequence we're god object. The full rationale + the extraction sequence we're
pursuing live in [`docs/architecture/code-structure.md`](docs/architecture/code-structure.md). pursuing live in [`docs/architecture/code-structure.md`](docs/architecture/code-structure.md).
1. **No new substantial feature bodies in `GameWindow.cs`.** It is 1. **No new substantial feature bodies in `GameWindow.cs`.** It is now the
already over 10,000 lines and owns runtime wiring. New runtime roughly 1,600-line native composition/callback shell. New runtime
work goes into a dedicated controller / sink / orchestrator class work goes into a dedicated controller / sink / orchestrator class
in `src/AcDream.App/` (or deeper in `AcDream.Core` when it's pure in `src/AcDream.App/` (or deeper in `AcDream.Core` when it's pure
logic). Adding a handful of fields and a one-paragraph method to logic). Adding a handful of fields and a one-paragraph method to

View file

@ -26,29 +26,13 @@ What does NOT go here:
## Current queue — 2026-07-22 ## Current queue — 2026-07-22
- **Active structural work:** `GameWindow` decomposition. Slices 17 and Slice - **Structural handoff:** all eight `GameWindow` decomposition slices and the
8 checkpoints AH are complete; I.1I.7 now own the executable ordered automated closeout are complete. The 1,622-line native shell has typed
startup path through retained UI and live presentation, including the startup, frame, callback, and shutdown owners; 293 focused tests, the
canonical runtime/world, selection/radar, landblock publishers, and 7,823/5 Release suite, the lifecycle/reconnect route, two canonical
portal/sky/particle resources. nine-stop soaks, and the Slice-7 framebuffer comparison pass. Only the
I.7 now owns streaming/session/hydration/local-player/teleport startup and user's final connected visual matrix remains before the campaign is marked
every late edge explicitly. I.8a now owns the focused session factory, complete in [`docs/architecture/code-structure.md`](architecture/code-structure.md).
command targets, and sole gameplay input subscriber before frame publication.
I.8b now owns the complete update/render construction, exact atomic frame
publication, and lifecycle resource snapshot source. I.8c makes session
start the terminal `OnLoad` operation. I.9 corrected the production root to
invoke the exact tested pipeline and made every consumed platform/settings
result explicit. Checkpoint J moves the exact retryable shutdown graph into
`GameWindowLifetime`, including typed roots, hard session/GPU barriers,
reportable physical detach, structured terminal state, and native-window-last
release. `GameWindow.OnUpdate` and `GameWindow.OnRender` are typed
orchestration handoffs and the class is 1,625 raw lines. Checkpoints KL—the
canonical soak snapshots and final closeout—remain active in
[`docs/architecture/code-structure.md`](architecture/code-structure.md).
This is the behavior-preserving prerequisite before new M4 feature bodies.
- **Connected-gate fidelity:** `#232` adds canonical managed/GPU/cache-owner
snapshots to the nine-stop soak so process-residency variance cannot be
mistaken for an owner leak or silently waved away.
- **Separate rendering gate:** `#225`, lifestone/particle alpha ordering. Its - **Separate rendering gate:** `#225`, lifestone/particle alpha ordering. Its
connected performance, lifetime, and unattended portal routes pass. connected performance, lifetime, and unattended portal routes pass.
- **Carried behavior debt:** `#153` far-teleport unstreamed-edge arrival and - **Carried behavior debt:** `#153` far-teleport unstreamed-edge arrival and
@ -122,7 +106,7 @@ attributes remain safely projected as zero.
## #232 — Nine-stop soak process-memory gate lacks canonical owner snapshots ## #232 — Nine-stop soak process-memory gate lacks canonical owner snapshots
**Status:** OPEN **Status:** DONE (2026-07-22, `bca41487` + `6c5e0604`)
**Severity:** LOW **Severity:** LOW
**Filed:** 2026-07-22 **Filed:** 2026-07-22
**Component:** connected automation / resource diagnostics **Component:** connected automation / resource diagnostics
@ -135,13 +119,17 @@ growth of +240.9 MiB and +497.4 MiB; a third unchanged run passed at +85.7 MiB
(private +59.3 MiB). Earlier Slice 6 development history also contains both a (private +59.3 MiB). Earlier Slice 6 development history also contains both a
coarse-memory failure and subsequent clean runs. coarse-memory failure and subsequent clean runs.
**Root cause / status:** The current soak samples only process working set and **Root cause / status:** The old soak sampled only process working set/private
private bytes plus coarse world/title counters. Those totals combine live .NET bytes plus coarse world/title counters. Those totals combine live .NET objects,
objects, committed-but-free GC segments, native allocations, mapped pages, and committed-but-free GC segments, native allocations, mapped pages, and GPU
GPU-driver residency, so a failed total cannot identify the owner that grew. driver residency, so a failed total could not identify the owner that grew.
This is a diagnostic blind spot, not evidence that the threshold should be Deferred acknowledged render-frame checkpoints now record the exact frame
raised. The unchanged gate produced a clean required closeout pass; no runtime outcome and canonical managed/GPU/cache/VFX/pending-work owners. Two fresh
workaround or tolerance change was made. 403-second routes pass all nine ordered checkpoints, zero pending/staged/warmup
work, no unconfounded owner growth, graceful close, and the unchanged process
and performance limits. Legitimate owner retirement is allowed; growth becomes
a hard failure when workload is stable and a named warning when authoritative
or visible workload changed.
**Files:** `tools/run-connected-r6-soak.ps1`; **Files:** `tools/run-connected-r6-soak.ps1`;
`src/AcDream.App/Diagnostics/WorldLifecycleAutomationController.cs`; `src/AcDream.App/Diagnostics/WorldLifecycleAutomationController.cs`;

View file

@ -224,7 +224,7 @@ src/
LiveEntityTeardown.cs -> failure-isolated multi-owner lifecycle drain LiveEntityTeardown.cs -> failure-isolated multi-owner lifecycle drain
RetailLiveFrameCoordinator.cs -> object/physics-before-network frame barrier RetailLiveFrameCoordinator.cs -> object/physics-before-network frame barrier
Rendering/ Rendering/
GameWindow.cs -> still owns too much runtime wiring GameWindow.cs -> native composition/callback shell
LiveEntityAnimationScheduler.cs -> canonical ordinary live-object workset LiveEntityAnimationScheduler.cs -> canonical ordinary live-object workset
RetailStaticAnimatingObjectScheduler.cs -> retail static-animation workset RetailStaticAnimatingObjectScheduler.cs -> retail static-animation workset
StaticLiveRootCommitter.cs -> static root pose/collision commit boundary StaticLiveRootCommitter.cs -> static root pose/collision commit boundary
@ -820,8 +820,9 @@ Current movement/collision ownership:
- **M3 landed 2026-07-21** with connected magic/portal acceptance and the final - **M3 landed 2026-07-21** with connected magic/portal acceptance and the final
two-client observer gate; Track LH is the future presentation-independent two-client observer gate; Track LH is the future presentation-independent
Linux/headless extraction. Linux/headless extraction.
- **The behavior-preserving thin-`GameWindow` ownership campaign is the active - **The behavior-preserving thin-`GameWindow` ownership campaign has completed
prerequisite before new M4 subsystem bodies.** Selection/interaction Slice 1 its implementation and automated closeout; only the user's final connected
visual matrix remains before new M4 subsystem bodies.** Selection/interaction Slice 1
landed with `WorldSelectionQuery`, `SelectionInteractionController`, and the landed with `WorldSelectionQuery`, `SelectionInteractionController`, and the
shared retail inventory-request owner; Slice 2 moved final animation shared retail inventory-request owner; Slice 2 moved final animation
presentation into `LiveEntityAnimationPresenter`; Slice 3 moved the complete presentation into `LiveEntityAnimationPresenter`; Slice 3 moved the complete
@ -843,9 +844,12 @@ Current movement/collision ownership:
production pipeline and terminal session start are complete. Checkpoint J production pipeline and terminal session start are complete. Checkpoint J
moves the exact shutdown dependency graph into `GameWindowLifetime`, whose moves the exact shutdown dependency graph into `GameWindowLifetime`, whose
typed roots preserve hard session/GPU barriers, reportable physical detach, typed roots preserve hard session/GPU barriers, reportable physical detach,
retry/no-replay progress, and native-window-last release. `GameWindow` is retry/no-replay progress, and native-window-last release. Checkpoint K adds
1,625 raw lines; only the canonical soak instrumentation and final connected deferred same-frame canonical resource snapshots and closes #232 through two
closeout checkpoints remain. The reconciled ledger and sequence live in clean fresh-process nine-stop routes without weakening process limits.
`GameWindow` is 1,622 raw lines; 293 focused tests, the 7,823/5 Release suite,
connected lifecycle/reconnect, canonical soaks, corrected-diff reviews, and
the Slice-7 framebuffer comparison pass. The reconciled ledger lives in
`docs/architecture/code-structure.md`. This decision does not reclassify the `docs/architecture/code-structure.md`. This decision does not reclassify the
remaining L.2 conformance work or Track LH. remaining L.2 conformance work or Track LH.

View file

@ -1,9 +1,9 @@
# acdream — code structure & extraction sequence # acdream — code structure & extraction sequence
**Status:** Living document. Created 2026-05-16; implementation reconciliation **Status:** Living document. Created 2026-05-16; implementation reconciliation
completed 2026-07-21; Slices 17 landed by 2026-07-22. The final Slice 8 completed 2026-07-21; Slices 18 and their automated closeout landed by
composition/shutdown cleanup is active before new M4 subsystems enter the App 2026-07-22. The final connected visual matrix remains before new M4 subsystems
layer. enter the App layer.
**Purpose:** Describe the desired structural state of 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 explain the rules we've adopted, and lay out the safe extraction
sequence from today's reality (one 15,723-line `GameWindow.cs` at the sequence from today's reality (one 15,723-line `GameWindow.cs` at the
@ -37,9 +37,10 @@ after Slice 8 checkpoint F 4,057 lines / 198 fields / 54 method
after Slice 8 checkpoint G 3,663 lines / 162 fields / 37 methods after Slice 8 checkpoint G 3,663 lines / 162 fields / 37 methods
after Slice 8 checkpoint I 1,945 lines / startup composition shell after Slice 8 checkpoint I 1,945 lines / startup composition shell
after Slice 8 checkpoint J 1,625 lines / focused lifetime shell after Slice 8 checkpoint J 1,625 lines / focused lifetime shell
after Slice 8 checkpoint K 1,622 lines / canonical soak shell
``` ```
`GameWindow` is the single object that: At the campaign baseline, `GameWindow` was the single object that:
- Owns the GL context, the window, input, and shaders. - Owns the GL context, the window, input, and shaders.
- Reads ~40 different environment variables across its lifetime. - Reads ~40 different environment variables across its lifetime.
@ -58,11 +59,11 @@ after Slice 8 checkpoint J 1,625 lines / focused lifetime shell
`StreamingController` and `GpuWorldState` owners. `StreamingController` and `GpuWorldState` owners.
- Wires up every plugin hook sink, every diagnostic, every panel. - Wires up every plugin hook sink, every diagnostic, every panel.
The extracted controllers are valuable and tested, but line count alone proves The completed slices moved those bodies into focused, tested owners. The rule
that creating collaborators has not yet made the window thin. A collaborator that governed the campaign still applies: a collaborator is a completed
is a completed extraction only when it owns the state and behavior body; extraction only when it owns the state and behavior body; wrapping a
wrapping a `GameWindow` method in a delegate preserves ordering but remains a `GameWindow` method in a delegate preserves ordering but remains a partial
partial extraction. extraction.
The fix is **not** "rewrite `GameWindow` in one pass" — that is a The fix is **not** "rewrite `GameWindow` in one pass" — that is a
high-risk change. The fix is to **extract one high-risk change. The fix is to **extract one
@ -77,9 +78,9 @@ Recap of the rules from `CLAUDE.md` with the rationale:
### Rule 1: No new substantial feature bodies in `GameWindow.cs` ### Rule 1: No new substantial feature bodies in `GameWindow.cs`
**Why:** Every line we add to `GameWindow` makes the eventual decomposition **Why:** New feature bodies in the native shell would reverse the ownership
harder. New features that "live in" `GameWindow` instead of being campaign. Runtime work belongs in focused App owners, with only construction
extracted are the reason the file is 10k lines. and narrow callback handoffs retained here.
**How to apply:** A new feature gets its own class under **How to apply:** A new feature gets its own class under
`src/AcDream.App/<Subsystem>/` (or deeper in `AcDream.Core` if it's pure `src/AcDream.App/<Subsystem>/` (or deeper in `AcDream.Core` if it's pure
@ -685,7 +686,7 @@ Issue #232 records the coarse process-residency gate's run-to-run variance so
future diagnostics can distinguish canonical owner growth from OS/driver/GC future diagnostics can distinguish canonical owner growth from OS/driver/GC
residency without weakening leak detection. residency without weakening leak detection.
#### Slice 8 — composition and shutdown cleanup — ACTIVE (KL remain) #### Slice 8 — composition and shutdown cleanup — AUTOMATED COMPLETE
Detailed execution ledger: Detailed execution ledger:
[`docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md`](../plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md). [`docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md`](../plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md).
@ -749,11 +750,15 @@ groups, retry/no-replay progress, structured reportable physical-detach
failures, hard session/GPU barriers, and native-window-last release now live failures, hard session/GPU barriers, and native-window-last release now live
outside the host. The shell captures roots once and makes one lifetime call outside the host. The shell captures roots once and makes one lifetime call
from Closing/Dispose; no shutdown stage remains in it. `GameWindow` is 1,625 from Closing/Dispose; no shutdown stage remains in it. `GameWindow` is 1,625
raw lines after J. The App gate passes 3,441 tests / 3 intentional skips and raw lines after J. Checkpoint K adds acknowledged same-frame canonical resource
the complete Release suite passes 7,813 tests / 5 intentional skips. The clean checkpoints and leaves the shell at 1,622 lines. The App gate passes 3,451 tests
solution build retains only the 17 test-project warnings tracked by #228; the / 3 intentional skips and the complete Release suite passes 7,823 / 5. Two
complete Checkpoint-J behavior, architecture, and adversarial corrected-diff fresh-process nine-stop soaks and the connected lifecycle/reconnect route pass
passes are clean. Checkpoints KL remain active. with graceful exits; deterministic framebuffer captures preserve accepted
Slice 7 geometry, UI/paperdoll layering, private viewports, depth/alpha, and
reveal. The clean solution build retains only the 17 test-project warnings
tracked by #228, and all three final corrected-diff reviews are clean. Only the
user's final connected visual matrix remains.
### 4.4 Exit criteria ### 4.4 Exit criteria

View file

@ -1,6 +1,6 @@
# acdream — strategic roadmap # acdream — strategic roadmap
**Status:** Living document. Updated 2026-07-22. **M3 landed; M4 is next after the active `GameWindow` structural prerequisite.** M3's retail casting/UI, R6 locomotion/collision/projectile/teleport/radar rebaseline, deterministic fresh-login/portal world lifecycle, and final two-client portal observer flow are user-gated. The current program is the behavior-preserving ownership campaign in [`docs/architecture/code-structure.md`](../architecture/code-structure.md); Slices 17 and Slice 8 checkpoints AJ are complete, with only canonical soak instrumentation and final closeout checkpoints KL active. New M4 quest/emote/character-creation feature bodies wait until that campaign is complete. Issue #225's lifestone/particle alpha comparison remains a separate rendering visual gate. **Status:** Living document. Updated 2026-07-22. **M3 landed; M4 is next after the final `GameWindow` visual handoff.** M3's retail casting/UI, R6 locomotion/collision/projectile/teleport/radar rebaseline, deterministic fresh-login/portal world lifecycle, and final two-client portal observer flow are user-gated. All eight slices of the behavior-preserving ownership campaign in [`docs/architecture/code-structure.md`](../architecture/code-structure.md) and their automated closeout are complete; only the user's connected visual matrix remains. Issue #225's lifestone/particle alpha comparison remains a separate rendering visual gate.
**Purpose:** One source of truth for where the project is and where it's going. Every observed defect or missing feature has a named phase that owns it; when something looks wrong in-game, look here to find the phase that'll address it. Implementation details live in per-phase specs under `docs/superpowers/specs/`, not in this file. **Purpose:** One source of truth for where the project is and where it's going. Every observed defect or missing feature has a named phase that owns it; when something looks wrong in-game, look here to find the phase that'll address it. Implementation details live in per-phase specs under `docs/superpowers/specs/`, not in this file.
--- ---
@ -108,11 +108,15 @@ now 1,945 raw lines after I.9 makes production invoke the same typed pipeline
as the failure oracle and keeps session start terminal. Checkpoint J extracts as the failure oracle and keeps session start terminal. Checkpoint J extracts
the exact shutdown dependency graph into `GameWindowLifetime`, with typed the exact shutdown dependency graph into `GameWindowLifetime`, with typed
immutable roots, hard session/GPU barriers, reportable physical cleanup, immutable roots, hard session/GPU barriers, reportable physical cleanup,
retry/no-replay state, and native-window-last terminal reporting. The host is retry/no-replay state, and native-window-last terminal reporting. The host was
now 1,625 raw lines. Only canonical soak snapshots and closeout checkpoints 1,625 raw lines after J.
KL remain. The App gate passes 3,441 tests / 3 intentional skips, the complete
Release suite passes 7,813 tests / 5 skips, and the complete Checkpoint-J Checkpoint K adds deferred, acknowledged, same-frame canonical resource
corrected-diff review is clean. snapshots and closes #232 through two clean fresh-process nine-stop routes.
The shell is 1,622 raw lines. All 293 focused tests, App Release 3,451/3, the
complete Release suite 7,823/5, connected lifecycle/reconnect, both canonical
soaks, three corrected-diff reviews, and the exact Slice-7 framebuffer
comparison pass. Only the user's final connected visual matrix remains.
This is a behavior-preserving structural program. Severe regressions still get This is a behavior-preserving structural program. Severe regressions still get
root-cause fixes in separate commits; ordinary feature work resumes with M4 root-cause fixes in separate commits; ordinary feature work resumes with M4

View file

@ -68,10 +68,14 @@ tested pipeline with explicit prior-result dependencies. Checkpoint J adds the
focused `GameWindowLifetime`, immutable typed shutdown roots, hard dependency focused `GameWindowLifetime`, immutable typed shutdown roots, hard dependency
barriers, structured report-and-continue physical cleanup, retry/no-replay barriers, structured report-and-continue physical cleanup, retry/no-replay
state, and native-window-last terminal reporting. The host is now 1,625 raw state, and native-window-last terminal reporting. The host is now 1,625 raw
lines. Checkpoints KL remain active; Issue #232 tracks process-residency lines after J. Checkpoint K adds deferred same-frame canonical owner snapshots
variance in the soak without loosening its leak threshold. The App gate passes and closes #232 through two clean 403-second fresh-process nine-stop routes
3,441 tests / 3 skips, the complete Release suite passes 7,813 tests / 5 skips, without loosening the process thresholds. The automated Slice 8 closeout is
and the complete Checkpoint-J corrected-diff review is clean. complete: `GameWindow` is 1,622 raw lines; 293 focused tests, App Release
3,451/3, the complete Release suite 7,823/5, lifecycle/reconnect, both
canonical soaks, all three corrected-diff reviews, and the Slice-7 framebuffer
comparison pass. Only the user's final connected visual matrix remains before
new M4 feature bodies begin.
Carried: Carried:
#153 far-teleport residual, #116 slide-response, the remaining R6 ownership cleanup plus #153 far-teleport residual, #116 slide-response, the remaining R6 ownership cleanup plus

View file

@ -1,12 +1,13 @@
# GameWindow Slice 8 Checkpoint K — canonical soak snapshots # GameWindow Slice 8 Checkpoint K — canonical soak snapshots
**Status:** Active 2026-07-22. **Status:** Complete 2026-07-22 (`bca41487`, corrected gate semantics
`6c5e0604`).
**Parent:** **Parent:**
[`2026-07-22-gamewindow-slice-8-composition-lifecycle.md`](2026-07-22-gamewindow-slice-8-composition-lifecycle.md), [`2026-07-22-gamewindow-slice-8-composition-lifecycle.md`](2026-07-22-gamewindow-slice-8-composition-lifecycle.md),
Checkpoint K. Checkpoint K.
**Integrated baseline:** `31e6e192`; Checkpoints IJ are complete, **Integrated result:** `GameWindow.cs` is 1,622 raw lines, App Release passes
`GameWindow.cs` is 1,625 raw lines, App Release passes 3,441 tests / 3 skips, 3,451 tests / 3 skips, and the complete Release suite passes 7,823 tests / 5
and the complete Release suite passes 7,813 tests / 5 skips. skips.
**Issue:** [`#232`](../ISSUES.md#232--nine-stop-soak-process-memory-gate-lacks-canonical-owner-snapshots). **Issue:** [`#232`](../ISSUES.md#232--nine-stop-soak-process-memory-gate-lacks-canonical-owner-snapshots).
**Behavior rule:** this checkpoint changes diagnostic capture and connected-gate **Behavior rule:** this checkpoint changes diagnostic capture and connected-gate
evidence only. It does not change rendering, streaming, gameplay, resource evidence only. It does not change rendering, streaming, gameplay, resource
@ -198,3 +199,27 @@ for-byte unchanged as the secondary residency/performance guard.
No visual gate is required for K because it changes diagnostic observation No visual gate is required for K because it changes diagnostic observation
only. Checkpoint L owns the final connected framebuffer and user visual gate. only. Checkpoint L owns the final connected framebuffer and user visual gate.
## 6. Completion evidence
The focused checkpoint suite passes 74 tests. The Release build succeeds with
only the 17 pre-existing test-project warnings tracked by #228. Two independent
fresh-process routes produced all nine ordered render-frame checkpoints and
closed gracefully:
- `connected-r6-soak-20260722-201335.report.json`: 403.139 seconds; Caul
return-to-plateau working/private deltas +20.2/+10.3 MiB; update p95 1.5 ms.
- `connected-r6-soak-20260722-202025.report.json`: 403.021 seconds; Caul
return-to-plateau working/private deltas +165.0/+157.2 MiB; update p95 1.3 ms.
Every checkpoint had zero pending teardown/retirement, staged upload work, and
composite warmup work. Neither run found unconfounded canonical owner growth,
and both passed the unchanged process-residency and performance limits.
The first connected implementation run also proved that exact cache equality
was the wrong leak predicate: visible landblocks and authoritative entities
changed while mesh/GPU/cache owner counts decreased through legitimate
retirement. The corrected contract therefore hard-fails owner *growth* when
the workload is stable, reports named growth warnings when the authoritative
or visible workload changed, and permits shrinking. It does not weaken the
process limits or hide an identified owner leak.

View file

@ -1,14 +1,15 @@
# GameWindow Slice 8 Checkpoint L — campaign closeout # GameWindow Slice 8 Checkpoint L — campaign closeout
**Status:** Active 2026-07-22. **Status:** Automated closeout complete 2026-07-22; final user visual matrix
pending.
**Parent:** **Parent:**
[`2026-07-22-gamewindow-slice-8-composition-lifecycle.md`](2026-07-22-gamewindow-slice-8-composition-lifecycle.md), [`2026-07-22-gamewindow-slice-8-composition-lifecycle.md`](2026-07-22-gamewindow-slice-8-composition-lifecycle.md),
Checkpoint L. Checkpoint L.
**Integrated baseline:** `6c5e0604`; Checkpoints AK are implemented. **Integrated baseline:** `6c5e0604`; Checkpoints AK are implemented.
`GameWindow.cs` is 1,622 raw lines, App Release passes 3,451 tests / 3 `GameWindow.cs` is 1,622 raw lines, App Release passes 3,451 tests / 3
intentional skips, and the complete Release suite passes 7,823 tests / 5 intentional skips, and the complete Release suite passes 7,823 tests / 5
intentional skips. Two fresh-process canonical nine-stop soaks pass with intentional skips. Two fresh-process canonical nine-stop soaks pass with
graceful exits and the unchanged residency/performance limits. graceful exits and the unchanged residency/performance limits.
**Behavior rule:** L proves and records the shipped ownership state. It may **Behavior rule:** L proves and records the shipped ownership state. It may
correct documentation, test/gate coverage, or a defect demonstrated by the correct documentation, test/gate coverage, or a defect demonstrated by the
audit, but it does not add gameplay, alter retail behavior, loosen a gate, or audit, but it does not add gameplay, alter retail behavior, loosen a gate, or
@ -124,3 +125,36 @@ spellbook panel; outdoor/building/dungeon/portal/paperdoll/particle/alpha
presentation; graceful close and fresh reconnect. Only that confirmation marks presentation; graceful close and fresh reconnect. Only that confirmation marks
L and the overall structural campaign complete. L and the overall structural campaign complete.
## 5. Automated closeout evidence
- The final host is 1,622 raw lines. Source-boundary inspection finds no AC
algorithm, packet builder, entity scan, render graph, animation-part
composer, or stored `GameWindow` back-reference in an extracted owner.
- All 293 focused Slice 8 ownership, composition, callback, frame, lifetime,
automation, and source-boundary tests pass. App Release passes 3,451 tests / 3
intentional skips; the complete Release suite passes 7,823 / 5. The build's
17 test-project warnings are the unchanged #228 set.
- The connected lifecycle/reconnect gate passed in 314.4 seconds with graceful
capped and uncapped exits. Its uncapped reconnect reached 174.74 FPS / 5.72
ms at the final checkpoint. All six PNG artifacts are valid; the only route
warning is the expected 25 world-edge empty-landblock misses.
- Both Checkpoint-K nine-stop reports passed in about 403 seconds, produced the
exact names/sequences/process identity, and found no unconfounded canonical
owner growth under the unchanged residency/performance limits.
- The six current lifecycle PNGs were compared against artifacts rebuilt from
exact accepted Slice 7 commit `9d7df1bf` in an isolated worktree. The five
deterministic destinations preserve geometry, UI/paperdoll layering,
private viewports, depth/alpha, and world reveal. Facility Hub was nearly
pixel-identical (mean absolute RGB delta 0.91/255); the Aerlinthe captures
were 3.42 and 3.87/255. Holtburg and reconnect differences are live
entities, particles, vitals, and sub-frame camera timing. Capped login used a
different server-saved location and was checked only for complete rendering
and presentation layering.
- Three corrected-diff reviews are clean: behavior/retail boundary,
architecture/ownership, and adversarial lifecycle/failure handling. The
divergence audit found no new runtime behavior in K or L and requires no
register change.
The generated reports, screenshots, and disposable baseline worktree are
untracked evidence. The user's unrelated `TransitionTypes.cs` edit was not
modified or staged.

View file

@ -1,6 +1,7 @@
# GameWindow Slice 8 — composition and lifecycle shell # GameWindow Slice 8 — composition and lifecycle shell
**Status:** Active 2026-07-22. **Status:** Automated implementation and closeout complete 2026-07-22; final
user visual matrix pending.
**Parent program:** [`docs/architecture/code-structure.md`](../architecture/code-structure.md), Slice 8. **Parent program:** [`docs/architecture/code-structure.md`](../architecture/code-structure.md), Slice 8.
**Baseline:** `96f8bfcf`; `GameWindow.cs` is 4,666 raw lines, 196 fields, and **Baseline:** `96f8bfcf`; `GameWindow.cs` is 4,666 raw lines, 196 fields, and
70 methods. The Release suite passes 7,341 tests / 5 fixture or environment 70 methods. The Release suite passes 7,341 tests / 5 fixture or environment
@ -35,19 +36,21 @@ audit.
- [x] J — move the exact retryable shutdown manifest to a focused lifetime - [x] J — move the exact retryable shutdown manifest to a focused lifetime
owner and prove all partial-load/reentrant/retry paths. Detailed plan: owner and prove all partial-load/reentrant/retry paths. Detailed plan:
[`2026-07-22-gamewindow-slice-8-checkpoint-j-lifetime-shutdown.md`](2026-07-22-gamewindow-slice-8-checkpoint-j-lifetime-shutdown.md). [`2026-07-22-gamewindow-slice-8-checkpoint-j-lifetime-shutdown.md`](2026-07-22-gamewindow-slice-8-checkpoint-j-lifetime-shutdown.md).
- [ ] K — in a separate #232 commit, add canonical owner snapshots to every soak - [x] K — in separate #232 commits, add canonical owner snapshots to every soak
checkpoint without weakening the process-memory guard. Detailed plan: checkpoint without weakening the process-memory guard. Detailed plan:
[`2026-07-22-gamewindow-slice-8-checkpoint-k-canonical-soak.md`](2026-07-22-gamewindow-slice-8-checkpoint-k-canonical-soak.md). [`2026-07-22-gamewindow-slice-8-checkpoint-k-canonical-soak.md`](2026-07-22-gamewindow-slice-8-checkpoint-k-canonical-soak.md).
- [ ] L — corrected-diff reviews, focused and full Release gates, connected - [ ] L — corrected-diff reviews, focused and full Release gates, connected
lifecycle/soak, framebuffer comparison, documentation, memory, and final lifecycle/soak, framebuffer comparison, documentation, and memory are
visual handoff. Detailed plan: complete; only the final user visual handoff remains. Detailed plan:
[`2026-07-22-gamewindow-slice-8-checkpoint-l-closeout.md`](2026-07-22-gamewindow-slice-8-checkpoint-l-closeout.md). [`2026-07-22-gamewindow-slice-8-checkpoint-l-closeout.md`](2026-07-22-gamewindow-slice-8-checkpoint-l-closeout.md).
Checkpoint J leaves `GameWindow.cs` at 1,625 raw lines. The focused lifetime Checkpoint K leaves `GameWindow.cs` at 1,622 raw lines. The focused lifetime
owner now holds the typed shutdown roots, exact 18-stage dependency manifest, owner holds the typed shutdown roots, exact 18-stage dependency manifest,
retry/no-replay state, structured soft-cleanup failures, hard-barrier fallback, retry/no-replay state, structured soft-cleanup failures, hard-barrier fallback,
and native-window-last release. App Release passes 3,441 tests / 3 skips and and native-window-last release. Deferred same-frame checkpoint capture and two
the complete Release suite passes 7,813 / 5 skips. Checkpoint K is next. fresh-process nine-stop routes close #232 without weakening the residency
guard. App Release passes 3,451 tests / 3 skips and the complete Release suite
passes 7,823 / 5 skips. All automated Checkpoint-L gates are complete.
Each checked checkpoint lands as a bisectable commit. A checkpoint is not done Each checked checkpoint lands as a bisectable commit. A checkpoint is not done
while a new class delegates a substantial body back into `GameWindow`, stores while a new class delegates a substantial body back into `GameWindow`, stores
@ -704,6 +707,14 @@ complete Release suite passes 7,813 / 5 skips.
residency guard with unchanged thresholds. Require two fresh-process clean residency guard with unchanged thresholds. Require two fresh-process clean
route runs before closing #232. route runs before closing #232.
Result: deferred acknowledged checkpoints now drain after current-frame render
diagnostics, persist the exact frame outcome plus canonical resource owners,
and block the script until both artifacts commit. Seventy-four focused tests,
App Release, the full Release suite, and two 403-second fresh-process routes
pass. Every route produced the exact nine checkpoints, zero pending/staged/
warmup work, no unconfounded canonical owner growth, graceful exit, and the
unchanged process/performance limits. Commits: `bca41487`, `6c5e0604`.
### L — final closeout ### L — final closeout
- Run three independent corrected-diff reviews: retail conformance, - Run three independent corrected-diff reviews: retail conformance,
@ -717,6 +728,14 @@ complete Release suite passes 7,813 / 5 skips.
- Update architecture, milestones, roadmap, issues, AGENTS/CLAUDE, and durable - Update architecture, milestones, roadmap, issues, AGENTS/CLAUDE, and durable
memory with final metrics and exact gates. memory with final metrics and exact gates.
Automated result: 293 focused tests and the 7,823/5 complete Release suite
pass. The 314.4-second capped/reconnect lifecycle route passes with six valid
PNGs and graceful exits. Its current deterministic frames preserve Slice 7
commit `9d7df1bf` geometry, UI/paperdoll layering, private viewports,
depth/alpha, and reveal; live entity/particle/vitals/camera timing account for
the accepted differences. All three final corrected-diff reviews are clean.
The user's connected visual matrix is the sole remaining acceptance item.
## 5. Automated acceptance ## 5. Automated acceptance
- exact window callback attach order, reverse detach, rollback, reentrancy, and - exact window callback attach order, reverse detach, rollback, reentrancy, and

View file

@ -2,11 +2,12 @@
## Current state ## Current state
The behavior-preserving App ownership campaign is complete through Slice 7 and All eight behavior-preserving App ownership slices and their automated closeout
Slice 8 checkpoints AH. `GameWindow.cs` moved from the 2026-07-21 baseline of are complete. `GameWindow.cs` moved from the 2026-07-21 baseline of 15,723
15,723 lines / 278 fields / 205 methods to 3,689 lines / 162 fields / 37 lines / 278 fields / 205 methods to a 1,622-line native
methods: 12,034 lines (76.5%) were removed without changing accepted gameplay composition/callback shell: 14,101 lines (89.7%) were removed without changing
or rendering behavior. 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 | | 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 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 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 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 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 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 ## 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 - Slice 8 Checkpoint H: 61 focused ownership/lifetime tests pass; App Release
passes 3,236 tests / 3 intentional skips. Four corrected-diff cycles closed passes 3,236 tests / 3 intentional skips. Four corrected-diff cycles closed
every architecture, retail, and adversarial finding; all three final reviews 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 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 at or below 0.8 ms. Caul return → plateau working/private delta was
+85.7/+59.3 MiB, inside the unchanged gate. +85.7/+59.3 MiB, inside the unchanged gate.
- Two immediately preceding identical-binary runs exceeded the coarse process- - Two Slice-7 identical-binary runs exceeded the coarse process-residency
residency threshold while deterministic ownership/lifecycle/timing checks threshold while deterministic ownership/lifecycle/timing checks passed.
passed. #232 adds canonical resource-owner snapshots; do not solve this by Checkpoint K closed #232 by adding canonical owner snapshots; it did not
loosening the process-memory threshold or treating residency alone as an loosen the process threshold or treat residency alone as an identified leak.
identified owner leak.
- The 1833 missing VFX table/emitter diagnostics are known DAT-driven records, - The 1833 missing VFX table/emitter diagnostics are known DAT-driven records,
not a Slice 7 regression. not a Slice 7 regression.
- TS-50, TS-51, and TS-53 remain registered; Slice 7 introduced no new retail - 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 ## Next work
Slice 8 checkpoints IL group the remaining ordered startup composition, Run the final connected visual matrix: first login/radar; movement, mouse,
shutdown wiring, canonical soak snapshots, and closeout and reduce Silk callbacks to resize, focus, and combat; shared inventory/skills/spellbook panel; outdoor,
narrow calls into input, update, render, resize, focus, and shutdown owners. building, dungeon, portal, paperdoll, particle, and alpha presentation; then
It removes leftover feature state only where Slices 17 already established a graceful close and fresh reconnect. After user confirmation, mark Checkpoint L
canonical owner; it does not redesign gameplay, rendering, or resource lifetime. and the campaign complete and resume M4. Full `GameEntity` aggregation remains
The reviewed AL execution ledger is a separate migration and must not be folded into the visual handoff.
`docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md`.
## Do not retry ## 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 add a second GUID, session, spatial, or resource owner.
- Do not fold full `GameEntity` aggregation into this campaign; evaluate it - Do not fold full `GameEntity` aggregation into this campaign; evaluate it
after Slice 8. after Slice 8.
- Do not loosen the soak process-memory threshold to hide #232. Add canonical - Do not revert Checkpoint K to exact cache equality: normal retirement may
owner snapshots and preserve process residency as a secondary guard. 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 - Small value/policy callbacks and diagnostics are acceptable only when they do
not call a substantial window body or hide mutable ownership. not call a substantial window body or hide mutable ownership.