docs(runtime): close simulation ownership

This commit is contained in:
Erik 2026-07-26 16:29:28 +02:00
parent cdee7a4b49
commit 4743f7c409
11 changed files with 281 additions and 33 deletions

View file

@ -310,7 +310,16 @@ App resolves immutable DAT shape data and projects committed frames. Runtime
tests pass 317/317, App tests pass 3,718/3 skips, 47 focused Core projectile tests pass 317/317, App tests pass 3,718/3 skips, 47 focused Core projectile
tests pass, the complete Release suite passes 8,591/5 skips, and the exact tests pass, the complete Release suite passes 8,591/5 skips, and the exact
arrow/bolt/spell, lifecycle/reconnect, and canonical nine-stop gates pass with arrow/bolt/spell, lifecycle/reconnect, and canonical nine-stop gates pass with
graceful exits and zero failures. J5.7 cleanup and closeout is active. graceful exits and zero failures. J5.7 and J5 are complete at `cdee7a4b`:
Runtime owns accepted remote-body/vector activation, final simulation
retirement, terminal physics/shadow/workset cleanup, and one combined
entity/object/gameplay/physics ownership ledger. The Runtime-only fixture
drives movement, use, combat, casting, and projectiles without loading
presentation/backend assemblies. Runtime tests pass 323/323, App tests pass
3,717/3 skips, the complete Release suite passes 8,596/5 skips, and the exact
lifecycle/reconnect plus canonical nine-stop gates match binary/source,
converge every backlog, and exit gracefully with zero failures. J6
world/portal/environment and projection-handshake ownership is active.
J0's rollback is J0's rollback is
`git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`. `git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`.
J1's rollback is J1's rollback is
@ -350,6 +359,8 @@ J5.5's rollback is
`git revert 7e6033d0adcd0b572c20e89dd275746fb442d52f`. `git revert 7e6033d0adcd0b572c20e89dd275746fb442d52f`.
J5.6's rollback is J5.6's rollback is
`git revert 2aee33569f0268d7bc0f4f52437dfa0b405432a4`. `git revert 2aee33569f0268d7bc0f4f52437dfa0b405432a4`.
J5.7's rollback is
`git revert cdee7a4b49addb5e1500753f6a885f7c899bd0f0`.
Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network
work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate
passes. Slice I is closed in passes. Slice I is closed in
@ -371,7 +382,8 @@ closeout is
closeout is closeout is
`docs/research/2026-07-26-slice-j5-5-physics-remote-ownership.md`; J5.6 `docs/research/2026-07-26-slice-j5-5-physics-remote-ownership.md`; J5.6
closeout is closeout is
`docs/research/2026-07-26-slice-j5-6-projectile-ownership.md`. The exact G4 `docs/research/2026-07-26-slice-j5-6-projectile-ownership.md`; J5.7 closeout is
`docs/research/2026-07-26-slice-j5-7-simulation-ownership-closeout.md`. The exact G4
visual rollback visual rollback
is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or
the portal-warmup corrections. Evidence: the portal-warmup corrections. Evidence:

View file

@ -308,7 +308,16 @@ App resolves immutable DAT shape data and projects committed frames. Runtime
tests pass 317/317, App tests pass 3,718/3 skips, 47 focused Core projectile tests pass 317/317, App tests pass 3,718/3 skips, 47 focused Core projectile
tests pass, the complete Release suite passes 8,591/5 skips, and the exact tests pass, the complete Release suite passes 8,591/5 skips, and the exact
arrow/bolt/spell, lifecycle/reconnect, and canonical nine-stop gates pass with arrow/bolt/spell, lifecycle/reconnect, and canonical nine-stop gates pass with
graceful exits and zero failures. J5.7 cleanup and closeout is active. graceful exits and zero failures. J5.7 and J5 are complete at `cdee7a4b`:
Runtime owns accepted remote-body/vector activation, final simulation
retirement, terminal physics/shadow/workset cleanup, and one combined
entity/object/gameplay/physics ownership ledger. The Runtime-only fixture
drives movement, use, combat, casting, and projectiles without loading
presentation/backend assemblies. Runtime tests pass 323/323, App tests pass
3,717/3 skips, the complete Release suite passes 8,596/5 skips, and the exact
lifecycle/reconnect plus canonical nine-stop gates match binary/source,
converge every backlog, and exit gracefully with zero failures. J6
world/portal/environment and projection-handshake ownership is active.
J0's rollback is J0's rollback is
`git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`. `git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`.
J1's rollback is J1's rollback is
@ -348,6 +357,8 @@ J5.5's rollback is
`git revert 7e6033d0adcd0b572c20e89dd275746fb442d52f`. `git revert 7e6033d0adcd0b572c20e89dd275746fb442d52f`.
J5.6's rollback is J5.6's rollback is
`git revert 2aee33569f0268d7bc0f4f52437dfa0b405432a4`. `git revert 2aee33569f0268d7bc0f4f52437dfa0b405432a4`.
J5.7's rollback is
`git revert cdee7a4b49addb5e1500753f6a885f7c899bd0f0`.
Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network
work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate
passes. Slice I is closed in passes. Slice I is closed in
@ -369,7 +380,8 @@ closeout is
closeout is closeout is
`docs/research/2026-07-26-slice-j5-5-physics-remote-ownership.md`; J5.6 `docs/research/2026-07-26-slice-j5-5-physics-remote-ownership.md`; J5.6
closeout is closeout is
`docs/research/2026-07-26-slice-j5-6-projectile-ownership.md`. The exact G4 `docs/research/2026-07-26-slice-j5-6-projectile-ownership.md`; J5.7 closeout is
`docs/research/2026-07-26-slice-j5-7-simulation-ownership-closeout.md`. The exact G4
visual rollback visual rollback
is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or
the portal-warmup corrections. Evidence: the portal-warmup corrections. Evidence:

