docs(headless): record K4 telemetry checkpoint

This commit is contained in:
Erik 2026-07-27 10:50:19 +02:00
parent cb512fd091
commit 93c6c54220
7 changed files with 197 additions and 14 deletions

View file

@ -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
```