test(runtime): add unattended connected R6 soak
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>
This commit is contained in:
parent
f961d70023
commit
a755b764bf
14 changed files with 1021 additions and 20 deletions
|
|
@ -1,6 +1,6 @@
|
|||
# acdream — strategic roadmap
|
||||
|
||||
**Status:** Living document. Updated 2026-07-17. **M3 active; automated implementation complete, visual gates pending.** M2's connected demo loop is complete. M3 now has the retail cast-intent/component/target lifecycle, exact live enchantment wire state, scoped Magic input, retained spell bar, spellbook, component book, positive/negative effects panels with authored rows and selected-spell details, the complete seven-control gameplay indicator strip and its Character Information/Link/Vitae detail pages, and shared `gmPanelUI` geometry/switching over the Step 9 projectile/PhysicsScript/particle/portal foundation. The remaining M3 work is the connected single-client magic-UI/casting gate and final two-client portal-out/materialization observer gate.
|
||||
**Status:** Living document. Updated 2026-07-20. **M3 active; automated implementation complete, visual gates pending.** M2's connected demo loop is complete. M3 now has the retail cast-intent/component/target lifecycle, exact live enchantment wire state, scoped Magic input, retained spell bar, spellbook, component book, positive/negative effects panels with authored rows and selected-spell details, the complete seven-control gameplay indicator strip and its Character Information/Link/Vitae detail pages, and shared `gmPanelUI` geometry/switching over the Step 9 projectile/PhysicsScript/particle/portal foundation. The remaining M3 work is the connected single-client magic-UI/casting gate and final two-client portal-out/materialization observer gate.
|
||||
**Purpose:** One source of truth for where the project is and where it's going. Every observed defect or missing feature has a named phase that owns it; when something looks wrong in-game, look here to find the phase that'll address it. Implementation details live in per-phase specs under `docs/superpowers/specs/`, not in this file.
|
||||
|
||||
---
|
||||
|
|
@ -916,8 +916,17 @@ diagnostic scaffolding, not yet the final collision system.
|
|||
PositionManager facade remains the final R6 ownership cleanup.
|
||||
Final 2026-07-20 gate: three independent retail/architecture/adversarial
|
||||
re-reviews are clean; Release build is warning-free; the repository suite is
|
||||
6,446 passed / 5 skipped. A connected locomotion/collision/projectile/
|
||||
teleport visual and performance rebaseline remains the next gate.
|
||||
6,452 passed / 5 skipped. The unattended connected Release rebaseline also
|
||||
passes: seven portal materializations across Caul, Sawato, Rynthid,
|
||||
Aerlinthe, Holtburg, and same-location revisits; production-dispatcher turn,
|
||||
forward, charged-jump, and combat inputs; outbound movement evidence;
|
||||
post-25-second lifecycle samples; no fatal runtime diagnostics; and graceful
|
||||
WM_CLOSE teardown. Same-location update p95 remained 1.2 -> 1.1 ms at Caul
|
||||
and 0.2 -> 0.3 ms at Sawato. ACE generator population changes are reported
|
||||
rather than treated as client leaks. Absolute FPS/GPU timing remains
|
||||
session/display-path evidence, not an RDP-stable gate. The connected visual
|
||||
locomotion/collision/projectile/teleport comparison remains for the next
|
||||
local viewing session.
|
||||
- **L.2g — Inbound motion interpretation (remote-entity CMotionInterp funnel).**
|
||||
ACTIVE 2026-07-02. Port retail's inbound motion pipeline verbatim for ALL
|
||||
remote entities (players, NPCs, monsters — one funnel, user-approved):
|
||||
|
|
|
|||
|
|
@ -11,13 +11,14 @@ presentation have passed their single-client visual gates. The corrective bounde
|
|||
render/resource-lifetime integration passed its seven-destination connected
|
||||
stress gate without a crash or cumulative collapse. The remaining M3 visual
|
||||
requirement is the final two-client portal-out/materialize observer gate. The
|
||||
new R6 object-update cutover also requires one connected locomotion/collision/
|
||||
projectile/teleport visual and performance rebaseline before that observer gate.
|
||||
new R6 object-update cutover has passed its unattended connected input/portal/
|
||||
performance rebaseline; its locomotion/collision/projectile/teleport visual
|
||||
gate remains for the next local viewing session before that observer gate.
|
||||
Carried:
|
||||
#145-residual, #116 slide-response, the remaining R6 ownership cleanup plus
|
||||
registered TS-50/TS-51 timing residuals (the complete-root-Frame/object-workset
|
||||
cutover is automated-test complete 2026-07-20; three independent re-reviews are
|
||||
clean, Release builds with zero warnings, and 6,446 tests pass / 5 skip), and
|
||||
clean, Release builds with zero warnings, and 6,452 tests pass / 5 skip), and
|
||||
Track MP0.
|
||||
|
||||
---
|
||||
|
|
|
|||
73
docs/research/2026-07-20-connected-r6-soak.md
Normal file
73
docs/research/2026-07-20-connected-r6-soak.md
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
# 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:
|
||||
|
||||
```powershell
|
||||
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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue