docs(performance): close modern runtime slice H
This commit is contained in:
parent
41c1a59392
commit
f1a8d36682
7 changed files with 179 additions and 27 deletions
103
docs/research/2026-07-25-slice-h-closeout.md
Normal file
103
docs/research/2026-07-25-slice-h-closeout.md
Normal 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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue