Record J4.1's single Runtime communication/social graph, failure-safe ordered chat stream, complete Release evidence, exact-binary lifecycle/reconnect acceptance, rollback, and the J4.2 inventory transaction boundary. Synchronize architecture, roadmap, milestones, agent guidance, and durable memory. Co-authored-by: Codex <codex@openai.com>
3.7 KiB
Modern runtime J4.1 — communication/social ownership
Status: COMPLETE
Production commit: c9d25ade50c0a5c4f7db5b6cca680e01e35cc18e
Parent plan: ../plans/2026-07-26-modern-runtime-slice-j4.md
Result
RuntimeCommunicationState is the single presentation-independent owner for
the live chat transcript, reply/retell command targets, negotiated Turbine
rooms and context cookies, friends, and squelch database.
The live-session router, client commands, retained retail UI, developer tools,
current-runtime/plugin boundary, and future no-window hosts borrow those exact
instances. GameWindow retains read-only compatibility aliases only; it no
longer constructs a communication or social state object.
Reply/retell tracking moved out of ChatVM. A ViewModel may construct a
private tracker for isolated UI tests, while production ViewModels borrow the
Runtime tracker. Disposing one borrowed ViewModel cannot detach or reset the
shared command state.
The Runtime chat stream subscribes once to the canonical ChatLog, assigns a
monotonic commit sequence, and dispatches synchronously. Its retained in-call
drain prevents a re-entrant callback from delivering a later entry to one
observer before an earlier entry. Observer exceptions are recorded and do not
starve later observers or roll back the committed transcript. No async queue,
polling mirror, or extra frame was introduced.
Session reset preserves visible transcript history while independently clearing reply/retell targets, local speaker identity and dedupe state, negotiated rooms/cookie sequence, friends, and squelch state in the existing retail-derived reset order.
Automated evidence
- Runtime suite: 152 passed.
- App suite: 3,765 passed / 3 established skips.
- UI abstractions: 545 passed.
- Core: 3,294 passed / 2 established skips.
- Core.Net: 600 passed.
- Complete Release solution: 8,494 passed / 5 established skips.
- Release build: pass, zero errors. A clean rebuild reports 17 pre-existing Core-test warnings; the J4.1 diff introduces none.
git diff --check: pass.
The focused matrix covers incoming/outgoing tells, shared ViewModel borrowing, reset without transcript loss, duplicate subscription rejection, callback re-entrancy, observer failure isolation, direct/idempotent disposal, two independent Runtime instances, current-runtime event forwarding, UI composition, and shutdown ordering.
Exact-binary connected evidence
logs/connected-world-gate-20260726-075109/report.json passed on exact source
and embedded binary commit
c9d25ade50c0a5c4f7db5b6cca680e01e35cc18e:
- six capped checkpoints through login, outdoor/dungeon/facility travel and revisit plus one fresh-process uncapped reconnect checkpoint;
- 245.687-second capped route and 61.638-second reconnect route;
- both sessions exited gracefully with code zero;
- zero failures, render-shadow mismatches, pending render deltas, or stranded owner work.
Its only warning is the established set of 25 expected world-edge landblock misses.
Retail and divergence audit
J4.1 changes ownership, observation, and teardown only. Existing retail-derived chat parsing, formatting, channel cookies, friend updates, squelch rules, and session-reset semantics are unchanged. No divergence row was added or retired.
Rollback
git revert c9d25ade50c0a5c4f7db5b6cca680e01e35cc18e
Do not revert J3 to mask a later gameplay-state ownership failure.
Next boundary
J4.2 moves the external-container, item-mana, shortcut/component, shared busy,
and one-inventory-request-at-a-time owners into Runtime while borrowing J3's
exact ClientObjectTable. Retained drag/drop projections, icons, cursors,
selection, and panel state stay in App/UI.