acdream/memory/project_modern_runtime_headless.md

97 lines
3.8 KiB
Markdown

# Modern Runtime headless continuation
## Current checkpoint
Slice J and Slice K are closed. K4 completed through `776482da`.
K3's production closeout commit is `3f340125`. Its automated predecessors are
`12b500d3`, `9569dadb`, and `b6547ff3`.
K4 commits after the telemetry/CPU checkpoint are:
- `97c174fb`: 1/5/10/30-root content sharing, same-GUID isolation, portal,
reconnect, and 480,000-frame-per-root two-hour simulated endurance;
- `bd236ce5`: death during the endurance route plus five randomized
30-session cancellation-edge runs;
- `776482da`: committed diagnostic-only 30-session resource ceilings,
per-sample evaluation, named failures, and exact running/terminal ownership
checks.
Windows and native Ubuntu Headless tests pass 67/67; the complete Release
suite passes 8,784 / 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.
## Final connected closeout
The exact `776482da` native Linux process ran both available accounts for ten
minutes. Twenty consecutive periodic samples passed the committed envelope
with zero fault/reconnect debt. SIGINT produced ACE-confirmed graceful logout
for both accounts. The final `disposed` sample had two converged Runtime roots,
zero entities/inventory/host/content leases, disposed shared content, and
`withinCeilings=true`.
## Next work
Slice L is active under
`docs/plans/2026-07-26-modern-runtime-slice-l.md`. The initial read-only L0
probe already proves framework-dependent `linux-x64` App publish succeeds and
ships resolved GLFW, OpenAL Soft, and cimgui native libraries. The smoke plugin
is missing from the publish because its copy target uses Windows-shaped paths.
Frame pacing still directly constructs the Windows waitable-timer owner, and
App/UI persistence still defaults to Windows `LocalApplicationData`; those
are the first L0 implementation seams.
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 rollbacks, newest first:
```text
git revert 776482da8225d88a7c6128022d137d26f9266a87
git revert bd236ce553718cfb1248703f4a2b17b35733b11c
git revert 97c174fbb2d72fb94e2fe07448bb257989ed8941
git revert cb512fd0
```