acdream/memory/project_modern_runtime_headless.md

3.2 KiB

Modern Runtime headless continuation

Current checkpoint

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 destinations, remained visible to a retail observer, turned and ran smoothly, and shut down through ACE-confirmed graceful logout. The user accepted the observer movement gate on 2026-07-27.

Important connected correction

RuntimeLiveEntitySessionController passes the exact accepted PositionTimestampDisposition to the direct world projection.

  • Normal Apply echoes update canonical state but do not reset the local headless movement controller.
  • ForcePosition uses BlipPosition, preserves active movement semantics, and sends an immediate autonomous-position acknowledgement.
  • A real teleport performs one full synchronization from PrepareDestination.

Do not reintroduce full local-player synchronization for every accepted Position packet; it stops movement and causes retail observers to see repeated run/snap-back rubberbanding.

Collision [snap] output is high volume and must remain behind the explicit PhysicsEngine.DiagnosticLog sink.

Automation seam

Graphical automation and headless policies use IGameRuntimeView, IGameRuntimeCommands, IRuntimeEventSource, and the same RuntimeLocalPlayerFrameController/outbound serializers. The route and observer policies are diagnostic consumers, not a second bot world or movement implementation.

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.

Next work

Execute K4 from docs/plans/2026-07-26-modern-runtime-slice-k.md:

  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, complete Release 8,764 / 5 skips.

K3 connected-closeout rollback:

git revert 3f3401257c83bdd9f557eb577ba08cf2e5ec9a06

K4 telemetry/CPU rollback:

git revert cb512fd0