acdream/docs/research/2026-07-25-slice-j1-runtime-contract-closeout.md
Erik ecc4816c5a docs(runtime): pin J2 session lifetime migration
Define the exact Runtime/App ownership boundary, lifecycle ordering, teardown suffix, no-window gate, and deletion criteria before moving transport ownership.
2026-07-25 19:18:58 +02:00

69 lines
2.3 KiB
Markdown

# Modern runtime Slice J1 closeout
## Result
Slice J1 is complete at production commit
`854d9e9cd13092bd5aaa3cf025d73eeb4600e9f8`.
`AcDream.Runtime` now defines the presentation-independent seams required
before ownership moves:
- borrowed immutable entity, inventory, chat, movement, and portal views;
- generation-gated typed session, selection, combat, movement, chat, and
portal commands;
- ordered typed deltas and normalized parity traces;
- an instance-scoped frame/simulation clock;
- lifecycle snapshots, generation tokens, and retryable teardown
acknowledgements.
The App implementation is deliberately an adapter over current canonical
owners. It does not copy mutable collections, add a command queue, own a
second GUID map, or add a frame of input latency. Startup and press-time input
reach the same session, selection, movement, and combat owners synchronously.
No gameplay owner moved in J1.
## Automated acceptance
At the production commit:
- Runtime contract tests: 13 passed;
- App tests: 3,838 passed / 3 skipped;
- complete Release solution: 8,424 passed / 5 skipped;
- Release solution build: pass.
The tests cover clock normalization/freeze and instance isolation, generation
and teardown semantics, event-sequencer isolation, trace normalization,
connected start through the adapter, borrowed live entity/inventory/chat/
portal views, same-owner command mutation, ordered domain traces, stale
generation rejection, and complete stop acknowledgement.
## Connected lifecycle acceptance
Raw evidence:
`logs/connected-world-gate-20260725-190953/report.json`.
Result: PASS on the exact production commit.
- Capped process: login plus Aerlinthe, Rynthid, Facility Hub, Holtburg after
dungeon, and Aerlinthe revisit all completed.
- Fresh uncapped process: reconnect completed.
- Seven of seven checkpoints passed.
- Both processes exited gracefully with exit code zero.
- No gate failure was recorded.
- The only warning was 25 expected world-edge landblock misses.
This connected run proves that routing the startup command through the J1 seam
did not alter live connection, world traversal, replacement, or shutdown
behavior.
## Exact rollback
```text
git revert 854d9e9cd13092bd5aaa3cf025d73eeb4600e9f8
```
J0 remains independently reversible with:
```text
git revert b632672e5ccabfb44c551e08f1c411ab2669c44a
```