refactor(app): compose interaction and retained UI startup

This commit is contained in:
Erik 2026-07-22 17:20:47 +02:00
parent f663b04a54
commit aa6ffa5176
15 changed files with 2157 additions and 467 deletions

View file

@ -726,12 +726,16 @@ oracle, platform/host/content/settings phases, and the production world/render
phase. `WorldRenderCompositionPhase` owns Region/environment, the mandatory
modern-renderer foundation, immutable terrain-worker inputs, and WB/texture/
sampler construction; every Phase-4 GL constructor has retryable prefix
ownership. `GameWindow` is 3,522 raw lines after I.5. Checkpoints I.6L remain
active, with retained UI and live presentation composition next. The current
production App build is warning-free; the App gate passes 3,373 tests / 3
intentional skips and the complete Release suite passes 7,745 tests / 5
intentional skips. I.5's corrected-diff behavior, architecture, and
adversarial reviews are clean.
ownership. `GameWindow` is 3,522 raw lines after I.5. I.6a moves interaction
and retained-UI construction into `InteractionRetainedUiCompositionPhase`;
typed exact-owner sources now bridge the later session, selection, radar,
view-plane, diagnostics, inventory, and automation owners without callbacks to
the window. The old item-use and selection wrapper methods are deleted.
`GameWindow` is 3,246 raw lines after I.6a. I.6bL remain active, with live
presentation and landblock-publication composition next. The App gate passes
3,401 tests / 3 intentional skips and the complete Release suite passes 7,773
tests / 5 intentional skips. The solution retains only the 17 warnings tracked
by #228; the I.6a behavior, architecture, and adversarial reviews are clean.
### 4.4 Exit criteria

View file

@ -274,6 +274,12 @@ ledger only after the complete pipeline is live.
- I.6 (retained UI plus live-presentation composition) is active. Its detailed
two-commit ownership and failure-test plan is
[`2026-07-22-gamewindow-slice-8-checkpoint-i6-ui-live-presentation.md`](2026-07-22-gamewindow-slice-8-checkpoint-i6-ui-live-presentation.md).
I.6a is complete: Phase 5 now composes interaction and retained UI through
typed dependencies, exact-owner late bindings, and transactional rollback.
`GameWindow.cs` is 3,246 raw lines; the App gate passes 3,401 tests / 3
intentional skips and the complete Release suite passes 7,773 tests / 5
intentional skips. I.6b live presentation and landblock publication 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.6 UI and Live Presentation
**Status:** Active
**Status:** I.6a complete; I.6b active
**Parent:** `2026-07-22-gamewindow-slice-8-checkpoint-i-ordered-composition.md`
@ -73,8 +73,9 @@ Deactivation makes all callbacks inert before runtime teardown.
### 2.3 Ownership and publication
`InteractionRetainedUiResult` carries the stable owners required by later
phases. `InteractionRetainedUiCompositionOwner` owns optional retained-UI
input/runtime resources and the late authorities. Construction uses
phases. `InteractionUiLateBindings` owns the retained input-capture lease and
the late authorities; `RetailUiRuntimeLease` remains the sole owner of the
optional host/runtime resources. Construction uses
`CompositionAcquisitionScope`; the owner is published only after all mandatory
interaction resources and every enabled retained-UI resource are complete.
@ -82,13 +83,12 @@ interaction resources and every enabled retained-UI resource are complete.
needed by existing steady-state and reset code. Publication is write-only and
rejects replacement.
Normal shutdown and construction rollback share these stages:
Normal shutdown and construction rollback preserve these stages:
1. deactivate late sources and retained input;
2. detach retained UI device callbacks;
3. dispose mounted runtime;
4. dispose host/assets/probe resources;
5. dispose item/external-container/combat owners.
1. deactivate late sources and release retained input capture;
2. dispose the retained-UI lease, which detaches device callbacks, the mounted
runtime, and the host in its established order;
3. dispose item/external-container/combat owners.
The existing retained UI lease remains the sole host/runtime owner until its
full lifecycle is migrated; the phase owner controls it but never duplicates
@ -110,6 +110,22 @@ its resources.
- three independent self-review passes: retail behavior, architecture and
ownership, adversarial failure/reentrancy.
### 2.5 I.6a completion evidence
I.6a moved the complete Phase-5 body into
`InteractionRetainedUiCompositionPhase`. Exact-owner leases now guard retained
input capture plus the late session, selection, radar, view-plane, diagnostics,
inventory, and automation bindings. The old `GameWindow` item-use/pick/query
wrappers are deleted; shared Vitals identity, mouse-before-keyboard ordering,
direct contained-item use, and the disabled-retail-UI path remain unchanged.
The focused success/failure/rollback matrix passes 28 tests. The App Release
gate passes 3,401 tests / 3 intentional skips, the complete Release suite
passes 7,773 tests / 5 intentional skips, and the solution build has only the
17 warnings already tracked by #228. `GameWindow.cs` is 3,246 raw lines after
I.6a. Behavior, ownership, and adversarial self-reviews found no remaining
actionable issue. I.6b is the next active cut.
## 3. I.6b — live presentation and landblock publication
### 3.1 Owned construction