acdream/memory/project_modern_runtime_headless.md

82 lines
3.2 KiB
Markdown

# 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:
```text
git revert 3f3401257c83bdd9f557eb577ba08cf2e5ec9a06
```
K4 telemetry/CPU rollback:
```text
git revert cb512fd0
```