docs(runtime): record teleport correlation gate
This commit is contained in:
parent
6a063a27d4
commit
73d0b54e38
10 changed files with 188 additions and 25 deletions
14
AGENTS.md
14
AGENTS.md
|
|
@ -330,7 +330,13 @@ destination/readiness latch, materialization/simulation edge, viewport,
|
||||||
completion, cancellation, wait cue, and portal count. App's lifecycle mirror
|
completion, cancellation, wait cue, and portal count. App's lifecycle mirror
|
||||||
is deleted. Its 349 Runtime tests, 3,716 App tests / 3 skips, 8,626 complete
|
is deleted. Its 349 Runtime tests, 3,716 App tests / 3 skips, 8,626 complete
|
||||||
Release tests / 5 skips, and exact-binary lifecycle/reconnect route pass with
|
Release tests / 5 skips, and exact-binary lifecycle/reconnect route pass with
|
||||||
zero reveal invariants. J6.3 F751/Position transit correlation is active.
|
zero reveal invariants. J6.3 landed at `6a063a27`: Runtime owns wrap-safe F751
|
||||||
|
history, both accepted F751/Position orders, the exact destination, and
|
||||||
|
generation/sequence/cell placement and materialization validation. App's
|
||||||
|
transit coordinator and destination mirror are deleted. Its 360 Runtime tests,
|
||||||
|
3,710 App tests / 3 skips, 8,631 complete Release tests / 5 skips, and
|
||||||
|
exact-binary lifecycle/reconnect route pass. J6.4 graphical-host
|
||||||
|
acknowledgement and owner cleanup is active.
|
||||||
J0's rollback is
|
J0's rollback is
|
||||||
`git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`.
|
`git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`.
|
||||||
J1's rollback is
|
J1's rollback is
|
||||||
|
|
@ -377,6 +383,8 @@ J6.1's rollback is
|
||||||
J6.2's rollback is, newest first,
|
J6.2's rollback is, newest first,
|
||||||
`git revert acb845d812574206da1693fb379fec8a6f175fcb` then
|
`git revert acb845d812574206da1693fb379fec8a6f175fcb` then
|
||||||
`git revert a6860d5563ae845a2cbb916abacf2b4aee515cdb`.
|
`git revert a6860d5563ae845a2cbb916abacf2b4aee515cdb`.
|
||||||
|
J6.3's rollback is
|
||||||
|
`git revert 6a063a27d4c805cd166d5a487afc290c34c400fd`.
|
||||||
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
|
||||||
|
|
@ -399,7 +407,9 @@ 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`; J5.7 closeout is
|
`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
|
`docs/research/2026-07-26-slice-j5-7-simulation-ownership-closeout.md`; J6.3
|
||||||
|
closeout is
|
||||||
|
`docs/research/2026-07-26-slice-j6-3-teleport-correlation.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:
|
||||||
|
|
|
||||||
14
CLAUDE.md
14
CLAUDE.md
|
|
@ -328,7 +328,13 @@ destination/readiness latch, materialization/simulation edge, viewport,
|
||||||
completion, cancellation, wait cue, and portal count. App's lifecycle mirror
|
completion, cancellation, wait cue, and portal count. App's lifecycle mirror
|
||||||
is deleted. Its 349 Runtime tests, 3,716 App tests / 3 skips, 8,626 complete
|
is deleted. Its 349 Runtime tests, 3,716 App tests / 3 skips, 8,626 complete
|
||||||
Release tests / 5 skips, and exact-binary lifecycle/reconnect route pass with
|
Release tests / 5 skips, and exact-binary lifecycle/reconnect route pass with
|
||||||
zero reveal invariants. J6.3 F751/Position transit correlation is active.
|
zero reveal invariants. J6.3 landed at `6a063a27`: Runtime owns wrap-safe F751
|
||||||
|
history, both accepted F751/Position orders, the exact destination, and
|
||||||
|
generation/sequence/cell placement and materialization validation. App's
|
||||||
|
transit coordinator and destination mirror are deleted. Its 360 Runtime tests,
|
||||||
|
3,710 App tests / 3 skips, 8,631 complete Release tests / 5 skips, and
|
||||||
|
exact-binary lifecycle/reconnect route pass. J6.4 graphical-host
|
||||||
|
acknowledgement and owner cleanup is active.
|
||||||
J0's rollback is
|
J0's rollback is
|
||||||
`git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`.
|
`git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`.
|
||||||
J1's rollback is
|
J1's rollback is
|
||||||
|
|
@ -375,6 +381,8 @@ J6.1's rollback is
|
||||||
J6.2's rollback is, newest first,
|
J6.2's rollback is, newest first,
|
||||||
`git revert acb845d812574206da1693fb379fec8a6f175fcb` then
|
`git revert acb845d812574206da1693fb379fec8a6f175fcb` then
|
||||||
`git revert a6860d5563ae845a2cbb916abacf2b4aee515cdb`.
|
`git revert a6860d5563ae845a2cbb916abacf2b4aee515cdb`.
|
||||||
|
J6.3's rollback is
|
||||||
|
`git revert 6a063a27d4c805cd166d5a487afc290c34c400fd`.
|
||||||
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
|
||||||
|
|
@ -397,7 +405,9 @@ 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`; J5.7 closeout is
|
`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
|
`docs/research/2026-07-26-slice-j5-7-simulation-ownership-closeout.md`; J6.3
|
||||||
|
closeout is
|
||||||
|
`docs/research/2026-07-26-slice-j6-3-teleport-correlation.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:
|
||||||
|
|
|
||||||
|
|
@ -241,7 +241,7 @@ src/
|
||||||
World/
|
World/
|
||||||
RuntimeWorldEnvironmentState.cs -> canonical calendar/time/weather owner
|
RuntimeWorldEnvironmentState.cs -> canonical calendar/time/weather owner
|
||||||
RuntimeWorldTransitState.cs -> canonical reveal generation/readiness owner
|
RuntimeWorldTransitState.cs -> canonical reveal generation/readiness owner
|
||||||
-> J3–J5 and J6.1–J6.2 complete; J6.3 transit handshake active
|
-> J3–J5 and J6.1–J6.3 complete; J6.4 host acknowledgement 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
|
||||||
|
|
||||||
|
|
@ -964,12 +964,17 @@ One reset seam ends a logical transit on successful completion, replacement
|
||||||
by a newer teleport sequence, or session teardown. It clears the destination,
|
by a newer teleport sequence, or session teardown. It clears the destination,
|
||||||
streaming priority, sequencer edges, projection override, and portal scene
|
streaming priority, sequencer edges, projection override, and portal scene
|
||||||
together, preventing transition state from crossing destination or session
|
together, preventing transition state from crossing destination or session
|
||||||
lifetimes. `TeleportTransitCoordinator` correlates each fresh F751 sequence
|
lifetimes. Runtime's instance-scoped `RuntimeWorldTransitState` correlates each
|
||||||
with exactly one accepted `UpdatePosition`. Because the Position can arrive on
|
fresh F751 sequence with exactly one accepted `UpdatePosition` and owns the
|
||||||
either side of F751, a pre-notification packet is buffered only when it advances
|
pending/active sequence plus exact destination lifetime. Because Position can
|
||||||
retail's `TELEPORT_TS`; after notification, the first accepted matching packet
|
arrive on either side of F751, a pre-notification packet is buffered only when
|
||||||
is consumed even if that timestamp already advanced. Duplicate/older F751
|
it advances retail's `TELEPORT_TS`; after notification, the first accepted
|
||||||
notifications are rejected with wrap-safe ordering. Canonical physics remains
|
matching packet is consumed even if that timestamp already advanced.
|
||||||
|
Duplicate/older F751 notifications are rejected with wrap-safe ordering.
|
||||||
|
Placement and materialization must match the exact Runtime generation,
|
||||||
|
sequence, and destination cell. `LocalPlayerTeleportController` borrows that
|
||||||
|
truth and owns only the graphical portal, render-space translation/recenter,
|
||||||
|
placement callback, tunnel, and retained UI. Canonical physics remains
|
||||||
independent, and streaming recentering compares destination identity with the
|
independent, and streaming recentering compares destination identity with the
|
||||||
actual current streaming center rather than the player's still-unplaced source
|
actual current streaming center rather than the player's still-unplaced source
|
||||||
cell. A live teleport received while acdream's developer fly/orbit camera is
|
cell. A live teleport received while acdream's developer fly/orbit camera is
|
||||||
|
|
|
||||||
|
|
@ -472,14 +472,14 @@ useful ordering seam, but its ownership status is **partial**.
|
||||||
| World environment | **J6.1 complete Runtime ownership** | `RuntimeWorldEnvironmentState` owns the instance-scoped Dereth calendar, synchronized clock, weather progression/state, selected day group, AdminEnvirons state, and typed debug overrides. App converts immutable DAT sky definitions once and projects the borrowed Runtime snapshot into rendering; no process-global Region origin or second App clock/weather owner remains (`902076c0`). TS-54/TS-55 register the remaining centered UI sound and full fog/ambient/radar behavior gaps. |
|
| World environment | **J6.1 complete Runtime ownership** | `RuntimeWorldEnvironmentState` owns the instance-scoped Dereth calendar, synchronized clock, weather progression/state, selected day group, AdminEnvirons state, and typed debug overrides. App converts immutable DAT sky definitions once and projects the borrowed Runtime snapshot into rendering; no process-global Region origin or second App clock/weather owner remains (`902076c0`). TS-54/TS-55 register the remaining centered UI sound and full fog/ambient/radar behavior gaps. |
|
||||||
| Live identity/lifetime | **J3 complete** | `RuntimeEntityObjectLifetime` owns the sole `RuntimeEntityDirectory`, live `ClientObjectTable`, direct views, and ordered entity/object stream. The directory owns canonical GUID/incarnation/local-ID identity, accepted snapshots/timestamps, parent state, operation versions, and tombstones. `LiveEntityProjectionStore` owns App graphical sidecars by exact `RuntimeEntityKey`; hydration, presentation components, `GpuWorldState` residence/visibility, and retryable teardown preserve that key without another authority. Exact receipts precede fallible callbacks, re-entrant commits drain synchronously in sequence, and stable reset/disposal must converge the complete ledger to zero (`f46ddb5c`, `420e5eea`, `e937cc36`, `5ef8b537`, `ce3ac310`, `119b7c11`). |
|
| Live identity/lifetime | **J3 complete** | `RuntimeEntityObjectLifetime` owns the sole `RuntimeEntityDirectory`, live `ClientObjectTable`, direct views, and ordered entity/object stream. The directory owns canonical GUID/incarnation/local-ID identity, accepted snapshots/timestamps, parent state, operation versions, and tombstones. `LiveEntityProjectionStore` owns App graphical sidecars by exact `RuntimeEntityKey`; hydration, presentation components, `GpuWorldState` residence/visibility, and retryable teardown preserve that key without another authority. Exact receipts precede fallible callbacks, re-entrant commits drain synchronously in sequence, and stable reset/disposal must converge the complete ledger to zero (`f46ddb5c`, `420e5eea`, `e937cc36`, `5ef8b537`, `ce3ac310`, `119b7c11`). |
|
||||||
| 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 | **J6.2 complete Runtime ownership** | `RuntimeWorldTransitState` owns the sole monotonic login/portal reveal generation, exact destination, typed atomic readiness latch, materialization/simulation edge, viewport observation, completion, cancellation, retail wait cue, and portal count. `WorldRevealCoordinator` is the graphical host adapter over App readiness/reservations; `WorldGenerationAvailabilityState` borrows Runtime truth and owns no mutable generation. Delayed portals retain the authored tunnel and centered retail wait notice rather than force-revealing incomplete content (`a6860d55`, `acb845d8`). |
|
| World reveal/transit | **J6.3 complete Runtime ownership** | `RuntimeWorldTransitState` owns the sole monotonic login/portal reveal generation, wrap-safe F751 history, pending/active teleport sequence, both accepted F751/Position packet orders, exact destination, typed atomic readiness latch, generation/sequence/cell placement and materialization validation, simulation edge, viewport observation, completion, cancellation, retail wait cue, and portal count. `WorldRevealCoordinator` and `LocalPlayerTeleportController` are graphical host adapters over App readiness/reservations, render-space placement, tunnel, and UI; `WorldGenerationAvailabilityState` borrows Runtime truth and owns no mutable generation. The App transit coordinator and accepted-destination mirror are deleted (`a6860d55`, `acb845d8`, `6a063a27`). |
|
||||||
| 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 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`). |
|
| 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 J6.3** | 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.1–J6.2 moved world environment and reveal-generation truth; J6.3 now moves F751/Position destination correlation before J7 composes one `GameRuntime` root. |
|
| Unified `GameEntity` | **Slice J active at J6.4** | 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.1–J6.3 moved world environment, reveal-generation truth, and exact F751/Position destination correlation; J6.4 now closes typed graphical-host acknowledgements before J7 composes one `GameRuntime` root. |
|
||||||
|
|
||||||
### 4.3 Revised extraction sequence
|
### 4.3 Revised extraction sequence
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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`, J5.6 projectile simulation at `2aee3356`, and J5.7 combined simulation closeout at `cdee7a4b`. J6.1 world-environment ownership is closed at `902076c0`; J6.2 canonical reveal generation and typed destination readiness is closed at `a6860d55` plus `acb845d8`; J6.3 teleport packet/destination correlation 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.1 world-environment ownership is closed at `902076c0`; J6.2 canonical reveal generation and typed destination readiness is closed at `a6860d55` plus `acb845d8`; J6.3 exact F751/Position destination correlation is closed at `6a063a27`; J6.4 graphical-host acknowledgement and owner cleanup 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.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
@ -1786,8 +1786,13 @@ port in any phase — no separate listing here.
|
||||||
> simulation-availability, viewport, completion, cancellation, and wait-cue
|
> simulation-availability, viewport, completion, cancellation, and wait-cue
|
||||||
> state. Its 349 Runtime tests, 3,716 App tests / 3 skips, 8,626-test / 5-skip
|
> state. Its 349 Runtime tests, 3,716 App tests / 3 skips, 8,626-test / 5-skip
|
||||||
> complete Release suite, and exact-binary lifecycle/reconnect route pass with
|
> complete Release suite, and exact-binary lifecycle/reconnect route pass with
|
||||||
> zero reveal invariants. J6.3 teleport packet/destination correlation is
|
> zero reveal invariants. J6.3 completed at `6a063a27`: Runtime owns wrap-safe
|
||||||
> active.
|
> F751 history, both accepted F751/Position packet orders, the exact
|
||||||
|
> destination, and generation/sequence/cell placement and materialization
|
||||||
|
> validation; the App transit coordinator and destination mirror are deleted.
|
||||||
|
> Its 360 Runtime tests, 3,710 App tests / 3 skips, 8,631-test / 5-skip complete
|
||||||
|
> Release suite, and exact-binary lifecycle/reconnect route pass. J6.4
|
||||||
|
> graphical-host acknowledgement and owner cleanup 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:
|
||||||
|
|
|
||||||
|
|
@ -261,7 +261,13 @@ residency is `0/0/0` at every stable checkpoint and teardown converges. Slice I
|
||||||
viewport, completion, cancellation, and wait-cue state; App's lifecycle
|
viewport, completion, cancellation, and wait-cue state; App's lifecycle
|
||||||
mirror is deleted. Its 349 Runtime tests, 3,716 App tests / 3 skips, 8,626
|
mirror is deleted. Its 349 Runtime tests, 3,716 App tests / 3 skips, 8,626
|
||||||
complete Release tests / 5 skips, and exact-binary lifecycle/reconnect route
|
complete Release tests / 5 skips, and exact-binary lifecycle/reconnect route
|
||||||
pass with zero reveal invariants. J6.3 transit correlation is active under
|
pass with zero reveal invariants. J6.3 completed at `6a063a27`: Runtime owns
|
||||||
|
wrap-safe F751 history, both accepted F751/Position orders, the exact
|
||||||
|
destination, and generation/sequence/cell placement and materialization
|
||||||
|
validation; App's transit coordinator and destination mirror are deleted.
|
||||||
|
Its 360 Runtime tests, 3,710 App tests / 3 skips, 8,631 complete Release tests
|
||||||
|
/ 5 skips, and exact-binary lifecycle/reconnect route pass. J6.4 graphical-
|
||||||
|
host acknowledgement and owner cleanup 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).
|
||||||
|
|
@ -295,6 +301,8 @@ Slice-J5.5 closeout evidence is
|
||||||
[`../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).
|
||||||
Slice-J5.6 closeout evidence is
|
Slice-J5.6 closeout evidence is
|
||||||
[`../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).
|
||||||
|
Slice-J6.3 closeout evidence is
|
||||||
|
[`../research/2026-07-26-slice-j6-3-teleport-correlation.md`](../research/2026-07-26-slice-j6-3-teleport-correlation.md).
|
||||||
The historical exact G4 visual rollback remains
|
The historical exact G4 visual rollback remains
|
||||||
`git revert ef1d263337997bb030eadb7b8e71d73dc659907a`.
|
`git revert ef1d263337997bb030eadb7b8e71d73dc659907a`.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,9 @@ and combat ownership closed at `cdee7a4b` after canonical action state
|
||||||
(`20df9d15`), local movement/outbound cadence (`aa3f4a60`), and per-session
|
(`20df9d15`), local movement/outbound cadence (`aa3f4a60`), and per-session
|
||||||
physics/remote simulation (`7e6033d0`), projectile simulation (`2aee3356`),
|
physics/remote simulation (`7e6033d0`), projectile simulation (`2aee3356`),
|
||||||
and the combined simulation ledger/Runtime-only closeout moved to Runtime.
|
and the combined simulation ledger/Runtime-only closeout moved to Runtime.
|
||||||
J6 world/portal/environment and projection-handshake ownership is active.
|
J6.1–J6.3 moved world environment, canonical reveal generation/readiness, and
|
||||||
|
exact F751/Position destination correlation into Runtime. J6.4 graphical-host
|
||||||
|
acknowledgement and owner cleanup 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.
|
||||||
|
|
@ -1281,8 +1283,13 @@ exact-binary lifecycle/reconnect gate, and canonical nine-stop route pass.
|
||||||
J5 movement/physics/interaction/combat ownership is complete at `cdee7a4b`.
|
J5 movement/physics/interaction/combat ownership is complete at `cdee7a4b`.
|
||||||
The Runtime-only simulation fixture, combined terminal ledger, 8,596-test /
|
The Runtime-only simulation fixture, combined terminal ledger, 8,596-test /
|
||||||
5-skip Release suite, exact-binary lifecycle/reconnect gate, and canonical
|
5-skip Release suite, exact-binary lifecycle/reconnect gate, and canonical
|
||||||
nine-stop route pass. J6 world/portal/environment and projection-handshake
|
nine-stop route pass. J6.1–J6.3 are complete at `6a063a27`: Runtime owns world
|
||||||
ownership is the current execution point.
|
environment, the reveal generation/readiness lifetime, wrap-safe
|
||||||
|
F751/Position correlation, and the exact generation/sequence/cell placement
|
||||||
|
handshake. Its 360 Runtime tests, 3,710 App tests / 3 skips, 8,631-test /
|
||||||
|
5-skip Release suite, and exact-binary lifecycle/reconnect gate pass. J6.4
|
||||||
|
graphical-host acknowledgement and owner cleanup 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
|
||||||
|
|
@ -1304,6 +1311,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-j6-3-teleport-correlation.md`](../research/2026-07-26-slice-j6-3-teleport-correlation.md)
|
||||||
|
and
|
||||||
[`../research/2026-07-26-slice-j5-7-simulation-ownership-closeout.md`](../research/2026-07-26-slice-j5-7-simulation-ownership-closeout.md)
|
[`../research/2026-07-26-slice-j5-7-simulation-ownership-closeout.md`](../research/2026-07-26-slice-j5-7-simulation-ownership-closeout.md)
|
||||||
and
|
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).
|
||||||
|
|
|
||||||
|
|
@ -354,13 +354,18 @@ graphical feel gates remain unchanged.
|
||||||
|
|
||||||
### J6 — world, portal, environment, and projection handshake
|
### J6 — world, portal, environment, and projection handshake
|
||||||
|
|
||||||
**J6.0–J6.2 complete; J6.3 active 2026-07-26.** The instance-scoped Runtime
|
**J6.0–J6.3 complete; J6.4 active 2026-07-26.** The instance-scoped Runtime
|
||||||
environment owner landed at `902076c0`. The canonical reveal generation and
|
environment owner landed at `902076c0`. The canonical reveal generation and
|
||||||
typed readiness owner landed at `a6860d55` plus `acb845d8`; App's duplicate
|
typed readiness owner landed at `a6860d55` plus `acb845d8`; App's duplicate
|
||||||
lifecycle owner is deleted and the exact connected lifecycle/reconnect gate
|
lifecycle owner is deleted and the exact connected lifecycle/reconnect gate
|
||||||
passes with zero reveal invariants. Detailed owner inventory, retail ordering,
|
passes with zero reveal invariants. Canonical F751/Position correlation and
|
||||||
host-acknowledgement contract, execution ledger, adversarial matrix, and
|
exact generation/sequence/cell placement handshake landed at `6a063a27`; the
|
||||||
current evidence:
|
App transit coordinator and accepted-destination mirror are deleted. Its
|
||||||
|
360 Runtime tests, 3,710 App tests / 3 skips, 8,631-test / 5-skip complete
|
||||||
|
Release suite, and exact-binary lifecycle/reconnect route pass. Evidence:
|
||||||
|
[`../research/2026-07-26-slice-j6-3-teleport-correlation.md`](../research/2026-07-26-slice-j6-3-teleport-correlation.md).
|
||||||
|
Detailed owner inventory, retail ordering, host-acknowledgement contract,
|
||||||
|
execution ledger, adversarial matrix, and current plan:
|
||||||
[`2026-07-26-modern-runtime-slice-j6.md`](2026-07-26-modern-runtime-slice-j6.md).
|
[`2026-07-26-modern-runtime-slice-j6.md`](2026-07-26-modern-runtime-slice-j6.md).
|
||||||
|
|
||||||
- Move authoritative teleport/session cell identity, world clock, weather
|
- Move authoritative teleport/session cell identity, world clock, weather
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Modern runtime Slice J6 — world, transit, and host handshake
|
# Modern runtime Slice J6 — world, transit, and host handshake
|
||||||
|
|
||||||
**Status:** J6.0–J6.2 COMPLETE; J6.3 ACTIVE
|
**Status:** J6.0–J6.3 COMPLETE; J6.4 ACTIVE
|
||||||
**Parent:** `2026-07-25-modern-runtime-slice-j.md`, J6
|
**Parent:** `2026-07-25-modern-runtime-slice-j.md`, J6
|
||||||
**Authorization:** the user approved Slices F–L, including gameplay-owner
|
**Authorization:** the user approved Slices F–L, including gameplay-owner
|
||||||
moves, on 2026-07-24
|
moves, on 2026-07-24
|
||||||
|
|
@ -258,6 +258,8 @@ world-edge warning. Evidence:
|
||||||
|
|
||||||
### J6.3 — canonical F751/Position transit and placement handshake
|
### J6.3 — canonical F751/Position transit and placement handshake
|
||||||
|
|
||||||
|
**Complete 2026-07-26 at `6a063a27`.**
|
||||||
|
|
||||||
- Move `TeleportTransitCoordinator` state into the Runtime transit owner.
|
- Move `TeleportTransitCoordinator` state into the Runtime transit owner.
|
||||||
- Convert accepted network destination data once into
|
- Convert accepted network destination data once into
|
||||||
`RuntimeTeleportDestination`.
|
`RuntimeTeleportDestination`.
|
||||||
|
|
@ -273,6 +275,21 @@ Gate: Position-before-F751, F751-before-Position, duplicate/stale/wrapped
|
||||||
sequence, superseding teleport, same-landblock, cross-landblock, dungeon,
|
sequence, superseding teleport, same-landblock, cross-landblock, dungeon,
|
||||||
mid-portal reset, and reconnect traces match.
|
mid-portal reset, and reconnect traces match.
|
||||||
|
|
||||||
|
`RuntimeWorldTransitState` now owns wrap-safe F751 history, pending/active
|
||||||
|
teleport sequence, both accepted packet orders, the exact destination, and
|
||||||
|
generation/sequence/cell placement and materialization validation. The former
|
||||||
|
App transit coordinator and accepted-destination mirror are deleted; App
|
||||||
|
retains only graphical portal and placement work.
|
||||||
|
|
||||||
|
Runtime tests pass 360/360, the focused App transit/reveal suite passes 34/34,
|
||||||
|
App tests pass 3,710/3 skips, and the complete Release suite passes 8,631/5
|
||||||
|
skips. Exact-binary report
|
||||||
|
`logs/connected-world-gate-20260726-175333/report.json` records six capped
|
||||||
|
checkpoints and one uncapped fresh-process reconnect, graceful code-zero exits,
|
||||||
|
zero failures, zero reveal invariant failures, and only the expected world-edge
|
||||||
|
warning. Evidence:
|
||||||
|
[`../research/2026-07-26-slice-j6-3-teleport-correlation.md`](../research/2026-07-26-slice-j6-3-teleport-correlation.md).
|
||||||
|
|
||||||
### J6.4 — projection acknowledgement and owner cleanup
|
### J6.4 — projection acknowledgement and owner cleanup
|
||||||
|
|
||||||
- Make App presentation registration/withdrawal use typed generation-scoped
|
- Make App presentation registration/withdrawal use typed generation-scoped
|
||||||
|
|
@ -352,6 +369,12 @@ git revert acb845d812574206da1693fb379fec8a6f175fcb
|
||||||
git revert a6860d5563ae845a2cbb916abacf2b4aee515cdb
|
git revert a6860d5563ae845a2cbb916abacf2b4aee515cdb
|
||||||
```
|
```
|
||||||
|
|
||||||
|
J6.3 exact rollback:
|
||||||
|
|
||||||
|
```text
|
||||||
|
git revert 6a063a27d4c805cd166d5a487afc290c34c400fd
|
||||||
|
```
|
||||||
|
|
||||||
Documentation-only research/plan commits are not behavior rollback points.
|
Documentation-only research/plan commits are not behavior rollback points.
|
||||||
No workaround, timer, forced-ready path, duplicated owner, or alternate
|
No workaround, timer, forced-ready path, duplicated owner, or alternate
|
||||||
headless behavior is permitted.
|
headless behavior is permitted.
|
||||||
|
|
|
||||||
88
docs/research/2026-07-26-slice-j6-3-teleport-correlation.md
Normal file
88
docs/research/2026-07-26-slice-j6-3-teleport-correlation.md
Normal file
|
|
@ -0,0 +1,88 @@
|
||||||
|
# Slice J6.3 — canonical teleport correlation
|
||||||
|
|
||||||
|
**Date:** 2026-07-26
|
||||||
|
**Production commit:** `6a063a27d4c805cd166d5a487afc290c34c400fd`
|
||||||
|
**Exact rollback:**
|
||||||
|
|
||||||
|
```text
|
||||||
|
git revert 6a063a27d4c805cd166d5a487afc290c34c400fd
|
||||||
|
```
|
||||||
|
|
||||||
|
## Outcome
|
||||||
|
|
||||||
|
`AcDream.Runtime.World.RuntimeWorldTransitState` now owns the complete
|
||||||
|
authoritative teleport-notification and accepted-destination lifetime:
|
||||||
|
|
||||||
|
- wrap-safe F751 freshness and last-notification history;
|
||||||
|
- the pending and active teleport sequence;
|
||||||
|
- Position-before-F751 buffering and F751-before-Position matching;
|
||||||
|
- the first accepted destination for one teleport generation;
|
||||||
|
- exact generation, sequence, and destination-cell placement validation;
|
||||||
|
- exact materialization acknowledgement; and
|
||||||
|
- cancellation and session-reset cleanup without generation reuse.
|
||||||
|
|
||||||
|
`RuntimeTeleportDestination` preserves the server GUID, all four relevant
|
||||||
|
retail sequence channels, and the complete Core `Position`, including its
|
||||||
|
cell-local frame. The App converts accepted network data once at the wire
|
||||||
|
boundary, after canonical Runtime physics has accepted and applied the
|
||||||
|
Position update.
|
||||||
|
|
||||||
|
The former App `TeleportTransitCoordinator<T>` and duplicate accepted-
|
||||||
|
destination state are deleted. `LocalPlayerTeleportController` now borrows
|
||||||
|
Runtime transit truth and owns only graphical portal activation, render-space
|
||||||
|
translation/recentering, destination placement callbacks, tunnel presentation,
|
||||||
|
and retained UI. Login reveal and portal reveal are separate typed operations,
|
||||||
|
so an ordinary login cannot accidentally satisfy a teleport sequence.
|
||||||
|
|
||||||
|
## Retail ordering
|
||||||
|
|
||||||
|
- `SmartBox::HandlePlayerTeleport @ 0x00452150`
|
||||||
|
- `SmartBox::TeleportPlayer @ 0x00453910`
|
||||||
|
- `SmartBox::UseTime @ 0x00455410`
|
||||||
|
|
||||||
|
Retail accepts an equal or wrap-safe-newer F751 sequence, clears the local
|
||||||
|
position-complete state, and waits for a corresponding accepted Position
|
||||||
|
without advancing the Position timestamp itself. ACE emits the F751 and
|
||||||
|
Position with the same teleport sequence but transport order is not assumed.
|
||||||
|
The Runtime owner therefore supports both packet orders while keeping
|
||||||
|
canonical physics acceptance independent.
|
||||||
|
|
||||||
|
The detailed translation is recorded in
|
||||||
|
[`2026-07-15-retail-portal-space-pseudocode.md`](2026-07-15-retail-portal-space-pseudocode.md).
|
||||||
|
|
||||||
|
## Automated evidence
|
||||||
|
|
||||||
|
- Runtime: 360 passed, including 28 focused transit-state tests.
|
||||||
|
- App focused transit/reveal suite: 34 passed.
|
||||||
|
- App: 3,710 passed / 3 skipped.
|
||||||
|
- Complete solution: 8,631 passed / 5 skipped.
|
||||||
|
- Release build: zero errors; 17 pre-existing test-project warnings tracked by
|
||||||
|
issue #228.
|
||||||
|
- Source/ownership guards: the App transit coordinator is absent, graphical
|
||||||
|
composition borrows the session Runtime transit owner, and no parallel
|
||||||
|
current-cell or accepted-destination authority remains.
|
||||||
|
- Adversarial fixtures: Position-before-F751, F751-before-Position,
|
||||||
|
duplicate/stale/wrapped sequences, supersession, exact placement and
|
||||||
|
materialization mismatch, mid-transit reset, reconnect, generation reuse,
|
||||||
|
and two-instance isolation.
|
||||||
|
|
||||||
|
## Connected evidence
|
||||||
|
|
||||||
|
Accepted report:
|
||||||
|
`logs/connected-world-gate-20260726-175333/report.json`
|
||||||
|
|
||||||
|
The report records exact source and embedded binary commit
|
||||||
|
`6a063a27d4c805cd166d5a487afc290c34c400fd`.
|
||||||
|
|
||||||
|
- Capped process: 244.427 seconds, six checkpoints, graceful code-zero exit.
|
||||||
|
- Uncapped fresh-process reconnect: 61.414 seconds, one checkpoint, graceful
|
||||||
|
code-zero exit.
|
||||||
|
- Route: fresh login, Aerlinthe, Rynthid world edge, Facility Hub dungeon,
|
||||||
|
Holtburg, Aerlinthe revisit, then fresh-process reconnect.
|
||||||
|
- Failures: zero.
|
||||||
|
- Reveal invariant failures: zero.
|
||||||
|
- Expected warning: 25 instrumented world-edge landblock misses.
|
||||||
|
|
||||||
|
No new retail divergence was introduced. The two-order buffer contains only
|
||||||
|
immutable destination data that canonical Runtime physics already accepted; it
|
||||||
|
is correlation state, not a second physics or position authority.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue