docs(runtime): record J0 and physical I6 evidence

Pin the exact J0 rollback, synchronize the roadmap and agent handoff files, and distinguish the observer-heavy two-gigabyte soak from the ordinary-client physical sample. Keep parsed collision graph removal explicitly behind the pending user collision and visual gate.

Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-25 17:35:44 +02:00
parent b632672e5c
commit 574a6c454f
7 changed files with 104 additions and 16 deletions

View file

@ -174,7 +174,6 @@ six-path moving-collision entry point has an integer-indexed flat shadow port.
The exact referee passes 13 focused tests, 7,500 installed-DAT comparisons,
1,200 complete resolver frames, and 10,000 warmed iterations at zero managed
bytes with no mismatch. Release build and 8,384 solution tests / 5 skips pass.
Production remains graph-authoritative until the Slice I6 cutover.
Slice I5 is complete: immutable near-build collision closures and strict live
collision publication install graph and prepared-flat views under canonical
ownership. Cancellation, demotion, rehydration, revisit, removal, and reset
@ -182,10 +181,23 @@ gates pass. The lifecycle/reconnect and nine-stop routes sampled 14,064 exact
queries with zero mismatch, fault, or artifact; graph/flat cell residency
matched at every stable checkpoint and teardown converged. Release build and
8,396 solution tests / 5 skips pass.
Slice I6 is committed at `068a0651`: gameplay collision is flat-authoritative
and the parsed graph is only a sampled referee. The strict dense-Arwic gate
matched 46,309/46,309 queries, and the exact physical nine-stop lifecycle soak
passed with all publication, retirement, upload, warmup, and class backlogs
converged. Parsed-graph deletion remains gated on the user's final
collision/visual acceptance. The cutover rollback is
`git revert 068a06518dd710ca5e7f166754cbb7789ca1ed0f`.
Slice J0 is complete at `b632672e`: `AcDream.Runtime` now provides the enforced
presentation-independent assembly boundary without moving gameplay behavior.
Four dependency guards, the Release build, and 8,406 tests / 5 skips pass. J1
waits behind the I6/I7 user gate. Its rollback is
`git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`.
Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network
work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate
passes. Slice I is active at I6 from
`docs/plans/2026-07-25-modern-runtime-slice-i.md`. The exact G4 visual rollback
passes. Slice I7 closeout is active from
`docs/plans/2026-07-25-modern-runtime-slice-i.md`; the coherent Slice J campaign
is pinned in `docs/plans/2026-07-25-modern-runtime-slice-j.md`. The exact G4 visual rollback
is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or
the portal-warmup corrections. Evidence:
`docs/research/2026-07-25-slice-h-closeout.md` and
@ -194,7 +206,8 @@ the portal-warmup corrections. Evidence:
`docs/research/2026-07-25-slice-i2-flat-collision-schema.md` and
`docs/research/2026-07-25-slice-i3-prepared-collision-package.md` and
`docs/research/2026-07-25-slice-i4-flat-bsp-differential.md` and
`docs/research/2026-07-25-slice-i5-dual-collision-shadow.md`.
`docs/research/2026-07-25-slice-i5-dual-collision-shadow.md` and
`docs/research/2026-07-25-slice-i6-flat-production-cutover.md`.
**Structural prerequisite before new M4 subsystem work:** all eight
behavior-preserving `GameWindow` decomposition slices and the automated

View file

@ -172,7 +172,6 @@ six-path moving-collision entry point has an integer-indexed flat shadow port.
The exact referee passes 13 focused tests, 7,500 installed-DAT comparisons,
1,200 complete resolver frames, and 10,000 warmed iterations at zero managed
bytes with no mismatch. Release build and 8,384 solution tests / 5 skips pass.
Production remains graph-authoritative until the Slice I6 cutover.
Slice I5 is complete: immutable near-build collision closures and strict live
collision publication install graph and prepared-flat views under canonical
ownership. Cancellation, demotion, rehydration, revisit, removal, and reset
@ -180,10 +179,23 @@ gates pass. The lifecycle/reconnect and nine-stop routes sampled 14,064 exact
queries with zero mismatch, fault, or artifact; graph/flat cell residency
matched at every stable checkpoint and teardown converged. Release build and
8,396 solution tests / 5 skips pass.
Slice I6 is committed at `068a0651`: gameplay collision is flat-authoritative
and the parsed graph is only a sampled referee. The strict dense-Arwic gate
matched 46,309/46,309 queries, and the exact physical nine-stop lifecycle soak
passed with all publication, retirement, upload, warmup, and class backlogs
converged. Parsed-graph deletion remains gated on the user's final
collision/visual acceptance. The cutover rollback is
`git revert 068a06518dd710ca5e7f166754cbb7789ca1ed0f`.
Slice J0 is complete at `b632672e`: `AcDream.Runtime` now provides the enforced
presentation-independent assembly boundary without moving gameplay behavior.
Four dependency guards, the Release build, and 8,406 tests / 5 skips pass. J1
waits behind the I6/I7 user gate. Its rollback is
`git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`.
Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network
work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate
passes. Slice I is active at I6 from
`docs/plans/2026-07-25-modern-runtime-slice-i.md`. The exact G4 visual rollback
passes. Slice I7 closeout is active from
`docs/plans/2026-07-25-modern-runtime-slice-i.md`; the coherent Slice J campaign
is pinned in `docs/plans/2026-07-25-modern-runtime-slice-j.md`. The exact G4 visual rollback
is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or
the portal-warmup corrections. Evidence:
`docs/research/2026-07-25-slice-h-closeout.md` and
@ -192,7 +204,8 @@ the portal-warmup corrections. Evidence:
`docs/research/2026-07-25-slice-i2-flat-collision-schema.md` and
`docs/research/2026-07-25-slice-i3-prepared-collision-package.md` and
`docs/research/2026-07-25-slice-i4-flat-bsp-differential.md` and
`docs/research/2026-07-25-slice-i5-dual-collision-shadow.md`.
`docs/research/2026-07-25-slice-i5-dual-collision-shadow.md` and
`docs/research/2026-07-25-slice-i6-flat-production-cutover.md`.
**Structural prerequisite before new M4 subsystem work:** all eight
behavior-preserving `GameWindow` decomposition slices and the automated

View file

@ -1666,14 +1666,20 @@ port in any phase — no separate listing here.
> ownership. Lifecycle/reconnect plus the nine-stop route sampled 14,064
> queries with exact state/float-bit equality, zero mismatch/fault/artifact,
> equal graph/flat cell residency, and graceful teardown. Release build and
> 8,396 solution tests / 5 skips pass. I6 production cutover is active.
> 8,396 solution tests / 5 skips pass. I6 production cutover is committed:
> gameplay is flat-authoritative, dense Arwic matched 46,309/46,309 referee
> queries, and the physical nine-stop soak converged. Parsed-graph deletion
> waits on the user's collision/visual acceptance. J0 established the
> presentation-independent Runtime boundary with four enforced dependency
> guards; Release build and 8,406 tests / 5 skips pass.
> The historical exact cutover
> rollback remains
> `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. Slice H is complete:
> retained UI/frame work, exact bounded light selection, and
> pooled/borrowed/direct network I/O pass 8,292 Release tests / 5 skips and the
> connected lifecycle/reconnect gate. Slice I is active at I6 from
> [its detailed plan](2026-07-25-modern-runtime-slice-i.md).
> connected lifecycle/reconnect gate. Slice I7 closeout remains active from
> [its detailed plan](2026-07-25-modern-runtime-slice-i.md); Slice J is pinned
> in [its lifetime-group plan](2026-07-25-modern-runtime-slice-j.md).
**Spec:** `docs/superpowers/specs/2026-07-05-modern-pipeline-design.md` (the
umbrella design — read it first). **Goal:** smoothness first (no frame over
@ -1697,11 +1703,11 @@ hitch and follows.
| 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 `PakReader` + equivalence/full-scale gate | ✅ **SHIPPED 2026-07-24** — 729,888 EnvCell keys → 17,117 unique geometries + 712,771 aliases (42.6×), 751,141 total keys / 38,370 physical blobs, zero failures, 28,192.4 MiB, 81.4 s validated atomic publish; full-DAT gate also corrected a real collision in WB's legacy geometry hash. [Report](../research/2026-07-24-slice-b-full-bake-report.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` reuse | 🟡 Physics half SHIPPED 2026-07-25 — retail-shaped reset-complete transition/query scratch is bit-identical and 0 B/resolve across five profiles; immutable flat collision storage, deterministic package, zero-allocation traversal, strict dual publication, and the 14,064-sample connected shadow gate are shipped; production flat cutover continues in Slice I6. |
| MP-Alloc (hard sites) | EnvCell settled-camera rebuild gate + physics `Transition` reuse | 🟡 Physics cutover SHIPPED 2026-07-25 — retail-shaped reset-complete transition/query scratch is bit-identical and 0 B/resolve across five profiles; immutable flat collision storage, deterministic package, zero-allocation traversal, strict dual publication, and flat-authoritative production traversal are shipped. Parsed-graph deletion awaits the user collision/visual gate. |
| MP1c | Streaming cutover to pak + hitch gate | ✅ **SHIPPED 2026-07-24** — typed package-only production source, explicit Setup probes, non-allocating Portal-first lookup, exact translucency metadata, and ordered teardown; capped/uncapped/dense physical routes + user visual gate pass. Uncapped CPU p99 7.825→6.496 ms, GPU p99 3.406→2.706 ms, portal frame max 202.9→39.9 MiB, process allocation 41.8%, zero invalid Setup probes. [Report](../research/2026-07-24-slice-c-prepared-asset-cutover-report.md) |
| MP2 | Retail particle distance/cell-view degradation: DAT-authored range, exact infinite/finite off-view update branches, emitter-first render scan, user-requested 2× default range | ✅ SHIPPED 2026-07-17 — Aerlinthe hotspot `0x32000223` resolves to retail 64m and defaults to 128m; landscape/entity streaming distance unchanged |
| 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) | 🟡 ACTIVE — Slice I1 zero-allocation transition scratch, I2 immutable schema, I3 deterministic collision package, I4 exact flat traversal, and I5 strict dual publication plus connected shadow verification shipped; I6 production cutover is active. |
| MP4 | Zero-alloc frame loop + flat physics data (residual, post-MP-Alloc) | 🟡 ACCEPTANCE — Slices I1I6 shipped through flat-authoritative production traversal; dense-Arwic and physical nine-stop gates pass. User collision/visual acceptance gates parsed-graph deletion and I7 closeout. |
| MP5 | Job-system parallelism | ⚪ stretch, evidence-gated |
---

View file

@ -141,8 +141,16 @@ queries with zero mismatch, fault, or artifact; graph/flat cell residency
matched at every stable checkpoint and teardown converged. Release build and
8,396 solution tests / 5 skips pass. Slice H is complete: retained UI/frame
work, exact bounded light selection, and pooled/borrowed/direct network I/O
pass. Slice I is active at I6 under
pass. Slice I6 is committed: gameplay is flat-authoritative, its dense-Arwic
referee gate matched 46,309/46,309 queries, and the physical nine-stop soak
converged without publication, retirement, upload, or warmup backlog. Parsed
graph deletion remains gated on the user's collision/visual acceptance. Slice
J0 established and enforced the presentation-independent `AcDream.Runtime`
boundary without moving behavior; Release build and 8,406 tests / 5 skips
pass. Slice I7 closeout is active under
[`2026-07-25-modern-runtime-slice-i.md`](2026-07-25-modern-runtime-slice-i.md).
The coherent Slice J campaign is pinned in
[`2026-07-25-modern-runtime-slice-j.md`](2026-07-25-modern-runtime-slice-j.md).
The historical exact G4 visual rollback remains
`git revert ef1d263337997bb030eadb7b8e71d73dc659907a`.

View file

@ -3,7 +3,8 @@
**Status:** I0-I5 COMPLETE - retail oracle, zero-allocation transition
scratch, deterministic immutable collision records, complete prepared
package, exact flat traversal, dual publication, and connected shadow gate;
I6 production cutover committed; visual/correctness acceptance active
I6 production cutover, strict connected gate, and physical nine-stop soak
complete; user collision/visual acceptance active before graph deletion
**Parent:** `2026-07-24-modern-runtime-architecture.md`, Slice I
**Purpose:** remove parsed DAT object graphs and steady collision allocations
without changing one retail collision decision, float, comparison, or traversal

View file

@ -94,7 +94,11 @@ unchanged because no runtime path changed.
Evidence: four focused dependency tests pass, the Release solution builds with
zero errors, and the complete Release suite passes 8,406 tests with five
pre-existing skips. The exact rollback commit is recorded below after landing.
pre-existing skips. Exact rollback:
```text
git revert b632672e5ccabfb44c551e08f1c411ab2669c44a
```
### J1 — read, command, event, clock, and lifecycle contracts

View file

@ -90,6 +90,49 @@ Stable result:
The parsed graph is still resident in those memory figures. I6 graph removal
must reduce that footprint and prove stable production graph counts are zero.
## Physical-display full-route soak
An exact clean worktree at source/binary `9f37d1793674a7bf5101ef22d5c5d956b8d101a2`
completed the canonical nine-stop route on the physical display:
- all nine checkpoints and every materialization passed;
- Caul, Holtburg, and return-to-Caul movement/jump/combat exercises passed;
- server-spawned/static lifecycle checks passed;
- final publication, retirement, worker, destination, control, unload,
near/far, staged-upload, and composite-warmup backlogs were all zero;
- graph and flat residency agreed at 175 cells in the final stable state;
- graph retention remained intentional for the pending user gate;
- diagnostic-route memory plateaued at 2.020 GiB in Sawato and 2.061 GiB on
final Caul rather than growing without bound;
- instrumented-route GPU p95 stayed at or below 2.8 ms.
The roughly 2 GiB diagnostic working set is not the ordinary client footprint:
that route deliberately retains the old and new collision representations and
enables the full current-path render oracle.
A separate ordinary uncapped Release client at Caul with about 21,025 live
entities, no profiler, no render oracle, and no route automation produced this
20-sample physical-display result:
- 156 FPS average (140 minimum, 166 p95, 172 maximum);
- 6.42 ms average displayed frame time;
- 7.50% average whole-machine CPU;
- 27.07% average GPU 3D utilization;
- 1.080 GiB average working set;
- 1.291 GiB average private bytes.
The uncapped GPU percentage is demand created by rendering as fast as the CPU
can submit frames, not evidence of a GPU bottleneck: measured GPU frame p95
remained below 3 ms while displayed frame time was about 6.4 ms. Memory remains
above the target while both collision representations are intentionally
resident; the accepted graph-removal step must measure the reduction.
A later 20-sample repeat from the same still-connected process confirmed the
plateau: working set stayed exactly 1.059 GiB and private bytes exactly
1.236 GiB throughout the sample. It averaged 177.6 FPS / 5.65 ms, 7.67%
whole-machine CPU, and 30.40% GPU 3D. The higher GPU percentage tracked the
higher uncapped frame rate; it did not coincide with working-set growth.
## Acceptance boundary
The automated cutover gate is complete. Before deleting the referee and parsed