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

2.3 KiB

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

git revert 854d9e9cd13092bd5aaa3cf025d73eeb4600e9f8

J0 remains independently reversible with:

git revert b632672e5ccabfb44c551e08f1c411ab2669c44a