docs(physics): close Slice I evidence and roadmap
Record the accepted flat-authoritative collision cutover, production parsed-graph removal, exact rollbacks, zero-residency connected gates, and RDP measurement boundary. Reconcile architecture, milestones, roadmap, issue ledger, agent instructions, and the active Slice J handoff. Validated by the existing zero-warning Release build, 8,413 passing Release tests with five pre-existing skips, 201 focused closeout tests, and both exact-binary connected routes. Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
parent
82f8d4f82e
commit
afebbe3eca
11 changed files with 257 additions and 71 deletions
|
|
@ -59,6 +59,12 @@ What does NOT go here:
|
|||
[`plans/2026-07-24-modern-runtime-slices-f-g-render-scene.md`](plans/2026-07-24-modern-runtime-slices-f-g-render-scene.md).
|
||||
Evidence:
|
||||
[`research/2026-07-24-slice-e-cost-budgeted-streaming-report.md`](research/2026-07-24-slice-e-cost-budgeted-streaming-report.md).
|
||||
- **Modern Runtime execution:** Slices F–I are complete. Slice I removed
|
||||
production parsed collision graphs after exact flat differential and user
|
||||
collision acceptance; 8,413 Release tests / 5 skips and both exact-binary
|
||||
connected routes pass with `0/0/0` graph residency. J0's enforced
|
||||
presentation-independent project boundary is live and J1 is active from
|
||||
[`plans/2026-07-25-modern-runtime-slice-j.md`](plans/2026-07-25-modern-runtime-slice-j.md).
|
||||
|
||||
The [documentation map](README.md) defines how this tactical ledger relates to
|
||||
the milestone, roadmap, architecture, divergence register, research, and
|
||||
|
|
|
|||
|
|
@ -175,7 +175,7 @@ src/
|
|||
TransitionTypes.cs -> SpherePath / CollisionInfo / transition helpers (active in L.2)
|
||||
FlatCollisionAssets.cs -> immutable array/index collision schema (Slice I2)
|
||||
FlatCollisionAssetBuilder.cs -> deterministic DAT graph preparation (Slice I2/I3)
|
||||
PhysicsDataCache.cs -> GfxObj / Setup / CellStruct collision data (done, active)
|
||||
PhysicsDataCache.cs -> flat prepared GfxObj / Setup / CellStruct / EnvCell collision owner
|
||||
ShadowObjectRegistry.cs -> broadphase for nearby physics objects (active)
|
||||
PhysicsEngine.cs -> ResolveWithTransition active player path
|
||||
ProjectilePhysicsStepper.cs -> pure retail projectile integration + sweep
|
||||
|
|
@ -204,7 +204,7 @@ src/
|
|||
Messages/ -> done (CreateObject, MoveToState, etc.)
|
||||
|
||||
AcDream.Runtime/ presentation-independent client kernel boundary
|
||||
RuntimeAssemblyMarker.cs -> J0 dependency boundary; owner moves start after I6/I7
|
||||
RuntimeAssemblyMarker.cs -> J0 dependency boundary; J1 contracts active
|
||||
-> may reference Core, Core.Net, Content, and Plugin.Abstractions only
|
||||
-> must never reference App, UI, Silk.NET, OpenAL, Arch, or ImGui
|
||||
|
||||
|
|
@ -406,7 +406,10 @@ What exists and is active:
|
|||
- `TransitionTypes` carries `SpherePath`, `CollisionInfo`, `ObjectInfo`,
|
||||
transition validation, step-up/down, contact-plane handling, and partial
|
||||
slide behavior.
|
||||
- `PhysicsDataCache` loads GfxObj, Setup, and CellStruct physics data from DATs.
|
||||
- `PhysicsDataCache` owns immutable flat GfxObj, Setup, CellStruct, and EnvCell
|
||||
collision assets loaded from the validated prepared package. Production
|
||||
retains no parsed DAT collision graph; graph construction is restricted to
|
||||
bake/equivalence tools and explicit test oracles.
|
||||
- `ShadowObjectRegistry` gives movement a broadphase over nearby objects and
|
||||
buildings.
|
||||
- `TerrainSurface` uses triangle-aware terrain contact; older "bilinear terrain
|
||||
|
|
|
|||
|
|
@ -140,8 +140,8 @@ strict little-endian codec and `IPreparedCollisionSource`.
|
|||
`PakPreparedAssetSource` implements the render and collision interfaces over
|
||||
one mmap; it does not create a second DAT reader or mapping. CellStruct
|
||||
payloads alias only after exact serialized-byte comparison, while each
|
||||
EnvCell topology remains independently keyed. Production traversal is still
|
||||
the parsed graph oracle until Slice I6. Full-catalog evidence:
|
||||
EnvCell topology remains independently keyed. Production traversal remained
|
||||
on the parsed graph oracle until the later Slice-I cutover. Full-catalog evidence:
|
||||
`docs/research/2026-07-25-slice-i3-prepared-collision-package.md`.
|
||||
|
||||
**Slice I5 dual-publication seam (2026-07-25).** Near-tier
|
||||
|
|
@ -155,6 +155,19 @@ fault. This is still one `DatCollection` and one prepared-package mmap, not a
|
|||
second reader or a WorldBuilder runtime dependency. Evidence:
|
||||
`docs/research/2026-07-25-slice-i5-dual-collision-shadow.md`.
|
||||
|
||||
**Slice I6/I7 flat-authoritative closeout (2026-07-25).** Production
|
||||
`PhysicsDataCache` now publishes only immutable flat GfxObj, Setup,
|
||||
CellStruct, and EnvCell-topology records from the validated package. Stable
|
||||
world state strips temporary `PhysicsDatBundle` source material, and near
|
||||
landblock builds discard raw Environment/GfxObj collision graphs once the
|
||||
flat closure exists. Parsed graph constructors remain explicit
|
||||
test/bake/equivalence oracles only; gameplay has no graph fallback or referee.
|
||||
Both exact-binary connected routes report `0/0/0` retained parsed collision
|
||||
graphs at every stable checkpoint while flat residency remains populated.
|
||||
This remains one `DatCollection`, one preparation algorithm, and one package
|
||||
mmap. Evidence:
|
||||
`docs/research/2026-07-25-slice-i7-closeout.md`.
|
||||
|
||||
**Retail VFX hook compatibility seam (2026-07-14).** Chorizite.DatReaderWriter
|
||||
2.1.7 models `CreateBlockingParticleHook` as the common hook header only, while
|
||||
retail inherits the complete `CreateParticleHook` payload. The narrow readers in
|
||||
|
|
|
|||
|
|
@ -1666,20 +1666,22 @@ 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 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.
|
||||
> 8,396 solution tests / 5 skips pass. I6 made gameplay flat-authoritative:
|
||||
> dense Arwic matched 46,309/46,309 referee queries and the physical nine-stop
|
||||
> soak converged. Following user collision acceptance, `82f8d4f8` removed
|
||||
> every production parsed collision graph. I7 passes 8,413 Release tests / 5
|
||||
> skips plus both exact-binary connected routes; every stable checkpoint
|
||||
> reports `0/0/0` graph residency while flat assets remain populated. J0
|
||||
> established the presentation-independent Runtime boundary with four enforced
|
||||
> dependency guards; J1 is now active.
|
||||
> 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 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).
|
||||
> connected lifecycle/reconnect gate. Slice I is closed in
|
||||
> [its detailed plan](2026-07-25-modern-runtime-slice-i.md); Slice J1 executes
|
||||
> from [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
|
||||
|
|
@ -1703,11 +1705,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 20–87ms → 6–10ms, alloc spikes (30–75MB single-frame) eliminated, gen2 GC 5–11/window → ~0; user confirms FPS steady. 4 commits `b8c05e2b`..`91afea24` |
|
||||
| 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. |
|
||||
| MP-Alloc (hard sites) | EnvCell settled-camera rebuild gate + physics `Transition` reuse | ✅ 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 publication, flat-authoritative production traversal, and parsed-graph removal pass automated and connected acceptance. |
|
||||
| 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) | 🟡 ACCEPTANCE — Slices I1–I6 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. |
|
||||
| MP4 | Zero-alloc frame loop + flat physics data (residual, post-MP-Alloc) | ✅ **SHIPPED 2026-07-25** — Slice I complete: 8,413 Release tests / 5 skips, 0 B/resolve across five profiles, zero retained parsed collision graphs, exact-binary lifecycle/reconnect and nine-stop routes pass, and user collision acceptance is recorded. |
|
||||
| MP5 | Job-system parallelism | ⚪ stretch, evidence-gated |
|
||||
|
||||
---
|
||||
|
|
|
|||
|
|
@ -141,16 +141,17 @@ 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 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
|
||||
pass. Slice I6 made gameplay flat-authoritative; its dense-Arwic referee gate
|
||||
matched 46,309/46,309 queries and the physical nine-stop soak converged.
|
||||
Following user collision acceptance, `82f8d4f8` removed every production
|
||||
parsed collision graph. Slice I7 passes 8,413 Release tests / 5 skips and both
|
||||
exact-binary connected lifecycle/reconnect and nine-stop routes; parsed graph
|
||||
residency is `0/0/0` at every stable checkpoint and teardown converges. Slice I
|
||||
is complete. Slice J0 established and enforced the presentation-independent
|
||||
`AcDream.Runtime` boundary without moving behavior; J1 is active under
|
||||
[`2026-07-25-modern-runtime-slice-j.md`](2026-07-25-modern-runtime-slice-j.md).
|
||||
Slice-I closeout evidence is
|
||||
[`../research/2026-07-25-slice-i7-closeout.md`](../research/2026-07-25-slice-i7-closeout.md).
|
||||
The historical exact G4 visual rollback remains
|
||||
`git revert ef1d263337997bb030eadb7b8e71d73dc659907a`.
|
||||
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
**Date:** 2026-07-24
|
||||
|
||||
**Status:** Slices A–H are complete. Slice I6's flat-authoritative production
|
||||
cutover is committed and awaits the final user collision/visual gate before
|
||||
parsed-graph deletion. Slices F–L were explicitly approved 2026-07-24. Slice
|
||||
J0's dependency-boundary preparation is complete without moving gameplay
|
||||
owners. J1 remains behind the I6/I7 user collision/visual closeout.
|
||||
**Status:** Slices A–I are complete. Flat-authoritative collision, zero-
|
||||
allocation resolve scratch, parsed-graph removal, connected correctness/
|
||||
lifetime acceptance, and Slice-I closeout landed 2026-07-25. Slices F–L were
|
||||
explicitly approved 2026-07-24. Slice J0's dependency-boundary preparation is
|
||||
complete without moving gameplay owners; J1 is the active execution point.
|
||||
|
||||
**Scope:** Reconcile and sequence the existing Modern Pipeline (`MP`) and
|
||||
Linux/headless (`LH`) tracks using the 2026-07-24 connected performance audit.
|
||||
|
|
@ -1240,8 +1240,12 @@ validated immutable flat collision records: synthetic and installed-DAT
|
|||
source identity, exact float bits, deterministic pre-order, and corruption
|
||||
tripwires pass without changing production traversal. I3 now packages all
|
||||
flat collision/topology records through a shared typed mmap source: two
|
||||
complete 2,232,170-key bakes are byte-identical with zero failures. I4 flat
|
||||
traversal shadow implementation is the current execution point.
|
||||
complete 2,232,170-key bakes are byte-identical with zero failures. I4–I6 then
|
||||
proved exact flat traversal, strict dual publication, and flat-authoritative
|
||||
gameplay before removing every production parsed collision graph. Slice I7
|
||||
passes 8,413 Release tests / 5 skips plus both exact-binary connected routes;
|
||||
every stable checkpoint reports zero retained parsed collision graphs. J1 is
|
||||
now the current execution point.
|
||||
Evidence:
|
||||
[`../research/2026-07-25-slice-g5-production-profile.md`](../research/2026-07-25-slice-g5-production-profile.md)
|
||||
and
|
||||
|
|
@ -1251,6 +1255,8 @@ and
|
|||
and
|
||||
[`../research/2026-07-25-slice-i3-prepared-collision-package.md`](../research/2026-07-25-slice-i3-prepared-collision-package.md)
|
||||
and
|
||||
[`../research/2026-07-25-slice-i7-closeout.md`](../research/2026-07-25-slice-i7-closeout.md)
|
||||
and
|
||||
[`2026-07-25-modern-runtime-slice-i.md`](2026-07-25-modern-runtime-slice-i.md).
|
||||
|
||||
The intended order is therefore:
|
||||
|
|
@ -1264,8 +1270,8 @@ honest metrics + committed baselines (A — exit criteria block C)
|
|||
-> incremental render scene (F)
|
||||
-> delta GPU submission (G)
|
||||
-> residual frame cleanup (H-a, H-b, H-c)
|
||||
-> flat collision assets (I — CURRENT at I4)
|
||||
-> presentation-independent runtime (J — §0.3 authorization)
|
||||
-> flat collision assets (I — COMPLETE)
|
||||
-> presentation-independent runtime (J — CURRENT at J1)
|
||||
-> Linux/headless/multi-session (K)
|
||||
-> evidence-gated GPU jobs (L)
|
||||
```
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
# Modern runtime Slice I — flat collision assets and zero-allocation physics
|
||||
|
||||
**Status:** I0-I5 COMPLETE - retail oracle, zero-allocation transition
|
||||
**Status:** I0–I7 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, strict connected gate, and physical nine-stop soak
|
||||
complete; user collision/visual acceptance active before graph deletion
|
||||
package, exact flat traversal, dual publication, flat-authoritative production
|
||||
cutover, parsed-graph removal, connected correctness/lifetime acceptance, and
|
||||
documentation closeout
|
||||
**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
|
||||
|
|
@ -290,7 +290,20 @@ no automation oracle) sustained roughly 190–200 FPS with stable CPU p50
|
|||
~5.0 ms / p95 ~5.9–7.3 ms and GPU p95 ~2.1 ms. Evidence:
|
||||
[`../research/2026-07-25-slice-i6-flat-production-cutover.md`](../research/2026-07-25-slice-i6-flat-production-cutover.md).
|
||||
|
||||
Parsed-graph removal remains gated on the user correctness/visual pass.
|
||||
The user accepted the connected collision gate on 2026-07-25. Production
|
||||
parsed-graph removal then landed at
|
||||
`82f8d4f82e24ad85042ac3e25c4f6464bebce758`. The production
|
||||
`PhysicsDataCache`, stable `GpuWorldState`, near-build payloads, and live
|
||||
publication path now retain only immutable flat assets. Graph construction
|
||||
survives solely in explicit tests, bake/equivalence tools, and source-oracle
|
||||
constructors. The exact rollback for graph removal is:
|
||||
|
||||
```text
|
||||
git revert 82f8d4f82e24ad85042ac3e25c4f6464bebce758
|
||||
```
|
||||
|
||||
Do not revert I3–I6 unless evidence implicates the prepared package or
|
||||
flat-authoritative traversal itself.
|
||||
|
||||
### I7 — allocation, soak, and documentation closeout
|
||||
|
||||
|
|
@ -314,6 +327,22 @@ Final gate:
|
|||
- connected portal/reconnect/interaction routes pass;
|
||||
- exact cutover rollback recorded before user verification.
|
||||
|
||||
**Completed 2026-07-25.** Release build and the complete solution pass
|
||||
8,413 tests / 5 skips. The focused collision/door/doorway/cellar/ramp/jump/
|
||||
projectile/allocation gate passes 154 Core tests plus 47 App camera/projectile
|
||||
tests; player, grounded publication, remote, projectile, and camera resolves
|
||||
remain 0 B/resolve.
|
||||
|
||||
The exact-binary connected lifecycle/reconnect route and canonical nine-stop
|
||||
R6 soak both pass with graceful exits. Every stable checkpoint reports
|
||||
`0/0/0` retained parsed GfxObj/Setup/cell graphs while flat GfxObj/Setup/cell
|
||||
residency remains populated. Movement, jump, combat, projectile, portal,
|
||||
dungeon, revisit, reconnect, publication, retirement, and teardown checks
|
||||
pass. The user accepted collision behavior over RDP. Absolute post-removal
|
||||
GPU/frame-time and ordinary-process memory comparison remains a physical-
|
||||
display measurement, not a Slice-I correctness blocker. Evidence:
|
||||
[`../research/2026-07-25-slice-i7-closeout.md`](../research/2026-07-25-slice-i7-closeout.md).
|
||||
|
||||
## 4. Commit order
|
||||
|
||||
Each unit is independently buildable and reversible:
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# Modern runtime Slice J — presentation-independent runtime
|
||||
|
||||
**Status:** J0 COMPLETE — lifetime plan, project boundary, and dependency
|
||||
guards; J1 waits for the Slice I6/I7 user collision/visual closeout
|
||||
guards; Slice I is closed and J1 is ACTIVE
|
||||
**Parent:** `2026-07-24-modern-runtime-architecture.md`, Slice J
|
||||
**Authorization:** the user approved Slices F–L, including the otherwise-frozen
|
||||
Slice J gameplay-owner moves, on 2026-07-24
|
||||
|
|
@ -36,9 +36,10 @@ deletes the replaced App production path before the next group moves.
|
|||
9. A headless construction path is proved after every coherent move. “No
|
||||
window” means no App, Silk, OpenAL, retained UI, particle, or render assembly
|
||||
is loaded—not a hidden graphical process.
|
||||
10. The user collision/visual gate for Slice I6 still controls parsed-graph
|
||||
deletion. J0 may land independently; gameplay-owner moves begin only after
|
||||
the active I6/I7 closeout has reconciled the final collision owner shape.
|
||||
10. Slice I is closed: production collision is flat-authoritative and retains
|
||||
no parsed collision graph. J1 contracts adapt that final canonical owner
|
||||
shape; they may not reintroduce a graph fallback or mirrored collision
|
||||
authority.
|
||||
|
||||
## 2. Target dependency direction
|
||||
|
||||
|
|
|
|||
121
docs/research/2026-07-25-slice-i7-closeout.md
Normal file
121
docs/research/2026-07-25-slice-i7-closeout.md
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
# Slice I7 — flat collision closeout
|
||||
|
||||
## Result
|
||||
|
||||
Modern Runtime Slice I is complete. Production collision consumes the
|
||||
immutable prepared flat representation exclusively, per-resolve scratch is
|
||||
retained and reset-complete, and no parsed DAT collision graph remains in
|
||||
stable gameplay state.
|
||||
|
||||
The two production cutover commits are:
|
||||
|
||||
- flat-authoritative traversal:
|
||||
`068a06518dd710ca5e7f166754cbb7789ca1ed0f`;
|
||||
- parsed-graph removal:
|
||||
`82f8d4f82e24ad85042ac3e25c4f6464bebce758`.
|
||||
|
||||
Exact rollback commands:
|
||||
|
||||
```text
|
||||
git revert 82f8d4f82e24ad85042ac3e25c4f6464bebce758
|
||||
git revert 068a06518dd710ca5e7f166754cbb7789ca1ed0f
|
||||
```
|
||||
|
||||
Revert graph removal first. Do not revert the I3 prepared-package, I4
|
||||
flat-traversal, or I5 publication work unless evidence implicates those
|
||||
layers.
|
||||
|
||||
## Production ownership after removal
|
||||
|
||||
- `PhysicsDataCache` publishes immutable flat GfxObj, Setup, CellStruct, and
|
||||
EnvCell topology records directly.
|
||||
- Stable `GpuWorldState` strips temporary `PhysicsDatBundle` source material.
|
||||
- Near `LandblockBuild` payloads discard Environment/GfxObj raw collision
|
||||
graphs after their immutable flat closure is built.
|
||||
- Live objects publish through the same strict prepared source.
|
||||
- Graph constructors remain only as explicit test, bake, and equivalence
|
||||
oracles. Production has no graph fallback and no sampled referee.
|
||||
- The single validated `acdream.pak` mmap remains the production render and
|
||||
collision source.
|
||||
|
||||
This is a storage/ownership change only. Collision comparisons, traversal
|
||||
order, source float bits, retail thresholds, cell semantics, and authoritative
|
||||
game behavior did not change.
|
||||
|
||||
The retail divergence register was audited. No row was added or retired:
|
||||
Slice I changes the representation and lifetime of already ported collision
|
||||
data without introducing a behavior deviation.
|
||||
|
||||
## Automated evidence
|
||||
|
||||
- Release build: pass with zero errors and zero warnings.
|
||||
- Complete Release solution: 8,413 passed / 5 skipped.
|
||||
- Focused Core collision, doors, doorway, cellar/ramp, jump, projectile, and
|
||||
allocation gate: 154 passed.
|
||||
- Focused App camera/projectile gate: 47 passed.
|
||||
- Player, grounded walkable publication, remote, projectile, and camera
|
||||
profiles: 0 B/resolve.
|
||||
- Direct flat `CellSurface`, walkable-plane, behaviorless-cell, stable-state
|
||||
stripping, and production graph-residency fixtures pass.
|
||||
|
||||
## Connected lifecycle/reconnect gate
|
||||
|
||||
Report:
|
||||
`logs/connected-world-gate-20260725-182242/report.json` in the exact-binary
|
||||
gate worktree.
|
||||
|
||||
- Source and binary:
|
||||
`82f8d4f82e24ad85042ac3e25c4f6464bebce758`.
|
||||
- Result: PASS; two graceful exits; zero failures.
|
||||
- Six capped checkpoints plus one fresh-process uncapped reconnect passed.
|
||||
- Parsed collision graph counts were `0/0/0` at every checkpoint.
|
||||
- Flat GfxObj/Setup/cell residency remained populated, including:
|
||||
- capped login: `168/112/71`;
|
||||
- Rynthid: `384/262/790`;
|
||||
- Facility Hub: `436/272/279`;
|
||||
- Holtburg after dungeon: `761/415/531`;
|
||||
- fresh uncapped reconnect: `167/103/59`.
|
||||
- Publication, retirement, upload, warmup, and class backlogs converged.
|
||||
|
||||
The 25 world-edge misses are the route's existing expected diagnostic, not a
|
||||
new collision failure.
|
||||
|
||||
## Connected canonical nine-stop gate
|
||||
|
||||
Report:
|
||||
`logs/connected-r6-soak-20260725-182823.report.json` in the exact-binary gate
|
||||
worktree.
|
||||
|
||||
- Result: PASS; graceful exit; zero failures.
|
||||
- All nine portal checkpoints materialized and stabilized.
|
||||
- Parsed collision graph counts were `0/0/0` at all nine checkpoints.
|
||||
- Flat cell residency covered Caul, Sawato, Rynthid, Aerlinthe, and Holtburg,
|
||||
including 790 cells at Rynthid and 531 at Holtburg.
|
||||
- Movement, jump/fall, combat/projectile, portal, dungeon, revisit, and
|
||||
authoritative server-echo checks passed.
|
||||
- Final publication, retirement, worker, destination, control, unload,
|
||||
near/far, staged-upload, and composite-warmup backlogs were zero.
|
||||
|
||||
The known route warnings were limited to a Caul visible-workload delta of two,
|
||||
an eleven-particle plateau delta, 32 optional missing-DAT VFX diagnostics, and
|
||||
the 25 expected world-edge misses.
|
||||
|
||||
## Measurement boundary
|
||||
|
||||
The user accepted collision correctness under RDP. The RDP nine-stop route
|
||||
also showed a bounded final plateau near 1.93 GiB working set while carrying
|
||||
observer/automation state, below the earlier dual-representation diagnostic
|
||||
route's roughly 2.06 GiB final Caul working set. Those are not controlled
|
||||
ordinary-client measurements, so no exact performance percentage is claimed.
|
||||
|
||||
Absolute post-removal CPU, GPU, frame-time, and ordinary-process memory
|
||||
comparison remains deferred to the next physical-display performance pass.
|
||||
That deferral does not weaken the deterministic, connected, ownership, or
|
||||
resource-lifetime acceptance above.
|
||||
|
||||
## Next execution point
|
||||
|
||||
Slice J1 begins the borrowed-view, typed-command, ordered-event, clock, and
|
||||
lifecycle contract layer in `AcDream.Runtime`. It must adapt the current
|
||||
canonical owners first; it may not create a second gameplay world or add a
|
||||
frame of graphical input latency.
|
||||
Loading…
Add table
Add a link
Reference in a new issue