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