Record exact projection-store ownership, automated and connected evidence, rollback chain, and the executor-ready canonical object-table plan. Reconcile milestones, roadmap, architecture, divergence pointers, AGENTS/CLAUDE, and durable handoff state. Co-authored-by: Codex <codex@openai.com>
128 lines
4.9 KiB
Markdown
128 lines
4.9 KiB
Markdown
# Modern runtime J3.3 exact projection-store closeout
|
|
|
|
## Result
|
|
|
|
J3.3 is complete in two production commits:
|
|
|
|
1. `420e5eea70fd2c29cf9c8614e6298a1f84d64045` — exact-key App
|
|
projection store and presentation-owner cutover.
|
|
2. `e937cc36df39cf6ea1eaba2f9c0243d1929da702` — exact-key spatial
|
|
residence, visibility, quiescence, rebucketing, and retirement correction.
|
|
|
|
The second commit is the final exact binary certified by the connected gate.
|
|
|
|
`AcDream.Runtime.Entities.RuntimeEntityDirectory` remains the sole owner of
|
|
current server GUID, `INSTANCE_TS` incarnation, Runtime local ID, reverse
|
|
lookup, accepted snapshot/timestamps, parent state, session epoch, tombstones,
|
|
and per-GUID operation versions.
|
|
|
|
`AcDream.App.World.LiveEntityProjectionStore` now owns materialized graphical
|
|
sidecars only. Its key is the complete `RuntimeEntityKey`:
|
|
|
|
```text
|
|
Runtime local ID + INSTANCE_TS incarnation
|
|
```
|
|
|
|
There are three explicit states:
|
|
|
|
1. canonical-only Runtime registration with no App sidecar;
|
|
2. one materialized App sidecar under its exact key;
|
|
3. retryable teardown retaining only the unfinished suffix for that exact key.
|
|
|
|
The temporary `ActiveRecordView`, `_activeRecords`, detached
|
|
`LiveEntityRecord(EntitySpawn)` fixture path, and broad materialized/visible
|
|
`WorldEntity` collection APIs are deleted. Consumers use focused borrowed
|
|
queries or allocation-free exact-key record views.
|
|
|
|
## Exact owner cutover
|
|
|
|
The following App owners now carry the exact key:
|
|
|
|
- world projection and loaded/pending spatial residence;
|
|
- spatial visibility transitions and world-generation quiescence;
|
|
- hydration and recovery;
|
|
- animation and spatial-animation schedules;
|
|
- remote motion, remote teleport, and movement observations;
|
|
- projectile and ordinary-root worksets;
|
|
- entity effect profiles and moving lights;
|
|
- equipped-child roots and render registrations;
|
|
- render-scene journal identity;
|
|
- radar, targeting, selection, liveness, and teardown lookups.
|
|
|
|
`GpuWorldState` preserves the exact key through loaded-to-loaded rebucketing,
|
|
pending residence, landblock retirement/reload, persistent rescue, and
|
|
full-origin recenter. A delayed visibility edge therefore cannot match a later
|
|
incarnation that reused the same numeric local ID. DAT-static entities retain
|
|
their existing non-Runtime path and are not assigned a fabricated server-live
|
|
identity.
|
|
|
|
No asynchronous queue, copied gameplay world, extra input frame, local-ID
|
|
allocation-order change, renderer order change, or gameplay behavior change
|
|
was introduced.
|
|
|
|
## Automated acceptance
|
|
|
|
At final commit `e937cc36`:
|
|
|
|
- focused ownership/streaming tests: 104 passed;
|
|
- App tests: 3,761 passed / 3 skipped;
|
|
- complete Release solution: 8,444 passed / 5 skipped;
|
|
- Release solution build: pass.
|
|
|
|
Coverage includes canonical-only registration, exact sidecar claim, same-
|
|
incarnation refresh, factory/resource rollback, local-ID wrap and stale-key
|
|
rejection, loaded/pending rebucketing, landblock detach/reload, origin
|
|
recenter, reentrant visibility callbacks, GUID replacement, hydration,
|
|
animation/effect/light/equipped-child ownership, and retryable teardown.
|
|
|
|
Source guards reject a GUID-keyed App `LiveEntityRecord` authority map and
|
|
local-ID-only ownership in the materialized presentation/spatial worksets.
|
|
The divergence-register audit found no new behavioral divergence: J3.3 changes
|
|
ownership and identity plumbing only. AD-32's moved Runtime source pointers
|
|
were refreshed without changing its scope.
|
|
|
|
## Connected lifecycle acceptance
|
|
|
|
Raw evidence:
|
|
`logs/connected-world-gate-20260725-221008/report.json`.
|
|
|
|
Result: PASS on exact commit
|
|
`e937cc36df39cf6ea1eaba2f9c0243d1929da702`.
|
|
|
|
- Two fresh processes/sessions completed.
|
|
- Seven of seven checkpoints passed.
|
|
- Both processes exited gracefully with exit code zero.
|
|
- The report contains zero failures.
|
|
- Every checkpoint has zero render-scene shadow mismatches.
|
|
- Every checkpoint converged with zero pending render deltas.
|
|
- The only warning is 25 expected world-edge landblock misses.
|
|
|
|
This certifies fresh login, outdoor/dungeon travel, same-location revisit,
|
|
graceful logout, and fresh-process reconnect on the exact final binary.
|
|
|
|
## Exact rollback
|
|
|
|
Revert newest first:
|
|
|
|
```text
|
|
git revert e937cc36df39cf6ea1eaba2f9c0243d1929da702
|
|
git revert 420e5eea70fd2c29cf9c8614e6298a1f84d64045
|
|
```
|
|
|
|
Do not revert J3.2 unless canonical Runtime identity itself is also being
|
|
rolled back.
|
|
|
|
## Next slice
|
|
|
|
Start J3.4 in
|
|
`docs/plans/2026-07-25-modern-runtime-slice-j3.md`.
|
|
The executor-ready transfer prompt is
|
|
`docs/research/2026-07-25-slice-j3-3-complete-j3-4-handoff.md`.
|
|
|
|
J3.4 moves the existing canonical `ClientObjectTable` and its placement/
|
|
container lifetime under one Runtime entity/object group. App remains a
|
|
synchronous borrower for retained UI, item icons, paperdolls, grids, cooldown
|
|
drawing, and interaction presentation. It must preserve object add/update/
|
|
remove, container replacement, optimistic move rollback, stack responses,
|
|
GUID reuse, session clear, and press-time event ordering without adding a
|
|
queue or copied inventory model.
|