diff --git a/docs/eve-migration-roadmap.md b/docs/eve-migration-roadmap.md index fd5c4a7..98c1707 100644 --- a/docs/eve-migration-roadmap.md +++ b/docs/eve-migration-roadmap.md @@ -674,14 +674,16 @@ Recently cut: `AetheriaEveUnitySceneProviderBridge` as an `IEveUnitySceneLiveProviderTransport`; the generic Eve live bridge consumes that transport and drives `EveUnityPlayableWorldRuntime` without the runtime - importing Aetheria scene classes. The next blocker is advertisement-owned live - proof: Aetheria's provider advertisement and surface catalog must publish the - world interaction metadata that the Unity scene document needs, so - `AetheriaEveUnitySceneProviderBridge` stops fabricating projection kind, - command boundary, receipt schema, ownership, and pointer metadata locally. - After that cut, implement concrete CultMesh/CultCache readers for provider - surface and asset manifest documents and prove provider receipts plus daemon - snapshots drive rendered Unity frames rather than renderer-local simulation. + importing Aetheria scene classes. Aetheria's provider advertisement and + surface catalog now publish the world interaction metadata the Unity scene + document needs: surface kind, projection kind, command boundary, receipt + schema, ownership, lowering targets, state schemas, and record pointer. The + Aetheria Unity bridge now selects that provider-owned advertisement instead of + fabricating the Unity scene metadata locally. The next blocker is concrete + CultMesh/CultCache live reading: provider surface and asset manifest documents + must be consumed through real live record readers, then provider receipts plus + daemon snapshots must drive rendered Unity frames rather than renderer-local + simulation. - EveElectron capture lifecycle now carries the same kind of structured pending capture contract. `captureContract` names the Electron shell runtime, capture kind, PNG artifact pattern, conformance attachment point, required Aetheria diff --git a/scripts/run-aetheria-unity-package-smoke.ps1 b/scripts/run-aetheria-unity-package-smoke.ps1 index 54c843c..b6ed95c 100644 --- a/scripts/run-aetheria-unity-package-smoke.ps1 +++ b/scripts/run-aetheria-unity-package-smoke.ps1 @@ -17,6 +17,7 @@ $aetheriaEveRuntimePackage = Join-Path $AetheriaRoot "Packages\org.gamecult.aeth $aetheriaEveRuntimeAsmdef = Join-Path $AetheriaRoot "Packages\org.gamecult.aetheria.eve-runtime\Runtime\GameCult.Aetheria.EveRuntime.asmdef" $aetheriaSceneBridge = Join-Path $AetheriaRoot "Packages\org.gamecult.aetheria.eve-runtime\Runtime\AetheriaEveUnitySceneProviderBridge.cs" $aetheriaSceneProviderComponent = Join-Path $AetheriaRoot "Packages\org.gamecult.aetheria.eve-runtime\Runtime\AetheriaEveUnitySceneProviderComponent.cs" +$aetheriaSurfaceCatalog = Join-Path $AetheriaRoot "Packages\org.gamecult.aetheria.state\Runtime\AetheriaRuntimeEveSurfaceCatalog.cs" $aetheriaGameSurfaceBuilder = Join-Path $AetheriaRoot "Packages\org.gamecult.aetheria.state\Runtime\AetheriaRuntimeDaemonGameSurfaceBuilder.cs" $aetheriaDaemonOperationsClient = Join-Path $AetheriaRoot "Packages\org.gamecult.aetheria.state\Runtime\AetheriaRuntimeDaemonOperationsClient.cs" if (-not (Test-Path $manifestPath)) { @@ -43,6 +44,9 @@ if (-not (Test-Path $aetheriaSceneBridge)) { if (-not (Test-Path $aetheriaSceneProviderComponent)) { throw "Aetheria Eve Unity scene provider component not found: $aetheriaSceneProviderComponent" } +if (-not (Test-Path $aetheriaSurfaceCatalog)) { + throw "Aetheria Eve surface catalog not found: $aetheriaSurfaceCatalog" +} if (-not (Test-Path $aetheriaGameSurfaceBuilder)) { throw "Aetheria daemon game surface builder not found: $aetheriaGameSurfaceBuilder" } @@ -131,6 +135,9 @@ foreach ($symbol in @( "Connect", "Disconnect", "SubmitCommand", + "ReadAdvertisedSurface", + "runtimeState.ProviderAdvertisement.Latest", + "WorldInteraction", "AetheriaEveRuntimeUnityHooks.RequireControl", "ToReceipt(request, daemonEnvelope)", "ToReceipt(request, envelope)" @@ -167,6 +174,24 @@ foreach ($symbol in @( } } +$surfaceCatalog = Get-Content -Raw -LiteralPath $aetheriaSurfaceCatalog +foreach ($symbol in @( + "AetheriaRuntimeEveWorldInteractionAdvertisement", + "SurfaceKind", + "WorldInteraction", + "Find", + '"interactive-world"', + '"provider-authored-world-surface"', + '"provider-authored-world-editor-surface"', + '"unity-scene"', + "AetheriaRuntimeDaemonSchemas.EveCommandAcceptanceStatus", + '"provider-owns-world-state-assets-command-acceptance-and-receipts"' +)) { + if (-not $surfaceCatalog.Contains($symbol)) { + throw "Aetheria Eve surface catalog missing advertised world-interaction symbol: $symbol" + } +} + $gameSurfaceBuilder = Get-Content -Raw -LiteralPath $aetheriaGameSurfaceBuilder foreach ($symbol in @( '"world.scene3d"',