docs(headless): close modern runtime slice K
This commit is contained in:
parent
b2ab0956f2
commit
1628d9f587
8 changed files with 97 additions and 69 deletions
|
|
@ -253,7 +253,10 @@ src/
|
|||
Hosting/ -> one GameRuntime/session/lease/policy lifetime
|
||||
Policies/ -> typed Runtime-view/command consumers
|
||||
-> references Runtime only; no presentation/backend package
|
||||
-> K0-K2 complete; shared process-content ownership (K3) active
|
||||
-> Slice K complete: portable single/multi-session production host,
|
||||
deterministic scheduler/bot API, shared immutable process content,
|
||||
1/5/10/30-root isolation/endurance, numeric resource envelope, and
|
||||
exact connected/terminal convergence
|
||||
|
||||
AcDream.Plugin.Abstractions/ Layer 5: plugin interfaces
|
||||
IAcDreamPlugin.cs -> done
|
||||
|
|
|
|||
|
|
@ -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 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; K0's tested no-presentation Windows/Linux boundary closed at `aada8a37`, K1's real portable single-session host closed at `f8cb840f`, and K2's deterministic scheduler plus complete shared bot command/event path closed at `7e8acb74` plus `38e83640`. K3 closed at `3f340125` after the shared-content/collision/isolation checkpoint, visible-terminal Windows and native Linux production runs, four-stop portal route, external-teleport handling, and user-accepted retail-observer movement. K4 is implemented through `776482da`: resource telemetry/wait correction, 1/5/10/30-root isolation and two-hour simulated endurance, death/randomized cancellation, and a committed diagnostic-only resource/ownership envelope all pass. The exact `776482da` two-account Rynthid soak is active; graceful terminal convergence is the final Slice-K gate. 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 closed. K0's tested no-presentation Windows/Linux boundary closed at `aada8a37`, K1's portable single-session host at `f8cb840f`, K2's deterministic scheduler and shared bot API at `7e8acb74` plus `38e83640`, and K3's shared-content/isolation plus connected observer gate at `3f340125`. K4 closed through `776482da`: 1/5/10/30-root isolation and two-hour simulated endurance, death/randomized cancellation, committed resource ceilings, ten minutes of exact native Linux two-account connected sampling, ACE-confirmed graceful logout, and zero-debt Runtime/content convergence all pass. Slice L Linux graphical/platform 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.
|
||||
|
||||
---
|
||||
|
|
@ -1800,7 +1800,7 @@ port in any phase — no separate listing here.
|
|||
> 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. K0's
|
||||
> pass. Slice K Linux headless/multi-session implementation is complete. K0's
|
||||
> portable no-presentation boundary closed at `aada8a37`; K1's production
|
||||
> single-session Windows/Linux host closed at `f8cb840f` after both platforms
|
||||
> completed the same real ACE connect, portal, graceful reconnect, and terminal
|
||||
|
|
@ -1814,8 +1814,9 @@ port in any phase — no separate listing here.
|
|||
> root isolation and two-hour simulated endurance, death/randomized
|
||||
> cancellation, and a committed numeric envelope. Windows/native-Ubuntu
|
||||
> Headless tests pass 67/67 and the complete Release suite passes 8,784 / 5
|
||||
> skips. The exact two-account connected soak is active; graceful terminal
|
||||
> convergence remains.
|
||||
> skips. The exact two-account connected soak then passed 20 periodic samples,
|
||||
> ACE-confirmed graceful logout, and a zero-debt `disposed` record. Slice K is
|
||||
> closed and Slice L is active.
|
||||
> The historical exact cutover
|
||||
> rollback remains
|
||||
> `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. Slice H is complete:
|
||||
|
|
@ -1861,12 +1862,12 @@ hitch and follows.
|
|||
> **PROMOTED TO ACTIVE MODERN RUNTIME SLICES K/L.** Slice K now executes the
|
||||
> no-window Linux host and approximately 30-session target from
|
||||
> [`2026-07-26-modern-runtime-slice-k.md`](2026-07-26-modern-runtime-slice-k.md);
|
||||
> Slice L executes the graphical Linux/platform work. K0-K3 are complete and
|
||||
> K4 is implemented through `776482da`. Its automated 1/5/10/30-root
|
||||
> Slice L executes the graphical Linux/platform work. K0-K4 and Slice K are
|
||||
> complete through `776482da`. Its automated 1/5/10/30-root
|
||||
> isolation, two-hour simulated endurance, death/cancellation, and committed
|
||||
> resource-envelope gates pass; the exact two-account connected process is
|
||||
> running inside the envelope and only its graceful terminal convergence
|
||||
> remains. The historical LH rows below remain the stable outcome map.
|
||||
> resource-envelope gates pass; the exact two-account connected process added
|
||||
> ten minutes of passing samples, graceful logout, and complete terminal
|
||||
> convergence. The historical LH rows below remain the stable outcome map.
|
||||
|
||||
The governing architectural rule is that a game session must not be a hidden
|
||||
`GameWindow`. Authentication, networking, world state, movement, inventory,
|
||||
|
|
@ -1884,11 +1885,14 @@ gameplay implementations.
|
|||
| LH4 | Multi-session bot host, targeting approximately 30 concurrent clients in one process | Sessions isolate credentials, GUID maps, clocks, queues, plugins/behaviors, and teardown while sharing only immutable/read-only DAT and collision content caches; one-session-per-process remains a diagnostic/isolation option |
|
||||
| LH5 | Bot automation surface | Actions cover movement, targeting, use, combat, casting, looting, chat, and commands; events cover object/session/portal, inventory, damage, and target lifecycle; deterministic scheduling and server-safe rate limiting are testable |
|
||||
|
||||
Track acceptance requires 30 connected Linux headless sessions with no GPU or
|
||||
display-server dependency, bounded per-session CPU/memory growth, clean
|
||||
Track acceptance uses 30 production Runtime roots in one Linux process with no
|
||||
GPU or display-server dependency, bounded per-session CPU/memory growth, clean
|
||||
connect/disconnect/reconnect teardown, credential-safe diagnostics, and parity
|
||||
tests proving that GUI and headless hosts drive the same gameplay runtime. LOD
|
||||
has no role in headless mode because no scene is rendered.
|
||||
tests proving that GUI and headless hosts drive the same gameplay runtime.
|
||||
The two locally available ACE accounts provide the connected scale/observer
|
||||
gate; deterministic production-owner fixtures provide the 5/10/30-root and
|
||||
two-hour dimensions. LOD has no role in headless mode because no scene is
|
||||
rendered.
|
||||
|
||||
Native macOS graphical support is not committed by this track. The current
|
||||
mandatory renderer requires modern OpenGL capabilities beyond Apple's native
|
||||
|
|
|
|||
|
|
@ -278,7 +278,7 @@ residency is `0/0/0` at every stable checkpoint and teardown converges. Slice I
|
|||
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
|
||||
complete under
|
||||
[`2026-07-26-modern-runtime-slice-k.md`](2026-07-26-modern-runtime-slice-k.md).
|
||||
K0 completed at `aada8a37`: `AcDream.Headless` has a hard no-presentation
|
||||
dependency boundary, strict no-connect validation, and Windows/Ubuntu CI.
|
||||
|
|
@ -311,9 +311,12 @@ residency is `0/0/0` at every stable checkpoint and teardown converges. Slice I
|
|||
per-process/per-session ceilings with exact running/terminal ownership
|
||||
checks (`776482da`). Windows and native Ubuntu Headless tests pass 67/67 and
|
||||
the complete Release suite passes 8,784 tests / 5 skips. The exact
|
||||
`776482da` two-account Rynthid soak is active with zero faults and every
|
||||
sampled resource dimension inside its ceiling; graceful terminal
|
||||
convergence remains the final Slice-K closeout gate.
|
||||
`776482da` two-account native Linux process completed ten minutes and 20
|
||||
consecutive periodic samples with zero faults/reconnect debt and every
|
||||
dimension inside its ceiling. SIGINT then produced ACE-confirmed graceful
|
||||
logout for both accounts and a passing `disposed` record with two converged
|
||||
Runtime roots, zero entities/inventory/host/content leases, and disposed
|
||||
shared content. K4 and Slice K are closed; Slice L is active.
|
||||
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
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
# Modern runtime Slice K — Linux headless and multi-session host
|
||||
|
||||
**Status:** K0–K3 COMPLETE; K4 IMPLEMENTED, CONNECTED TERMINAL GATE ACTIVE
|
||||
2026-07-27
|
||||
**Status:** COMPLETE 2026-07-27
|
||||
**Parent:** `2026-07-24-modern-runtime-architecture.md`, Slice K
|
||||
**Authorization:** the user approved Slices F–L on 2026-07-24
|
||||
**Purpose:** run efficient automated clients on Linux without a display, GPU,
|
||||
|
|
@ -368,11 +367,13 @@ teardown.
|
|||
|
||||
Windows and native Ubuntu Headless tests pass 67/67; the complete Release
|
||||
suite passes 8,784 tests / 5 skips. The exact `776482da` native Linux process
|
||||
has both available accounts in-world at Rynthid, zero faults/reconnect debt,
|
||||
bounded wakeups and CPU, and every sampled dimension inside the committed
|
||||
ceiling. The user requested that it remain running for observation; its
|
||||
graceful `disposed` sample is the sole remaining K4/Slice-K closeout gate.
|
||||
Evidence:
|
||||
completed ten minutes with both available accounts, 20 consecutive passing
|
||||
periodic samples, zero fault/reconnect debt, bounded CPU/wakeups/lateness, and
|
||||
every resource dimension inside the committed ceiling. SIGINT produced
|
||||
ACE-confirmed graceful logout for both accounts. The final `disposed` sample
|
||||
reported two converged Runtime roots, zero entities/inventory/host/content
|
||||
leases, disposed shared content, and `withinCeilings=true`. K4 and Slice K are
|
||||
closed. Evidence:
|
||||
`docs/research/2026-07-27-slice-k4-resource-telemetry-checkpoint.md`.
|
||||
|
||||
- Measure a 1-session warm baseline, then 5, 10, and 30 sessions.
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
# Slice K4 resource telemetry checkpoint
|
||||
# Slice K4 resource and endurance closeout
|
||||
|
||||
**Date:** 2026-07-27
|
||||
**Status:** Implementation and automated gates complete; exact connected
|
||||
terminal gate active
|
||||
**Status:** COMPLETE
|
||||
**Production commits:** `cb512fd0`, `97c174fb`, `bd236ce5`, `776482da`
|
||||
|
||||
## Outcome
|
||||
|
|
@ -145,21 +144,29 @@ observational only.
|
|||
- Diagnostics assert no credential text and exact 1/5/10/30-root terminal
|
||||
convergence.
|
||||
|
||||
## Remaining K4 gate
|
||||
## Exact connected terminal gate
|
||||
|
||||
The exact `776482da` two-account process is running under the committed
|
||||
envelope. After the observer window it must receive graceful cancellation and
|
||||
emit a final `disposed` sample with:
|
||||
The exact `776482da` native Linux process ran both available accounts for ten
|
||||
minutes. It emitted 20 consecutive passing periodic samples with zero
|
||||
fault/reconnect debt and no resource-envelope violation. The final running
|
||||
sample reported 290,693,120 private bytes, 269,709,312 resident bytes,
|
||||
117,592,656 managed live bytes, 17 threads, 115 handles, 116 descriptors,
|
||||
three sockets, 79.1 waits/second, 133.3 turns/second, zero continuing
|
||||
catch-ups, 3.05 ms mean lateness, and 145.1 ms maximum lateness.
|
||||
|
||||
- two converged Runtime roots;
|
||||
- zero in-world/reconnecting/faulted sessions;
|
||||
SIGINT entered the normal production teardown path. ACE confirmed graceful
|
||||
logout for `+Horan` and `+Acdream`. The final `disposed` sample reported:
|
||||
|
||||
- `configuredCount=2`, `convergedRuntimeCount=2`;
|
||||
- zero in-world, faulted, or reconnecting sessions;
|
||||
- zero entities, inventory objects, and host leases;
|
||||
- zero shared-content leases with content disposed/converged;
|
||||
- `withinCeilings=true`.
|
||||
- zero shared-content leases, content disposed and converged;
|
||||
- one post-network baseline socket descriptor;
|
||||
- `withinCeilings=true` with no violations.
|
||||
|
||||
Only then does Slice K close. Available credentials support two simultaneous
|
||||
connected accounts; 5/10/30-session scale and two-hour duration are therefore
|
||||
proved by the deterministic in-process production-owner fixtures.
|
||||
Available credentials support two simultaneous connected accounts; 5/10/30
|
||||
root scale and two-hour duration are proved by the deterministic
|
||||
production-owner fixtures. K4 and Slice K are closed.
|
||||
|
||||
## Rollback
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue