refactor(runtime): own canonical entity and object lifetime

Introduce one presentation-free RuntimeEntityObjectLifetime for the exact entity directory and ClientObjectTable. Make GameWindow, graphical projections, retained UI, interaction, session routing, create/delete integration, and reset borrow that owner while preserving synchronous retail ordering, dormant retention, and retry semantics.

Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-26 05:54:46 +02:00
parent d9bf4c4960
commit 5ef8b5371d
40 changed files with 712 additions and 170 deletions

View file

@ -1828,7 +1828,8 @@ public sealed class LiveEntityHydrationControllerTests
private sealed class Fixture : IDisposable
{
public readonly List<string> Operations = [];
public readonly ClientObjectTable Objects = new();
public readonly RuntimeEntityObjectLifetime EntityObjects = new();
public ClientObjectTable Objects => EntityObjects.Objects;
public readonly RecordingResources Resources;
public readonly LiveEntityRuntime Runtime;
public readonly RecordingMaterializer Materializer;
@ -1861,7 +1862,8 @@ public sealed class LiveEntityHydrationControllerTests
Runtime = new LiveEntityRuntime(
spatial,
Resources,
Teardown);
Teardown,
EntityObjects);
Materializer = new RecordingMaterializer(Runtime, Operations);
Relationships = new RecordingRelationships(Operations);
Ready = new RecordingReadyPublisher(Operations);
@ -1887,13 +1889,13 @@ public sealed class LiveEntityHydrationControllerTests
};
var deletion = new LiveEntityDeletionController(
Runtime,
Objects,
EntityObjects,
Teardown,
identity,
Dormant);
Controller = new LiveEntityHydrationController(
Runtime,
Objects,
EntityObjects,
new object(),
Materializer,
Relationships,