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:
parent
a9a822f206
commit
953c469cac
12 changed files with 210 additions and 35 deletions
17
AGENTS.md
17
AGENTS.md
|
|
@ -345,7 +345,12 @@ single `GameRuntime` root at `96ddd165`; J7.2/J7.3 cut graphical production
|
||||||
and shutdown over at `ce41efb9`. Its 383 Runtime tests, 3,717 App tests /
|
and shutdown over at `ce41efb9`. Its 383 Runtime tests, 3,717 App tests /
|
||||||
3 skips, 8,661 complete Release tests / 5 skips, lifecycle/reconnect route,
|
3 skips, 8,661 complete Release tests / 5 skips, lifecycle/reconnect route,
|
||||||
canonical nine-stop route, and the user's 2026-07-27 exact post-cutover visual
|
canonical nine-stop route, and the user's 2026-07-27 exact post-cutover visual
|
||||||
matrix pass. J7 is closed; J8 no-window integration is active.
|
matrix pass. J7 is closed. J8 closed Slice J at `a9a822f2`: graphical and
|
||||||
|
no-window hosts share one `GameRuntime`, one retryable canonical-generation
|
||||||
|
reset transaction, and one gameplay-owner graph. Its 395 Runtime tests, 3,731
|
||||||
|
App tests / 3 skips, 8,696 complete Release tests / 5 skips, exact-binary
|
||||||
|
lifecycle/reconnect route, and canonical nine-stop route pass. Slice K
|
||||||
|
Linux headless/multi-session implementation is active.
|
||||||
J0's rollback is
|
J0's rollback is
|
||||||
`git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`.
|
`git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`.
|
||||||
J1's rollback is
|
J1's rollback is
|
||||||
|
|
@ -400,6 +405,8 @@ J7.1's rollback is
|
||||||
`git revert 96ddd16539e670a5ce9b1f86677530e3fbc3f635`.
|
`git revert 96ddd16539e670a5ce9b1f86677530e3fbc3f635`.
|
||||||
J7.2/J7.3's rollback is
|
J7.2/J7.3's rollback is
|
||||||
`git revert ce41efb9e5938f79a7580476b949d172f52a1e69`.
|
`git revert ce41efb9e5938f79a7580476b949d172f52a1e69`.
|
||||||
|
J8's rollback is
|
||||||
|
`git revert a9a822f206cc6021bc099988144488f3bd7c397b`.
|
||||||
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
|
||||||
|
|
@ -426,8 +433,10 @@ closeout is
|
||||||
closeout is
|
closeout is
|
||||||
`docs/research/2026-07-26-slice-j6-3-teleport-correlation.md`; J6 closeout is
|
`docs/research/2026-07-26-slice-j6-3-teleport-correlation.md`; J6 closeout is
|
||||||
`docs/research/2026-07-26-slice-j6-4-host-acknowledgement.md`. J7 closeout is
|
`docs/research/2026-07-26-slice-j6-4-host-acknowledgement.md`. J7 closeout is
|
||||||
`docs/research/2026-07-26-slice-j7-game-runtime-root-cutover.md`; J8 executes
|
`docs/research/2026-07-26-slice-j7-game-runtime-root-cutover.md`; J8/Slice-J
|
||||||
from `docs/plans/2026-07-26-modern-runtime-slice-j8.md`. The exact G4 visual
|
closeout is
|
||||||
|
`docs/research/2026-07-27-slice-j8-no-window-closeout.md`; Slice K executes
|
||||||
|
from `docs/plans/2026-07-26-modern-runtime-slice-k.md`. The exact G4 visual
|
||||||
rollback
|
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:
|
||||||
|
|
@ -467,7 +476,7 @@ uncapped Release presentation is smooth, while physics, collision, and wire
|
||||||
truth remain correct.
|
truth remain correct.
|
||||||
See `docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md` and
|
See `docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md` and
|
||||||
`docs/architecture/code-structure.md`. **Carried:** #153, #116, remaining
|
`docs/architecture/code-structure.md`. **Carried:** #153, #116, remaining
|
||||||
R6 ownership cleanup, TS-50/TS-51/TS-53, Modern Runtime Slice J8+, and #225's
|
R6 ownership cleanup, TS-50/TS-51/TS-53, Modern Runtime Slice K+, and #225's
|
||||||
lifestone/particle alpha visual gate.
|
lifestone/particle alpha visual gate.
|
||||||
|
|
||||||
Start structural work at `memory/project_gamewindow_decomposition.md` and
|
Start structural work at `memory/project_gamewindow_decomposition.md` and
|
||||||
|
|
|
||||||
17
CLAUDE.md
17
CLAUDE.md
|
|
@ -343,7 +343,12 @@ single `GameRuntime` root at `96ddd165`; J7.2/J7.3 cut graphical production
|
||||||
and shutdown over at `ce41efb9`. Its 383 Runtime tests, 3,717 App tests /
|
and shutdown over at `ce41efb9`. Its 383 Runtime tests, 3,717 App tests /
|
||||||
3 skips, 8,661 complete Release tests / 5 skips, lifecycle/reconnect route,
|
3 skips, 8,661 complete Release tests / 5 skips, lifecycle/reconnect route,
|
||||||
canonical nine-stop route, and the user's 2026-07-27 exact post-cutover visual
|
canonical nine-stop route, and the user's 2026-07-27 exact post-cutover visual
|
||||||
matrix pass. J7 is closed; J8 no-window integration is active.
|
matrix pass. J7 is closed. J8 closed Slice J at `a9a822f2`: graphical and
|
||||||
|
no-window hosts share one `GameRuntime`, one retryable canonical-generation
|
||||||
|
reset transaction, and one gameplay-owner graph. Its 395 Runtime tests, 3,731
|
||||||
|
App tests / 3 skips, 8,696 complete Release tests / 5 skips, exact-binary
|
||||||
|
lifecycle/reconnect route, and canonical nine-stop route pass. Slice K
|
||||||
|
Linux headless/multi-session implementation is active.
|
||||||
J0's rollback is
|
J0's rollback is
|
||||||
`git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`.
|
`git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`.
|
||||||
J1's rollback is
|
J1's rollback is
|
||||||
|
|
@ -398,6 +403,8 @@ J7.1's rollback is
|
||||||
`git revert 96ddd16539e670a5ce9b1f86677530e3fbc3f635`.
|
`git revert 96ddd16539e670a5ce9b1f86677530e3fbc3f635`.
|
||||||
J7.2/J7.3's rollback is
|
J7.2/J7.3's rollback is
|
||||||
`git revert ce41efb9e5938f79a7580476b949d172f52a1e69`.
|
`git revert ce41efb9e5938f79a7580476b949d172f52a1e69`.
|
||||||
|
J8's rollback is
|
||||||
|
`git revert a9a822f206cc6021bc099988144488f3bd7c397b`.
|
||||||
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
|
||||||
|
|
@ -424,8 +431,10 @@ closeout is
|
||||||
closeout is
|
closeout is
|
||||||
`docs/research/2026-07-26-slice-j6-3-teleport-correlation.md`; J6 closeout is
|
`docs/research/2026-07-26-slice-j6-3-teleport-correlation.md`; J6 closeout is
|
||||||
`docs/research/2026-07-26-slice-j6-4-host-acknowledgement.md`. J7 closeout is
|
`docs/research/2026-07-26-slice-j6-4-host-acknowledgement.md`. J7 closeout is
|
||||||
`docs/research/2026-07-26-slice-j7-game-runtime-root-cutover.md`; J8 executes
|
`docs/research/2026-07-26-slice-j7-game-runtime-root-cutover.md`; J8/Slice-J
|
||||||
from `docs/plans/2026-07-26-modern-runtime-slice-j8.md`. The exact G4 visual
|
closeout is
|
||||||
|
`docs/research/2026-07-27-slice-j8-no-window-closeout.md`; Slice K executes
|
||||||
|
from `docs/plans/2026-07-26-modern-runtime-slice-k.md`. The exact G4 visual
|
||||||
rollback
|
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:
|
||||||
|
|
@ -465,7 +474,7 @@ uncapped Release presentation is smooth, while physics, collision, and wire
|
||||||
truth remain correct.
|
truth remain correct.
|
||||||
See `docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md` and
|
See `docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md` and
|
||||||
`docs/architecture/code-structure.md`. **Carried:** #153, #116, remaining
|
`docs/architecture/code-structure.md`. **Carried:** #153, #116, remaining
|
||||||
R6 ownership cleanup, TS-50/TS-51/TS-53, Modern Runtime Slice J8+, and #225's
|
R6 ownership cleanup, TS-50/TS-51/TS-53, Modern Runtime Slice K+, and #225's
|
||||||
lifestone/particle alpha visual gate.
|
lifestone/particle alpha visual gate.
|
||||||
|
|
||||||
Start structural work at `memory/project_gamewindow_decomposition.md` and
|
Start structural work at `memory/project_gamewindow_decomposition.md` and
|
||||||
|
|
|
||||||
|
|
@ -35,14 +35,15 @@ banner cannot silently override the current program state.
|
||||||
in `#225`; its connected resource-lifetime and performance routes pass.
|
in `#225`; its connected resource-lifetime and performance routes pass.
|
||||||
- **Carried behavior debt:** `#153` (far teleport onto an unstreamed edge),
|
- **Carried behavior debt:** `#153` (far teleport onto an unstreamed edge),
|
||||||
`#116` (two narrowed slide-response cases), and divergence rows TS-50/TS-51.
|
`#116` (two narrowed slide-response cases), and divergence rows TS-50/TS-51.
|
||||||
- **Active engineering track:** complete Slice J's world handshake,
|
- **Active engineering track:** Slice J's presentation-independent runtime,
|
||||||
composition root, and no-window closeout, then build the approved
|
composition root, shared generation reset, and no-window closeout are
|
||||||
Linux/headless multi-session host in Slice K. J5.7's exact rollback is
|
complete. Build the approved Linux/headless multi-session host in Slice K.
|
||||||
`git revert cdee7a4b49addb5e1500753f6a885f7c899bd0f0`.
|
J8's exact rollback is
|
||||||
|
`git revert a9a822f206cc6021bc099988144488f3bd7c397b`.
|
||||||
- **Divergence audit:** 178 active rows — IA 17, AD 37, AP 85, TS 34,
|
- **Divergence audit:** 178 active rows — IA 17, AD 37, AP 85, TS 34,
|
||||||
and UN 5 — plus the retained retired TS-37 history note.
|
and UN 5 — plus the retained retired TS-37 history note.
|
||||||
- **Latest automated baseline:** Release build succeeds; 8,596 tests pass and
|
- **Latest automated baseline:** Release build succeeds; 8,696 tests pass and
|
||||||
five are intentionally skipped. The exact J5.7 lifecycle/reconnect and
|
five are intentionally skipped. The exact J8 lifecycle/reconnect and
|
||||||
canonical nine-stop gates match embedded binary/source commit, converge
|
canonical nine-stop gates match embedded binary/source commit, converge
|
||||||
every backlog, and complete with graceful zero-code exits and zero failures.
|
every backlog, and complete with graceful zero-code exits and zero failures.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -241,7 +241,8 @@ src/
|
||||||
World/
|
World/
|
||||||
RuntimeWorldEnvironmentState.cs -> canonical calendar/time/weather owner
|
RuntimeWorldEnvironmentState.cs -> canonical calendar/time/weather owner
|
||||||
RuntimeWorldTransitState.cs -> canonical reveal generation/readiness owner
|
RuntimeWorldTransitState.cs -> canonical reveal generation/readiness owner
|
||||||
-> J3–J6 complete; J7 composition-root convergence active
|
RuntimeGenerationReset.cs -> one retryable canonical-generation reset
|
||||||
|
-> Slice J complete; graphical and no-window hosts share one GameRuntime
|
||||||
-> 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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -479,7 +479,7 @@ useful ordering seam, but its ownership status is **partial**.
|
||||||
| Projectile simulation | **J5.6 complete** | `RuntimeEntityRecord`/`RuntimePhysicsState` own the canonical projectile component, exact-key workset, prediction/correction state, unchanged retail quantum/integration/sweep/collision loop, and cell commits. App resolves immutable Setup/DAT shape input and projects committed render, shadow, and effect-pose results only (`2aee3356`). |
|
| Projectile simulation | **J5.6 complete** | `RuntimeEntityRecord`/`RuntimePhysicsState` own the canonical projectile component, exact-key workset, prediction/correction state, unchanged retail quantum/integration/sweep/collision loop, and cell commits. App resolves immutable Setup/DAT shape input and projects committed render, shadow, and effect-pose results only (`2aee3356`). |
|
||||||
| Landblock presentation | **Complete** | `LandblockBuildFactory` owns the captured-origin DAT transaction; concrete render/physics/DAT-static publishers and `LandblockPresentationPipeline` own typed-meter publication and exact retryable retirement. `StreamingController` owns stable destination/control/unload/Near/Far queues and destination reservation. CPU mesh-cache restaging requires an exact live owner. `StreamingOriginRecenterCoordinator` serializes old-window retirement with teleport/session origin lifetimes. `GameWindow` retains construction and one pipeline field only (`c79d0a49`, closeout `4a205a3e`; Slice E closeout `91e82c3c`). |
|
| Landblock presentation | **Complete** | `LandblockBuildFactory` owns the captured-origin DAT transaction; concrete render/physics/DAT-static publishers and `LandblockPresentationPipeline` own typed-meter publication and exact retryable retirement. `StreamingController` owns stable destination/control/unload/Near/Far queues and destination reservation. CPU mesh-cache restaging requires an exact live owner. `StreamingOriginRecenterCoordinator` serializes old-window retirement with teleport/session origin lifetimes. `GameWindow` retains construction and one pipeline field only (`c79d0a49`, closeout `4a205a3e`; Slice E closeout `91e82c3c`). |
|
||||||
| Render-frame orchestration | **Complete** | `RenderFrameOrchestrator` owns the GPU-flight, resource, world/PView/shared-alpha, private-presentation, diagnostics, screenshot, and recovery graph. `GameWindow.OnRender` takes one logical window-size snapshot and performs one immutable handoff (`9d7df1bf`). |
|
| Render-frame orchestration | **Complete** | `RenderFrameOrchestrator` owns the GPU-flight, resource, world/PView/shared-alpha, private-presentation, diagnostics, screenshot, and recovery graph. `GameWindow.OnRender` takes one logical window-size snapshot and performs one immutable handoff (`9d7df1bf`). |
|
||||||
| Unified `GameEntity` | **Slice J active at J7** | Canonical identity, retained-object lifetime, direct views, ordered entity/object deltas, J4 gameplay state, and the complete J5 action/combat/magic/movement/physics/remote/projectile simulation graph share failure-safe Runtime owners while exact graphical sidecars stay in App. J5 closeout proves Runtime-only parity and one terminal ownership ledger. J6 moved world environment, reveal-generation truth, exact F751/Position destination correlation, and typed graphical-host acknowledgement into Runtime. J7 now composes those already-proven owners behind one `GameRuntime` root without adding another state layer. |
|
| Unified `GameEntity` | **Slice J complete** | Canonical identity, retained-object lifetime, direct views, ordered entity/object deltas, gameplay state, action/combat/magic/movement/physics/remote/projectile simulation, world environment, reveal/transit truth, and host acknowledgement share failure-safe Runtime owners while exact graphical sidecars stay in App. One `GameRuntime` composes the graph. `RuntimeGenerationReset` is the sole retryable canonical-generation reset for graphical and no-window hosts; the deterministic direct host proves lifecycle, commands, portal, reconnect, GUID reuse, fault recovery, isolation, and terminal convergence without presentation assemblies (`a9a822f2`). |
|
||||||
|
|
||||||
### 4.3 Revised extraction sequence
|
### 4.3 Revised extraction sequence
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# acdream — strategic roadmap
|
# 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.
|
**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
|
> 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
|
> suite, and exact-binary lifecycle/reconnect route pass with zero ownership
|
||||||
> debt at every checkpoint. J7 completed at `ce41efb9`; the user accepted its
|
> 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
|
> exact post-cutover visual matrix on 2026-07-27. J8 closed Slice J at
|
||||||
> Slice-J closeout are active.
|
> `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
|
> The historical exact cutover
|
||||||
> rollback remains
|
> rollback remains
|
||||||
> `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. Slice H is complete:
|
> `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. Slice H is complete:
|
||||||
|
|
|
||||||
|
|
@ -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
|
/ 5 skips, and exact-binary lifecycle/reconnect route pass with every
|
||||||
environment/transit/host ledger at zero. J7 composition-root convergence
|
environment/transit/host ledger at zero. J7 composition-root convergence
|
||||||
completed at `ce41efb9`; the user accepted its exact post-cutover visual
|
completed at `ce41efb9`; the user accepted its exact post-cutover visual
|
||||||
matrix on 2026-07-27. J8 is active under
|
matrix on 2026-07-27. J8 closed Slice J at `a9a822f2`: graphical and
|
||||||
[`2026-07-25-modern-runtime-slice-j.md`](2026-07-25-modern-runtime-slice-j.md).
|
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
|
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).
|
||||||
Slice-J2 closeout evidence is
|
Slice-J2 closeout evidence is
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,9 @@ J6 completed at `18d17d8b`: Runtime owns world environment, canonical reveal
|
||||||
generation/readiness, exact F751/Position destination correlation, and the
|
generation/readiness, exact F751/Position destination correlation, and the
|
||||||
generation/cell-scoped graphical-host acknowledgement suffix. J7 completed
|
generation/cell-scoped graphical-host acknowledgement suffix. J7 completed
|
||||||
at `ce41efb9` with its automated gates and the user's 2026-07-27
|
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
|
physical-display acceptance. J8 and Slice J closed at `a9a822f2`: graphical
|
||||||
active.
|
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
|
**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.
|
||||||
|
|
@ -1065,7 +1066,7 @@ host-parity tests after each move.
|
||||||
|
|
||||||
**Prepared execution plan:**
|
**Prepared execution plan:**
|
||||||
[`2026-07-26-modern-runtime-slice-k.md`](2026-07-26-modern-runtime-slice-k.md).
|
[`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.
|
**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
|
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
|
suite, and exact-binary lifecycle/reconnect gate pass with zero ownership debt
|
||||||
at every stable checkpoint. J7 completed at `ce41efb9`, and the user accepted
|
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
|
its exact post-cutover visual matrix on 2026-07-27. J8 closed Slice J at
|
||||||
point.
|
`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:
|
Evidence:
|
||||||
[`../research/2026-07-25-slice-g5-production-profile.md`](../research/2026-07-25-slice-g5-production-profile.md)
|
[`../research/2026-07-25-slice-g5-production-profile.md`](../research/2026-07-25-slice-g5-production-profile.md)
|
||||||
and
|
and
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Modern runtime Slice J — presentation-independent runtime
|
# Modern runtime Slice J — presentation-independent runtime
|
||||||
|
|
||||||
**Status:** J0–J7 COMPLETE; J8 ACTIVE
|
**Status:** COMPLETE 2026-07-27
|
||||||
**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
|
||||||
|
|
@ -416,7 +416,7 @@ git revert ce41efb9e5938f79a7580476b949d172f52a1e69
|
||||||
|
|
||||||
**Detailed execution plan:**
|
**Detailed execution plan:**
|
||||||
[`2026-07-26-modern-runtime-slice-j8.md`](2026-07-26-modern-runtime-slice-j8.md).
|
[`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.
|
- Build a transport/content test host that constructs Runtime directly.
|
||||||
- Connect, enter world, receive chat/inventory/world updates, move, use,
|
- 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
|
matrix all pass. Slice K may then build the Linux multi-session host without
|
||||||
another gameplay extraction.
|
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
|
## 5. Commit order
|
||||||
|
|
||||||
1. `arch(runtime): establish presentation-independent boundary`
|
1. `arch(runtime): establish presentation-independent boundary`
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Modern runtime Slice J8 — no-window integration and Slice J closeout
|
# 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
|
**Parent:** `2026-07-25-modern-runtime-slice-j.md`, J8
|
||||||
**Authorization:** the user approved Slices F–L, including the J gameplay-owner
|
**Authorization:** the user approved Slices F–L, including the J gameplay-owner
|
||||||
gates, on 2026-07-24
|
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
|
### 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
|
- Add the Runtime-owned generation-reset transaction and its narrow borrowed
|
||||||
host-retirement acknowledgement.
|
host-retirement acknowledgement.
|
||||||
- Replace the child-by-child canonical portions of App's reset bindings with
|
- 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
|
### 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.
|
- Build deterministic session operations and in-memory transport.
|
||||||
- Bind the exact session lifecycle order:
|
- Bind the exact session lifecycle order:
|
||||||
reset → attach inbound → connect → select identity → enter → activate
|
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
|
### 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
|
- Cancel during connect, after inbound attach, during portal readiness, and
|
||||||
with a host acknowledgement pending.
|
with a host acknowledgement pending.
|
||||||
- Inject route-construction, route-detach, observer, projection
|
- Inject route-construction, route-detach, observer, projection
|
||||||
|
|
@ -196,6 +211,24 @@ credential-safe.
|
||||||
|
|
||||||
### J8.4 — complete Slice J gate
|
### 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 focused Runtime tests.
|
||||||
- Run the Release solution build.
|
- Run the Release solution build.
|
||||||
- Run the complete Release suite.
|
- Run the complete Release suite.
|
||||||
|
|
@ -254,10 +287,14 @@ extracting gameplay again.
|
||||||
|
|
||||||
## 7. Commit and rollback discipline
|
## 7. Commit and rollback discipline
|
||||||
|
|
||||||
J8 implementation lands as one test/integration closeout commit after the J7
|
J8 implementation landed as one test/integration closeout commit after the J7
|
||||||
visual entry gate, followed by one documentation closeout commit if needed.
|
visual entry gate. Its exact rollback is:
|
||||||
The full production SHA and exact `git revert <sha>` are recorded here before
|
|
||||||
Slice K starts. J8 must not modify the J7 rollback point:
|
```text
|
||||||
|
git revert a9a822f206cc6021bc099988144488f3bd7c397b
|
||||||
|
```
|
||||||
|
|
||||||
|
J8 did not modify the J7 rollback point:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
git revert ce41efb9e5938f79a7580476b949d172f52a1e69
|
git revert ce41efb9e5938f79a7580476b949d172f52a1e69
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Modern runtime Slice K — Linux headless and multi-session host
|
# 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
|
**Parent:** `2026-07-24-modern-runtime-architecture.md`, Slice K
|
||||||
**Authorization:** the user approved Slices F–L on 2026-07-24
|
**Authorization:** the user approved Slices F–L on 2026-07-24
|
||||||
**Purpose:** run efficient automated clients on Linux without a display, GPU,
|
**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
|
## 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,
|
world, receive authoritative state, move, use, fight/cast, portal, stop,
|
||||||
reconnect, and converge without presentation assemblies.
|
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
|
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.
|
App again and does not create a bot-specific world model.
|
||||||
|
|
||||||
|
|
|
||||||
94
docs/research/2026-07-27-slice-j8-no-window-closeout.md
Normal file
94
docs/research/2026-07-27-slice-j8-no-window-closeout.md
Normal file
|
|
@ -0,0 +1,94 @@
|
||||||
|
# Slice J8 no-window integration and Slice J closeout
|
||||||
|
|
||||||
|
## Outcome
|
||||||
|
|
||||||
|
Slice J closed at `a9a822f206cc6021bc099988144488f3bd7c397b`.
|
||||||
|
The graphical client and direct no-window host now construct and borrow the
|
||||||
|
same `GameRuntime`, canonical gameplay owners, generation token, and retryable
|
||||||
|
generation-reset transaction. No gameplay model or GUID map was duplicated.
|
||||||
|
|
||||||
|
Exact rollback:
|
||||||
|
|
||||||
|
```text
|
||||||
|
git revert a9a822f206cc6021bc099988144488f3bd7c397b
|
||||||
|
```
|
||||||
|
|
||||||
|
## Canonical reset ownership
|
||||||
|
|
||||||
|
`RuntimeGenerationReset` owns the exact-generation reset order for transit,
|
||||||
|
commands, containers, actions, movement, object tables, character, item mana,
|
||||||
|
social state, entity retirement, host-projection acknowledgement, canonical
|
||||||
|
entity completion, chat identity, snapshots, and player identity.
|
||||||
|
|
||||||
|
The reset is a retained-cursor transaction:
|
||||||
|
|
||||||
|
- completed stages never replay after a callback failure;
|
||||||
|
- entity retirement uses exact `RuntimeEntityKey` incarnations;
|
||||||
|
- canonical identity clears only after Runtime and host projections converge;
|
||||||
|
- duplicate completed reset is inert;
|
||||||
|
- re-entry or host replacement for an active generation is rejected.
|
||||||
|
|
||||||
|
The graphical reset manifest invokes this transaction once and retains only
|
||||||
|
App presentation cleanup. `NoWindowGameRuntimeHost` invokes the same Runtime
|
||||||
|
transaction without loading App or a presentation backend.
|
||||||
|
|
||||||
|
## Direct-host proof
|
||||||
|
|
||||||
|
The deterministic no-window scenario covers:
|
||||||
|
|
||||||
|
- connect, character selection, enter world, and outbound activation;
|
||||||
|
- entity/object/inventory/chat/vital/environment/movement state;
|
||||||
|
- movement, use, attack, cast, projectile, and portal operations;
|
||||||
|
- portal host acknowledgement;
|
||||||
|
- graceful stop, reconnect, stale-route rejection, and GUID reuse;
|
||||||
|
- reset retry/no-replay and portal cancellation before/after readiness;
|
||||||
|
- observer-failure containment;
|
||||||
|
- two simultaneous roots with isolated credentials, clocks, GUIDs, items,
|
||||||
|
chat, spells, projectiles, portals, and teardown;
|
||||||
|
- credential-safe traces with no password text;
|
||||||
|
- terminal zero ownership and backlog convergence.
|
||||||
|
|
||||||
|
The direct test process loads no App, UI, renderer, audio, Silk.NET, OpenAL,
|
||||||
|
Arch, or ImGui assembly.
|
||||||
|
|
||||||
|
## Retail chat-history decision
|
||||||
|
|
||||||
|
The integrated reconnect trace retains the bounded chat transcript while
|
||||||
|
clearing active command targets and character identity. This matches the named
|
||||||
|
retail ownership:
|
||||||
|
|
||||||
|
- `CPlayerSystem::OnEndCharacterSession` at `0x00562870` ends and begins the
|
||||||
|
character session.
|
||||||
|
- `ClientUISystem::OnEndCharacterSession` at `0x00564AD0` calls
|
||||||
|
`ClientUISystem::CleanUpGameUI` at `0x005648A0`.
|
||||||
|
- That cleanup clears trade, vendor, ground-container, and selection state;
|
||||||
|
it does not clear the chat buffer.
|
||||||
|
- Explicit `ClientCommunicationSystem::DoClear` at `0x0056E600` owns the
|
||||||
|
clear-chat-buffer notice.
|
||||||
|
|
||||||
|
No reconnect-time chat purge was added.
|
||||||
|
|
||||||
|
## Acceptance evidence
|
||||||
|
|
||||||
|
- Runtime tests: 395/395.
|
||||||
|
- App tests: 3,731 pass / 3 intentional skips.
|
||||||
|
- Complete Release solution: 8,696 pass / 5 intentional skips.
|
||||||
|
- Connected lifecycle/reconnect:
|
||||||
|
`logs/connected-world-gate-20260727-004418/report.json`.
|
||||||
|
- Canonical nine-stop:
|
||||||
|
`logs/connected-r6-soak-20260727-004942.report.json`.
|
||||||
|
- J7's exact graphical visual matrix was accepted by the user on 2026-07-27.
|
||||||
|
|
||||||
|
The connected routes exited gracefully with zero failures and no pending
|
||||||
|
publication, retirement, upload, warmup, or ownership backlog. Population-
|
||||||
|
sensitive object/particle counts and missing-DAT VFX diagnostics were recorded
|
||||||
|
but did not violate the route invariants.
|
||||||
|
|
||||||
|
## Audits
|
||||||
|
|
||||||
|
- Dependency closure: pass.
|
||||||
|
- Presentation/backend assembly isolation: pass.
|
||||||
|
- Duplicate canonical constructors/maps: none.
|
||||||
|
- Mutable process-wide session state: none introduced.
|
||||||
|
- Teardown ledger convergence: pass.
|
||||||
|
- Retail divergence register: no new behavioral divergence.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue