docs(headless): record K4 telemetry checkpoint
This commit is contained in:
parent
cb512fd091
commit
93c6c54220
7 changed files with 197 additions and 14 deletions
17
AGENTS.md
17
AGENTS.md
|
|
@ -376,7 +376,17 @@ ForcePosition projection, explicit-only collision diagnostics, visible Windows
|
|||
and native Linux production runs, user-accepted smooth retail-observer
|
||||
movement, and ACE-confirmed graceful logout. Final gates pass 412 Runtime, 47
|
||||
Headless, 3,722 App / 3 skips, and 8,764 complete Release tests / 5 skips.
|
||||
K4 1/5/10/30-session resource-ceiling and stress work is active.
|
||||
K4 1/5/10/30-session resource-ceiling and stress work is active. Its
|
||||
`cb512fd0` checkpoint adds one process-scheduler observation deadline,
|
||||
structured CPU/private/resident/managed/GC/thread/handle/Linux-descriptor/
|
||||
socket/session/content/ownership/wakeup/lateness metrics, and exact
|
||||
post-disposal convergence without per-session workers or timers. The first
|
||||
native Linux two-account run exposed and corrected pre-connect deadline arming
|
||||
and a sub-millisecond `Task.Delay` busy loop. Windows and native Ubuntu
|
||||
Headless tests pass 56/56; the complete Release suite passes 8,773 / 5 skips.
|
||||
The user requested that the current two-client observer process remain
|
||||
running; exact-fixed-binary resource ceilings and automated 5/10/30-root
|
||||
endurance remain.
|
||||
J0's rollback is
|
||||
`git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`.
|
||||
J1's rollback is
|
||||
|
|
@ -443,6 +453,8 @@ K2's rollback is, newest first,
|
|||
K3's connected-closeout rollback is
|
||||
`git revert 3f3401257c83bdd9f557eb577ba08cf2e5ec9a06`; its earlier automated
|
||||
checkpoint rollbacks remain recorded in the Slice K plan.
|
||||
K4's resource-telemetry/CPU rollback is
|
||||
`git revert cb512fd0916fbf49285c9b64df1630c5a69a0d20`.
|
||||
Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network
|
||||
work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate
|
||||
passes. Slice I is closed in
|
||||
|
|
@ -475,7 +487,8 @@ 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`. The exact G4 visual
|
||||
from `docs/plans/2026-07-26-modern-runtime-slice-k.md`; K4 telemetry 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
|
||||
the portal-warmup corrections. Evidence:
|
||||
|
|
|
|||
17
CLAUDE.md
17
CLAUDE.md
|
|
@ -374,7 +374,17 @@ ForcePosition projection, explicit-only collision diagnostics, visible Windows
|
|||
and native Linux production runs, user-accepted smooth retail-observer
|
||||
movement, and ACE-confirmed graceful logout. Final gates pass 412 Runtime, 47
|
||||
Headless, 3,722 App / 3 skips, and 8,764 complete Release tests / 5 skips.
|
||||
K4 1/5/10/30-session resource-ceiling and stress work is active.
|
||||
K4 1/5/10/30-session resource-ceiling and stress work is active. Its
|
||||
`cb512fd0` checkpoint adds one process-scheduler observation deadline,
|
||||
structured CPU/private/resident/managed/GC/thread/handle/Linux-descriptor/
|
||||
socket/session/content/ownership/wakeup/lateness metrics, and exact
|
||||
post-disposal convergence without per-session workers or timers. The first
|
||||
native Linux two-account run exposed and corrected pre-connect deadline arming
|
||||
and a sub-millisecond `Task.Delay` busy loop. Windows and native Ubuntu
|
||||
Headless tests pass 56/56; the complete Release suite passes 8,773 / 5 skips.
|
||||
The user requested that the current two-client observer process remain
|
||||
running; exact-fixed-binary resource ceilings and automated 5/10/30-root
|
||||
endurance remain.
|
||||
J0's rollback is
|
||||
`git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`.
|
||||
J1's rollback is
|
||||
|
|
@ -441,6 +451,8 @@ K2's rollback is, newest first,
|
|||
K3's connected-closeout rollback is
|
||||
`git revert 3f3401257c83bdd9f557eb577ba08cf2e5ec9a06`; its earlier automated
|
||||
checkpoint rollbacks remain recorded in the Slice K plan.
|
||||
K4's resource-telemetry/CPU rollback is
|
||||
`git revert cb512fd0916fbf49285c9b64df1630c5a69a0d20`.
|
||||
Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network
|
||||
work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate
|
||||
passes. Slice I is closed in
|
||||
|
|
@ -473,7 +485,8 @@ 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`. The exact G4 visual
|
||||
from `docs/plans/2026-07-26-modern-runtime-slice-k.md`; K4 telemetry 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
|
||||
the portal-warmup corrections. Evidence:
|
||||
|
|
|
|||
|
|
@ -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 30-session resource and stability work 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; 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 resource and stability work is active; `cb512fd0` adds process-level CPU/memory/GC/descriptor/ownership/scheduler telemetry and corrects both pre-connect deadline arming and the Linux sub-millisecond scheduler busy loop. 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.
|
||||
|
||||
---
|
||||
|
|
@ -1808,7 +1808,12 @@ port in any phase — no separate listing here.
|
|||
> event parity closed at `7e8acb74` plus `38e83640`; K3 closed at
|
||||
> `3f340125` after the shared-content/collision/isolation checkpoint, visible
|
||||
> Windows and native Linux production runs, exact portal routing, graceful
|
||||
> teardown, and user-accepted retail-observer movement. K4 is active.
|
||||
> teardown, and user-accepted retail-observer movement. K4 is active;
|
||||
> `cb512fd0` adds one process-level resource/ownership sampling deadline,
|
||||
> exact scheduler lateness/wakeup accounting, terminal convergence reporting,
|
||||
> post-connect deadline rebasing, and the Linux sub-millisecond busy-wait
|
||||
> correction. Windows/native-Ubuntu Headless tests pass 56/56 and the complete
|
||||
> Release suite passes 8,773 / 5 skips.
|
||||
> The historical exact cutover
|
||||
> rollback remains
|
||||
> `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. Slice H is complete:
|
||||
|
|
@ -1855,7 +1860,9 @@ hitch and follows.
|
|||
> 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 active. The historical LH rows below remain the stable outcome map.
|
||||
> K4 is active. Its telemetry/CPU checkpoint is `cb512fd0`; exact fixed-binary
|
||||
> connected baselines and automated 5/10/30-root endurance gates remain. 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,
|
||||
|
|
|
|||
|
|
@ -304,7 +304,15 @@ residency is `0/0/0` at every stable checkpoint and teardown converges. Slice I
|
|||
observer movement, graceful logout, and the corrected normal-position versus
|
||||
ForcePosition routing pass. Final gates report 412 Runtime, 47 Headless,
|
||||
3,722 App / 3 skips, and 8,764 complete Release tests / 5 skips. K4
|
||||
1/5/10/30-session resource-ceiling and stress work is active.
|
||||
1/5/10/30-session resource-ceiling and stress work is active. Its
|
||||
`cb512fd0` telemetry checkpoint adds one process-level sampling deadline,
|
||||
structured CPU/memory/GC/thread/descriptor/socket/ownership/content/
|
||||
scheduler metrics, exact terminal convergence, post-connect deadline
|
||||
rebasing, and the Linux sub-millisecond busy-wait correction without adding
|
||||
per-session workers or timers. Windows and native Ubuntu Headless tests pass
|
||||
56/56 and the complete Release suite passes 8,773 tests / 5 skips. The
|
||||
exact-fixed-binary one/two-account baseline and automated 5/10/30-root
|
||||
endurance gates remain.
|
||||
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
|
||||
|
|
|
|||
|
|
@ -341,6 +341,18 @@ disposes only after the final host acknowledgement.
|
|||
|
||||
### K4 — 30-session stress and closeout
|
||||
|
||||
K4 telemetry checkpoint `cb512fd0` is complete. One process-level
|
||||
absolute-deadline sampler now reports CPU, private/resident/managed memory,
|
||||
GC, threads, handles, Linux descriptors/sockets, session/ownership debt,
|
||||
shared-content leases, scheduler wakeups, and deadline lateness without adding
|
||||
per-session workers or timers. The first native Linux two-account run exposed
|
||||
and corrected both pre-connect deadline arming and a sub-millisecond
|
||||
`Task.Delay` busy loop. Windows and native Ubuntu Headless tests pass 56/56;
|
||||
the complete Release suite passes 8,773 tests / 5 skips. The user requested
|
||||
that the active two-client observer process remain running, so the exact fixed-
|
||||
binary connected baseline and numeric ceilings remain next. Evidence:
|
||||
`docs/research/2026-07-27-slice-k4-resource-telemetry-checkpoint.md`.
|
||||
|
||||
- Measure a 1-session warm baseline, then 5, 10, and 30 sessions.
|
||||
- Before the final run, commit numeric ceilings derived from K3 evidence for:
|
||||
- incremental private bytes per established session;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,115 @@
|
|||
# Slice K4 resource telemetry checkpoint
|
||||
|
||||
**Date:** 2026-07-27
|
||||
**Status:** Instrumentation and CPU-wakeup correction complete; fixed-binary
|
||||
connected baselines remain active
|
||||
**Production commit:** `cb512fd0`
|
||||
|
||||
## Outcome
|
||||
|
||||
The Linux headless process now emits one structured resource sample at
|
||||
startup, every 30 seconds, before scheduler stop, and after terminal disposal.
|
||||
Sampling is driven by the existing process scheduler's absolute deadline. It
|
||||
does not add a worker, timer, or callback per session.
|
||||
|
||||
Each sample reports:
|
||||
|
||||
- working set, private bytes, virtual bytes, total CPU time, interval CPU as
|
||||
both core-equivalent and machine-normalized percentages;
|
||||
- managed live, heap, fragmentation, committed and allocated bytes, memory
|
||||
load, GC pause percentage, and generation counts;
|
||||
- process thread/handle counts and Linux file/socket descriptors;
|
||||
- configured, in-world, faulted, reconnecting, and converged Runtime roots,
|
||||
entity/inventory totals, and exact host-lease count;
|
||||
- scheduler waits, turns, catch-up collapses, late-deadline count, mean and
|
||||
maximum lateness;
|
||||
- shared-content lease count, mapped virtual bytes, disposal state, and final
|
||||
convergence.
|
||||
|
||||
No account password or credential reference is included in this schema.
|
||||
|
||||
## Two-account connected evidence
|
||||
|
||||
One native Linux process connected the two locally available accounts:
|
||||
|
||||
- `testaccount` / `+Acdream`
|
||||
- `testaccount2` / `+Horan`
|
||||
|
||||
Both entered Rynthid and maintained independent Runtime roots and movement.
|
||||
The user asked that this process stay running for the retail-observer gate.
|
||||
|
||||
The first process sample after both world entries reported:
|
||||
|
||||
| Metric | Value |
|
||||
|---|---:|
|
||||
| private bytes | 207,966,208 |
|
||||
| working set | 191,553,536 |
|
||||
| managed live bytes | 71,108,368 |
|
||||
| threads | 16 |
|
||||
| handles | 115 |
|
||||
| Linux descriptors | 114 |
|
||||
| socket descriptors | 3 |
|
||||
| shared content leases | 2 |
|
||||
| mapped package virtual bytes | 29,908,271,024 |
|
||||
|
||||
The roughly 29.9 GB mapped-package value is address space, not resident or
|
||||
private memory. The mmap remains shared and demand-paged.
|
||||
|
||||
After movement and additional portal/density activity, the latest recorded
|
||||
sample before this checkpoint reported 305,393,664 private bytes, 332,742,656
|
||||
working-set bytes, 139,609,360 managed live bytes, 418 entities, 16 threads,
|
||||
117 handles, and the same three socket descriptors. Entity count changed from
|
||||
187 to 418 during that interval, so the memory delta is not treated as a
|
||||
same-workload per-session ceiling.
|
||||
|
||||
## Scheduler finding and correction
|
||||
|
||||
The connected samples exposed two distinct scheduler problems:
|
||||
|
||||
1. scheduler deadlines began during host construction, before sequential
|
||||
account connects completed, producing a false initial catch-up and a
|
||||
roughly 615 ms maximum-lateness sample;
|
||||
2. the final positive sub-millisecond `Task.Delay` remainder rounded down to
|
||||
zero on Linux, causing millions of wait-loop turns between actual 15 ms
|
||||
simulation deadlines.
|
||||
|
||||
The correction:
|
||||
|
||||
- rebases every session and observation deadline exactly once after all
|
||||
configured sessions enter the world;
|
||||
- refuses to rebase a scheduler that has already dispatched;
|
||||
- rounds only positive sub-millisecond timer waits up to one millisecond;
|
||||
- retains the 15 ms absolute simulation cadence and bounded catch-up rules.
|
||||
|
||||
The process still under user observation was intentionally not restarted, so
|
||||
its high wait counter belongs to the pre-correction artifact. The committed
|
||||
correction is protected by deterministic rebase/lateness tests and a real
|
||||
system-timer test that fails if the scheduler busy-loops between turns.
|
||||
|
||||
## Automated gates
|
||||
|
||||
- Windows Headless Release: 56 passed.
|
||||
- Native Ubuntu Headless Release: 56 passed.
|
||||
- Complete Windows Release suite: 8,773 passed / 5 skipped.
|
||||
- Windows and native Ubuntu Release builds complete.
|
||||
- Diagnostics assert two configured sessions, no password text, and exact
|
||||
two-runtime terminal convergence.
|
||||
|
||||
## Remaining K4 gate
|
||||
|
||||
The next connected restart must use exact binary `cb512fd0` or a documented
|
||||
descendant and prove the wait counter remains cadence-bounded, initial
|
||||
catch-up remains zero, CPU falls accordingly, and terminal resource samples
|
||||
converge. Available credentials support a two-account connected scale gate.
|
||||
The 5/10/30-session isolation and endurance dimensions therefore remain
|
||||
automated in-process gates unless additional local ACE accounts are
|
||||
provisioned.
|
||||
|
||||
Numeric ceilings are not yet committed: they will be derived only from the
|
||||
fixed binary under matched 1- and 2-session workloads.
|
||||
|
||||
## Rollback
|
||||
|
||||
```text
|
||||
git revert cb512fd0
|
||||
```
|
||||
|
|
@ -7,6 +7,13 @@ Slice J is closed. Slice K0-K3 are closed; K4 is active.
|
|||
K3's production closeout commit is `3f340125`. Its automated predecessors are
|
||||
`12b500d3`, `9569dadb`, and `b6547ff3`.
|
||||
|
||||
K4's resource-telemetry/CPU checkpoint is `cb512fd0`. It adds one
|
||||
process-scheduler observation deadline, structured process/managed/session/
|
||||
content/scheduler metrics, exact post-disposal convergence reporting, startup
|
||||
deadline rebasing, and the Linux sub-millisecond busy-wait correction. It does
|
||||
not add per-session timers or workers. Windows and native Ubuntu Headless
|
||||
tests pass 56/56; the complete Release suite passes 8,773 / 5 skips.
|
||||
|
||||
The Windows visible-terminal host and native Linux/WSL host both connected to
|
||||
local ACE without loading presentation assemblies. Linux completed the
|
||||
Aerlinthe/Caul/Rynthid/lifestone route, accepted external `teleallto`
|
||||
|
|
@ -49,12 +56,14 @@ continues to use credential providers.
|
|||
|
||||
Execute K4 from `docs/plans/2026-07-26-modern-runtime-slice-k.md`:
|
||||
|
||||
1. capture reproducible 1/5/10-session warm resource baselines;
|
||||
2. derive and commit numeric per-session/process ceilings;
|
||||
3. build the 30-session connected stress configuration and workload;
|
||||
4. run the two-hour Linux soak with recurring movement, use, combat/cast,
|
||||
chat, portal, cancellation, and reconnect;
|
||||
5. prove stable final-hour plateaus and exact teardown convergence;
|
||||
1. after the user finishes observing the current two clients, restart on exact
|
||||
`cb512fd0` or a documented descendant;
|
||||
2. prove cadence-bounded wait count, zero startup catch-up, reduced CPU, and
|
||||
exact teardown convergence under matched one- and two-account workloads;
|
||||
3. derive and commit numeric per-session/process ceilings;
|
||||
4. run automated 5/10/30-root stress and endurance gates; the connected scale
|
||||
gate is presently limited to the two available local ACE accounts;
|
||||
5. prove stable plateaus and exact teardown convergence;
|
||||
6. close Slice K, then start Slice L Linux graphical/platform work.
|
||||
|
||||
Final K3 automated counts: Runtime 412, Headless 47, App 3,722 / 3 skips,
|
||||
|
|
@ -65,3 +74,9 @@ K3 connected-closeout rollback:
|
|||
```text
|
||||
git revert 3f3401257c83bdd9f557eb577ba08cf2e5ec9a06
|
||||
```
|
||||
|
||||
K4 telemetry/CPU rollback:
|
||||
|
||||
```text
|
||||
git revert cb512fd0
|
||||
```
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue