From 1628d9f5878e3a7ad6409ca6ad7017d5e1450dd2 Mon Sep 17 00:00:00 2001 From: Erik Date: Mon, 27 Jul 2026 11:31:19 +0200 Subject: [PATCH] docs(headless): close modern runtime slice K --- AGENTS.md | 20 ++++++----- CLAUDE.md | 20 ++++++----- docs/architecture/acdream-architecture.md | 5 ++- docs/plans/2026-04-11-roadmap.md | 30 +++++++++------- docs/plans/2026-05-12-milestones.md | 11 +++--- .../2026-07-26-modern-runtime-slice-k.md | 15 ++++---- ...-slice-k4-resource-telemetry-checkpoint.md | 35 +++++++++++-------- memory/project_modern_runtime_headless.md | 30 +++++++++------- 8 files changed, 97 insertions(+), 69 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 38117d97..c3a6ac8a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -350,7 +350,7 @@ 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. K0 completed at +Linux headless/multi-session implementation is complete. K0 completed at `aada8a37`: `AcDream.Headless` references only Runtime, strict no-connect validation and dependency/loaded-assembly guards pass, and the local Ubuntu closure passes 600 Core.Net, 119 Content, 395 Runtime, and 12 Headless tests. @@ -384,11 +384,13 @@ endurance gates; `bd236ce5` added death and randomized cancellation coverage; `776482da` committed the diagnostic-only 30-session resource envelope and exact running/terminal ownership checks. Windows and native Ubuntu Headless tests pass 67/67; the complete Release suite passes 8,784 / 5 skips. The exact -`776482da` native Linux two-account process is currently running at Rynthid: -both sessions are in-world with zero faults, bounded scheduler cadence, and -every sampled CPU/memory/thread/descriptor/socket/lateness dimension within -the committed ceiling. Its graceful terminal convergence remains the final -K4/Slice-K closeout gate. +`776482da` native Linux two-account process ran for ten minutes with 20 +consecutive passing periodic samples, zero faults/reconnect debt, bounded +scheduler cadence, and every resource dimension inside its ceiling. SIGINT +produced ACE-confirmed graceful logout for both accounts and a passing final +`disposed` sample: two converged Runtime roots, zero entities/inventory/host +or content leases, and disposed shared content. K4 and Slice K are closed; +Slice L Linux graphical/platform work is active. J0's rollback is `git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`. J1's rollback is @@ -491,8 +493,8 @@ closeout is `docs/research/2026-07-27-slice-j8-no-window-closeout.md`; K0 closeout is `docs/research/2026-07-27-slice-k0-portability-boundary.md`; K1 closeout is `docs/research/2026-07-27-slice-k1-single-session-headless.md`; K2 closeout is -`docs/research/2026-07-27-slice-k2-deterministic-bot-parity.md`; Slice K executes -from `docs/plans/2026-07-26-modern-runtime-slice-k.md`; K4 telemetry evidence is +`docs/research/2026-07-27-slice-k2-deterministic-bot-parity.md`; Slice K is +closed in `docs/plans/2026-07-26-modern-runtime-slice-k.md`; K4 evidence is `docs/research/2026-07-27-slice-k4-resource-telemetry-checkpoint.md`. The exact G4 visual rollback is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or @@ -533,7 +535,7 @@ uncapped Release presentation is smooth, while physics, collision, and wire truth remain correct. See `docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md` and `docs/architecture/code-structure.md`. **Carried:** #153, #116, remaining -R6 ownership cleanup, TS-50/TS-51/TS-53, Modern Runtime Slice K+, and #225's +R6 ownership cleanup, TS-50/TS-51/TS-53, Modern Runtime Slice L, and #225's lifestone/particle alpha visual gate. Start structural work at `memory/project_gamewindow_decomposition.md` and diff --git a/CLAUDE.md b/CLAUDE.md index 7fda0dfa..7af2c034 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -348,7 +348,7 @@ 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. K0 completed at +Linux headless/multi-session implementation is complete. K0 completed at `aada8a37`: `AcDream.Headless` references only Runtime, strict no-connect validation and dependency/loaded-assembly guards pass, and the local Ubuntu closure passes 600 Core.Net, 119 Content, 395 Runtime, and 12 Headless tests. @@ -382,11 +382,13 @@ endurance gates; `bd236ce5` added death and randomized cancellation coverage; `776482da` committed the diagnostic-only 30-session resource envelope and exact running/terminal ownership checks. Windows and native Ubuntu Headless tests pass 67/67; the complete Release suite passes 8,784 / 5 skips. The exact -`776482da` native Linux two-account process is currently running at Rynthid: -both sessions are in-world with zero faults, bounded scheduler cadence, and -every sampled CPU/memory/thread/descriptor/socket/lateness dimension within -the committed ceiling. Its graceful terminal convergence remains the final -K4/Slice-K closeout gate. +`776482da` native Linux two-account process ran for ten minutes with 20 +consecutive passing periodic samples, zero faults/reconnect debt, bounded +scheduler cadence, and every resource dimension inside its ceiling. SIGINT +produced ACE-confirmed graceful logout for both accounts and a passing final +`disposed` sample: two converged Runtime roots, zero entities/inventory/host +or content leases, and disposed shared content. K4 and Slice K are closed; +Slice L Linux graphical/platform work is active. J0's rollback is `git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`. J1's rollback is @@ -489,8 +491,8 @@ closeout is `docs/research/2026-07-27-slice-j8-no-window-closeout.md`; K0 closeout is `docs/research/2026-07-27-slice-k0-portability-boundary.md`; K1 closeout is `docs/research/2026-07-27-slice-k1-single-session-headless.md`; K2 closeout is -`docs/research/2026-07-27-slice-k2-deterministic-bot-parity.md`; Slice K executes -from `docs/plans/2026-07-26-modern-runtime-slice-k.md`; K4 telemetry evidence is +`docs/research/2026-07-27-slice-k2-deterministic-bot-parity.md`; Slice K is +closed in `docs/plans/2026-07-26-modern-runtime-slice-k.md`; K4 evidence is `docs/research/2026-07-27-slice-k4-resource-telemetry-checkpoint.md`. The exact G4 visual rollback is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or @@ -531,7 +533,7 @@ uncapped Release presentation is smooth, while physics, collision, and wire truth remain correct. See `docs/plans/2026-07-22-gamewindow-slice-8-composition-lifecycle.md` and `docs/architecture/code-structure.md`. **Carried:** #153, #116, remaining -R6 ownership cleanup, TS-50/TS-51/TS-53, Modern Runtime Slice K+, and #225's +R6 ownership cleanup, TS-50/TS-51/TS-53, Modern Runtime Slice L, and #225's lifestone/particle alpha visual gate. Start structural work at `memory/project_gamewindow_decomposition.md` and diff --git a/docs/architecture/acdream-architecture.md b/docs/architecture/acdream-architecture.md index 38de6c8b..27d40424 100644 --- a/docs/architecture/acdream-architecture.md +++ b/docs/architecture/acdream-architecture.md @@ -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 diff --git a/docs/plans/2026-04-11-roadmap.md b/docs/plans/2026-04-11-roadmap.md index 66d8e8d3..c31e59bf 100644 --- a/docs/plans/2026-04-11-roadmap.md +++ b/docs/plans/2026-04-11-roadmap.md @@ -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 diff --git a/docs/plans/2026-05-12-milestones.md b/docs/plans/2026-05-12-milestones.md index c90d2961..5e9ba783 100644 --- a/docs/plans/2026-05-12-milestones.md +++ b/docs/plans/2026-05-12-milestones.md @@ -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 diff --git a/docs/plans/2026-07-26-modern-runtime-slice-k.md b/docs/plans/2026-07-26-modern-runtime-slice-k.md index 888ce06b..14fb6fa3 100644 --- a/docs/plans/2026-07-26-modern-runtime-slice-k.md +++ b/docs/plans/2026-07-26-modern-runtime-slice-k.md @@ -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. diff --git a/docs/research/2026-07-27-slice-k4-resource-telemetry-checkpoint.md b/docs/research/2026-07-27-slice-k4-resource-telemetry-checkpoint.md index 2a2c2c3f..0ad0a8d8 100644 --- a/docs/research/2026-07-27-slice-k4-resource-telemetry-checkpoint.md +++ b/docs/research/2026-07-27-slice-k4-resource-telemetry-checkpoint.md @@ -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 diff --git a/memory/project_modern_runtime_headless.md b/memory/project_modern_runtime_headless.md index 82ebddd5..aef9ebd7 100644 --- a/memory/project_modern_runtime_headless.md +++ b/memory/project_modern_runtime_headless.md @@ -2,8 +2,7 @@ ## Current checkpoint -Slice J is closed. Slice K0-K3 are closed; K4 implementation is complete -through `776482da`, with the exact connected terminal gate active. +Slice J and Slice K are closed. K4 completed through `776482da`. K3's production closeout commit is `3f340125`. Its automated predecessors are `12b500d3`, `9569dadb`, and `b6547ff3`. @@ -59,18 +58,25 @@ The user requires optional direct single-session CLI launch with `-user`/`-password` or the long-form aliases. Multi-session configuration continues to use credential providers. +## Final connected closeout + +The exact `776482da` native Linux process ran both available accounts for ten +minutes. Twenty consecutive periodic samples passed the committed envelope +with zero fault/reconnect debt. SIGINT produced ACE-confirmed graceful logout +for both accounts. The final `disposed` sample had two converged Runtime roots, +zero entities/inventory/host/content leases, disposed shared content, and +`withinCeilings=true`. + ## Next work -Finish K4 from `docs/plans/2026-07-26-modern-runtime-slice-k.md`: - -1. keep the exact `776482da` two-account Rynthid process running while the user - observes it; -2. verify every periodic sample remains inside the committed envelope with no - fault/reconnect/lease debt; -3. stop it gracefully and require a final `disposed` sample with two converged - Runtime roots, zero entities/inventory/host leases, disposed shared - content, and `withinCeilings=true`; -4. close Slice K and begin Slice L Linux graphical/platform work. +Slice L is active under +`docs/plans/2026-07-26-modern-runtime-slice-l.md`. The initial read-only L0 +probe already proves framework-dependent `linux-x64` App publish succeeds and +ships resolved GLFW, OpenAL Soft, and cimgui native libraries. The smoke plugin +is missing from the publish because its copy target uses Windows-shaped paths. +Frame pacing still directly constructs the Windows waitable-timer owner, and +App/UI persistence still defaults to Windows `LocalApplicationData`; those +are the first L0 implementation seams. Final K3 automated counts: Runtime 412, Headless 47, App 3,722 / 3 skips, complete Release 8,764 / 5 skips.