From 181a0d0a79a148c38d14c9cb73a7eca1e533e775 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sat, 13 Jun 2026 14:44:55 +0100 Subject: [PATCH] Demote DatabaseEntry serialization metadata --- .voidbot/state/aetheria.cc | Bin 32794 -> 32942 bytes .../ServerShared/CultCache/DatabaseEntry.cs | 43 ------------------ docs/aetheria-perfect-machine-map.md | 20 +++++--- 3 files changed, 13 insertions(+), 50 deletions(-) diff --git a/.voidbot/state/aetheria.cc b/.voidbot/state/aetheria.cc index 2d855ab63909b49052e649f9121b0e359bc1cd36..0f07ebe8c5701e8fca38ef184890656ccc869cc9 100644 GIT binary patch delta 1113 zcmZ`(T}u>E7;aY+l}sTm(9C0?5zWr3yM8TxY+x>V; zI+IGNqoc#y&thHTbNp!pOauUFxL*av!iwg`-gudL*BVQGec46Kv4$BeIhqN4CKhaihMMW9H>l$s#sHanLHt+fiPT*o91 zvVmhmk}7|ZP332jQD2{YUdj^ZGQB{w9ng7l7b;1!=nx7Bb52dob@dLB20C^bAYKBbyOc^bD3BpKvYjLH zgvle!Ya@{=q!Gkr&#Nl zjJkQ#iJ>dEX4n6DA<4QMzy&Uob6RagqCS2}p>Q%IeopjzM=K~6OL*V2`Nr6!xVdrl zVicAzUeQOMyYc>PY)+)NuK%xsY<+20!rlY4Snp8PS)CR?YD~Pi-7^Vm-6$%whltiLFf5!w40s`W%M4=D`f1W==VllV-Zg;%dna#}X;c0 z+OWDbpN+X76$oCZU`&WS14(o=yQ8JJJT}}2|K|YDm!<8 ztjOfS{_%BtZp^TdK6R9)eA(1dt)Qw|%;xCE^V7W>(h*s1anja5xa0Upn!CabPIFlU z4<(JG1CEl$Y8nL#l4-5xh$vBOaVjl5)mZ&@B3?SWD|vht3WdJp?R2@lFcNoP+`T!4 zyL>ycc*)eocWVpB;*M(vx2=Ag+ntNMukVka=yl1RYm1xW58m : DatabaseLinkBase where T : ItemData { - [IgnoreMember] public T Value => ResolveRuntimeItemCatalog(LinkID); } -[MessagePackObject] public class DatabaseLinkBase { - [Key(0)] public Guid LinkID; - [IgnoreMember] private static IRuntimeItemCatalogReader Catalog { get; set; } protected static T ResolveRuntimeItemCatalog(Guid linkId) where T : ItemData diff --git a/docs/aetheria-perfect-machine-map.md b/docs/aetheria-perfect-machine-map.md index 4f81a5a7b..4758caddf 100644 --- a/docs/aetheria-perfect-machine-map.md +++ b/docs/aetheria-perfect-machine-map.md @@ -77,7 +77,8 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. binds `DatabaseLinkBase` to that typed runtime item reader before gameplay objects read `ItemInstance.Data.Value`. The old `LegacyItemCatalogBoundary`, `LegacyItemCatalogCache`, and runtime MessagePack deserializer path have been - deleted. + deleted. `DatabaseEntry` and `DatabaseLink` are plain runtime identity/link + helpers now, not MessagePack objects or a global union root. - `ItemManager` no longer exposes the raw runtime item catalog reader as public gameplay/UI API. Temporary item instantiation bridges now go through the narrow `ItemManager.GetCatalogEntry` method. `ItemManager` no longer @@ -256,7 +257,10 @@ 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. Item properties + item records for the old simulation object model. `DatabaseEntry` no longer + carries MessagePack union metadata; remaining item/behavior DTO MessagePack + keys are temporary projection metadata until typed behavior factories replace + reflection. Item properties manufacturer display is a typed snapshot consumer; loadout generation is the remaining runtime single-ID item lookup bridge. The old trade debug UI and console `give` command have been deleted. No live caller can enumerate legacy @@ -284,9 +288,10 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. generated keyboard layout caches, and server-side `DatabaseCache` paths. - Shared paths: manual gameplay edits, editor edits, server updates, file load, file save, and migration all need to converge on one typed commit primitive. -- Deletion line: no new behavior should be added to old `DatabaseEntry` or - MessagePack catalog paths except bounded migration readers that emit typed - `Aetheria.State` documents. +- 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. `DatabaseEntry` is no longer a + persistence owner. ## Target Authority Map @@ -435,10 +440,11 @@ First Aetheria surfaces to publish: `AetheriaRuntimeItemCatalog`, a typed-state-backed projection from `AetheriaRuntimeCatalogSnapshot`; delete `LegacyItemCatalogBoundary`, `LegacyItemCatalogCache`, and the runtime MessagePack deserializer path. + - Done: demote `DatabaseEntry` and `DatabaseLink` from MessagePack + union/object shapes to plain runtime identity/link helpers. - Convert domain references from GUID/base-class patterns to typed record refs. - - Remove runtime dependency on `DatabaseEntry`/`ItemData` DTOs as item - instance owners. + - Remove runtime dependency on `ItemData` DTOs as item instance owners. 5. Mesh host - Replace `Economy.Server` RethinkDB and LiteNetLib database authority with a