docs(runtime): close communication ownership
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>
This commit is contained in:
parent
c9d25ade50
commit
595d5e6b01
9 changed files with 169 additions and 14 deletions
88
docs/research/2026-07-26-slice-j4-1-communication-state.md
Normal file
88
docs/research/2026-07-26-slice-j4-1-communication-state.md
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
# 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
|
||||
|
||||
```text
|
||||
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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue