refactor(app): key live projections by runtime identity

Move materialized live-object sidecars and presentation worksets to exact RuntimeEntityKey ownership. Runtime remains the only GUID/incarnation/local-ID authority while hydration, animation, effects, lights, equipped children, renderer resources, visibility, liveness, and teardown resolve exact projection identities. Preserve synchronous callbacks, local-ID allocation order, and current rendering behavior.
This commit is contained in:
Erik 2026-07-25 21:50:58 +02:00
parent e18df84437
commit 420e5eea70
73 changed files with 2939 additions and 1715 deletions

View file

@ -20,7 +20,7 @@ public sealed class AttachmentUpdateOrderTests
var calls = new List<uint>();
var children = insertionOrder.ToDictionary(id => id, id => parents[id]);
new AttachmentUpdateOrder<uint?>().ForEachParentFirst(
new AttachmentUpdateOrder<uint, uint?>().ForEachParentFirst(
children,
static parentId => parentId,
id =>
@ -44,7 +44,7 @@ public sealed class AttachmentUpdateOrderTests
};
var calls = new List<uint>();
IReadOnlyList<uint> failed = new AttachmentUpdateOrder<uint?>().ForEachParentFirst(
IReadOnlyList<uint> failed = new AttachmentUpdateOrder<uint, uint?>().ForEachParentFirst(
children,
static parentId => parentId,
id =>
@ -128,7 +128,7 @@ public sealed class AttachmentUpdateOrderTests
[20u] = 10u,
[30u] = 20u,
};
var order = new AttachmentUpdateOrder<uint?>().CollectSubtreePostOrder(
var order = new AttachmentUpdateOrder<uint, uint?>().CollectSubtreePostOrder(
children,
10u,
static parentId => parentId);
@ -146,7 +146,7 @@ public sealed class AttachmentUpdateOrderTests
};
var realized = new List<uint>();
new AttachmentUpdateOrder<uint?>().RealizeDescendants(
new AttachmentUpdateOrder<uint, uint?>().RealizeDescendants(
10u,
parent => waitingByParent.TryGetValue(parent, out var waiting)
? waiting
@ -170,7 +170,7 @@ public sealed class AttachmentUpdateOrderTests
};
var attempted = new List<uint>();
new AttachmentUpdateOrder<uint?>().RealizeDescendants(
new AttachmentUpdateOrder<uint, uint?>().RealizeDescendants(
10u,
parent => waitingByParent.TryGetValue(parent, out var waiting)
? waiting