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
13
AGENTS.md
13
AGENTS.md
|
|
@ -239,7 +239,13 @@ disposal converge the complete ownership ledger to zero. Runtime tests pass
|
||||||
146/146, App tests pass 3,765/3 skips, the complete Release suite passes
|
146/146, App tests pass 3,765/3 skips, the complete Release suite passes
|
||||||
8,484/5 skips, and both the exact lifecycle/reconnect and canonical nine-stop
|
8,484/5 skips, and both the exact lifecycle/reconnect and canonical nine-stop
|
||||||
routes pass with graceful zero-code exits and no failures. J3 is closed; J4
|
routes pass with graceful zero-code exits and no failures. J3 is closed; J4
|
||||||
gameplay-state lifetime groups are active. J0's rollback is
|
gameplay-state lifetime groups are active. J4.1 is complete at `c9d25ade`:
|
||||||
|
`RuntimeCommunicationState` owns the exact chat transcript, reply/retell
|
||||||
|
targets, negotiated rooms, friends, and squelch state; graphical and no-window
|
||||||
|
consumers borrow them. Runtime tests pass 152/152, App tests pass 3,765/3
|
||||||
|
skips, the complete Release suite passes 8,494/5 skips, and the exact-binary
|
||||||
|
seven-checkpoint lifecycle/reconnect gate passes with graceful exits and zero
|
||||||
|
failures. J4.2 inventory transaction ownership is active. J0's rollback is
|
||||||
`git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`.
|
`git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`.
|
||||||
J1's rollback is
|
J1's rollback is
|
||||||
`git revert 854d9e9cd13092bd5aaa3cf025d73eeb4600e9f8`.
|
`git revert 854d9e9cd13092bd5aaa3cf025d73eeb4600e9f8`.
|
||||||
|
|
@ -256,13 +262,16 @@ J3.5's rollback is
|
||||||
`git revert ce3ac310d92722ffb637e81cb1957458874dd220`.
|
`git revert ce3ac310d92722ffb637e81cb1957458874dd220`.
|
||||||
J3.6's rollback is
|
J3.6's rollback is
|
||||||
`git revert 119b7c115107245546180b2f5cb3cb44c7d5476a`.
|
`git revert 119b7c115107245546180b2f5cb3cb44c7d5476a`.
|
||||||
|
J4.1's rollback is
|
||||||
|
`git revert c9d25ade50c0a5c4f7db5b6cca680e01e35cc18e`.
|
||||||
Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network
|
Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network
|
||||||
work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate
|
work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate
|
||||||
passes. Slice I is closed in
|
passes. Slice I is closed in
|
||||||
`docs/plans/2026-07-25-modern-runtime-slice-i.md`; the coherent Slice J campaign
|
`docs/plans/2026-07-25-modern-runtime-slice-i.md`; the coherent Slice J campaign
|
||||||
executes from `docs/plans/2026-07-25-modern-runtime-slice-j.md`; J3.6 closeout
|
executes from `docs/plans/2026-07-25-modern-runtime-slice-j.md`; J3.6 closeout
|
||||||
is `docs/research/2026-07-26-slice-j3-6-lifetime-closeout.md`; J4 executes from
|
is `docs/research/2026-07-26-slice-j3-6-lifetime-closeout.md`; J4 executes from
|
||||||
`docs/plans/2026-07-26-modern-runtime-slice-j4.md`. The exact G4
|
`docs/plans/2026-07-26-modern-runtime-slice-j4.md`; J4.1 closeout is
|
||||||
|
`docs/research/2026-07-26-slice-j4-1-communication-state.md`. The exact G4
|
||||||
visual rollback
|
visual rollback
|
||||||
is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or
|
is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or
|
||||||
the portal-warmup corrections. Evidence:
|
the portal-warmup corrections. Evidence:
|
||||||
|
|
|
||||||
13
CLAUDE.md
13
CLAUDE.md
|
|
@ -237,7 +237,13 @@ disposal converge the complete ownership ledger to zero. Runtime tests pass
|
||||||
146/146, App tests pass 3,765/3 skips, the complete Release suite passes
|
146/146, App tests pass 3,765/3 skips, the complete Release suite passes
|
||||||
8,484/5 skips, and both the exact lifecycle/reconnect and canonical nine-stop
|
8,484/5 skips, and both the exact lifecycle/reconnect and canonical nine-stop
|
||||||
routes pass with graceful zero-code exits and no failures. J3 is closed; J4
|
routes pass with graceful zero-code exits and no failures. J3 is closed; J4
|
||||||
gameplay-state lifetime groups are active. J0's rollback is
|
gameplay-state lifetime groups are active. J4.1 is complete at `c9d25ade`:
|
||||||
|
`RuntimeCommunicationState` owns the exact chat transcript, reply/retell
|
||||||
|
targets, negotiated rooms, friends, and squelch state; graphical and no-window
|
||||||
|
consumers borrow them. Runtime tests pass 152/152, App tests pass 3,765/3
|
||||||
|
skips, the complete Release suite passes 8,494/5 skips, and the exact-binary
|
||||||
|
seven-checkpoint lifecycle/reconnect gate passes with graceful exits and zero
|
||||||
|
failures. J4.2 inventory transaction ownership is active. J0's rollback is
|
||||||
`git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`.
|
`git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`.
|
||||||
J1's rollback is
|
J1's rollback is
|
||||||
`git revert 854d9e9cd13092bd5aaa3cf025d73eeb4600e9f8`.
|
`git revert 854d9e9cd13092bd5aaa3cf025d73eeb4600e9f8`.
|
||||||
|
|
@ -254,13 +260,16 @@ J3.5's rollback is
|
||||||
`git revert ce3ac310d92722ffb637e81cb1957458874dd220`.
|
`git revert ce3ac310d92722ffb637e81cb1957458874dd220`.
|
||||||
J3.6's rollback is
|
J3.6's rollback is
|
||||||
`git revert 119b7c115107245546180b2f5cb3cb44c7d5476a`.
|
`git revert 119b7c115107245546180b2f5cb3cb44c7d5476a`.
|
||||||
|
J4.1's rollback is
|
||||||
|
`git revert c9d25ade50c0a5c4f7db5b6cca680e01e35cc18e`.
|
||||||
Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network
|
Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network
|
||||||
work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate
|
work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate
|
||||||
passes. Slice I is closed in
|
passes. Slice I is closed in
|
||||||
`docs/plans/2026-07-25-modern-runtime-slice-i.md`; the coherent Slice J campaign
|
`docs/plans/2026-07-25-modern-runtime-slice-i.md`; the coherent Slice J campaign
|
||||||
executes from `docs/plans/2026-07-25-modern-runtime-slice-j.md`; J3.6 closeout
|
executes from `docs/plans/2026-07-25-modern-runtime-slice-j.md`; J3.6 closeout
|
||||||
is `docs/research/2026-07-26-slice-j3-6-lifetime-closeout.md`; J4 executes from
|
is `docs/research/2026-07-26-slice-j3-6-lifetime-closeout.md`; J4 executes from
|
||||||
`docs/plans/2026-07-26-modern-runtime-slice-j4.md`. The exact G4
|
`docs/plans/2026-07-26-modern-runtime-slice-j4.md`; J4.1 closeout is
|
||||||
|
`docs/research/2026-07-26-slice-j4-1-communication-state.md`. The exact G4
|
||||||
visual rollback
|
visual rollback
|
||||||
is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or
|
is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or
|
||||||
the portal-warmup corrections. Evidence:
|
the portal-warmup corrections. Evidence:
|
||||||
|
|
|
||||||
|
|
@ -217,7 +217,9 @@ src/
|
||||||
RuntimeEntityObjectViews.cs -> direct allocation-free borrowed views
|
RuntimeEntityObjectViews.cs -> direct allocation-free borrowed views
|
||||||
InboundPhysicsStateController.cs -> retail timestamp/snapshot authority
|
InboundPhysicsStateController.cs -> retail timestamp/snapshot authority
|
||||||
ParentAttachmentState.cs -> generation-exact parent relations
|
ParentAttachmentState.cs -> generation-exact parent relations
|
||||||
-> J3 complete; J4 gameplay-state lifetime groups active
|
Gameplay/
|
||||||
|
RuntimeCommunicationState.cs -> one chat/social owner + ordered stream
|
||||||
|
-> J3 and J4.1 complete; J4.2 inventory transaction ownership active
|
||||||
-> may reference Core, Core.Net, Content, and Plugin.Abstractions only
|
-> may reference Core, Core.Net, Content, and Plugin.Abstractions only
|
||||||
-> must never reference App, UI, Silk.NET, OpenAL, Arch, or ImGui
|
-> must never reference App, UI, Silk.NET, OpenAL, Arch, or ImGui
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# acdream — strategic roadmap
|
# acdream — strategic roadmap
|
||||||
|
|
||||||
**Status:** Living document. Updated 2026-07-26. **M3 landed; M4 is active.** M3's retail casting/UI, R6 locomotion/collision/projectile/teleport/radar rebaseline, deterministic fresh-login/portal world lifecycle, and final two-client portal observer flow are user-gated. All eight slices of the behavior-preserving ownership campaign in [`docs/architecture/code-structure.md`](../architecture/code-structure.md), their automated closeout, and the user's connected visual matrix are complete. Modern Runtime J3's canonical entity/object lifetime is also closed; J4 gameplay-state lifetime groups are active. Issue #225's lifestone/particle alpha comparison remains a separate rendering visual gate.
|
**Status:** Living document. Updated 2026-07-26. **M3 landed; M4 is active.** M3's retail casting/UI, R6 locomotion/collision/projectile/teleport/radar rebaseline, deterministic fresh-login/portal world lifecycle, and final two-client portal observer flow are user-gated. All eight slices of the behavior-preserving ownership campaign in [`docs/architecture/code-structure.md`](../architecture/code-structure.md), their automated closeout, and the user's connected visual matrix are complete. Modern Runtime J3's canonical entity/object lifetime and J4.1 communication/social ownership are closed; J4.2 inventory transaction ownership is active. Issue #225's lifestone/particle alpha comparison remains a separate rendering visual gate.
|
||||||
**Purpose:** One source of truth for where the project is and where it's going. Every observed defect or missing feature has a named phase that owns it; when something looks wrong in-game, look here to find the phase that'll address it. Implementation details live in per-phase specs under `docs/superpowers/specs/`, not in this file.
|
**Purpose:** One source of truth for where the project is and where it's going. Every observed defect or missing feature has a named phase that owns it; when something looks wrong in-game, look here to find the phase that'll address it. Implementation details live in per-phase specs under `docs/superpowers/specs/`, not in this file.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
@ -1710,8 +1710,13 @@ port in any phase — no separate listing here.
|
||||||
> every incomplete teardown suffix, and converges the complete reset/disposal
|
> every incomplete teardown suffix, and converges the complete reset/disposal
|
||||||
> ledger to zero. Its 146 Runtime tests, 3,765 App tests / 3 skips, 8,484-test
|
> ledger to zero. Its 146 Runtime tests, 3,765 App tests / 3 skips, 8,484-test
|
||||||
> / 5-skip complete Release suite, exact lifecycle/reconnect gate, and
|
> / 5-skip complete Release suite, exact lifecycle/reconnect gate, and
|
||||||
> canonical nine-stop route pass. J4 gameplay-state lifetime groups are
|
> canonical nine-stop route pass. J4.1 is complete at `c9d25ade`: Runtime
|
||||||
> active.
|
> constructs and owns the exact chat transcript, reply/retell targets,
|
||||||
|
> negotiated rooms, friends, and squelch state; every graphical and no-window
|
||||||
|
> consumer borrows them. Its 152 Runtime tests, 3,765 App tests / 3 skips,
|
||||||
|
> 8,494-test / 5-skip complete Release suite, and exact-binary
|
||||||
|
> seven-checkpoint lifecycle/reconnect gate pass. J4.2 inventory transaction
|
||||||
|
> ownership is active.
|
||||||
> The historical exact cutover
|
> The historical exact cutover
|
||||||
> rollback remains
|
> rollback remains
|
||||||
> `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. Slice H is complete:
|
> `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. Slice H is complete:
|
||||||
|
|
|
||||||
|
|
@ -187,8 +187,12 @@ residency is `0/0/0` at every stable checkpoint and teardown converges. Slice I
|
||||||
versions prevent displaced callbacks, and reset/direct disposal converge
|
versions prevent displaced callbacks, and reset/direct disposal converge
|
||||||
the complete owner ledger to zero. Its 146 Runtime tests, 3,765 App tests /
|
the complete owner ledger to zero. Its 146 Runtime tests, 3,765 App tests /
|
||||||
3 skips, 8,484 full Release tests / 5 skips, exact lifecycle/reconnect gate,
|
3 skips, 8,484 full Release tests / 5 skips, exact lifecycle/reconnect gate,
|
||||||
and canonical nine-stop route pass. J4 gameplay-state lifetime groups are
|
and canonical nine-stop route pass. J4.1 is complete at `c9d25ade`:
|
||||||
active under
|
Runtime owns one exact chat/social graph and its re-entrant-safe synchronous
|
||||||
|
event stream; all presentation and no-window consumers borrow it. Its 152
|
||||||
|
Runtime tests, 3,765 App tests / 3 skips, 8,494 full Release tests / 5
|
||||||
|
skips, and exact-binary seven-checkpoint lifecycle/reconnect route pass.
|
||||||
|
J4.2 inventory transaction ownership is active under
|
||||||
[`2026-07-25-modern-runtime-slice-j.md`](2026-07-25-modern-runtime-slice-j.md).
|
[`2026-07-25-modern-runtime-slice-j.md`](2026-07-25-modern-runtime-slice-j.md).
|
||||||
Slice-I closeout evidence is
|
Slice-I closeout evidence is
|
||||||
[`../research/2026-07-25-slice-i7-closeout.md`](../research/2026-07-25-slice-i7-closeout.md).
|
[`../research/2026-07-25-slice-i7-closeout.md`](../research/2026-07-25-slice-i7-closeout.md).
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,9 @@ boundary and borrowed contract seam; J2 moved canonical session/transport
|
||||||
lifetime and ordered inbound routing; J3.1–J3.6 moved canonical entity identity
|
lifetime and ordered inbound routing; J3.1–J3.6 moved canonical entity identity
|
||||||
and object-table lifetime to Runtime, exact graphical projection identity to
|
and object-table lifetime to Runtime, exact graphical projection identity to
|
||||||
App, and one ordered canonical entity/object stream plus direct views to all
|
App, and one ordered canonical entity/object stream plus direct views to all
|
||||||
hosts and closed the failure-safe owner ledger. J4 gameplay-state lifetime
|
hosts and closed the failure-safe owner ledger. J4.1 moved communication and
|
||||||
groups are the active execution point.
|
social ownership into Runtime at `c9d25ade`; J4.2 inventory transaction
|
||||||
|
ownership is the active execution point.
|
||||||
|
|
||||||
**Scope:** Reconcile and sequence the existing Modern Pipeline (`MP`) and
|
**Scope:** Reconcile and sequence the existing Modern Pipeline (`MP`) and
|
||||||
Linux/headless (`LH`) tracks using the 2026-07-24 connected performance audit.
|
Linux/headless (`LH`) tracks using the 2026-07-24 connected performance audit.
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Modern runtime Slice J — presentation-independent runtime
|
# Modern runtime Slice J — presentation-independent runtime
|
||||||
|
|
||||||
**Status:** J0–J3 COMPLETE; J4 gameplay-state lifetime groups are active
|
**Status:** J0–J3 COMPLETE; J4.1 COMPLETE; J4.2 inventory ownership active
|
||||||
**Parent:** `2026-07-24-modern-runtime-architecture.md`, Slice J
|
**Parent:** `2026-07-24-modern-runtime-architecture.md`, Slice J
|
||||||
**Authorization:** the user approved Slices F–L, including the otherwise-frozen
|
**Authorization:** the user approved Slices F–L, including the otherwise-frozen
|
||||||
Slice J gameplay-owner moves, on 2026-07-24
|
Slice J gameplay-owner moves, on 2026-07-24
|
||||||
|
|
@ -229,6 +229,14 @@ match current traces; App has no server-GUID ownership.
|
||||||
Gate: deterministic command/response traces and graphical ViewModel revisions
|
Gate: deterministic command/response traces and graphical ViewModel revisions
|
||||||
match; no Runtime type references UI abstractions.
|
match; no Runtime type references UI abstractions.
|
||||||
|
|
||||||
|
J4.1 completed at `c9d25ade`: Runtime now owns the exact chat transcript,
|
||||||
|
reply/retell targets, negotiated Turbine rooms, friends, and squelch state.
|
||||||
|
Graphical UI, devtools, command routing, plugins/current-runtime projections,
|
||||||
|
and no-window consumers borrow that one graph. Its 152 Runtime tests, 3,765
|
||||||
|
App tests / 3 skips, 8,494 complete Release tests / 5 skips, and exact-binary
|
||||||
|
seven-checkpoint lifecycle/reconnect gate pass. J4.2 inventory transaction
|
||||||
|
ownership is active.
|
||||||
|
|
||||||
Detailed execution begins with a source-ownership inventory. Move one coherent
|
Detailed execution begins with a source-ownership inventory. Move one coherent
|
||||||
lifetime group at a time in this order:
|
lifetime group at a time in this order:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Modern runtime Slice J4 — gameplay-state lifetime groups
|
# Modern runtime Slice J4 — gameplay-state lifetime groups
|
||||||
|
|
||||||
**Status:** ACTIVE
|
**Status:** J4.1 COMPLETE; J4.2 ACTIVE
|
||||||
**Parent:** `2026-07-25-modern-runtime-slice-j.md`, J4
|
**Parent:** `2026-07-25-modern-runtime-slice-j.md`, J4
|
||||||
**Production base:** `77c013998b902724d66e487589a4ea18538e1ea6`
|
**Production base:** `77c013998b902724d66e487589a4ea18538e1ea6`
|
||||||
**Authorization:** the user approved Slices F–L, including Slice J gameplay
|
**Authorization:** the user approved Slices F–L, including Slice J gameplay
|
||||||
|
|
@ -17,6 +17,16 @@ UI, devtools, plugins, and the live-session router borrow those exact
|
||||||
instances. Every moved group retains current synchronous packet/command
|
instances. Every moved group retains current synchronous packet/command
|
||||||
ordering and its existing retail-derived algorithms.
|
ordering and its existing retail-derived algorithms.
|
||||||
|
|
||||||
|
## Execution ledger
|
||||||
|
|
||||||
|
| Group | Status | Evidence |
|
||||||
|
|---|---|---|
|
||||||
|
| J4.1 communication/social | complete | `c9d25ade50c0a5c4f7db5b6cca680e01e35cc18e`; 152 Runtime tests, 3,765 App tests / 3 skips, 8,494 complete Release tests / 5 skips, and `logs/connected-world-gate-20260726-075109/report.json` pass |
|
||||||
|
| J4.2 inventory transactions | active | Runtime must borrow J3's exact object table and take ownership of external-container, item-mana, shortcut/component, shared busy, and one-request-at-a-time state |
|
||||||
|
| J4.3 magic/player sheet | pending | starts only after J4.2 exact-binary acceptance |
|
||||||
|
| J4.4 character projections | pending | starts only after J4.3 acceptance |
|
||||||
|
| J4.5 combined cleanup | pending | combined failure, no-window, connected, and nine-stop closeout |
|
||||||
|
|
||||||
## Current ownership inventory
|
## Current ownership inventory
|
||||||
|
|
||||||
The App `GameWindow` currently constructs or roots these
|
The App `GameWindow` currently constructs or roots these
|
||||||
|
|
@ -60,6 +70,8 @@ environment, and portal presentation remain J6.
|
||||||
|
|
||||||
### J4.1 — communication and social state
|
### J4.1 — communication and social state
|
||||||
|
|
||||||
|
**Completed 2026-07-26 at `c9d25ade`.**
|
||||||
|
|
||||||
- Add a Runtime owner for `ChatLog`, `TurbineChatState`, `FriendsState`,
|
- Add a Runtime owner for `ChatLog`, `TurbineChatState`, `FriendsState`,
|
||||||
`SquelchState`, and reply/retell command targets.
|
`SquelchState`, and reply/retell command targets.
|
||||||
- Move reply/retell target tracking out of `ChatVM`; the VM borrows the same
|
- Move reply/retell target tracking out of `ChatVM`; the VM borrows the same
|
||||||
|
|
@ -73,8 +85,19 @@ Gate: incoming/outgoing tell tracking, room negotiation/cookie wrap, friend and
|
||||||
squelch updates, command routing, clear, reset/reconnect, graphical/direct
|
squelch updates, command routing, clear, reset/reconnect, graphical/direct
|
||||||
event traces, disposal, and Runtime dependency closure.
|
event traces, disposal, and Runtime dependency closure.
|
||||||
|
|
||||||
|
Result: `RuntimeCommunicationState` constructs and owns the exact `ChatLog`,
|
||||||
|
reply/retell targets, Turbine rooms, friends, and squelch database. Session
|
||||||
|
routing, both UI stacks, plugins/current-runtime views, and command routing
|
||||||
|
borrow those instances. The canonical chat stream is synchronous,
|
||||||
|
failure-isolated, and preserves one monotonic sequence under re-entrant
|
||||||
|
callbacks without a frame/background queue. Exact-binary lifecycle/reconnect
|
||||||
|
evidence is recorded in
|
||||||
|
[`../research/2026-07-26-slice-j4-1-communication-state.md`](../research/2026-07-26-slice-j4-1-communication-state.md).
|
||||||
|
|
||||||
### J4.2 — inventory transaction state
|
### J4.2 — inventory transaction state
|
||||||
|
|
||||||
|
**Active.**
|
||||||
|
|
||||||
- Move `ExternalContainerState`, `ItemManaState`, shortcuts, and desired
|
- Move `ExternalContainerState`, `ItemManaState`, shortcuts, and desired
|
||||||
component snapshots into one Runtime owner.
|
component snapshots into one Runtime owner.
|
||||||
- Keep the J3 object table as the only item collection and borrow it directly.
|
- Keep the J3 object table as the only item collection and borrow it directly.
|
||||||
|
|
@ -158,3 +181,9 @@ git revert 119b7c115107245546180b2f5cb3cb44c7d5476a
|
||||||
```
|
```
|
||||||
|
|
||||||
Do not revert J3 to mask a J4 owner/reset failure.
|
Do not revert J3 to mask a J4 owner/reset failure.
|
||||||
|
|
||||||
|
J4.1 is independently reversible with:
|
||||||
|
|
||||||
|
```text
|
||||||
|
git revert c9d25ade50c0a5c4f7db5b6cca680e01e35cc18e
|
||||||
|
```
|
||||||
|
|
|
||||||
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