acdream/docs/research/2026-07-25-slice-i7-closeout.md
Erik afebbe3eca 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>
2026-07-25 18:44:43 +02:00

121 lines
4.9 KiB
Markdown

# 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.