docs(runtime): close Slice J and activate Slice K

Record the shared graphical/no-window reset architecture, deterministic lifecycle evidence, exact rollback point, and synchronized project guidance before beginning the Linux headless host.

Co-authored-by: Codex <noreply@openai.com>
This commit is contained in:
Erik 2026-07-27 01:01:41 +02:00
parent a9a822f206
commit 953c469cac
12 changed files with 210 additions and 35 deletions

View file

@ -1,6 +1,6 @@
# acdream — strategic roadmap
**Status:** Living document. Updated 2026-07-27. **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 canonical entity/object lifetime and J4 gameplay-state ownership are closed at `89e6b207`; J5.1 canonical selection/combat/target-mode ownership is closed at `b298f99f`, J5.2 interaction transactions at `f5f7b417`, J5.3 combat/magic intent at `20df9d15`, J5.4 local movement/outbound cadence at `aa3f4a60`, J5.5 per-session physics/remote simulation at `7e6033d0`, J5.6 projectile simulation at `2aee3356`, and J5.7 combined simulation closeout at `cdee7a4b`. J6.1 world-environment ownership is closed at `902076c0`; J6.2 canonical reveal generation and typed destination readiness is closed at `a6860d55` plus `acb845d8`; J6.3 exact F751/Position destination correlation is closed at `6a063a27`; J6.4 exact graphical-host acknowledgement and owner cleanup is closed at `18d17d8b`. J7's one graphical `GameRuntime` root is closed at `ce41efb9`, including the user's 2026-07-27 exact post-cutover visual acceptance. J8 no-window integration is active. Issue #225's lifestone/particle alpha comparison remains a separate rendering visual gate.
**Status:** Living document. Updated 2026-07-27. **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 canonical entity/object lifetime and J4 gameplay-state ownership are closed at `89e6b207`; J5.1 canonical selection/combat/target-mode ownership is closed at `b298f99f`, J5.2 interaction transactions at `f5f7b417`, J5.3 combat/magic intent at `20df9d15`, J5.4 local movement/outbound cadence at `aa3f4a60`, J5.5 per-session physics/remote simulation at `7e6033d0`, J5.6 projectile simulation at `2aee3356`, and J5.7 combined simulation closeout at `cdee7a4b`. J6.1 world-environment ownership is closed at `902076c0`; J6.2 canonical reveal generation and typed destination readiness is closed at `a6860d55` plus `acb845d8`; J6.3 exact F751/Position destination correlation is closed at `6a063a27`; J6.4 exact graphical-host acknowledgement and owner cleanup is closed at `18d17d8b`. J7's one graphical `GameRuntime` root is closed at `ce41efb9`, including the user's 2026-07-27 exact post-cutover visual acceptance. J8 closed Slice J at `a9a822f2` with one shared graphical/no-window root and generation-reset transaction. Slice K Linux headless/multi-session work 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.
---
@ -1797,8 +1797,10 @@ port in any phase — no separate listing here.
> Runtime tests, 3,716 App tests / 3 skips, 8,642-test / 5-skip complete Release
> suite, and exact-binary lifecycle/reconnect route pass with zero ownership
> debt at every checkpoint. J7 completed at `ce41efb9`; the user accepted its
> exact post-cutover visual matrix on 2026-07-27. J8 no-window integration and
> Slice-J closeout are active.
> exact post-cutover visual matrix on 2026-07-27. J8 closed Slice J at
> `a9a822f2`: 395 Runtime tests, 3,731 App tests / 3 skips, 8,696 complete-
> solution tests / 5 skips, lifecycle/reconnect, and canonical nine-stop gates
> pass. Slice K Linux headless/multi-session implementation is active.
> The historical exact cutover
> rollback remains
> `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. Slice H is complete:

View file

@ -273,8 +273,13 @@ residency is `0/0/0` at every stable checkpoint and teardown converges. Slice I
/ 5 skips, and exact-binary lifecycle/reconnect route pass with every
environment/transit/host ledger at zero. J7 composition-root convergence
completed at `ce41efb9`; the user accepted its exact post-cutover visual
matrix on 2026-07-27. J8 is active under
[`2026-07-25-modern-runtime-slice-j.md`](2026-07-25-modern-runtime-slice-j.md).
matrix on 2026-07-27. J8 closed Slice J at `a9a822f2`: graphical and
no-window hosts share one `GameRuntime`, one canonical generation-reset
transaction, and one gameplay-owner graph. Its 395 Runtime tests, 3,731 App
tests / 3 skips, 8,696 complete-solution tests / 5 skips, exact-binary
lifecycle/reconnect route, and canonical nine-stop route pass. Slice K is
active under
[`2026-07-26-modern-runtime-slice-k.md`](2026-07-26-modern-runtime-slice-k.md).
Slice-I closeout evidence is
[`../research/2026-07-25-slice-i7-closeout.md`](../research/2026-07-25-slice-i7-closeout.md).
Slice-J2 closeout evidence is

View file

@ -25,8 +25,9 @@ J6 completed at `18d17d8b`: Runtime owns world environment, canonical reveal
generation/readiness, exact F751/Position destination correlation, and the
generation/cell-scoped graphical-host acknowledgement suffix. J7 completed
at `ce41efb9` with its automated gates and the user's 2026-07-27
physical-display acceptance. J8 no-window integration and Slice-J closeout are
active.
physical-display acceptance. J8 and Slice J closed at `a9a822f2`: graphical
and direct hosts share one `GameRuntime`, one retryable generation-reset
transaction, and one canonical gameplay-owner graph. Slice K is active.
**Scope:** Reconcile and sequence the existing Modern Pipeline (`MP`) and
Linux/headless (`LH`) tracks using the 2026-07-24 connected performance audit.
@ -1065,7 +1066,7 @@ host-parity tests after each move.
**Prepared execution plan:**
[`2026-07-26-modern-runtime-slice-k.md`](2026-07-26-modern-runtime-slice-k.md).
Implementation begins after Slice J's no-window closeout.
Implementation began after Slice J's no-window closeout at `a9a822f2`.
**Purpose:** Deliver efficient automated bots.
@ -1304,8 +1305,10 @@ projection stages and App owns only retryable resource receipts. Its 365
Runtime tests, 3,716 App tests / 3 skips, 8,642-test / 5-skip complete Release
suite, and exact-binary lifecycle/reconnect gate pass with zero ownership debt
at every stable checkpoint. J7 completed at `ce41efb9`, and the user accepted
its exact post-cutover visual matrix on 2026-07-27. J8 is the current execution
point.
its exact post-cutover visual matrix on 2026-07-27. J8 closed Slice J at
`a9a822f2`; 395 Runtime tests, 3,731 App tests / 3 skips, 8,696 complete-
solution tests / 5 skips, lifecycle/reconnect, and canonical nine-stop gates
pass. Slice K is the current execution point.
Evidence:
[`../research/2026-07-25-slice-g5-production-profile.md`](../research/2026-07-25-slice-g5-production-profile.md)
and

View file

@ -1,6 +1,6 @@
# Modern runtime Slice J — presentation-independent runtime
**Status:** J0J7 COMPLETE; J8 ACTIVE
**Status:** COMPLETE 2026-07-27
**Parent:** `2026-07-24-modern-runtime-architecture.md`, Slice J
**Authorization:** the user approved Slices FL, including the otherwise-frozen
Slice J gameplay-owner moves, on 2026-07-24
@ -416,7 +416,7 @@ git revert ce41efb9e5938f79a7580476b949d172f52a1e69
**Detailed execution plan:**
[`2026-07-26-modern-runtime-slice-j8.md`](2026-07-26-modern-runtime-slice-j8.md).
Implementation is active after J7's 2026-07-27 physical-display acceptance.
Completed at `a9a822f2` after J7's 2026-07-27 physical-display acceptance.
- Build a transport/content test host that constructs Runtime directly.
- Connect, enter world, receive chat/inventory/world updates, move, use,
@ -433,6 +433,16 @@ integration, resource teardown, packet/order/timing parity, and the user visual
matrix all pass. Slice K may then build the Linux multi-session host without
another gameplay extraction.
J8 passes 395 Runtime tests, 3,731 App tests / 3 skips, 8,696 complete-solution
tests / 5 skips, the exact-binary lifecycle/reconnect route, and the canonical
nine-stop route. Graphical and direct hosts share one `GameRuntime`, one
retryable canonical-generation reset transaction, and the same gameplay-owner
graph. Exact rollback:
```text
git revert a9a822f206cc6021bc099988144488f3bd7c397b
```
## 5. Commit order
1. `arch(runtime): establish presentation-independent boundary`

View file

@ -1,6 +1,6 @@
# Modern runtime Slice J8 — no-window integration and Slice J closeout
**Status:** ACTIVE — J7 ENTRY GATE PASSED 2026-07-27
**Status:** COMPLETE 2026-07-27 — SLICE J CLOSED
**Parent:** `2026-07-25-modern-runtime-slice-j.md`, J8
**Authorization:** the user approved Slices FL, including the J gameplay-owner
gates, on 2026-07-24
@ -139,6 +139,11 @@ increasing within a generation and restart only when the generation changes.
### J8.1 — one direct root host
**Complete at `a9a822f2`.** `RuntimeGenerationReset` is the single retryable
canonical-generation reset transaction. Graphical App reset borrows that
transaction and retains only its presentation stages; the no-window host uses
the same Runtime root and reset owner directly.
- Add the Runtime-owned generation-reset transaction and its narrow borrowed
host-retirement acknowledgement.
- Replace the child-by-child canonical portions of App's reset bindings with
@ -162,6 +167,11 @@ generation, and converges without a presentation assembly or duplicate owner.
### J8.2 — deterministic transport/content lifecycle
**Complete at `a9a822f2`.** `NoWindowGameRuntimeHost` drives the production
root through connect, enter, decoded state, movement, use, combat, casting,
projectile work, portal completion, stop, reconnect, stale-route rejection,
GUID reuse, and terminal convergence.
- Build deterministic session operations and in-memory transport.
- Bind the exact session lifecycle order:
reset → attach inbound → connect → select identity → enter → activate
@ -180,6 +190,11 @@ root, accepted ordering is stable, and old-generation routes are inert.
### J8.3 — cancellation, faults, isolation, and credentials
**Complete at `a9a822f2`.** Focused gates cover reset retry/no-replay,
portal cancellation before and after readiness, observer failure containment,
two simultaneous isolated roots, stale-generation routes, and
credential-safe traces.
- Cancel during connect, after inbound attach, during portal readiness, and
with a host acknowledgement pending.
- Inject route-construction, route-detach, observer, projection
@ -196,6 +211,24 @@ credential-safe.
### J8.4 — complete Slice J gate
**Complete.** The exact committed binary passed:
- 395/395 Runtime tests;
- 3,731 App tests / 3 skips;
- 8,696 complete-solution tests / 5 intentional skips;
- connected lifecycle/reconnect:
`logs/connected-world-gate-20260727-004418/report.json`;
- canonical nine-stop route:
`logs/connected-r6-soak-20260727-004942.report.json`;
- the already accepted J7 physical-display matrix.
The no-window process loads no App, UI, renderer, audio, Silk.NET, OpenAL,
Arch, or ImGui assembly. The dependency and divergence audits found no new
retail deviation. Retail chat-history research also confirmed that session
end does not clear the bounded transcript: `CPlayerSystem::OnEndCharacterSession`
at `0x00562870` reinitializes the character session, while the explicit
`ClientCommunicationSystem::DoClear` at `0x0056E600` owns chat-buffer clearing.
- Run focused Runtime tests.
- Run the Release solution build.
- Run the complete Release suite.
@ -254,10 +287,14 @@ extracting gameplay again.
## 7. Commit and rollback discipline
J8 implementation lands as one test/integration closeout commit after the J7
visual entry gate, followed by one documentation closeout commit if needed.
The full production SHA and exact `git revert <sha>` are recorded here before
Slice K starts. J8 must not modify the J7 rollback point:
J8 implementation landed as one test/integration closeout commit after the J7
visual entry gate. Its exact rollback is:
```text
git revert a9a822f206cc6021bc099988144488f3bd7c397b
```
J8 did not modify the J7 rollback point:
```text
git revert ce41efb9e5938f79a7580476b949d172f52a1e69

View file

@ -1,6 +1,6 @@
# Modern runtime Slice K — Linux headless and multi-session host
**Status:** PREPARED — BEGINS AFTER SLICE J CLOSEOUT
**Status:** ACTIVE 2026-07-27 — SLICE J ENTRY GATE PASSED
**Parent:** `2026-07-24-modern-runtime-architecture.md`, Slice K
**Authorization:** the user approved Slices FL on 2026-07-24
**Purpose:** run efficient automated clients on Linux without a display, GPU,
@ -9,10 +9,14 @@ prove 30 isolated sessions can share immutable content safely in one process.
## 1. Entry contract
Slice K starts only after J8 proves one direct `GameRuntime` can connect, enter
Slice K starts after J8 proves one direct `GameRuntime` can connect, enter
world, receive authoritative state, move, use, fight/cast, portal, stop,
reconnect, and converge without presentation assemblies.
That entry gate passed at `a9a822f2`: 395 Runtime tests, 3,731 App tests /
3 skips, 8,696 complete-solution tests / 5 skips, exact-binary connected
lifecycle/reconnect, and canonical nine-stop routes all pass.
K adds a production host over that same root. It does not move gameplay out of
App again and does not create a bot-specific world model.