View file

@ -14,7 +14,7 @@ banner cannot silently override the current program state.
[`plans/2026-07-23-world-interaction-completion.md`](plans/2026-07-23-world-interaction-completion.md). [`plans/2026-07-23-world-interaction-completion.md`](plans/2026-07-23-world-interaction-completion.md).
The eight-slice `GameWindow` decomposition and its connected visual matrix The eight-slice `GameWindow` decomposition and its connected visual matrix
are complete. are complete.
- **Current active engineering program:** Slices AI, J0J4, and J5.1J5.6 of - **Current active engineering program:** Slices AI and J0J5 of
[`plans/2026-07-24-modern-runtime-architecture.md`](plans/2026-07-24-modern-runtime-architecture.md) [`plans/2026-07-24-modern-runtime-architecture.md`](plans/2026-07-24-modern-runtime-architecture.md)
are complete. Production uses prepared world/collision packages, typed are complete. Production uses prepared world/collision packages, typed
residence, retained render-scene/delta submission, bounded frame owners, and residence, retained render-scene/delta submission, bounded frame owners, and
@ -24,24 +24,27 @@ banner cannot silently override the current program state.
App materialized projections and retained widgets borrow exact Runtime App materialized projections and retained widgets borrow exact Runtime
identity and action owners. Runtime also owns the sole per-session physics, identity and action owners. Runtime also owns the sole per-session physics,
collision, body/host, remote/projectile simulation, and cell-commit graph. collision, body/host, remote/projectile simulation, and cell-commit graph.
J5.7 ownership cleanup and closeout is active in J5 closed at `cdee7a4b` with one combined simulation ledger, a
[`plans/2026-07-26-modern-runtime-slice-j5.md`](plans/2026-07-26-modern-runtime-slice-j5.md). Runtime-only movement/use/combat/cast/projectile host, 8,596 complete
Release tests / 5 skips, and exact-binary lifecycle plus nine-stop gates.
J6 world/portal/environment and projection-handshake ownership is active in
[`plans/2026-07-25-modern-runtime-slice-j.md`](plans/2026-07-25-modern-runtime-slice-j.md).
- **Completed gates:** R6 locomotion/collision/projectile/teleport/radar and - **Completed gates:** R6 locomotion/collision/projectile/teleport/radar and
the final two-client portal-out/materialization observer comparison (`#218`). the final two-client portal-out/materialization observer comparison (`#218`).
- **Separate visual verification:** the shared-alpha lifestone/particle result - **Separate visual verification:** the shared-alpha lifestone/particle result
in `#225`; its connected resource-lifetime and performance routes pass. in `#225`; its connected resource-lifetime and performance routes pass.
- **Carried behavior debt:** `#153` (far teleport onto an unstreamed edge), - **Carried behavior debt:** `#153` (far teleport onto an unstreamed edge),
`#116` (two narrowed slide-response cases), and divergence rows TS-50/TS-51. `#116` (two narrowed slide-response cases), and divergence rows TS-50/TS-51.
- **Active engineering track:** complete Slice J's coherent Runtime lifetime - **Active engineering track:** complete Slice J's world handshake,
groups, then build the approved Linux/headless multi-session host in Slice K. composition root, and no-window closeout, then build the approved
J5.6's exact rollback is Linux/headless multi-session host in Slice K. J5.7's exact rollback is
`git revert 2aee33569f0268d7bc0f4f52437dfa0b405432a4`. `git revert cdee7a4b49addb5e1500753f6a885f7c899bd0f0`.
- **Divergence audit:** 178 active rows — IA 17, AD 37, AP 85, TS 34, - **Divergence audit:** 178 active rows — IA 17, AD 37, AP 85, TS 34,
and UN 5 — plus the retained retired TS-37 history note. and UN 5 — plus the retained retired TS-37 history note.
- **Latest automated baseline:** Release build succeeds; 8,591 tests pass and - **Latest automated baseline:** Release build succeeds; 8,596 tests pass and
five are intentionally skipped. The exact J5.6 arrow/bolt/spell, five are intentionally skipped. The exact J5.7 lifecycle/reconnect and
lifecycle/reconnect, and canonical nine-stop gates complete with graceful canonical nine-stop gates match embedded binary/source commit, converge
zero-code exits and zero failures. every backlog, and complete with graceful zero-code exits and zero failures.
## Sources of truth ## Sources of truth

View file

@ -238,7 +238,7 @@ src/
RuntimeOrdinaryPhysicsUpdater.cs -> presentation-free object simulation RuntimeOrdinaryPhysicsUpdater.cs -> presentation-free object simulation
RuntimeProjectile.cs -> canonical projectile component/prediction owner RuntimeProjectile.cs -> canonical projectile component/prediction owner
RuntimeProjectilePhysicsUpdater.cs -> presentation-free projectile simulation RuntimeProjectilePhysicsUpdater.cs -> presentation-free projectile simulation
-> J3J4 and J5.1J5.6 complete; J5.7 cleanup/closeout active -> J3J5 complete; J6 world/portal/environment handshake active
-> may reference Core, Core.Net, Content, and Plugin.Abstractions only -> may reference Core, Core.Net, Content, and Plugin.Abstractions only
-> must never reference App, UI, Silk.NET, OpenAL, Arch, or ImGui -> must never reference App, UI, Silk.NET, OpenAL, Arch, or ImGui

