3.8 KiB
Slice J6.2 — canonical reveal-generation ownership
Date: 2026-07-26
Production commits: a6860d5563ae845a2cbb916abacf2b4aee515cdb,
acb845d812574206da1693fb379fec8a6f175fcb
Exact rollback, newest first:
git revert acb845d812574206da1693fb379fec8a6f175fcb
git revert a6860d5563ae845a2cbb916abacf2b4aee515cdb
Outcome
AcDream.Runtime.World.RuntimeWorldTransitState now owns one canonical
login/portal reveal lifetime:
- monotonically increasing generation and exact destination cell;
- typed destination-readiness acknowledgement and atomic accepted latch;
- materialization and world-simulation availability;
- normal-world viewport observation;
- completion, cancellation, and session reset;
- the retail five-second wait cue;
- portal materialization count and invariant diagnostics.
WorldRevealLifecycleTelemetry and its App snapshot were deleted. App's
WorldRevealCoordinator now reports graphical readiness and performs
streaming/render-resource, selection, audio, and viewport side effects over
the same Runtime owner. WorldGenerationAvailabilityState is a read-only
projection and CurrentGameRuntimeViewAdapter borrows the Runtime portal view
directly instead of reconstructing it.
Runtime rejects stale generations, wrong destination cells, invalid indoor/radius shapes, early materialization, early viewport reveal, premature completion, and post-cancel work. Accepted readiness is sticky: graphical readiness is a sampled host fact and may legitimately fall after Runtime has accepted the atomic destination edge.
Retail ordering
SmartBox::TeleportPlayer @ 0x00453910SmartBox::UseTime @ 0x00455410gmSmartBoxUI::EndTeleportAnimation @ 0x004D65A0
The Runtime transition preserves retail's ordering: destination materialization resumes world simulation while portal space still covers the world; the normal viewport is observed later; completion follows the authored WorldFadeIn/LoginComplete tail. No timeout or forced reveal was introduced.
Automated evidence
- Runtime: 349 passed.
- App: 3,716 passed / 3 skipped.
- Complete solution: 8,626 passed / 5 skipped.
- Release build: zero errors; 17 pre-existing test-project warnings tracked by issue #228.
- Ownership/source guards: one production Runtime transit construction, no App lifecycle owner, no reconstructed portal view.
- Adversarial fixtures: wrong/stale generation, wrong destination, malformed readiness, reordered edges, duplicate acknowledgement, post-ready sampling, supersession, cancellation, session reset, generation reuse, two-instance isolation, unhydratable destination, and throwing diagnostics.
One cold parallel full-suite run tripped the existing
PortalProjectionTests.ProjectToClipLease_ReusesPooledWorkWithoutResultArrays
allocation threshold by 2,008 bytes. The test passed immediately in isolation
and the complete suite then passed unchanged.
Connected evidence
Accepted report:
logs/connected-world-gate-20260726-171724/report.json
The report records exact source and embedded binary commit
acb845d812574206da1693fb379fec8a6f175fcb.
- Capped process: 243.942 seconds, six checkpoints, graceful code-zero exit.
- Uncapped fresh-process reconnect: 61.625 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.
The earlier report
logs/connected-world-gate-20260726-171020/report.json is deliberately
rejected. It proved that graphical readiness may fall after accepted
materialization and exposed an incorrect diagnostic classification in
a6860d55; acb845d8 keeps the accepted latch but treats later sampled
readiness as non-authoritative.
No new retail divergence was introduced.