docs(runtime): record teleport correlation gate
This commit is contained in:
parent
6a063a27d4
commit
73d0b54e38
10 changed files with 188 additions and 25 deletions
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