From 08a9d28a32fa9bcf381cdd53e3da858235762687 Mon Sep 17 00:00:00 2001 From: Erik Date: Sun, 5 Jul 2026 23:28:34 +0200 Subject: [PATCH] docs(pipeline): resequence Track MP - pull allocation triage ahead of MP1c 54-site adversarial allocation audit: town GC churn (1.5-3 MB/frame) is ~90-95 pct OUTSIDE the MP3 draw-submission surface (visibility compute, EnvCell rebuild, particle draw-lists, per-entity anim pose) and independent of the pak. So MP3 will NOT fix the steady-state stutter, and the triage is separable + mostly easy faithfulness-neutral buffer reuse. New MP-Alloc phase pulled ahead of MP1c (load-time smoothness is the rarer hitch). Also flips MP1b to blocked-on-dedup and records the pview-runs-outdoors scenario. Findings in project_mp_track_findings.md. Co-Authored-By: Claude Fable 5 --- docs/plans/2026-04-11-roadmap.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/plans/2026-04-11-roadmap.md b/docs/plans/2026-04-11-roadmap.md index 771f005a..d49b267b 100644 --- a/docs/plans/2026-04-11-roadmap.md +++ b/docs/plans/2026-04-11-roadmap.md @@ -1190,15 +1190,24 @@ game-feel stay identical; the simulation's retail-mirroring OO structure is untouched. NOT part of M1.5 — runs in dedicated side-track sessions; M1.5 critical path wins every conflict. +**Sequencing note (2026-07-05, evidence-driven):** the steady-state allocation +triage (MP-Alloc) was **pulled forward ahead of the pak cutover (MP1c)** after a +54-site allocation audit proved the town GC churn is ~90–95% OUTSIDE the MP3 draw +surface (so MP3 won't fix it) and independent of the pak — it's the felt-most-often +smoothness tax and mostly easy faithfulness-neutral buffer-reuse work. See +`project_mp_track_findings.md`. Load-time smoothness (the pak, MP1c) is the rarer +hitch and follows. + | Phase | What | Status | |---|---|---| | 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.5–3 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 | ⚪ NEXT — plan to be written | -| MP1c | Streaming cutover to pak + hitch gate (vs the 211 ms baseline) | ⚪ after MP1b — then the allocation-triage amendment | +| 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) | +| **MP-Alloc** | **Steady-state allocation triage (town GC churn) — PULLED FORWARD** | ⚪ NEXT after MP1b dedup — 30s dotnet-trace to lock fix order, then easy sites first (EnvCell rebuild gate, anim pose reuse, particle draw-list reuse) | +| MP1c | Streaming cutover to pak + hitch gate (vs the 211 ms baseline) | ⚪ after MP-Alloc | | MP2 | Retail distance-degrade port, hide-only cut (retires a divergence row) | ⚪ | -| MP3 | Arch ECS render world + delta submission (the 300-FPS lever) | ⚪ | -| MP4 | Zero-alloc frame loop + flat physics data | ⚪ hard-queued behind M1.5 #137 | +| MP3 | Arch ECS render world + delta submission (the 300-FPS lever) | ⚪ — note: does NOT fix the steady-state GC churn (that's MP-Alloc); MP3 is the draw-submission throughput lever | +| MP4 | Zero-alloc frame loop + flat physics data (residual, post-MP-Alloc) | ⚪ hard-queued behind M1.5 #137 | | MP5 | Job-system parallelism | ⚪ stretch, evidence-gated | ---