3.8 KiB
Slice J6.3 — canonical teleport correlation
Date: 2026-07-26
Production commit: 6a063a27d4c805cd166d5a487afc290c34c400fd
Exact rollback:
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 @ 0x00452150SmartBox::TeleportPlayer @ 0x00453910SmartBox::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.
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.