docs(runtime): close interaction transaction ownership

Record the exact J5.2 owner boundary, retail ordering, Release and connected evidence, rollback, and J5.3 handoff across architecture, roadmap, milestones, agent instructions, and durable memory.

Co-authored-by: Codex <noreply@openai.com>
This commit is contained in:
Erik 2026-07-26 11:22:07 +02:00
parent f5f7b4177f
commit 81b31857c6
11 changed files with 229 additions and 26 deletions

View file

@ -224,9 +224,12 @@ src/
transaction/session-state owner
RuntimeCharacterState.cs -> coupled spellbook/local-player plus
character-option/run-jump owner
RuntimeActionState.cs -> exact selection/combat/target-mode owner
RuntimeActionState.cs -> exact selection/combat/target-mode and
interaction-transaction owner
InteractionState.cs -> presentation-free cursor-target mode state
-> J3J4 and J5.1 complete; J5.2 interaction transactions active
RuntimeInteractionTransactionState.cs -> use/appraisal/pickup FIFO,
exact approach and busy borrower
-> J3J4 and J5.1J5.2 complete; J5.3 combat/magic intent active
-> may reference Core, Core.Net, Content, and Plugin.Abstractions only
-> must never reference App, UI, Silk.NET, OpenAL, Arch, or ImGui
@ -487,9 +490,15 @@ exact `SelectionState`, `CombatState`, and presentation-free
`InteractionState` instances borrowed by direct/headless and graphical
consumers. App retained widgets, input controllers, plugins, session routing,
and `GameWindow` hold views or exact borrowed children; none may construct a
parallel production action owner. J5.2 moves the related use, appraisal,
pickup, and approach transaction lifetime into Runtime while preserving
retail's press-time ordering and ACE's authoritative completion.
parallel production action owner. Its `RuntimeInteractionTransactionState`
child owns the use throttle/source/target, appraisal identity, typed ordered
interaction FIFO, and exact post-arrival pickup token while borrowing the one
J4 inventory busy/request gate. App supplies picking, movement installation,
wire transport, toasts, and retained drag/pending-slot presentation. Hidden,
delete/GUID reuse, reset, disposal, callback re-entry, and transport failure
all converge without retaining a second owner or changing retail's press-time
order (`f5f7b417`). J5.3 next moves combat and spell-cast intent under this
same action root.
`GpuWorldState` owns spatial buckets only and retains the exact projection key
through loaded/pending movement, landblock retirement/reload, origin recenter,

View file

@ -474,10 +474,10 @@ useful ordering seam, but its ownership status is **partial**.
| Inbound/object-frame order | **Complete App orchestration** | `UpdateFrameOrchestrator` owns the complete typed host phase graph; `RetailInboundEventDispatcher`, `RetailLiveFrameCoordinator`, `LiveObjectFrameController`, `LiveSpatialPresentationReconciler`, streaming/input/teleport/player-mode/camera owners preserve the accepted order. `GameWindow.OnUpdate` is one profiler-scoped handoff (`e91f3102`). |
| World reveal | **Complete** | `WorldRevealCoordinator` owns login/portal readiness, generation quiescence, and the exact streaming destination reservation. Login auto-entry and portal completion close only their active generation; stale completion cannot clear its replacement. Delayed portals retain the authored tunnel and centered retail wait notice rather than force-revealing incomplete content. Quiesced destination projections may become spatially resident for renderer preparation while all availability-gated gameplay consumers stay closed. |
| Retained gameplay UI | **Mostly complete feature ownership** | `RetailUiRuntime` and focused panel/controllers own layout and behavior. `GameWindow.OnLoad` still performs substantial service composition, which is allowed until the final composition cleanup. |
| Selection/interaction | **J5.1 complete; J5.2 active** | Runtime `RuntimeActionState` owns the exact selection, combat, and presentation-free target-mode children. App `WorldSelectionQuery` remains a graphical read-only picker; App interaction controllers currently retain use/appraisal/pickup/approach transaction policy until J5.2 moves that lifetime behind Runtime commands and views without changing retail press-time behavior. |
| Selection/interaction | **J5.1J5.2 complete; J5.3 active** | Runtime `RuntimeActionState` owns the exact selection, combat, target-mode, and `RuntimeInteractionTransactionState` children. The transaction child owns use/appraisal/pickup identity, the typed ordered FIFO, and exact post-arrival token while borrowing J4's sole inventory busy/request gate. App `WorldSelectionQuery`, movement/transport adapters, lighting, toasts, drag/drop, and pending-slot drawing remain presentation. No App transaction fallback or delegate queue remains (`b298f99f`, `f5f7b417`). |
| Landblock presentation | **Complete** | `LandblockBuildFactory` owns the captured-origin DAT transaction; concrete render/physics/DAT-static publishers and `LandblockPresentationPipeline` own typed-meter publication and exact retryable retirement. `StreamingController` owns stable destination/control/unload/Near/Far queues and destination reservation. CPU mesh-cache restaging requires an exact live owner. `StreamingOriginRecenterCoordinator` serializes old-window retirement with teleport/session origin lifetimes. `GameWindow` retains construction and one pipeline field only (`c79d0a49`, closeout `4a205a3e`; Slice E closeout `91e82c3c`). |
| Render-frame orchestration | **Complete** | `RenderFrameOrchestrator` owns the GPU-flight, resource, world/PView/shared-alpha, private-presentation, diagnostics, screenshot, and recovery graph. `GameWindow.OnRender` takes one logical window-size snapshot and performs one immutable handoff (`9d7df1bf`). |
| Unified `GameEntity` | **Slice J active at J5.2** | Canonical identity, retained-object lifetime, direct views, ordered entity/object deltas, J4 gameplay state, and J5.1 action state share failure-safe Runtime owners while exact graphical sidecars stay in App. J5.2J7 move interaction transactions, movement/physics/combat, and world authority before one Runtime composition root. |
| Unified `GameEntity` | **Slice J active at J5.3** | Canonical identity, retained-object lifetime, direct views, ordered entity/object deltas, J4 gameplay state, and J5.1J5.2 action/interaction state share failure-safe Runtime owners while exact graphical sidecars stay in App. J5.3J7 move combat/magic intent, movement/physics/projectiles, and remaining world authority before one Runtime composition root. |
### 4.3 Revised extraction sequence