From d3d67ecb562cc9fd84b660ecac36321f0b9ca7d3 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 29 Jun 2026 06:43:11 +0100 Subject: [PATCH] Use provider-native state in gameplay boot --- Aetheria.State.Verify/Program.cs | 18 ++++++++++-------- .../Gameplay/AetheriaUnityGameplayBootShell.cs | 7 +++---- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/Aetheria.State.Verify/Program.cs b/Aetheria.State.Verify/Program.cs index b1c99d211..7b7c027e3 100644 --- a/Aetheria.State.Verify/Program.cs +++ b/Aetheria.State.Verify/Program.cs @@ -9284,8 +9284,7 @@ static void RequireClientTargetBootAuthority(string root) "Aetheria runtime state file: {stateBoot.StateFilePath}", "!stateBoot.SupportsLocalStateFileRead", "stateBoot.StateFileExists", - "AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot.StateFilePath, stateBoot.RuntimeId)", - ".State", + "AetheriaUnityRuntimeClientProvider.RuntimeState(stateBoot, stateBoot.RuntimeId)", ".Reactive()", "runtimeCatalogDocument.Current", ".Reactive()", @@ -9310,10 +9309,12 @@ static void RequireClientTargetBootAuthority(string root) } if (gameplayBootShell.Contains(".ObserveCatalog()", StringComparison.Ordinal) || - gameplayBootShell.Contains(".ObserveSectorMap()", StringComparison.Ordinal)) + gameplayBootShell.Contains(".ObserveSectorMap()", StringComparison.Ordinal) || + gameplayBootShell.Contains("AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot.StateFilePath, stateBoot.RuntimeId)", StringComparison.Ordinal) || + gameplayBootShell.Contains(".State;")) { throw new InvalidOperationException( - "AetheriaUnityGameplayBootShell still routes boot catalog/sector-map reads through legacy session wrappers instead of reactive typed documents."); + "AetheriaUnityGameplayBootShell must acquire runtime state through provider-native typed state access, not legacy wrappers or full-client peels."); } var requiredPresenterSymbols = new[] @@ -16282,8 +16283,7 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root) "public sealed class AetheriaUnityGameplayBootShell", "public AetheriaUnityGameplayBootResult Boot()", "AetheriaRuntimeStateBoot.Inspect(AetheriaUnityRuntimePaths.GameDataDirectory)", - "AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot.StateFilePath, stateBoot.RuntimeId)", - ".State", + "AetheriaUnityRuntimeClientProvider.RuntimeState(stateBoot, stateBoot.RuntimeId)", ".Reactive()", "runtimeCatalogDocument.Current", ".Reactive()", @@ -16310,10 +16310,12 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root) } if (gameplayBootShell.Contains(".ObserveCatalog()", StringComparison.Ordinal) || - gameplayBootShell.Contains(".ObserveSectorMap()", StringComparison.Ordinal)) + gameplayBootShell.Contains(".ObserveSectorMap()", StringComparison.Ordinal) || + gameplayBootShell.Contains("AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot.StateFilePath, stateBoot.RuntimeId)", StringComparison.Ordinal) || + gameplayBootShell.Contains(".State;")) { throw new InvalidOperationException( - "AetheriaUnityGameplayBootShell still routes boot catalog/sector-map reads through legacy session wrappers instead of reactive typed documents."); + "AetheriaUnityGameplayBootShell must acquire runtime state through provider-native typed state access, not legacy wrappers or full-client peels."); } var requiredRuntimeClientProviderSymbols = new[] diff --git a/Assets/Scripts/Gameplay/AetheriaUnityGameplayBootShell.cs b/Assets/Scripts/Gameplay/AetheriaUnityGameplayBootShell.cs index 327bfab43..339bd754c 100644 --- a/Assets/Scripts/Gameplay/AetheriaUnityGameplayBootShell.cs +++ b/Assets/Scripts/Gameplay/AetheriaUnityGameplayBootShell.cs @@ -35,13 +35,12 @@ public sealed class AetheriaUnityGameplayBootShell $"Aetheria runtime state file is missing at {stateBoot.StateFilePath}; gameplay requires an authoritative daemon mirror."); } - var aetheria = AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot.StateFilePath, stateBoot.RuntimeId) - .State; - using var runtimeCatalogDocument = aetheria.Reactive(); + var runtimeState = AetheriaUnityRuntimeClientProvider.RuntimeState(stateBoot, stateBoot.RuntimeId); + using var runtimeCatalogDocument = runtimeState.Reactive(); var runtimeCatalog = runtimeCatalogDocument.Current; if (runtimeCatalog == null) throw new InvalidOperationException("Aetheria typed runtime catalog is required before gameplay boot."); - using var sectorMapDocument = aetheria.Reactive(); + using var sectorMapDocument = runtimeState.Reactive(); var sectorMap = sectorMapDocument.Current; if (sectorMap == null) throw new InvalidOperationException("Aetheria typed sector map is required before gameplay boot.");