docs(performance): close modern runtime slice H

This commit is contained in:
Erik 2026-07-25 06:15:13 +02:00
parent 41c1a59392
commit f1a8d36682
7 changed files with 179 additions and 27 deletions

View file

@ -0,0 +1,103 @@
# Modern runtime Slice H closeout
## Result
Slice H's scoped work is complete:
- retained UI report layout, visible cooldown participation, changed-only
attachment reconciliation, and retained frame scratch;
- exact bounded global-light selection;
- one pooled cancellable receive owner, borrowed packet decode, and direct
recurring outbound framing.
No retail gameplay, packet-ordering, acknowledgement, heartbeat, visibility,
light-membership, or UI-presentation rule changed.
## Automated conformance
At production commit `41c1a593927fcf71ef83b4825c659a4970e9b858`:
- `dotnet build AcDream.slnx -c Release`: pass, with the 16 already tracked
test-project warnings;
- complete Release solution: 8,292 passed / 5 skipped;
- network-focused suite: 600 passed;
- receive decode differential: all optional fields, login, fragment,
malformed-packet, and ISAAC-state cases pass;
- recurring send differential: exact bytes, checksum, sequence, and ISAAC
consumption pass.
Warm microbenchmarks:
| Path | Before | After | Result |
|---|---:|---:|---:|
| 500,000 borrowed 48-byte packet decodes | 246.372 ms / 200,000,040 B | 28.431 ms / 40 B timer overhead | 8.666x throughput; production decode 0 B |
| 500,000 recurring 44-byte sends | 137.206 ms / 176,000,040 B | 12.551 ms / 0 B | 10.932x throughput; direct framing 0 B |
## Connected lifecycle gate
Command:
```powershell
tools/run-connected-world-lifecycle-gate.ps1 `
-Repository <repo> `
-SkipBuild `
-SessionTimeoutSeconds 420
```
Raw local evidence:
`logs/connected-world-gate-20260725-060344/report.json`.
Result: PASS.
- Capped session: login, Aerlinthe, Rynthid, Facility Hub, Holtburg after
dungeon, and Aerlinthe revisit all reached a complete visible reveal.
- Fresh uncapped process: reconnect reached a complete visible reveal.
- 7/7 checkpoints were ready with render, composite, and collision readiness.
- No reveal invariant failure, packet/transport failure, `WeenieError`,
`ObjectDisposedException`, or receive-owner death occurred.
- Both sessions issued graceful logout, received authoritative confirmation,
exited through `WM_CLOSE`, and ACE observed `PacketHeader Disconnect`.
- The only warning was 25 expected world-edge landblock misses.
This was an RDP run. It proves correctness, ordering, ownership, cleanup, and
reconnect behavior; its absolute CPU/GPU/frame-time numbers are not accepted
as hardware performance evidence.
## Production allocation check
The connected gate enables lifecycle screenshots and therefore constructs the
G4 current-path comparison oracle. That oracle fingerprints and sorts the
complete visible projection set each frame and intentionally allocates in
proportion to scene size. Its 3.9-10.5 MiB/frame outdoor readings are
automation observer cost, not the normal production composition.
A separate uncapped Release login was captured with no UI probe, automation
artifact directory, or current-path oracle:
```text
cpu_ms p50=1.9-2.0, p95=2.5-2.8
gpu_ms p50=1.2-1.3, p95=1.5
alloc_kb p50=25.6
```
The RDP timing is diagnostic only. The allocation measurement is valid:
allocation-tick stacks attribute the remaining production bytes primarily to
the existing `Transition` collision scratch and retained current render
partition, followed by smaller animation/UI iterators. Those owners are
explicitly scheduled for Slice I and G5. The H-owned warmed receive and send
paths themselves are zero-allocation.
Accordingly, H closes its scoped owners without weakening the program-level
target: steady production allocation at or below 4 KiB/frame remains a
mandatory G5/Slice-I closeout gate.
## Exact retained visual rollback
The G4 production draw-source visual gate is still pending. If it fails on a
physical display, revert only:
```text
git revert ef1d263337997bb030eadb7b8e71d73dc659907a
```
Do not revert G3 or the `129dd77d` / `03b10183` portal-warmup corrections.