Drive turn, movement, jump, and combat through the production InputDispatcher so connected Release testing works without an interactive Windows desktop. Track held automation actions through normal completion and every shutdown path. Add a seven-destination ACE route with post-liveness memory, allocation, update, fatal-log, outbound-movement, and graceful-close gates. Record dynamic ACE population changes as context instead of a false lifetime oracle, and document the accepted rebaseline. Co-authored-by: OpenAI Codex <codex@openai.com>
3.4 KiB
Connected R6 unattended soak (2026-07-20)
Purpose
Provide a repeatable connected-client correctness and performance gate when no interactive Windows desktop is attached. This complements, but does not replace, the user-visible retail comparison.
The route uses the normal retained UI/chat command path for /teleloc and the
production InputDispatcher for turning, forward movement, charged jump, and
combat transitions. It does not call movement controllers directly and does not
use Windows keyboard synthesis.
Run
With local ACE listening on UDP port 9000:
pwsh -File tools/run-connected-r6-soak.ps1
Credentials default to the local test account and can be overridden with
ACDREAM_TEST_USER / ACDREAM_TEST_PASS or -Account / -Password. The
script refuses to start when another acdream client is running, builds Release
unless -SkipBuild is supplied, and always requests normal WM_CLOSE shutdown.
Artifacts are written under logs/connected-r6-soak-<timestamp>.* as raw
stdout/stderr, a marker timeline, sample CSV, and structured JSON report.
Route and gates
The route visits Caul, Sawato, Rynthid, Aerlinthe, Sawato again, Holtburg, and Caul again. Every location performs a six-second visibility turn. Caul, Holtburg, and returned Caul also perform five forward press/release cycles, a charged jump, two combat transitions, and verify outbound movement records.
Stationary samples are taken only after LiveEntityLivenessController's
25-second authoritative-absence deadline. Hard failures cover:
- missing portal materializations or semantic input edges;
- insufficient outbound movement evidence;
- same-location private/working-set, allocation, or update-p95 regression;
- unhandled exceptions, access violations, out-of-memory, Weenie errors, disconnects, or GPU/device resets;
- nonzero process exit or failure to close gracefully.
Entity and animation counts remain in the report, but changes are warnings.
ACE generators legitimately spawn and despawn creatures while the route is at
another location; two consecutive runs demonstrated both +1 and -8 connected
population changes without pending teardown or rescue retention. Deterministic
live-owner balance is instead covered by LiveEntityLifecycleStressTests,
while this connected gate catches aggregate resource retention through the
same-location memory/allocation/update measurements.
Accepted run
Artifact stem: connected-r6-soak-20260720-120120.
| Stationary sample | Working/private MiB | CPU p50/p95 ms | GPU p50/p95 ms | Update p95 ms |
|---|---|---|---|---|
| Caul | 735.9 / 986.5 | 11.1 / 13.1 | 11.1 / 13.0 | 1.2 |
| Sawato | 790.7 / 1046.0 | 2.6 / 3.0 | 2.6 / 2.9 | 0.2 |
| Rynthid | 850.1 / 1093.5 | 4.3 / 4.9 | 4.2 / 4.8 | 0.3 |
| Aerlinthe | 852.6 / 1088.7 | 6.5 / 7.0 | 6.4 / 6.9 | 0.4 |
| Sawato revisit | 837.9 / 1073.1 | 3.1 / 3.7 | 3.1 / 3.6 | 0.3 |
| Holtburg | 979.5 / 1201.9 | 6.7 / 7.6 | 6.6 / 7.4 | 0.7 |
| Caul return | 976.5 / 1178.6 | 12.5 / 14.6 | 12.4 / 14.3 | 1.1 |
The client completed all seven teleports and all three input exercises, emitted no fatal diagnostic, and exited with code zero through WM_CLOSE. The report retained two known context warnings: missing installed DAT VFX entries and the expected empty landblock misses at the Rynthid world edge. Absolute FPS/GPU numbers depend on the active Windows/RDP presentation path and are recorded for comparison, not used as cross-session pass/fail thresholds.