refactor(app): complete session startup composition

Move the live-session reset and routing graph, combat and diagnostic command targets, and the sole gameplay input subscriber into Phase 7 before frame publication. Add exact retryable ownership for late bindings so partial startup cannot strand session or component teardown edges.

Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-22 18:49:31 +02:00
parent 7fa60971e2
commit 826f9ea9b5
22 changed files with 924 additions and 412 deletions

View file

@ -32,9 +32,11 @@ What does NOT go here:
canonical runtime/world, selection/radar, landblock publishers, and
portal/sky/particle resources.
I.7 now owns streaming/session/hydration/local-player/teleport startup and
every late edge explicitly. `GameWindow.OnUpdate` and `GameWindow.OnRender`
are typed orchestration handoffs and the class is 2,479 raw lines. I.8I.9
plus the remaining shutdown/closeout
every late edge explicitly. I.8a now owns the focused session factory,
command targets, and sole gameplay input subscriber before frame publication.
`GameWindow.OnUpdate` and `GameWindow.OnRender` are typed orchestration
handoffs and the class is 2,149 raw lines. I.8bI.9 plus the remaining
shutdown/closeout
cleanup is active in
[`docs/architecture/code-structure.md`](architecture/code-structure.md).
This is the behavior-preserving prerequisite before new M4 feature bodies.

View file

@ -734,11 +734,13 @@ owners without callbacks to the window. The old item-use and selection wrapper
methods are deleted. I.7 now owns the complete streaming/session/hydration/
local-player/teleport construction phase and every late edge through named
exact-owner tokens; the former 432-line inline body and spawn-claim memo are
gone. `GameWindow` is 2,479 raw lines after I.7. I.8L remain active, with
atomic frame-root publication and terminal session start next. The App gate
passes 3,420 tests / 3 intentional skips and the complete Release suite passes
7,792 tests / 5 intentional skips. The clean solution build retains only the
17 test-project warnings tracked by #228; the I.7 behavior, architecture, and
gone. I.8a moves the exact live-session reset/router graph, combat and
diagnostic command targets, and sole gameplay input subscriber into Phase 7
before frame publication. `GameWindow` is 2,149 raw lines after I.8a. I.8bL
remain active, with atomic frame-root publication next. The App gate passes
3,424 tests / 3 intentional skips and the complete Release suite passes 7,796
tests / 5 intentional skips. The clean solution build retains only the 17
test-project warnings tracked by #228; the I.8a behavior, architecture, and
adversarial reviews are clean.
### 4.4 Exit criteria

View file

@ -104,10 +104,11 @@ controllers, selection/radar, landblock publishers, and portal/sky/particle
resources have transactional phase ownership and exact-owner late bindings.
I.7 adds the complete streaming/session/hydration/local-player/teleport phase,
including explicit reversible ownership for every late edge. `GameWindow` is
now 2,479 raw lines. I.8I.9, shutdown, canonical soak snapshots, and closeout
checkpoints JL remain. The App gate passes 3,420 tests / 3 intentional skips,
the complete Release suite passes 7,792 tests / 5 skips, and all three I.7
corrected-diff reviews are clean.
now 2,149 raw lines after I.8a, which composes the session factory, command
targets, and sole gameplay input subscriber before frame publication. I.8bI.9,
shutdown, canonical soak snapshots, and closeout checkpoints JL remain. The
App gate passes 3,424 tests / 3 intentional skips, the complete Release suite
passes 7,796 tests / 5 skips, and the I.8a corrected-diff review is clean.
This is a behavior-preserving structural program. Severe regressions still get
root-cause fixes in separate commits; ordinary feature work resumes with M4

View file

@ -59,11 +59,12 @@ runtime/world, presentation/effect controllers, selection/radar, landblock
publishers, and portal/sky/particle resources have transactional phase
ownership and exact-owner late bindings. I.7 now owns the complete streaming,
session, hydration, local-player, combat, and teleport startup graph, including
named reversible late edges. `GameWindow` is 2,479 raw lines. I.8I.9 and
checkpoints JL remain active. Issue #232 tracks process-residency variance in
the soak without loosening its leak threshold. The App gate passes 3,420 tests
/ 3 skips, the complete Release suite passes 7,792 tests / 5 skips, and all
three I.7 corrected-diff reviews are clean.
named reversible late edges. I.8a adds the focused live-session runtime factory
and attaches command/input owners before frame publication. `GameWindow` is
2,149 raw lines. I.8bI.9 and checkpoints JL remain active. Issue #232 tracks
process-residency variance in the soak without loosening its leak threshold.
The App gate passes 3,424 tests / 3 skips, the complete Release suite passes
7,796 tests / 5 skips, and the I.8a corrected-diff review is clean.
Carried:
#153 far-teleport residual, #116 slide-response, the remaining R6 ownership cleanup plus

View file

@ -293,6 +293,10 @@ ledger only after the complete pipeline is live.
frame-root publication and terminal session start is the active cut. Its
detailed session-binding, atomic-root, and terminal-start plan is
[`2026-07-22-gamewindow-slice-8-checkpoint-i8-frame-roots-session-start.md`](2026-07-22-gamewindow-slice-8-checkpoint-i8-frame-roots-session-start.md).
I.8a is complete: the session factory, command targets, and sole gameplay
input subscriber now belong to Phase 7 and publish before any frame root;
`GameWindow.cs` is 2,149 raw lines. I.8b atomic frame-root composition is the
active cut.
Checkpoint I remains active until I.9 closes the complete nine-phase pipeline.
## 6. Automated acceptance

View file

@ -1,6 +1,6 @@
# GameWindow Slice 8 — Checkpoint I.8 Frame Roots and Session Start
**Status:** Active
**Status:** Active — I.8a complete; I.8b frame-root composition next
**Parent:** `2026-07-22-gamewindow-slice-8-checkpoint-i-ordered-composition.md`
@ -27,6 +27,15 @@ unchanged, so no divergence-register row is added.
## 2. I.8a — complete session/player composition
**Completed 2026-07-22.** `LiveSessionRuntimeFactory` now owns the exact
reset/router/command graph without a window reference. Phase 7 publishes the
session host, exact-owner combat and diagnostic command bindings, and the sole
gameplay input subscriber before Phase 8 can expose a frame root. Desired
components have a focused canonical snapshot owner. The component-lifecycle
handoff into the earlier live-presentation phase is an exact, retryable
adoption lease, so any later Phase-7 fault rolls it back without stranding or
replaying teardown.
### 2.1 Focused session runtime factory
Add `LiveSessionRuntimeFactory` under `AcDream.App/Net`. It owns the existing

View file

@ -29,8 +29,8 @@ audit.
- [x] H — give terrain atlas, sky shader, retained `UiHost`, and both frame roots
explicit single ownership and transfer seams.
- [ ] I — group `OnLoad` into small ordered, fakeable composition phases with
transactional partial-acquisition rollback. I.1I.7 are complete; I.8
frame-root publication and terminal session start is active. Detailed plan:
transactional partial-acquisition rollback. I.1I.7 and I.8a are complete;
I.8b atomic frame-root publication is active. Detailed plan:
[`2026-07-22-gamewindow-slice-8-checkpoint-i-ordered-composition.md`](2026-07-22-gamewindow-slice-8-checkpoint-i-ordered-composition.md).
- [ ] J — move the exact retryable shutdown manifest to a focused lifetime
owner and prove all partial-load/reentrant/retry paths.