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, 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 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. 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 Slice I5 is complete: immutable near-build collision closures and strict live
collision publication install graph and prepared-flat views under canonical collision publication install graph and prepared-flat views under canonical
ownership. Cancellation, demotion, rehydration, revisit, removal, and reset 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 queries with zero mismatch, fault, or artifact; graph/flat cell residency
matched at every stable checkpoint and teardown converged. Release build and matched at every stable checkpoint and teardown converged. Release build and
8,396 solution tests / 5 skips pass. 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 Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network
work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate
passes. Slice I is active at I6 from passes. Slice I7 closeout is active from
`docs/plans/2026-07-25-modern-runtime-slice-i.md`. The exact G4 visual rollback `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 is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or
the portal-warmup corrections. Evidence: the portal-warmup corrections. Evidence:
`docs/research/2026-07-25-slice-h-closeout.md` and `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-i2-flat-collision-schema.md` and
`docs/research/2026-07-25-slice-i3-prepared-collision-package.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-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 **Structural prerequisite before new M4 subsystem work:** all eight
behavior-preserving `GameWindow` decomposition slices and the automated 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, 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 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. 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 Slice I5 is complete: immutable near-build collision closures and strict live
collision publication install graph and prepared-flat views under canonical collision publication install graph and prepared-flat views under canonical
ownership. Cancellation, demotion, rehydration, revisit, removal, and reset 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 queries with zero mismatch, fault, or artifact; graph/flat cell residency
matched at every stable checkpoint and teardown converged. Release build and matched at every stable checkpoint and teardown converged. Release build and
8,396 solution tests / 5 skips pass. 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 Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network
work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate
passes. Slice I is active at I6 from passes. Slice I7 closeout is active from
`docs/plans/2026-07-25-modern-runtime-slice-i.md`. The exact G4 visual rollback `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 is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or
the portal-warmup corrections. Evidence: the portal-warmup corrections. Evidence:
`docs/research/2026-07-25-slice-h-closeout.md` and `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-i2-flat-collision-schema.md` and
`docs/research/2026-07-25-slice-i3-prepared-collision-package.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-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 **Structural prerequisite before new M4 subsystem work:** all eight
behavior-preserving `GameWindow` decomposition slices and the automated 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 > ownership. Lifecycle/reconnect plus the nine-stop route sampled 14,064
> queries with exact state/float-bit equality, zero mismatch/fault/artifact, > queries with exact state/float-bit equality, zero mismatch/fault/artifact,
> equal graph/flat cell residency, and graceful teardown. Release build and > 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 > The historical exact cutover
> rollback remains > rollback remains
> `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. Slice H is complete: > `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. Slice H is complete:
> retained UI/frame work, exact bounded light selection, and > retained UI/frame work, exact bounded light selection, and
> pooled/borrowed/direct network I/O pass 8,292 Release tests / 5 skips and the > 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 > connected lifecycle/reconnect gate. Slice I7 closeout remains active from
> [its detailed plan](2026-07-25-modern-runtime-slice-i.md). > [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 **Spec:** `docs/superpowers/specs/2026-07-05-modern-pipeline-design.md` (the
umbrella design — read it first). **Goal:** smoothness first (no frame over 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` | | 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) | | 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 (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) | | 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 | | 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 | | 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 | | 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 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 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 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). [`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 The historical exact G4 visual rollback remains
`git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`.

View file

@ -3,7 +3,8 @@
**Status:** I0-I5 COMPLETE - retail oracle, zero-allocation transition **Status:** I0-I5 COMPLETE - retail oracle, zero-allocation transition
scratch, deterministic immutable collision records, complete prepared scratch, deterministic immutable collision records, complete prepared
package, exact flat traversal, dual publication, and connected shadow gate; 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 **Parent:** `2026-07-24-modern-runtime-architecture.md`, Slice I
**Purpose:** remove parsed DAT object graphs and steady collision allocations **Purpose:** remove parsed DAT object graphs and steady collision allocations
without changing one retail collision decision, float, comparison, or traversal 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 Evidence: four focused dependency tests pass, the Release solution builds with
zero errors, and the complete Release suite passes 8,406 tests with five 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 ### 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 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. 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 ## Acceptance boundary
The automated cutover gate is complete. Before deleting the referee and parsed The automated cutover gate is complete. Before deleting the referee and parsed