From 73d0b54e381e82f9b098014d289c3661661e005e Mon Sep 17 00:00:00 2001 From: Erik Date: Sun, 26 Jul 2026 18:04:50 +0200 Subject: [PATCH] docs(runtime): record teleport correlation gate --- AGENTS.md | 14 ++- CLAUDE.md | 14 ++- docs/architecture/acdream-architecture.md | 19 ++-- docs/architecture/code-structure.md | 4 +- docs/plans/2026-04-11-roadmap.md | 11 ++- docs/plans/2026-05-12-milestones.md | 10 ++- .../2026-07-24-modern-runtime-architecture.md | 15 +++- .../2026-07-25-modern-runtime-slice-j.md | 13 ++- .../2026-07-26-modern-runtime-slice-j6.md | 25 +++++- ...6-07-26-slice-j6-3-teleport-correlation.md | 88 +++++++++++++++++++ 10 files changed, 188 insertions(+), 25 deletions(-) create mode 100644 docs/research/2026-07-26-slice-j6-3-teleport-correlation.md diff --git a/AGENTS.md b/AGENTS.md index 1ea80a71..870ce681 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -330,7 +330,13 @@ destination/readiness latch, materialization/simulation edge, viewport, 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 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 `git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`. J1's rollback is @@ -377,6 +383,8 @@ J6.1's rollback is J6.2's rollback is, newest first, `git revert acb845d812574206da1693fb379fec8a6f175fcb` then `git revert a6860d5563ae845a2cbb916abacf2b4aee515cdb`. +J6.3's rollback is +`git revert 6a063a27d4c805cd166d5a487afc290c34c400fd`. Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate 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 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 is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or the portal-warmup corrections. Evidence: diff --git a/CLAUDE.md b/CLAUDE.md index f1eb30f7..76b22fd5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -328,7 +328,13 @@ destination/readiness latch, materialization/simulation edge, viewport, 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 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 `git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`. J1's rollback is @@ -375,6 +381,8 @@ J6.1's rollback is J6.2's rollback is, newest first, `git revert acb845d812574206da1693fb379fec8a6f175fcb` then `git revert a6860d5563ae845a2cbb916abacf2b4aee515cdb`. +J6.3's rollback is +`git revert 6a063a27d4c805cd166d5a487afc290c34c400fd`. Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate 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 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 is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or the portal-warmup corrections. Evidence: diff --git a/docs/architecture/acdream-architecture.md b/docs/architecture/acdream-architecture.md index 69a7a799..2ba6ffb9 100644 --- a/docs/architecture/acdream-architecture.md +++ b/docs/architecture/acdream-architecture.md @@ -241,7 +241,7 @@ src/ World/ RuntimeWorldEnvironmentState.cs -> canonical calendar/time/weather 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 -> 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, streaming priority, sequencer edges, projection override, and portal scene together, preventing transition state from crossing destination or session -lifetimes. `TeleportTransitCoordinator` correlates each fresh F751 sequence -with exactly one accepted `UpdatePosition`. Because the Position can arrive on -either side of F751, a pre-notification packet is buffered only when it advances -retail's `TELEPORT_TS`; after notification, the first accepted matching packet -is consumed even if that timestamp already advanced. Duplicate/older F751 -notifications are rejected with wrap-safe ordering. Canonical physics remains +lifetimes. Runtime's instance-scoped `RuntimeWorldTransitState` correlates each +fresh F751 sequence with exactly one accepted `UpdatePosition` and owns the +pending/active sequence plus exact destination lifetime. Because Position can +arrive on either side of F751, a pre-notification packet is buffered only when +it advances retail's `TELEPORT_TS`; after notification, the first accepted +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 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 diff --git a/docs/architecture/code-structure.md b/docs/architecture/code-structure.md index 42c17d98..4bd4c9f9 100644 --- a/docs/architecture/code-structure.md +++ b/docs/architecture/code-structure.md @@ -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. | | 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`). | -| 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. | | 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`). | | 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`). | | 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 diff --git a/docs/plans/2026-04-11-roadmap.md b/docs/plans/2026-04-11-roadmap.md index 916c7ba5..ed454cd6 100644 --- a/docs/plans/2026-04-11-roadmap.md +++ b/docs/plans/2026-04-11-roadmap.md @@ -1,6 +1,6 @@ # 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. --- @@ -1786,8 +1786,13 @@ port in any phase — no separate listing here. > simulation-availability, viewport, completion, cancellation, and wait-cue > 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 -> zero reveal invariants. J6.3 teleport packet/destination correlation is -> active. +> zero reveal invariants. J6.3 completed at `6a063a27`: Runtime owns wrap-safe +> 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 > rollback remains > `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. Slice H is complete: diff --git a/docs/plans/2026-05-12-milestones.md b/docs/plans/2026-05-12-milestones.md index 620a379b..f415eef6 100644 --- a/docs/plans/2026-05-12-milestones.md +++ b/docs/plans/2026-05-12-milestones.md @@ -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 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 - 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). Slice-I closeout evidence is [`../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). 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). +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 `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. diff --git a/docs/plans/2026-07-24-modern-runtime-architecture.md b/docs/plans/2026-07-24-modern-runtime-architecture.md index 727a6975..6888ea27 100644 --- a/docs/plans/2026-07-24-modern-runtime-architecture.md +++ b/docs/plans/2026-07-24-modern-runtime-architecture.md @@ -21,7 +21,9 @@ and combat ownership closed at `cdee7a4b` after canonical action state (`20df9d15`), local movement/outbound cadence (`aa3f4a60`), and per-session physics/remote simulation (`7e6033d0`), projectile simulation (`2aee3356`), 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 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`. 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. +nine-stop route pass. J6.1–J6.3 are complete at `6a063a27`: Runtime owns world +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: [`../research/2026-07-25-slice-g5-production-profile.md`](../research/2026-07-25-slice-g5-production-profile.md) and @@ -1304,6 +1311,8 @@ and and [`../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-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) and [`2026-07-25-modern-runtime-slice-j.md`](2026-07-25-modern-runtime-slice-j.md). diff --git a/docs/plans/2026-07-25-modern-runtime-slice-j.md b/docs/plans/2026-07-25-modern-runtime-slice-j.md index 6568e149..9231fc5e 100644 --- a/docs/plans/2026-07-25-modern-runtime-slice-j.md +++ b/docs/plans/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.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 typed readiness owner landed at `a6860d55` plus `acb845d8`; App's duplicate lifecycle owner is deleted and the exact connected lifecycle/reconnect gate -passes with zero reveal invariants. Detailed owner inventory, retail ordering, -host-acknowledgement contract, execution ledger, adversarial matrix, and -current evidence: +passes with zero reveal invariants. Canonical F751/Position correlation and +exact generation/sequence/cell placement handshake landed at `6a063a27`; the +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). - Move authoritative teleport/session cell identity, world clock, weather diff --git a/docs/plans/2026-07-26-modern-runtime-slice-j6.md b/docs/plans/2026-07-26-modern-runtime-slice-j6.md index be282744..e457a81b 100644 --- a/docs/plans/2026-07-26-modern-runtime-slice-j6.md +++ b/docs/plans/2026-07-26-modern-runtime-slice-j6.md @@ -1,6 +1,6 @@ # 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 **Authorization:** the user approved Slices F–L, including gameplay-owner moves, on 2026-07-24 @@ -258,6 +258,8 @@ world-edge warning. Evidence: ### J6.3 — canonical F751/Position transit and placement handshake +**Complete 2026-07-26 at `6a063a27`.** + - Move `TeleportTransitCoordinator` state into the Runtime transit owner. - Convert accepted network destination data once into `RuntimeTeleportDestination`. @@ -273,6 +275,21 @@ Gate: Position-before-F751, F751-before-Position, duplicate/stale/wrapped sequence, superseding teleport, same-landblock, cross-landblock, dungeon, 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 - Make App presentation registration/withdrawal use typed generation-scoped @@ -352,6 +369,12 @@ git revert acb845d812574206da1693fb379fec8a6f175fcb git revert a6860d5563ae845a2cbb916abacf2b4aee515cdb ``` +J6.3 exact rollback: + +```text +git revert 6a063a27d4c805cd166d5a487afc290c34c400fd +``` + Documentation-only research/plan commits are not behavior rollback points. No workaround, timer, forced-ready path, duplicated owner, or alternate headless behavior is permitted. diff --git a/docs/research/2026-07-26-slice-j6-3-teleport-correlation.md b/docs/research/2026-07-26-slice-j6-3-teleport-correlation.md new file mode 100644 index 00000000..ee7e1fa2 --- /dev/null +++ b/docs/research/2026-07-26-slice-j6-3-teleport-correlation.md @@ -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` 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.