From 69650b1946b4b010759e38e25277a020c4b8b990 Mon Sep 17 00:00:00 2001 From: Erik Date: Wed, 22 Jul 2026 20:29:58 +0200 Subject: [PATCH] docs(architecture): plan GameWindow campaign closeout Pin the final host-boundary audit, three corrected-diff reviews, full Release and connected gates, exact Slice 7 framebuffer reconstruction, project reconciliation, and sole remaining user visual handoff. Co-authored-by: Codex --- ...amewindow-slice-8-checkpoint-l-closeout.md | 126 ++++++++++++++++++ ...amewindow-slice-8-composition-lifecycle.md | 3 +- 2 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 docs/plans/2026-07-22-gamewindow-slice-8-checkpoint-l-closeout.md diff --git a/docs/plans/2026-07-22-gamewindow-slice-8-checkpoint-l-closeout.md b/docs/plans/2026-07-22-gamewindow-slice-8-checkpoint-l-closeout.md new file mode 100644 index 00000000..a4c24a8d --- /dev/null +++ b/docs/plans/2026-07-22-gamewindow-slice-8-checkpoint-l-closeout.md @@ -0,0 +1,126 @@ +# GameWindow Slice 8 Checkpoint L — campaign closeout + +**Status:** Active 2026-07-22. +**Parent:** +[`2026-07-22-gamewindow-slice-8-composition-lifecycle.md`](2026-07-22-gamewindow-slice-8-composition-lifecycle.md), +Checkpoint L. +**Integrated baseline:** `6c5e0604`; Checkpoints A–K are implemented. +`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. Two fresh-process canonical nine-stop soaks pass with +graceful exits and the unchanged residency/performance limits. +**Behavior rule:** L proves and records the shipped ownership state. It may +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 +perform the separately deferred `GameEntity` aggregation. + +## 1. Outcome + +Close the eight-slice thin-`GameWindow` campaign only after every exit +criterion has current evidence: + +- the host is a native construction/callback shell with no AC gameplay + algorithm, entity scan, packet builder, DAT landblock builder, + animation-part composer, or draw-graph body; +- update, render, input, session, framebuffer, and shutdown callbacks are + narrow typed handoffs; +- startup and shutdown have one ordered, transactional, retryable ownership + graph without a service locator or callback facade into the host; +- extracted owners have focused tests and symmetric teardown; +- the Release build/test, connected lifecycle/reconnect, canonical soak, and + framebuffer gates preserve the accepted behavior; +- architecture, roadmap, milestones, issues, divergence bookkeeping, durable + memory, and both session instruction files agree with the code. + +Line count is reported as a structural signal, not substituted for those +ownership requirements. + +## 2. Completion audit + +### 2.1 Host boundary and dependency direction + +Measure raw lines, fields, methods, and the remaining callback bodies from the +actual source. Run the Slice 8 boundary/source-shape suites and inspect every +remaining `GameWindow` method. Search for prohibited network packet assembly, +entity/world scans, DAT build loops, part-transform composition, render graph +bodies, direct environment reads, and anonymous device subscriptions. Any +substantial body or callback into the host reopens the responsible checkpoint; +it is not waived because the file is below the target size. + +Verify the composed owners and their tests cover: + +- ordered partial-load rollback and terminal session start; +- exact frame-pair publication and one update/render handoff; +- logical callback cutoff before session retirement and physical detach; +- hard session/GPU shutdown barriers, soft physical-cleanup reporting, + retry/no-replay progress, and native-window-last release; +- deferred checkpoint acknowledgement, same-frame post-diagnostics capture, + FIFO order, cancellation, and shutdown. + +### 2.2 Three corrected-diff review passes + +Review the complete Slice 8 diff and final source in three independent passes: + +1. **Behavior/retail boundary:** no input, session, update/render, UI, camera, + settings, teleport, or gameplay behavior was silently redesigned; every + retained adaptation remains registered. +2. **Architecture/ownership:** no duplicate canonical state, broad runtime bag, + window back-reference, leaked subscription, conflicting disposer, or layer + inversion; all ownership transfer and teardown paths are symmetric. +3. **Adversarial failure:** partial acquisition at every phase, callback + concurrency, repeated/reentrant close, failed detach, session/GPU barrier + failure, deferred render failure, checkpoint cancellation, and process/GUID + reuse cannot strand or replay work. + +Confirmed findings are fixed at their owner and all affected gates are rerun. + +## 3. Automated and connected gates + +Run, in order: + +1. focused Slice 8 composition, callback, settings, frame, lifetime, + automation, and source-boundary tests; +2. App Release; +3. `dotnet build AcDream.slnx -c Release --no-restore`; +4. the complete Release suite; +5. `tools/run-connected-world-lifecycle-gate.ps1 -SkipBuild`, requiring the + capped six-stop lifecycle, exact semantic checkpoints, five capped PNGs, + code-zero authoritative graceful close, and immediate uncapped fresh-process + reconnect with its sixth PNG; +6. consume the two Checkpoint-K fresh-process nine-stop reports, requiring + exact nine-name/sequence/process identity, zero pending teardown/retirement, + staging and warmup work, no unconfounded canonical owner growth, unchanged + process/update/allocation limits, and graceful exit; +7. compare the six current lifecycle/reconnect PNGs with the accepted Slice 7 + `9d7df1bf` baseline. If the old generated artifacts are absent, reconstruct + them from that exact commit in an isolated disposable worktree rather than + inventing a new baseline. Accept only live weather/particle timing, + authoritative vitals, and sub-frame camera-settling differences; geometry, + UI/paperdoll layering, private viewports, alpha/depth, and world reveal must + remain equivalent. + +Generated logs and the isolated baseline worktree are evidence only and remain +untracked. The user's unrelated `TransitionTypes.cs` edit remains untouched. + +## 4. Reconciliation and handoff + +After all nonvisual evidence is green: + +- mark K and the automated portion of L in the parent ledger; +- close #232 with both canonical soak reports and preserve #225, #153, #116, + #228, TS-50/TS-51/TS-53, and other carried work at their true scope; +- update `code-structure.md`, the architecture, roadmap, milestones, + `AGENTS.md`, `CLAUDE.md`, and `memory/project_gamewindow_decomposition.md` + with the same counts, commits, gates, next-work boundary, and do-not-retry + lessons; +- audit the retail divergence register and add/remove no row unless runtime + behavior actually changed; +- commit the evidence/doc closeout as a bisectable unit and rerun final + source/status checks. + +The sole remaining pause is the user's connected visual matrix: first login +and radar; movement/mouse/resize/focus/combat; the shared inventory/skills/ +spellbook panel; outdoor/building/dungeon/portal/paperdoll/particle/alpha +presentation; graceful close and fresh reconnect. Only that confirmation marks +L and the overall structural campaign complete. + diff --git a/docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md b/docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md index a3c288b0..59e880d3 100644 --- a/docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md +++ b/docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md @@ -40,7 +40,8 @@ audit. [`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 lifecycle/soak, framebuffer comparison, documentation, memory, and final - visual handoff. + visual handoff. Detailed plan: + [`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 owner now holds the typed shutdown roots, exact 18-stage dependency manifest,