refactor(settings): own two-phase runtime settings

Move pre-window loading, startup application, live settings mutation, toon context, quality reapply, and SettingsVM loans behind one RuntimeSettingsController. Preserve retail command behavior, ordered target publication, draft semantics, and retryable failure convergence while removing duplicate GameWindow state and feature bodies.

Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-22 13:30:22 +02:00
parent 4eae9b4f5a
commit fec0d94148
24 changed files with 2379 additions and 599 deletions

View file

@ -127,7 +127,7 @@ second GUID dictionary. Slices 57 are complete: landblock presentation,
update-frame orchestration, and render-frame orchestration all have typed
owners. `GameWindow.OnUpdate` and `GameWindow.OnRender` are one-handoff methods;
the frame owners have no direct window or anonymous callback-bag ownership.
Slice 8 checkpoints AF are also complete: dead host residue is removed,
Slice 8 checkpoints AG are also complete: dead host residue is removed,
native-window callback intake has reversible lifetime ownership, and
`LiveSessionHost` owns reset/binding composition over the sole canonical
session controller. `WorldEnvironmentController` solely owns the clock, DAT
@ -139,11 +139,14 @@ 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` is 4,057 raw lines /
198 fields / 54 methods, down 11,666 lines (74.2%) from the 15,723-line campaign
baseline. The 7,524-test Release suite, 315.6-second lifecycle/reconnect gate,
and 395.2-second synchronized nine-stop soak pass. Slice 8 checkpoints GL—
settings, resource ownership, ordered composition,
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.
Slice 8 checkpoints HL—resource ownership, ordered composition,
retryable shutdown, soak snapshots, and final connected gates—remain active.
See `docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md` and
`docs/architecture/code-structure.md`. **Carried:** #232, #153,