View file

@ -474,12 +474,12 @@ 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`). | | 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. | | 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. | | 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. |
| Action/combat/magic/movement | **J5.1J5.4 complete** | Runtime `RuntimeActionState` owns the exact selection, temporary target mode, interaction transactions, combat attack/target/mode, and spell-cast intent children. Interaction owns use/appraisal/pickup identity, ordered FIFO, and exact post-arrival token while borrowing J4's sole busy gate. `RuntimeLocalPlayerMovementState` owns the exact local controller, construction seam, autorun latch, typed view, and outbound MTS/jump/AP cadence. Retained bars, physical input, world/content queries, transport, lighting, toasts, drag/drop, effects, and animation remain App adapters/presentation. No parallel App owner remains (`b298f99f`, `f5f7b417`, `20df9d15`, `aa3f4a60`). | | Action/combat/magic/movement | **J5 complete** | Runtime `RuntimeActionState` owns the exact selection, temporary target mode, interaction transactions, combat attack/target/mode, and spell-cast intent children. Interaction owns use/appraisal/pickup identity, ordered FIFO, and exact post-arrival token while borrowing J4's sole busy gate. `RuntimeLocalPlayerMovementState` owns the exact local controller, construction seam, autorun latch, typed view, and outbound MTS/jump/AP cadence. Retained bars, physical input, world/content queries, transport, lighting, toasts, drag/drop, effects, and animation remain App adapters/presentation. One combined Runtime ledger spans entity/object, gameplay, physics, remote, and projectile ownership (`b298f99f`, `f5f7b417`, `20df9d15`, `aa3f4a60`, `cdee7a4b`). |
| Physics/remote simulation | **J5.5 complete** | `RuntimePhysicsState` owns one per-session engine, production cache/cell graph, transition scratch, shadow registry, typed collision admissions, canonical bodies/hosts/remotes, keyed ordinary/remote worksets, simulation, and cell commits. App streaming supplies immutable prepared collision; animation/shape adapters supply graphical inputs and project committed snapshots only (`7e6033d0`). | | Physics/remote simulation | **J5.5 complete** | `RuntimePhysicsState` owns one per-session engine, production cache/cell graph, transition scratch, shadow registry, typed collision admissions, canonical bodies/hosts/remotes, keyed ordinary/remote worksets, simulation, and cell commits. App streaming supplies immutable prepared collision; animation/shape adapters supply graphical inputs and project committed snapshots only (`7e6033d0`). |
| Projectile simulation | **J5.6 complete** | `RuntimeEntityRecord`/`RuntimePhysicsState` own the canonical projectile component, exact-key workset, prediction/correction state, unchanged retail quantum/integration/sweep/collision loop, and cell commits. App resolves immutable Setup/DAT shape input and projects committed render, shadow, and effect-pose results only (`2aee3356`). | | Projectile simulation | **J5.6 complete** | `RuntimeEntityRecord`/`RuntimePhysicsState` own the canonical projectile component, exact-key workset, prediction/correction state, unchanged retail quantum/integration/sweep/collision loop, and cell commits. App resolves immutable Setup/DAT shape input and projects committed render, shadow, and effect-pose results only (`2aee3356`). |
| 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`). | | 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`). | | 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.7** | Canonical identity, retained-object lifetime, direct views, ordered entity/object deltas, J4 gameplay state, J5 action/combat/magic/movement/physics/remote/projectile simulation share failure-safe Runtime owners while exact graphical sidecars stay in App. J5.7 removes remaining temporary seams and proves no-window parity before J6J7 add world handshakes and one Runtime composition root. | | Unified `GameEntity` | **Slice J active at J6** | Canonical identity, retained-object lifetime, direct views, ordered entity/object deltas, J4 gameplay state, and the complete J5 action/combat/magic/movement/physics/remote/projectile simulation graph share failure-safe Runtime owners while exact graphical sidecars stay in App. J5 closeout proves Runtime-only parity and one terminal ownership ledger. J6 now separates authoritative world/portal/environment state from presentation readiness before J7 composes one `GameRuntime` root. |
### 4.3 Revised extraction sequence ### 4.3 Revised extraction sequence

View file

@ -1,6 +1,6 @@
# acdream — strategic roadmap # acdream — strategic roadmap
**Status:** Living document. Updated 2026-07-26. **M3 landed; M4 is active.** M3's retail casting/UI, R6 locomotion/collision/projectile/teleport/radar rebaseline, deterministic fresh-login/portal world lifecycle, and final two-client portal observer flow are user-gated. All eight slices of the behavior-preserving ownership campaign in [`docs/architecture/code-structure.md`](../architecture/code-structure.md), their automated closeout, and the user's connected visual matrix are complete. Modern Runtime J3 canonical entity/object lifetime and J4 gameplay-state ownership are closed at `89e6b207`; J5.1 canonical selection/combat/target-mode ownership is closed at `b298f99f`, J5.2 interaction transactions at `f5f7b417`, J5.3 combat/magic intent at `20df9d15`, J5.4 local movement/outbound cadence at `aa3f4a60`, J5.5 per-session physics/remote simulation at `7e6033d0`, and J5.6 projectile simulation at `2aee3356`. J5.7 cleanup and closeout is active. Issue #225's lifestone/particle alpha comparison remains a separate rendering visual gate. **Status:** Living document. Updated 2026-07-26. **M3 landed; M4 is active.** M3's retail casting/UI, R6 locomotion/collision/projectile/teleport/radar rebaseline, deterministic fresh-login/portal world lifecycle, and final two-client portal observer flow are user-gated. All eight slices of the behavior-preserving ownership campaign in [`docs/architecture/code-structure.md`](../architecture/code-structure.md), their automated closeout, and the user's connected visual matrix are complete. Modern Runtime J3 canonical entity/object lifetime and J4 gameplay-state ownership are closed at `89e6b207`; J5.1 canonical selection/combat/target-mode ownership is closed at `b298f99f`, J5.2 interaction transactions at `f5f7b417`, J5.3 combat/magic intent at `20df9d15`, J5.4 local movement/outbound cadence at `aa3f4a60`, J5.5 per-session physics/remote simulation at `7e6033d0`, J5.6 projectile simulation at `2aee3356`, and J5.7 combined simulation closeout at `cdee7a4b`. J6 world/portal/environment and projection-handshake ownership is active. Issue #225's lifestone/particle alpha comparison remains a separate rendering visual gate.
**Purpose:** One source of truth for where the project is and where it's going. Every observed defect or missing feature has a named phase that owns it; when something looks wrong in-game, look here to find the phase that'll address it. Implementation details live in per-phase specs under `docs/superpowers/specs/`, not in this file. **Purpose:** One source of truth for where the project is and where it's going. Every observed defect or missing feature has a named phase that owns it; when something looks wrong in-game, look here to find the phase that'll address it. Implementation details live in per-phase specs under `docs/superpowers/specs/`, not in this file.
--- ---
@ -1771,7 +1771,13 @@ port in any phase — no separate listing here.
> Its 317 Runtime tests, 3,718 App tests / 3 skips, 47 focused Core projectile > Its 317 Runtime tests, 3,718 App tests / 3 skips, 47 focused Core projectile
> tests, 8,591-test / 5-skip complete Release suite, exact arrow/bolt/spell > tests, 8,591-test / 5-skip complete Release suite, exact arrow/bolt/spell
> evidence, lifecycle/reconnect gate, and canonical nine-stop route pass. > evidence, lifecycle/reconnect gate, and canonical nine-stop route pass.
> J5.7 cleanup and closeout is active. > J5.7 completed at `cdee7a4b`: Runtime owns accepted remote-body/vector
> activation, final simulation retirement, terminal physics/shadow/workset
> cleanup, and one combined entity/object/gameplay/physics ownership ledger.
> Its Runtime-only movement/use/combat/cast/projectile fixture, 323 Runtime
> tests, 3,717 App tests / 3 skips, 8,596-test / 5-skip complete Release suite,
> exact-binary lifecycle/reconnect gate, and canonical nine-stop route pass.
> J6 world/portal/environment and projection-handshake ownership is active.
> The historical exact cutover > The historical exact cutover
> rollback remains > rollback remains
> `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. Slice H is complete: > `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. Slice H is complete:

View file

@ -245,7 +245,14 @@ residency is `0/0/0` at every stable checkpoint and teardown converges. Slice I
shape inputs and projects committed frames. Its 317 Runtime tests, 3,718 shape inputs and projects committed frames. Its 317 Runtime tests, 3,718
App tests / 3 skips, 47 focused Core projectile tests, 8,591 full Release App tests / 3 skips, 47 focused Core projectile tests, 8,591 full Release
tests / 5 skips, exact arrow/bolt/spell evidence, lifecycle/reconnect route, tests / 5 skips, exact arrow/bolt/spell evidence, lifecycle/reconnect route,
and canonical nine-stop route pass. J5.7 cleanup and closeout is active under and canonical nine-stop route pass. J5.7 completed at `cdee7a4b`: one
Runtime simulation ledger spans entity/object, gameplay, physics, remote,
and projectile ownership; the Runtime-only fixture drives movement, use,
combat, casting, and projectiles without presentation dependencies. Its 323
Runtime tests, 3,717 App tests / 3 skips, 8,596 full Release tests / 5
skips, exact-binary lifecycle/reconnect route, and canonical nine-stop route
pass. J6 world/portal/environment and projection-handshake ownership is
active under
[`2026-07-25-modern-runtime-slice-j.md`](2026-07-25-modern-runtime-slice-j.md). [`2026-07-25-modern-runtime-slice-j.md`](2026-07-25-modern-runtime-slice-j.md).
Slice-I closeout evidence is Slice-I closeout evidence is
[`../research/2026-07-25-slice-i7-closeout.md`](../research/2026-07-25-slice-i7-closeout.md). [`../research/2026-07-25-slice-i7-closeout.md`](../research/2026-07-25-slice-i7-closeout.md).

View file

@ -2,7 +2,7 @@
**Date:** 2026-07-24 **Date:** 2026-07-24
**Status:** Slices AI, J0J4, and J5.1J5.6 are complete. Flat-authoritative collision, zero- **Status:** Slices AI and J0J5 are complete. Flat-authoritative collision, zero-
allocation resolve scratch, parsed-graph removal, connected correctness/ allocation resolve scratch, parsed-graph removal, connected correctness/
lifetime acceptance, and Slice-I closeout landed 2026-07-25. Slices FL were lifetime acceptance, and Slice-I closeout landed 2026-07-25. Slices FL were
explicitly approved 2026-07-24. Slice J0J1 established the enforced Runtime explicitly approved 2026-07-24. Slice J0J1 established the enforced Runtime
@ -16,11 +16,12 @@ ownership into Runtime at `011efbea`; J4.3 moved the coupled magic/player-sheet
owner into Runtime at `d02a12ce`; J4.4 moved character settings/projections owner into Runtime at `d02a12ce`; J4.4 moved character settings/projections
and the shared typed state-command seam at `dcb61efb`; J4.5 closed canonical and the shared typed state-command seam at `dcb61efb`; J4.5 closed canonical
gameplay-state ownership at `89e6b207`. J5 movement, physics, interaction, gameplay-state ownership at `89e6b207`. J5 movement, physics, interaction,
and combat ownership is active at J5.7 after canonical action state and combat ownership closed at `cdee7a4b` after canonical action state
(`b298f99f`), interaction transactions (`f5f7b417`), and combat/magic intent (`b298f99f`), interaction transactions (`f5f7b417`), and combat/magic intent
(`20df9d15`), local movement/outbound cadence (`aa3f4a60`), and per-session (`20df9d15`), local movement/outbound cadence (`aa3f4a60`), and per-session
physics/remote simulation (`7e6033d0`), and projectile simulation physics/remote simulation (`7e6033d0`), projectile simulation (`2aee3356`),
(`2aee3356`) moved to Runtime. and the combined simulation ledger/Runtime-only closeout moved to Runtime.
J6 world/portal/environment and projection-handshake ownership is active.
**Scope:** Reconcile and sequence the existing Modern Pipeline (`MP`) and **Scope:** Reconcile and sequence the existing Modern Pipeline (`MP`) and
Linux/headless (`LH`) tracks using the 2026-07-24 connected performance audit. Linux/headless (`LH`) tracks using the 2026-07-24 connected performance audit.
@ -1277,8 +1278,11 @@ gate, and canonical nine-stop route pass. J4 is complete at `89e6b207`: the
single Runtime shortcut/spellbook/inventory owners, graphical/no-window single Runtime shortcut/spellbook/inventory owners, graphical/no-window
command parity, failure-safe combined ledger, 8,544-test Release suite, command parity, failure-safe combined ledger, 8,544-test Release suite,
exact-binary lifecycle/reconnect gate, and canonical nine-stop route pass. exact-binary lifecycle/reconnect gate, and canonical nine-stop route pass.
J5 movement/physics/interaction/combat ownership is the current execution J5 movement/physics/interaction/combat ownership is complete at `cdee7a4b`.
point. J5.1J5.6 are complete; J5.7 cleanup and closeout is active. The Runtime-only simulation fixture, combined terminal ledger, 8,596-test /
5-skip Release suite, exact-binary lifecycle/reconnect gate, and canonical
nine-stop route pass. J6 world/portal/environment and projection-handshake
ownership is the current execution point.
Evidence: Evidence:
[`../research/2026-07-25-slice-g5-production-profile.md`](../research/2026-07-25-slice-g5-production-profile.md) [`../research/2026-07-25-slice-g5-production-profile.md`](../research/2026-07-25-slice-g5-production-profile.md)
and and
@ -1300,6 +1304,8 @@ and
and and
[`../research/2026-07-26-slice-j5-6-projectile-ownership.md`](../research/2026-07-26-slice-j5-6-projectile-ownership.md) [`../research/2026-07-26-slice-j5-6-projectile-ownership.md`](../research/2026-07-26-slice-j5-6-projectile-ownership.md)
and and
[`../research/2026-07-26-slice-j5-7-simulation-ownership-closeout.md`](../research/2026-07-26-slice-j5-7-simulation-ownership-closeout.md)
and
[`2026-07-25-modern-runtime-slice-j.md`](2026-07-25-modern-runtime-slice-j.md). [`2026-07-25-modern-runtime-slice-j.md`](2026-07-25-modern-runtime-slice-j.md).
The intended order is therefore: The intended order is therefore:

View file

@ -1,6 +1,6 @@
# Modern runtime Slice J — presentation-independent runtime # Modern runtime Slice J — presentation-independent runtime
**Status:** J0J4 COMPLETE; J5 ACTIVE **Status:** J0J5 COMPLETE; J6 ACTIVE
**Parent:** `2026-07-24-modern-runtime-architecture.md`, Slice J **Parent:** `2026-07-24-modern-runtime-architecture.md`, Slice J
**Authorization:** the user approved Slices FL, including the otherwise-frozen **Authorization:** the user approved Slices FL, including the otherwise-frozen
Slice J gameplay-owner moves, on 2026-07-24 Slice J gameplay-owner moves, on 2026-07-24
@ -277,7 +277,7 @@ J4 must borrow it rather than create another inventory model.
### J5 — movement, physics, interaction, and combat group ### J5 — movement, physics, interaction, and combat group
**Active 2026-07-26.** Detailed execution begins with a source/owner inventory **Completed 2026-07-26.** Detailed execution began with a source/owner inventory
and a named-retail ordering matrix. Each coherent move must preserve the and a named-retail ordering matrix. Each coherent move must preserve the
accepted connected interaction, facing, projectile, and collision behavior. accepted connected interaction, facing, projectile, and collision behavior.
The executable sub-slice ledger, presentation boundary, acceptance gates, and The executable sub-slice ledger, presentation boundary, acceptance gates, and
@ -317,7 +317,14 @@ retail projectile simulation; App resolves immutable DAT shape data and
projects committed frames only. Its 317 Runtime tests, 3,718 App tests / 3 projects committed frames only. Its 317 Runtime tests, 3,718 App tests / 3
skips, 47 focused Core projectile tests, 8,591 complete Release tests / 5 skips, 47 focused Core projectile tests, 8,591 complete Release tests / 5
skips, exact arrow/bolt/spell evidence, lifecycle/reconnect gate, and canonical skips, exact arrow/bolt/spell evidence, lifecycle/reconnect gate, and canonical
nine-stop route pass. J5.7 ownership cleanup and closeout is active. Evidence: nine-stop route pass. J5.7 completed at `cdee7a4b`: Runtime owns accepted
remote-body/vector activation, final simulation retirement, terminal
physics/shadow/workset cleanup, and one combined simulation ownership ledger.
Its Runtime-only movement/use/combat/cast/projectile host proves no-window
parity and terminal convergence after projection failure. Its 323 Runtime
tests, 3,717 App tests / 3 skips, 8,596 complete Release tests / 5 skips,
exact-binary lifecycle/reconnect gate, and canonical nine-stop route pass.
Evidence:
[`../research/2026-07-26-slice-j5-1-canonical-action-state.md`](../research/2026-07-26-slice-j5-1-canonical-action-state.md) [`../research/2026-07-26-slice-j5-1-canonical-action-state.md`](../research/2026-07-26-slice-j5-1-canonical-action-state.md)
and and
[`../research/2026-07-26-slice-j5-2-interaction-transactions.md`](../research/2026-07-26-slice-j5-2-interaction-transactions.md) [`../research/2026-07-26-slice-j5-2-interaction-transactions.md`](../research/2026-07-26-slice-j5-2-interaction-transactions.md)
@ -328,7 +335,9 @@ and
and and
[`../research/2026-07-26-slice-j5-5-physics-remote-ownership.md`](../research/2026-07-26-slice-j5-5-physics-remote-ownership.md) [`../research/2026-07-26-slice-j5-5-physics-remote-ownership.md`](../research/2026-07-26-slice-j5-5-physics-remote-ownership.md)
and and
[`../research/2026-07-26-slice-j5-6-projectile-ownership.md`](../research/2026-07-26-slice-j5-6-projectile-ownership.md). [`../research/2026-07-26-slice-j5-6-projectile-ownership.md`](../research/2026-07-26-slice-j5-6-projectile-ownership.md)
and
[`../research/2026-07-26-slice-j5-7-simulation-ownership-closeout.md`](../research/2026-07-26-slice-j5-7-simulation-ownership-closeout.md).
- Move presentation-free movement interpretation, authoritative/predicted - Move presentation-free movement interpretation, authoritative/predicted
physics state, selection identity, approach/use transactions, combat intent, physics state, selection identity, approach/use transactions, combat intent,
@ -345,6 +354,8 @@ graphical feel gates remain unchanged.
### J6 — world, portal, environment, and projection handshake ### J6 — world, portal, environment, and projection handshake
**Active 2026-07-26.**
- Move authoritative teleport/session cell identity, world clock, weather - Move authoritative teleport/session cell identity, world clock, weather
state, and reveal-generation state required by gameplay. state, and reveal-generation state required by gameplay.
- Keep streaming publication, terrain/EnvCell rendering, portal tunnel, - Keep streaming publication, terrain/EnvCell rendering, portal tunnel,
@ -400,3 +411,9 @@ another gameplay extraction.
Each commit is independently buildable and retains an exact rollback command Each commit is independently buildable and retains an exact rollback command
in this plan before its connected gate. in this plan before its connected gate.
J5.7 exact rollback:
```text
git revert cdee7a4b49addb5e1500753f6a885f7c899bd0f0
```

View file

@ -1,6 +1,6 @@
# Modern runtime Slice J5 — movement, physics, interaction, and combat # Modern runtime Slice J5 — movement, physics, interaction, and combat
**Status:** ACTIVE — J5.1J5.6 complete; J5.7 next **Status:** COMPLETE — J5.1J5.7 closed 2026-07-26
**Parent:** `2026-07-25-modern-runtime-slice-j.md`, J5 **Parent:** `2026-07-25-modern-runtime-slice-j.md`, J5
**Production base:** `2c67a2c3` **Production base:** `2c67a2c3`
**Authorization:** the user approved Slices FL, including the Slice J **Authorization:** the user approved Slices FL, including the Slice J
@ -91,7 +91,7 @@ commands to Runtime. The camera may not write the player heading directly.
| J5.4 local movement and outbound cadence | complete | `aa3f4a60f87f2cbebc3d8ecd5e33d779b7fb13c1`; one Runtime movement/controller/cadence owner; 303 Runtime tests, 3,716 App tests / 3 skips, 8,575 complete Release tests / 5 skips, exact-binary lifecycle/reconnect and nine-stop movement gates pass | | J5.4 local movement and outbound cadence | complete | `aa3f4a60f87f2cbebc3d8ecd5e33d779b7fb13c1`; one Runtime movement/controller/cadence owner; 303 Runtime tests, 3,716 App tests / 3 skips, 8,575 complete Release tests / 5 skips, exact-binary lifecycle/reconnect and nine-stop movement gates pass |
| J5.5 per-session physics and remote simulation | complete | `7e6033d0adcd0b572c20e89dd275746fb442d52f`; one Runtime engine/cache/scratch/shadow/body/host/remote/workset owner; 314 Runtime tests, 3,718 App tests / 3 skips, 8,588 complete Release tests / 5 skips, exact-binary lifecycle/reconnect and nine-stop collision/movement gates pass | | J5.5 per-session physics and remote simulation | complete | `7e6033d0adcd0b572c20e89dd275746fb442d52f`; one Runtime engine/cache/scratch/shadow/body/host/remote/workset owner; 314 Runtime tests, 3,718 App tests / 3 skips, 8,588 complete Release tests / 5 skips, exact-binary lifecycle/reconnect and nine-stop collision/movement gates pass |
| J5.6 projectile runtime | complete | `2aee33569f0268d7bc0f4f52437dfa0b405432a4`; one Runtime projectile component/workset/simulation/correction owner; 317 Runtime tests, 3,718 App tests / 3 skips, 47 focused Core projectile tests, 8,591 complete Release tests / 5 skips, exact arrow/bolt/spell evidence, lifecycle/reconnect pass, and nine-stop route pass | | J5.6 projectile runtime | complete | `2aee33569f0268d7bc0f4f52437dfa0b405432a4`; one Runtime projectile component/workset/simulation/correction owner; 317 Runtime tests, 3,718 App tests / 3 skips, 47 focused Core projectile tests, 8,591 complete Release tests / 5 skips, exact arrow/bolt/spell evidence, lifecycle/reconnect pass, and nine-stop route pass |
| J5.7 combined cleanup and closeout | active | no mirrors, one ownership ledger, no-window parity, teardown, connected and visual gates | | J5.7 combined cleanup and closeout | complete | `cdee7a4b49addb5e1500753f6a885f7c899bd0f0`; one combined simulation ledger, Runtime-only fixture parity, exact terminal teardown, 323 Runtime tests, 3,717 App tests / 3 skips, 8,596 complete Release tests / 5 skips, exact-binary lifecycle/reconnect and nine-stop gates |
## J5.1 — canonical action state ## J5.1 — canonical action state
@ -431,6 +431,29 @@ Run:
9. architecture, divergence, issue, roadmap, AGENTS/CLAUDE, and durable-memory 9. architecture, divergence, issue, roadmap, AGENTS/CLAUDE, and durable-memory
reconciliation. reconciliation.
**Completed 2026-07-26 at
`cdee7a4b49addb5e1500753f6a885f7c899bd0f0`.**
Runtime now owns accepted CreateObject vector installation, remote-motion
construction/activation, canonical vector commits, final simulation-component
retirement, terminal physics/shadow/workset cleanup, and one combined
entity/object/physics/gameplay ownership ledger. App compatibility views and
the duplicate remote-body initializer are deleted; graphical checkpoints
borrow direct Runtime views. A Runtime-only fixture drives movement, use,
combat, casting, and projectile simulation without loading App or a
presentation/backend assembly, and injected projection failure still converges
the complete ledger.
Runtime tests pass 323/323, App tests pass 3,717/3 skips, the complete Release
suite passes 8,596/5 skips, and the Release solution builds with zero errors.
The exact-binary lifecycle/reconnect report
`logs/connected-world-gate-20260726-160825/report.json` passes all seven
checkpoints and both graceful code-zero exits. The canonical report
`logs/connected-r6-soak-20260726-161406.report.json` matches embedded
binary/source SHA, passes all nine destinations and movement/combat/jump
exercises, converges every streaming backlog to zero, and exits gracefully
with zero failures. Evidence:
[`../research/2026-07-26-slice-j5-7-simulation-ownership-closeout.md`](../research/2026-07-26-slice-j5-7-simulation-ownership-closeout.md).
## Commit and rollback discipline ## Commit and rollback discipline
Each sub-slice lands as one independently reversible production commit followed Each sub-slice lands as one independently reversible production commit followed
@ -487,6 +510,12 @@ J5.6 rollback:
git revert 2aee33569f0268d7bc0f4f52437dfa0b405432a4 git revert 2aee33569f0268d7bc0f4f52437dfa0b405432a4
``` ```
J5.7 rollback:
```text
git revert cdee7a4b49addb5e1500753f6a885f7c899bd0f0
```
## Acceptance ## Acceptance
J5 is complete only when: J5 is complete only when:

View file

@ -0,0 +1,156 @@
# Slice J5.7 — simulation-ownership closeout
Date: 2026-07-26
Scope: ownership and teardown cleanup only; no retail algorithm, packet,
timing, collision policy, gameplay outcome, or graphical presentation change
## Objective
Close the temporary seams left by J5.1J5.6 so one Runtime lifetime owns the
complete presentation-independent simulation graph:
- canonical entity/object identity and accepted wire state;
- selection, interaction, combat, magic, and local movement intent;
- per-session physics, remote motion, projectiles, shadows, and spatial
worksets;
- reset, projection withdrawal, and terminal retirement.
App remains the graphical host. It supplies physical input, immutable
DAT/content inputs, transport and projection acknowledgements, then presents
committed Runtime state through animation, meshes, particles, audio, cameras,
retained UI, markers, and diagnostics.
## Named-retail invariant
J5.7 preserves the already-ported retail control flow. The one relocated
initialization detail follows:
- `CPhysicsObj::set_description` at `0x00514F40`
CreateObject velocity and angular velocity are installed once when Runtime
constructs the canonical remote body. Later authoritative Vector updates flow
through the existing retail timestamp gate and canonical record. App no longer
constructs a second body or repeats the accepted CreateObject vector install.
The projectile, movement, collision, interaction, combat, and spell algorithms
remain those documented by the preceding J5 evidence notes. No constant,
branch, packet order, server-authority boundary, or visible effect changed.
## Closed ownership gaps
Production commit
`cdee7a4b49addb5e1500753f6a885f7c899bd0f0`:
- removes the App remote-motion/physics-host/canonical-runtime/cell/placement
compatibility aliases after production consumers moved to Runtime types;
- deletes `LiveEntityRemoteMotionRuntimeView<T>` and the App
`RemotePhysicsBodyInitializer`;
- makes `LiveEntityNetworkUpdateController` borrow the canonical
`LiveEntityRuntime` and delegate body, remote-motion, vector, wakeup, and
activation work to `RuntimePhysicsState`;
- makes Runtime install accepted CreateObject velocity and angular velocity
exactly once at canonical body construction;
- makes `RuntimeEntityObjectLifetime.CompleteProjectionRetirement` own final
simulation-component retirement after the App projection acknowledges
withdrawal;
- removes App-side mutation of canonical remote/body/host/placement component
slots;
- makes current-runtime checkpoints borrow `IRuntimeEntityView` and inventory
views rather than reconstructing state from App projections or
`ClientObjectTable`;
- adds terminal clearing for `PhysicsEngine`, `ShadowObjectRegistry`, spatial
worksets, collision residence, bodies, hosts, remotes, and projectiles;
- adds `RuntimeSimulationOwnershipSnapshot`, one terminal ledger spanning
entity/object, physics, and gameplay ownership;
- adds a Runtime-only fixture host that drives movement, use, combat, casting,
and projectile simulation without loading App, UI, Silk.NET, OpenAL, ImGui,
Arch, or a native window.
`ILocalPlayerMotionSource` remains as a presentation-facing source name for
the animation projection seam. It does not construct, store, or mutate a
second movement owner; graphical animation borrows the exact
`RuntimeLocalPlayerMovementState`.
## Failure and parity matrix
The closeout fixtures cover every J5.7 boundary:
| Boundary | Evidence |
|---|---|
| construction | per-instance entity/object/physics/gameplay owners; canonical remote-body acquisition; no presentation/backend assembly load |
| subscription | entity, communication, gameplay, and projection observers isolate failures and detach exactly |
| command | graphical and direct movement, use, combat, and magic commands reach the same exact owners |
| projection acknowledgement | vector, rebucket, projectile, and terminal projection failures preserve canonical committed state and allow retry/convergence |
| reset | interaction, action, movement, session, entity/object, and physics reset paths converge without replay |
| disposal | combined simulation ledger, physics residence, shadows, worksets, objects, and subscriptions reach exact zero |
Normalized graphical/direct parity is pinned by:
- `CurrentGameRuntimeAdapterTests.GraphicalAndDirectCombatMagicCommands_ReachTheExactSameOwners`;
- `CurrentGameRuntimeAdapterTests.DirectAndGraphicalHosts_ProduceIdenticalEntityObjectTrace`;
- `RuntimeLocalPlayerMovementStateTests.GraphicalAndDirectCommandsMutateOneAutorunLatch`;
- `RuntimeSimulationFixtureHostTests.RuntimeOnlyHostDrivesCompleteJ5SimulationWithoutPresentation`.
The projection-failure fixture additionally proves that a failed graphical
acknowledgement cannot strand or roll back canonical simulation state:
- `RuntimeSimulationFixtureHostTests.ProjectionAcknowledgementFailureStillAllowsTerminalConvergence`.
## Automated acceptance
On the production commit:
- focused App ownership/entity/projectile/hydration suite: 198 passed;
- Runtime tests: 323 passed;
- App tests: 3,717 passed / 3 skipped;
- complete Release solution: 8,596 passed / 5 skipped;
- Release solution build: zero errors; 17 pre-existing warnings;
- source/dependency guards pass;
- `git diff --check` is clean.
The combined Runtime fixture loads no presentation or backend assembly and
its terminal `RuntimeSimulationOwnershipSnapshot.IsConverged` is true after
normal operation and injected projection failure.
## Connected acceptance
Both accepted connected gates used the exact rebuilt executable and source
commit `cdee7a4b49addb5e1500753f6a885f7c899bd0f0`.
- Lifecycle/reconnect:
`logs/connected-world-gate-20260726-160825/report.json`
passed all seven fresh-login, outdoor, dungeon, revisit, graceful-disconnect,
and uncapped fresh-process reconnect checkpoints. Both processes exited
gracefully with code zero, with zero failures and only the 25 expected
world-edge empty-landblock misses.
- Canonical nine-stop route:
`logs/connected-r6-soak-20260726-161406.report.json`
reported `binaryMatchesSource = true`, materialized all nine destinations,
passed forward, jump, combat, and authoritative movement-truth exercises at
Caul, Holtburg, and the Caul return, and exited gracefully with code zero
and zero failures. Every checkpoint converged with zero pending publication,
retirement, worker-completion, or destination backlog.
The earlier post-commit route
`logs/connected-r6-soak-20260726-155912.report.json` was behaviorally green
but is deliberately rejected as exact-binary evidence because its embedded
binary SHA preceded the source commit. It remains in the audit trail. The
solution was rebuilt and both accepted gates were then rerun.
The user-accepted connected behavior carried through J5 includes local
movement and target-facing, near/far object use, combat and spell bars,
projectile presentation, collision, repeated portal/recall, and reconnect.
J5.7 changes only ownership seams and the exact-binary routes exercise those
same owners after cleanup.
## Divergence and rollback
J5.7 removes duplicate ownership and compatibility seams. It introduces no
new retail behavior or divergence, so the divergence register requires no new
row.
Exact rollback:
```text
git revert cdee7a4b49addb5e1500753f6a885f7c899bd0f0
```