docs(perf): record corrected Slice A RDP baselines

This commit is contained in:
Erik 2026-07-24 13:29:23 +02:00
parent 24f898c54d
commit 05a22dee99
4 changed files with 256 additions and 11 deletions

View file

@ -1580,7 +1580,12 @@ port in any phase — no separate listing here.
> unifies the unfinished MP pak/render-world work with future Track LH, preserves
> retail-shaped simulation and the N.5 renderer, and reorders execution around
> prepared content and cost-budgeted streaming before render-ECS throughput.
> This records the plan only; implementation remains not started.
> **Execution update 2026-07-24:** Slice A's corrected tooling and diagnostic
> RDP captures have landed. The committed evidence includes capped/uncapped
> nine-stop routes, dense Arwic, portal windows, observer-effect measurement,
> binary provenance, and contention stacks. The physical-local AMD-display gate
> remains open and blocks Slice C. Slice B EnvCell dedup is active under
> [`2026-07-24-modern-runtime-slice-b-envcell-dedup.md`](2026-07-24-modern-runtime-slice-b-envcell-dedup.md).
**Spec:** `docs/superpowers/specs/2026-07-05-modern-pipeline-design.md` (the
umbrella design — read it first). **Goal:** smoothness first (no frame over
@ -1602,7 +1607,7 @@ hitch and follows.
|---|---|---|
| MP0 | Honest frame profiler (`[frame-prof]`) + baseline capture | ✅ SHIPPED 2026-07-05 — gate PASSED (`docs/research/2026-07-05-mp0-baseline.md`); headline: town spikes = GC churn (1.53 MB/frame), teleport hitch 211 ms |
| MP1a | `AcDream.Content` extraction (GL-free MeshExtractor + boundary records out of App) | ✅ SHIPPED 2026-07-05 — user-gated (renders identical, zero tripwires, perf-neutral); 8 commits `651d041e`..`b0758d77` |
| MP1b | Pak format + `acdream-bake` CLI + mmap zero-copy `PakReader` + equivalence test | 🔵 code + review-fixes done; **full-bake gate found 865 GB → EnvCell dedup slice REQUIRED before shipped** (spec §6.6) |
| MP1b | Pak format + `acdream-bake` CLI + mmap zero-copy `PakReader` + equivalence test | 🔵 **ACTIVE 2026-07-24** — implementing content-identity EnvCell dedup, shared TOC aliases, atomic output, and a new full-bake gate; detailed plan: [`2026-07-24-modern-runtime-slice-b-envcell-dedup.md`](2026-07-24-modern-runtime-slice-b-envcell-dedup.md) |
| **MP-Alloc (safe batch)** | Reuse per-frame buffers: anim pose, particle draw-list, interior partition, animatedIds/drawableCells sets | ✅ SHIPPED + USER-GATED 2026-07-05 — dense-town frame-time spikes 2087ms → 610ms, alloc spikes (3075MB single-frame) eliminated, gen2 GC 511/window → ~0; user confirms FPS steady. 4 commits `b8c05e2b`..`91afea24` |
| MP-Alloc (hard sites) | EnvCell settled-camera rebuild gate + physics `Transition` pooling — the residual steady ~1.6MB/frame | ⚪ OPTIONAL follow-up — would lower the median too, but the wild-swing complaint is already resolved; each needs its own careful gate (batch correctness / physics faithfulness) |
| MP1c | Streaming cutover to pak + hitch gate (vs the 211 ms baseline) | ⚪ after MP-Alloc |

View file

@ -2,7 +2,8 @@
**Date:** 2026-07-24
**Status:** Planning complete; implementation not started
**Status:** Slice A tooling and diagnostic RDP baselines landed; Slice B active.
The physical-local Slice A gate still blocks Slice C.
**Scope:** Reconcile and sequence the existing Modern Pipeline (`MP`) and
Linux/headless (`LH`) tracks using the 2026-07-24 connected performance audit.
@ -569,6 +570,16 @@ capped-local nine-stop baselines, a pinned dense-town uncapped baseline
(name the town, pin the camera), and per-portal allocation/frame timelines
around each teleport materialization.
**Progress (2026-07-24):** the corrected GL timer, per-frame history, process
counter/trace capture, screenshot comparison, reference configuration, binary
provenance, and route-bound stationary sampling have landed. Corrected capped
and uncapped nine-stop RDP routes, a pinned dense-Arwic RDP sample, observer
effect, portal windows, and contention stacks are committed in
[`../research/2026-07-24-slice-a-rdp-baselines.md`](../research/2026-07-24-slice-a-rdp-baselines.md)
and its machine-readable companion. They prove the tooling is usable but are
diagnostic-only. The physical-local AMD-display repetitions remain required,
so Slice C is still blocked. Slice B is baseline-independent and is now active.
### Slice B — Finish MP1b EnvCell dedup and full bake
**Purpose:** Make the existing pak physically usable.
@ -1103,15 +1114,14 @@ an improvement" carries the same evidence burden as a regression claim.
---
## 14. Recommended starting point
## 14. Current execution point
Begin with **Slice A**, then **Slice B**.
Slice A is small and makes all later GPU and frame gates honest. Slice B completes
an implementation already present in the tree and directly attacks the
benchmark's largest allocation source. The first meaningful runtime cutover is
Slice C; do not begin the render-scene migration before the portal content storm
has been removed and measured.
Slice A's tooling and diagnostic RDP evidence are complete. Its physical-local
exit gate remains open. Execute **Slice B** now: it is baseline-independent,
completes an implementation already present in the tree, and directly attacks
the benchmark's largest process-wide allocation source. Do not start Slice C
until the capped/uncapped nine-stop and pinned dense-Arwic routes have been
repeated on the physical local AMD display path and committed.
The intended order is therefore: