docs(runtime): record reveal ownership gate
This commit is contained in:
parent
acb845d812
commit
38b3773cb9
9 changed files with 191 additions and 25 deletions
93
docs/research/2026-07-26-slice-j6-2-reveal-ownership.md
Normal file
93
docs/research/2026-07-26-slice-j6-2-reveal-ownership.md
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
# Slice J6.2 — canonical reveal-generation ownership
|
||||
|
||||
**Date:** 2026-07-26
|
||||
**Production commits:** `a6860d5563ae845a2cbb916abacf2b4aee515cdb`,
|
||||
`acb845d812574206da1693fb379fec8a6f175fcb`
|
||||
**Exact rollback, newest first:**
|
||||
|
||||
```text
|
||||
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 @ 0x00453910`
|
||||
- `SmartBox::UseTime @ 0x00455410`
|
||||
- `gmSmartBoxUI::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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue