docs(runtime): close J2 session lifetime gate

Record the canonical Runtime session/transport cutover, exact rollback, full Release evidence, and exact-binary lifecycle acceptance. Advance the active execution pointer and durable memory to J3 identity and object ownership.

Validated by the existing 79 Runtime tests, 3,776 App tests with three skips, 8,428 complete Release tests with five skips, and logs/connected-world-gate-20260725-193936/report.json.

Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-25 19:46:47 +02:00
parent 7593078774
commit 9496c01be1
10 changed files with 161 additions and 24 deletions

View file

@ -0,0 +1,69 @@
# Modern runtime Slice J2 closeout
## Result
Slice J2 is complete at production commit
`75930787741db40a83eab8663e4464dce8d687ba`.
The one canonical `WorldSession` generation and its connect, EnterWorld, tick,
replacement, and retryable stop transaction now live in `AcDream.Runtime`.
Runtime also owns the complete ordered inbound subscription set and exact
teardown acknowledgement stages. The superseded App controller, lifecycle
host, event router, and subscription owner were deleted.
App remains the graphical host. It converts `RuntimeOptions` into immutable
Runtime connection options, supplies graphical/domain lifecycle callbacks, and
projects one borrowed `ICommandBus` route for retained UI. That bridge stores
no generation, transport, or in-world state; only one route can be active, and
the old route becomes inert before inbound callbacks detach.
No AC wire behavior, pixels, input timing, or retail algorithm changed.
## Automated acceptance
At the production commit:
- Runtime tests: 79 passed;
- App tests: 3,776 passed / 3 skipped;
- complete Release solution: 8,428 passed / 5 skipped;
- Release solution build: pass.
Coverage includes bind-before-connect and activate-after-EnterWorld ordering,
stale generation rejection, malformed and reentrant lifecycle paths,
construction rollback, exact retryable teardown suffixes, one-active-route
graphical projection, stale-route inertness, and a Runtime-only
connect/disconnect graph that loads no App, UI, Silk.NET, OpenAL, Arch, or
ImGui assembly.
## Connected lifecycle acceptance
Raw evidence:
`logs/connected-world-gate-20260725-193936/report.json`.
Result: PASS on the exact production commit.
- Capped process: login, Aerlinthe, Rynthid, Facility Hub, Holtburg after the
dungeon, and Aerlinthe revisit all completed.
- Fresh uncapped process: reconnect completed.
- Seven of seven checkpoints passed.
- Both processes exited gracefully with exit code zero.
- Every checkpoint reported zero render-shadow mismatches and zero pending
render deltas.
- No gate failure was recorded.
- The only warning was 25 expected world-edge landblock misses.
This proves that moving session/transport lifetime and inbound route ownership
out of App preserved live connection, packet routing, world traversal,
replacement, and graceful shutdown on the exact binary.
## Exact rollback
```text
git revert 75930787741db40a83eab8663e4464dce8d687ba
```
J1 remains independently reversible with:
```text
git revert 854d9e9cd13092bd5aaa3cf025d73eeb4600e9f8
```