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>
4.9 KiB
Modern runtime J3.3 exact projection-store closeout
Result
J3.3 is complete in two production commits:
420e5eea70fd2c29cf9c8614e6298a1f84d64045— exact-key App projection store and presentation-owner cutover.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:
Runtime local ID + INSTANCE_TS incarnation
There are three explicit states:
- canonical-only Runtime registration with no App sidecar;
- one materialized App sidecar under its exact key;
- 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:
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.