using Unity.NetCode; namespace ProjectM.Simulation { /// /// Client → server permanent meta-upgrade purchase: keys the baked meta catalog. The /// TIER is SERVER-COMPUTED (a purchase always buys owned+1) — putting a tier on the wire would invite /// desync/cheat. Server-validated (RunInfo.Lifecycle==Staging phase gate, class mask, prereq, MaxTier, /// Aether affordability) with DR-014 in-loop ledger atomicity so two same-tick purchases on barely-enough Aether /// cannot both pass. UNCONDITIONAL wire type. Declared at Step 3 (wire front-load); consumed by /// MetaSpendSystem from Step 13. /// public struct MetaSpendRequest : IRpcCommand { /// Meta-catalog upgrade id (append-only key). public byte UpgradeId; } }