acdream/memory/project_modern_runtime_headless.md

2.6 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.

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. 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;
  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