From f7154e2ccce896a3a880f1f95b0e315750e8c28f Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sat, 13 Jun 2026 20:19:00 +0100 Subject: [PATCH] Demote runtime catalog entry base --- Aetheria.State/README.md | 2 ++ .../ServerShared/Agents/Tasks/AgentTask.cs | 2 +- Assets/Scripts/ServerShared/Corporations.cs | 4 ++-- Assets/Scripts/ServerShared/ItemData.cs | 4 ++-- ...CatalogEntry.cs => RuntimeProjectionEntry.cs} | 4 ++-- ...ry.cs.meta => RuntimeProjectionEntry.cs.meta} | 0 Assets/Scripts/ServerShared/ZoneData.cs | 4 ++-- docs/aetheria-perfect-machine-map.md | 16 ++++++++++------ 8 files changed, 21 insertions(+), 15 deletions(-) rename Assets/Scripts/ServerShared/RuntimeProjection/{RuntimeCatalogEntry.cs => RuntimeProjectionEntry.cs} (89%) rename Assets/Scripts/ServerShared/RuntimeProjection/{RuntimeCatalogEntry.cs.meta => RuntimeProjectionEntry.cs.meta} (100%) diff --git a/Aetheria.State/README.md b/Aetheria.State/README.md index ecf026533..370e9bcd0 100644 --- a/Aetheria.State/README.md +++ b/Aetheria.State/README.md @@ -63,6 +63,8 @@ and inspection metadata for the typed runtime bridge. Item instances now carry `RuntimeItemReference`, a narrow item-id/value holder. The old generic `RuntimeCatalogLink` abstraction has been deleted; item data projection is routed through `ItemManager` and the typed runtime catalog reader. +Surviving Unity DTOs inherit `RuntimeProjectionEntry`; the old +`RuntimeCatalogEntry` base name no longer appears in live source. `Aetheria.State.Import` captures the legacy catalog files into typed quarantine state: path, size, and SHA-256 fingerprint for `AetherDB.msgpack` plus diff --git a/Assets/Scripts/ServerShared/Agents/Tasks/AgentTask.cs b/Assets/Scripts/ServerShared/Agents/Tasks/AgentTask.cs index 548147406..d150c6e94 100644 --- a/Assets/Scripts/ServerShared/Agents/Tasks/AgentTask.cs +++ b/Assets/Scripts/ServerShared/Agents/Tasks/AgentTask.cs @@ -4,7 +4,7 @@ using System; -public abstract class AgentTask : RuntimeCatalogEntry +public abstract class AgentTask : RuntimeProjectionEntry { public int Priority; diff --git a/Assets/Scripts/ServerShared/Corporations.cs b/Assets/Scripts/ServerShared/Corporations.cs index 36a4c6c3a..3b6c11204 100644 --- a/Assets/Scripts/ServerShared/Corporations.cs +++ b/Assets/Scripts/ServerShared/Corporations.cs @@ -8,7 +8,7 @@ using System.Collections.Generic; using Unity.Mathematics; [Inspectable] -public class Faction : RuntimeCatalogEntry, INamedEntry +public class Faction : RuntimeProjectionEntry, INamedEntry { [Inspectable] public string Name; @@ -63,7 +63,7 @@ public class Faction : RuntimeCatalogEntry, INamedEntry } [Inspectable] -public class NameFile : RuntimeCatalogEntry, INamedEntry +public class NameFile : RuntimeProjectionEntry, INamedEntry { public string Name; public string[] Names; diff --git a/Assets/Scripts/ServerShared/ItemData.cs b/Assets/Scripts/ServerShared/ItemData.cs index 98aadff20..deef53cd4 100644 --- a/Assets/Scripts/ServerShared/ItemData.cs +++ b/Assets/Scripts/ServerShared/ItemData.cs @@ -260,7 +260,7 @@ public class Shape } -public abstract class ItemData : RuntimeCatalogEntry, INamedEntry +public abstract class ItemData : RuntimeProjectionEntry, INamedEntry { [Inspectable, RuntimeCatalogKey(1)] public string Name; @@ -609,7 +609,7 @@ public class PerformanceStat } [Inspectable] -public class PersonalityAttribute : RuntimeCatalogEntry, INamedEntry +public class PersonalityAttribute : RuntimeProjectionEntry, INamedEntry { [Inspectable, RuntimeCatalogKey(1)] public string Name; diff --git a/Assets/Scripts/ServerShared/RuntimeProjection/RuntimeCatalogEntry.cs b/Assets/Scripts/ServerShared/RuntimeProjection/RuntimeProjectionEntry.cs similarity index 89% rename from Assets/Scripts/ServerShared/RuntimeProjection/RuntimeCatalogEntry.cs rename to Assets/Scripts/ServerShared/RuntimeProjection/RuntimeProjectionEntry.cs index 85b300a1a..e2269bdbb 100644 --- a/Assets/Scripts/ServerShared/RuntimeProjection/RuntimeCatalogEntry.cs +++ b/Assets/Scripts/ServerShared/RuntimeProjection/RuntimeProjectionEntry.cs @@ -10,7 +10,7 @@ public interface INamedEntry string EntryName { get; set; } } -public abstract class RuntimeCatalogEntry +public abstract class RuntimeProjectionEntry { public Guid ID = Guid.NewGuid(); @@ -21,7 +21,7 @@ public abstract class RuntimeCatalogEntry public override bool Equals(object obj) { - if (obj is RuntimeCatalogEntry entry) return entry.ID == ID; + if (obj is RuntimeProjectionEntry entry) return entry.ID == ID; return false; } } diff --git a/Assets/Scripts/ServerShared/RuntimeProjection/RuntimeCatalogEntry.cs.meta b/Assets/Scripts/ServerShared/RuntimeProjection/RuntimeProjectionEntry.cs.meta similarity index 100% rename from Assets/Scripts/ServerShared/RuntimeProjection/RuntimeCatalogEntry.cs.meta rename to Assets/Scripts/ServerShared/RuntimeProjection/RuntimeProjectionEntry.cs.meta diff --git a/Assets/Scripts/ServerShared/ZoneData.cs b/Assets/Scripts/ServerShared/ZoneData.cs index 0f9d61a1f..798cf41a6 100644 --- a/Assets/Scripts/ServerShared/ZoneData.cs +++ b/Assets/Scripts/ServerShared/ZoneData.cs @@ -21,7 +21,7 @@ public class RuntimeZoneBlueprint public double Time; } -public abstract class BodyData : RuntimeCatalogEntry, INamedEntry +public abstract class BodyData : RuntimeProjectionEntry, INamedEntry { public string Name = ""; @@ -101,7 +101,7 @@ public class Asteroid public float RotationSpeed; } -public class OrbitData : RuntimeCatalogEntry +public class OrbitData : RuntimeProjectionEntry { public Guid Parent; diff --git a/docs/aetheria-perfect-machine-map.md b/docs/aetheria-perfect-machine-map.md index 3cdbb8650..f9fcb5aad 100644 --- a/docs/aetheria-perfect-machine-map.md +++ b/docs/aetheria-perfect-machine-map.md @@ -46,7 +46,7 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. the provider-owned Eve command bridge on startup and on a daemon polling loop while hosting the CultMesh state node. `Aetheria.State.ApplyPending` remains a bounded local operator applicator for both pending lanes. -- Shared domain state is still partly built around `RuntimeCatalogEntry`, GUID +- Shared domain state is still partly built around `RuntimeProjectionEntry`, GUID identity, runtime catalog metadata, and static projection references. Dead user-record and galaxy-map-layer catalog roots have been deleted, and surviving runtime DTOs no longer carry legacy catalog group/table annotations. Newtonsoft, @@ -96,8 +96,8 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. `RuntimeItemReference`, a hydrated item-id/value holder, not a process-global catalog resolver. The old `LegacyItemCatalogBoundary`, `LegacyItemCatalogCache`, and runtime MessagePack deserializer path have been - deleted. The old `DatabaseEntry` name has been demoted to - `RuntimeCatalogEntry` for surviving runtime DTOs, and the old generic + deleted. The old `DatabaseEntry`/`RuntimeCatalogEntry` base has been demoted + to `RuntimeProjectionEntry` for surviving runtime DTOs, and the old generic `DatabaseLink`/`RuntimeCatalogLink` path has collapsed into the item-specific runtime reference. - `ItemManager` no longer exposes the raw runtime item catalog reader as public @@ -346,7 +346,7 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. contract for full .NET smokes and Eve surface reads. Neither writes state or owns simulation. The runtime no longer has a MessagePack catalog cache. `AetheriaRuntimeItemCatalog` materializes temporary `ItemData` DTOs from typed - item records for the old simulation object model. `RuntimeCatalogEntry` is a + item records for the old simulation object model. `RuntimeProjectionEntry` is a projection identity helper, not a persistence base, and behavior type selection now uses an explicit runtime catalog map instead of `UnionAttribute` reflection. @@ -382,7 +382,7 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. file save, and migration all need to converge on one typed commit primitive. - Deletion line: no new behavior should be added to old `ItemData` DTO metadata or MessagePack catalog paths except bounded migration readers and the - current typed item projection bridge. `RuntimeCatalogEntry` is no longer a + current typed item projection bridge. `RuntimeProjectionEntry` is not a persistence owner. ## Target Authority Map @@ -399,7 +399,7 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. `RuntimeCatalogEntry.ID`, global cache statics, and any compatibility reader. - Shared paths: gameplay input, editor edits, import/deep-load, replication, simulation ticks, and tests all call the same typed state service. -- Deletion line: replace the remaining `RuntimeCatalogEntry`/`ItemData` runtime DTO +- Deletion line: replace the remaining `RuntimeProjectionEntry`/`ItemData` runtime DTO projection with native typed item instances, then remove old MessagePack catalog metadata from live Unity source once import-only migration no longer needs it. @@ -544,6 +544,8 @@ First Aetheria surfaces to publish: `DatabaseLink`, and `InspectableDatabaseLinkAttribute` to runtime projection names, and move the old `ServerShared/CultCache` folder to `ServerShared/RuntimeProjection`. + - Done: rename the surviving runtime DTO identity base from + `RuntimeCatalogEntry` to `RuntimeProjectionEntry`. - Done: replace behavior union reflection with an explicit runtime catalog behavior map and remove all live `Union(...)` annotations. - Done: demote agent task runtime shapes from MessagePack object/key/union @@ -705,6 +707,8 @@ First Aetheria surfaces to publish: `Assets/Scripts` now finds only `ItemManager` checking its own hydrated value. - Live Unity source has no `RuntimeCatalogLink` or `RuntimeCatalogLinkBase`; item instances use `RuntimeItemReference` and expose `Data.ItemId`. +- Live Unity source has no `RuntimeCatalogEntry`; surviving DTOs inherit + `RuntimeProjectionEntry`. - Unity batchmode compile also returned cleanly after disabling `MessagePack` auto-reference; `Assets/Scripts` and `Assets/Editor` have no `using MessagePack`, `MessagePackSerializer`, `[MessagePackObject]`, or