acdream/docs/plans/2026-07-22-gamewindow-slice-8-checkpoint-l-closeout.md
Erik 5c955c36ec 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>
2026-07-22 20:52:25 +02:00

160 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# GameWindow Slice 8 Checkpoint L — campaign closeout
**Status:** Automated closeout complete 2026-07-22; final user visual matrix
pending.
**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 AK 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.
## 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.