docs(architecture): close GameWindow render slice

Record the clean Release, lifecycle, soak, and framebuffer gates for Slice 7, advance the structural program to Slice 8, and preserve the observed process-residency diagnostic gap as issue 232 rather than weakening its leak threshold.\n\nCo-authored-by: Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-22 08:40:52 +02:00
parent 9d7df1bfc5
commit 96f8bfcfa8
8 changed files with 176 additions and 64 deletions

View file

@ -26,12 +26,15 @@ What does NOT go here:
## Current queue — 2026-07-22
- **Active structural work:** `GameWindow` decomposition. Slices 16 are
complete; `GameWindow.OnUpdate` is one typed orchestration handoff and the
class is 7,026 lines / 241 fields / 108 methods. Slice 7 draw-frame
orchestration is active in
- **Active structural work:** `GameWindow` decomposition. Slices 17 are
complete; `GameWindow.OnUpdate` and `GameWindow.OnRender` are typed
orchestration handoffs and the class is 4,666 lines / 196 fields / 70
methods. Final Slice 8 composition/shutdown cleanup is 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
connected performance, lifetime, and unattended portal routes pass.
- **Carried behavior debt:** `#153` far-teleport unstreamed-edge arrival and
@ -70,6 +73,42 @@ Copy this block when adding a new issue:
---
## #232 — Nine-stop soak process-memory gate lacks canonical owner snapshots
**Status:** OPEN
**Severity:** LOW
**Filed:** 2026-07-22
**Component:** connected automation / resource diagnostics
**Description:** Identical-binary nine-stop runs can cross the same-location
working/private-process-memory tolerance even when all deterministic lifecycle,
entity, animation, allocation-rate, update-cost, movement, and graceful-close
checks pass. At Slice 7 closeout, two runs reported Caul-plateau working-set
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
coarse-memory failure and subsequent clean runs.
**Root cause / status:** The current soak samples only process working set and
private bytes plus coarse world/title counters. Those totals combine live .NET
objects, committed-but-free GC segments, native allocations, mapped pages, and
GPU-driver residency, so a failed total cannot identify the owner that grew.
This is a diagnostic blind spot, not evidence that the threshold should be
raised. The unchanged gate produced a clean required closeout pass; no runtime
workaround or tolerance change was made.
**Files:** `tools/run-connected-r6-soak.ps1`;
`src/AcDream.App/Diagnostics/WorldLifecycleAutomationController.cs`;
`src/AcDream.App/Rendering/RenderFrameDiagnosticsController.cs`.
**Acceptance:** Each named soak checkpoint records the existing canonical
world-lifecycle resource snapshot (managed used/committed, tracked GPU buffers
and textures, mesh/atlas caches, composite/particle texture ownership, VFX and
pending teardown counts). Same-location assertions identify which owner grew;
process residency remains a secondary guard. Repeated clean runs pass without
loosening the canonical-owner leak limits.
---
## #231 — F-key pickup omits retail pending destination-slot presentation
**Status:** DONE (2026-07-21, `52dbb574` + `5acc3f01`)