docs(runtime): close J3.2 canonical identity gate

Record the exact f46ddb5c rollback, 8,441-test Release gate, and seven-checkpoint connected lifecycle/reconnect pass. Update the canonical project state and pin J3.3's exact-key App projection-store execution plan.

Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-25 20:14:29 +02:00
parent f46ddb5cdb
commit e18df84437
8 changed files with 306 additions and 8 deletions

View file

@ -0,0 +1,79 @@
# Modern runtime J3.2 canonical entity directory closeout
## Result
J3.2 is complete at production commit
`f46ddb5cdb1e145752bea49aeb1d62bfe71284d3`.
`AcDream.Runtime.Entities.RuntimeEntityDirectory` now owns the only:
- active server-GUID to exact-incarnation map;
- exact-incarnation teardown tombstone map;
- Runtime local-ID allocation and reverse lookup;
- accepted inbound snapshot/timestamp owner;
- parent-relation owner;
- session lifetime epoch and per-GUID operation versions.
`RuntimeEntityRecord` owns the presentation-free canonical spawn, `INSTANCE_TS`,
cell/state authority, retail object clock, authority versions, and the
PhysicsBody/physics-host facts deliberately carried until J5.
App's `LiveEntityRecord` is now a graphical sidecar over that canonical record.
Its temporary dictionary-shaped `ActiveRecordView` stores no GUID map: it asks
Runtime for the current canonical record and resolves the sidecar by record
reference. J3.3 replaces that compatibility seam with an exact
`RuntimeEntityKey` projection store.
No renderer, UI, Silk.NET, ImGui, OpenAL, or App type entered Runtime. No
asynchronous queue or input-frame delay was added.
## Automated acceptance
At the production commit:
- Runtime tests: 110 passed;
- App tests: 3,758 passed / 3 skipped;
- complete Release solution: 8,441 passed / 5 skipped;
- Release solution build: pass.
Coverage includes active-incarnation uniqueness, exact old-generation
tombstones, local-ID wrap/reverse lookup, stale identity release, session epoch
replacement, accepted snapshot authority, separate delete/teardown edges,
resource registration rollback, reentrant clear/delete, GUID reuse, and source
guards that reject presentation/backend state on the canonical record.
## Connected lifecycle acceptance
Raw evidence:
`logs/connected-world-gate-20260725-200749/report.json`.
Result: PASS on the exact production commit.
- Capped process: login, Aerlinthe, Rynthid, Facility Hub, Holtburg after the
dungeon, and Aerlinthe revisit all completed.
- Fresh uncapped process: reconnect completed.
- Seven of seven checkpoints passed.
- Both processes exited gracefully with exit code zero.
- Every checkpoint reported zero render-shadow mismatches and zero pending
render deltas.
- No gate failure was recorded.
- The only warning was 25 expected world-edge landblock misses.
This proves that moving identity, incarnation, tombstone, accepted-wire, and
local-ID ownership into Runtime preserved connected object creation,
same-location revisit, dungeon/outdoor replacement, packet routing, rendering,
and graceful teardown on the exact binary.
## Exact rollback
```text
git revert f46ddb5cdb1e145752bea49aeb1d62bfe71284d3
```
J3.1 remains independently reversible with:
```text
git revert f7442d13e9ae7d5b077ffecb1f8a10899ad46edd
```
When reverting both, revert J3.2 before J3.1.

View file

@ -8,6 +8,31 @@ The accepted J2 binary passes 8,428 Release tests with five skips and the
seven-checkpoint connected lifecycle/reconnect gate at
`logs/connected-world-gate-20260725-193936/report.json`.
## J3.2 ownership checkpoint
Commit `f46ddb5cdb1e145752bea49aeb1d62bfe71284d3` implements the first
canonical split:
- `RuntimeEntityDirectory` owns the only active GUID map, exact-incarnation
tombstones, reverse local-ID map, session lifetime epoch, per-GUID operation
versions, accepted inbound snapshot owner, and parent-relation owner;
- `RuntimeEntityRecord` owns the presentation-free canonical snapshot,
`INSTANCE_TS`, authoritative cell/state/timestamp versions, object clock,
PhysicsBody/physics-host facts carried for J5, and Runtime-issued local ID;
- App's `LiveEntityRecord` is now a projection sidecar around that canonical
record;
- the temporary `ActiveRecordView` is dictionary-shaped only to preserve the
large synchronous App call surface during J3.2. It stores no GUID map and
resolves every lookup through `RuntimeEntityDirectory`; J3.3 deletes it;
- Runtime-only ownership/lifetime tests and App source guards protect the
boundary.
The checkpoint passes 110 Runtime tests, 3,758 App tests with three skips, and
8,441 complete Release tests with five skips. Its exact-binary connected gate
also passes all seven checkpoints with graceful exits, zero render-shadow
mismatches, and zero pending deltas:
`logs/connected-world-gate-20260725-200749/report.json`.
At this baseline:
- `LiveEntityRuntime.cs` is 2,866 lines and is referenced by roughly 100 App