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

8.3 KiB
Raw Blame History

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, 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.