test: replace gameplay owner source freezes

This commit is contained in:
Erik 2026-08-18 16:49:38 +02:00
parent 9b94050229
commit 84034f732c
6 changed files with 473 additions and 388 deletions

View file

@ -1447,3 +1447,54 @@ R3 work:
- a targeted scan confirms neither owning test file retains a source reader or
its source-slicing helper. The final full inventory and twelve-assembly
Release gate are intentionally deferred to the one R3 closeout run.
## Batch AE Runtime gameplay-owner wiring replacement
Batch AE converts the nine approved consumer-wiring source readers across
`RuntimeActionOwnershipTests`, `RuntimeCharacterOwnershipTests`,
`RuntimeInventoryOwnershipTests`, and `RuntimeMovementOwnershipTests`. No
product source changes and no test is removed. The two approved whole-tree
construction policies—one action-owner policy and one movement-owner policy—
remain source-aware by design and are not part of the 85 staged replacements.
The replacements use reflected fields, properties, constructor parameters,
compiled child access, and shutdown-root metadata to prove that:
- retained UI, session composition, graphical command adapters, and item
interaction borrow the canonical action children and the exact Runtime
transaction owner, with no App `InteractionState` or UI-side transaction
construction;
- `GameWindow` owns one `GameRuntime`, constructs no character child root,
and projects its Spellbook/LocalPlayer properties through
`RuntimeCharacterState`; content installation, session routing, retained UI,
options, and movement-skill updates all consume that owner;
- the deleted App character-option and movement-skill owner types remain
absent, while Runtime's option replacement and movement-skill update edges
remain live;
- `GameWindow` constructs none of the displaced inventory/item-mana/container/
shortcut snapshot owners; retained UI and item interaction use the Runtime
action transaction, session bindings use the Runtime shortcut store and use
completion, and shutdown carries only `GameRuntime`;
- `ToolbarController` retains the exact `ShortcutStore` without constructing a
mirror, provider delegate, or loaded-state latch, and spell UI has no second
local mutation calls for filters, desired components, or favorites; and
- graphical input, both runtime adapters, and both shutdown roots borrow the
exact `RuntimeLocalPlayerMovementState`, including its autorun and typed
command execution edges.
`CompiledCallGraph.ReadOwned` was added as a test-only metadata facility. It
reads declared owner methods plus compiler-generated acquisition/callback
closures, so a typed dependency carried by a UI factory remains inspectable
without freezing the lambda's source spelling.
Verification follows the proportionate R3 policy:
- all 11 focused ownership methods pass, including the two retained whole-tree
policies adjacent to the nine replacements;
- the complete `AcDream.App.Tests` hermetic lane passes 5,381/5,381 with zero
skips or failures;
- the complete locked Release build covers all 44 projects with zero warnings
and zero errors; and
- a targeted scan finds source reads only in the two explicitly retained
whole-tree policy methods. The final inventory and twelve-assembly Release
gate remain deferred to closeout.