From d7bcfab5f85d5f63270427a57154f20245066a32 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 9 Jul 2026 21:11:01 +0100 Subject: [PATCH] Record Aetheria playable world EveUnity proof --- docs/eve-migration-roadmap.md | 12 ++++++++ .../eveunity-scene-split-handoff.json | 12 ++++++++ ...un-aetheria-conformance-consumer-smoke.ps1 | 5 ++++ ...run-eveunity-scene-split-handoff-smoke.ps1 | 28 +++++++++++++++++-- ...plit-target-conformance-consumer-smoke.ps1 | 5 ++++ tools/parity/parity-manifest.json | 9 ++++++ 6 files changed, 69 insertions(+), 2 deletions(-) diff --git a/docs/eve-migration-roadmap.md b/docs/eve-migration-roadmap.md index 9c47641..9b608eb 100644 --- a/docs/eve-migration-roadmap.md +++ b/docs/eve-migration-roadmap.md @@ -986,6 +986,18 @@ Recently cut: bootstrap, input, camera, scene sink, and command-envelope tests compile and run through the Aetheria consumer project without making the Unity client Aetheria-specific. +- Aetheria now also carries the real provider-side proof for the target shape: + a generic `EveUnityPlayableWorldRuntime` lowers the daemon-published 3D ARPG + world surface through the Aetheria Eve provider bridge, resolves + provider-owned playable-world asset refs, submits movement through the + advertised `gamecult.eve.command.v1` boundary, observes provider-owned + receipts, and refreshes from daemon snapshots without importing Aetheria + product authority into EveUnity. Eve records this as the + `aetheria-playable-world-consumer-proof` observed-provider move set in + `runtimes/incubating/eve-unity-scene/eveunity-scene-split-handoff.json`, and + the split-target plus Aetheria consumer smokes assert it from the conformance + export. The remaining blocker is live transport/rendered-frame proof from + the future EveUnity owner repo, not whether the Unity client is generic. - Aetheria now has repeatable Unity package consumer-build evidence for the Eve UI Toolkit runtime. `scripts/run-aetheria-unity-package-smoke.ps1` verifies Aetheria's Unity `Packages/manifest.json` consumes Eve's surface and diff --git a/runtimes/incubating/eve-unity-scene/eveunity-scene-split-handoff.json b/runtimes/incubating/eve-unity-scene/eveunity-scene-split-handoff.json index 5088528..c756132 100644 --- a/runtimes/incubating/eve-unity-scene/eveunity-scene-split-handoff.json +++ b/runtimes/incubating/eve-unity-scene/eveunity-scene-split-handoff.json @@ -142,6 +142,18 @@ "destinationOwner": "EveUnity", "replacementProof": "Unity scene input emits gamecult.eve.command.v1 intents through typed provider surface documents, a provider-snapshot client session, IEveUnitySceneProviderSurfaceSource, IEveUnitySceneCommandSink, IEveUnitySceneCommandReceiptSource, and advertised command boundaries, then observes provider receipts and refreshes from provider documents/snapshots instead of mutating local world truth." }, + { + "id": "aetheria-playable-world-consumer-proof", + "stage": "observed-provider-proof", + "observedProviderPaths": [ + "E:\\Projects\\Aetheria\\Assets\\Scripts\\Tests\\DaemonRuntimeDocumentTests.cs", + "E:\\Projects\\Aetheria\\Packages\\org.gamecult.aetheria.eve-runtime\\Runtime\\AetheriaEveUnitySceneProviderBridge.cs", + "E:\\Projects\\Aetheria\\Packages\\org.gamecult.aetheria.state\\Runtime\\AetheriaRuntimeDaemonGameSurfaceBuilder.cs", + "E:\\Projects\\Aetheria\\Packages\\org.gamecult.aetheria.state\\Runtime\\AetheriaRuntimeDaemonOperationsClient.cs" + ], + "destinationOwner": "Aetheria", + "replacementProof": "Aetheria proves a generic EveUnity playable-world runtime can lower the daemon-published 3D ARPG surface, resolve provider-owned asset refs, submit movement through the advertised command boundary, observe provider receipts, and refresh from provider-owned daemon snapshots without making EveUnity import Aetheria product code." + }, { "id": "unity-scene-capture-lifecycle", "stage": "capture", diff --git a/scripts/run-aetheria-conformance-consumer-smoke.ps1 b/scripts/run-aetheria-conformance-consumer-smoke.ps1 index ab617da..379977b 100644 --- a/scripts/run-aetheria-conformance-consumer-smoke.ps1 +++ b/scripts/run-aetheria-conformance-consumer-smoke.ps1 @@ -80,6 +80,7 @@ try { --expect-command-boundary-coverage aetheria:aetheria.daemon.editor:unity-uitoolkit:covered:EveUnity:unity-uitoolkit ` --expect-command-boundary-coverage aetheria:aetheria.daemon.editor:electron-shell:covered:EveElectron:electron-shell ` --expect-command-boundary-coverage aetheria:aetheria.daemon.editor:tui:covered:EveTui:tui ` + --expect-split-target-proof "EveUnity:Aetheria daemon 3D ARPG world lowers through a generic EveUnity playable-world client" ` --expect-runtime-capture-artifact unity-uitoolkit:json-projection:gamecult.eve.unity_uitoolkit_projection.v1:aetheria:aetheria.daemon.game ` --expect-runtime-capture-artifact unity-scene:json-projection:gamecult.eve.unity_scene_projection.v1:aetheria:aetheria.daemon.game ` --expect-runtime-capture-artifact electron-shell:json-projection:gamecult.eve.electron_shell_projection.v1:aetheria:aetheria.daemon.game ` @@ -94,6 +95,10 @@ try { --expect-split-handoff-move EveUnity:unity-scene:unity-scene-runtime-body:current:exists:EveUnitySceneSurfaceLowerer.cs ` --expect-split-handoff-move EveUnity:unity-scene:unity-scene-world-surface-lowering:current:exists:EveUnitySceneSurfaceLowerer.cs ` --expect-split-handoff-move EveUnity:unity-scene:unity-scene-command-transport:current:exists:EveUnitySceneSurfaceLowerer.cs ` + --expect-split-handoff-move EveUnity:unity-scene:aetheria-playable-world-consumer-proof:observed-provider:exists:Assets/Scripts/Tests/DaemonRuntimeDocumentTests.cs ` + --expect-split-handoff-move EveUnity:unity-scene:aetheria-playable-world-consumer-proof:observed-provider:exists:Packages/org.gamecult.aetheria.eve-runtime/Runtime/AetheriaEveUnitySceneProviderBridge.cs ` + --expect-split-handoff-move EveUnity:unity-scene:aetheria-playable-world-consumer-proof:observed-provider:exists:AetheriaRuntimeDaemonGameSurfaceBuilder.cs ` + --expect-split-handoff-move EveUnity:unity-scene:aetheria-playable-world-consumer-proof:observed-provider:exists:AetheriaRuntimeDaemonOperationsClient.cs ` --expect-split-handoff-move EveUnity:unity-uitoolkit:aetheria-unity-consumer-boundary:observed-provider:exists:Packages/manifest.json ` --expect-split-handoff-move EveUnity:unity-uitoolkit:aetheria-unity-consumer-boundary:observed-provider:exists:GameCult.Eve.UnityUIToolkit.csproj ` --expect-split-handoff-move EveUnity:unity-uitoolkit:aetheria-unity-consumer-boundary:observed-provider:exists:Aetheria.State.Unity/AetheriaRuntimeCatalogClient.cs ` diff --git a/scripts/run-eveunity-scene-split-handoff-smoke.ps1 b/scripts/run-eveunity-scene-split-handoff-smoke.ps1 index 3808f06..db019d3 100644 --- a/scripts/run-eveunity-scene-split-handoff-smoke.ps1 +++ b/scripts/run-eveunity-scene-split-handoff-smoke.ps1 @@ -50,6 +50,7 @@ $expectedMoveSets = @{ "unity-scene-norn-plugin-projection" = "plugin-projection" "unity-scene-tex-plugin-projection" = "plugin-projection" "unity-scene-command-transport" = "command" + "aetheria-playable-world-consumer-proof" = "observed-provider-proof" "unity-scene-capture-lifecycle" = "capture" } @@ -61,7 +62,8 @@ foreach ($id in $expectedMoveSets.Keys) { if ($moveSet.stage -ne $expectedMoveSets[$id]) { throw "EveUnity scene split handoff move set $id has unexpected stage: $($moveSet.stage)" } - if ($moveSet.destinationOwner -ne "EveUnity") { + $expectedDestinationOwner = if ($id -eq "aetheria-playable-world-consumer-proof") { "Aetheria" } else { "EveUnity" } + if ($moveSet.destinationOwner -ne $expectedDestinationOwner) { throw "EveUnity scene split handoff move set $id has unexpected destination owner: $($moveSet.destinationOwner)" } if (-not $moveSet.replacementProof) { @@ -81,7 +83,29 @@ foreach ($id in $expectedMoveSets.Keys) { } } if ($observedProviderPaths.Count -ne 0) { - throw "EveUnity scene split handoff move set $id must not treat provider product paths as generic scene runtime source" + if ($id -ne "aetheria-playable-world-consumer-proof") { + throw "EveUnity scene split handoff move set $id must not treat provider product paths as generic scene runtime source" + } + foreach ($providerPath in $observedProviderPaths) { + if (-not [System.IO.Path]::IsPathRooted($providerPath)) { + throw "Aetheria playable-world consumer proof path must be absolute: $providerPath" + } + if (-not (Test-Path -LiteralPath $providerPath)) { + throw "Aetheria playable-world consumer proof path is missing: $providerPath" + } + } + } +} + +$aetheriaConsumerProof = $moveSets | Where-Object { $_.id -eq "aetheria-playable-world-consumer-proof" } | Select-Object -First 1 +foreach ($requiredObservedPath in @( + "E:\Projects\Aetheria\Assets\Scripts\Tests\DaemonRuntimeDocumentTests.cs", + "E:\Projects\Aetheria\Packages\org.gamecult.aetheria.eve-runtime\Runtime\AetheriaEveUnitySceneProviderBridge.cs", + "E:\Projects\Aetheria\Packages\org.gamecult.aetheria.state\Runtime\AetheriaRuntimeDaemonGameSurfaceBuilder.cs", + "E:\Projects\Aetheria\Packages\org.gamecult.aetheria.state\Runtime\AetheriaRuntimeDaemonOperationsClient.cs" +)) { + if (-not (@($aetheriaConsumerProof.observedProviderPaths) -contains $requiredObservedPath)) { + throw "Aetheria playable-world consumer proof missing required observed provider path: $requiredObservedPath" } } diff --git a/scripts/run-split-target-conformance-consumer-smoke.ps1 b/scripts/run-split-target-conformance-consumer-smoke.ps1 index 98222db..a432abb 100644 --- a/scripts/run-split-target-conformance-consumer-smoke.ps1 +++ b/scripts/run-split-target-conformance-consumer-smoke.ps1 @@ -43,6 +43,7 @@ try { --expect-split-target-proof "EveUnity:EveUnity split handoff is machine-readable" ` --expect-split-target-proof "EveUnity:Unity scene split handoff is machine-readable" ` --expect-split-target-proof "EveUnity:Unity scene lifecycle contract is machine-readable" ` + --expect-split-target-proof "EveUnity:Aetheria daemon 3D ARPG world lowers through a generic EveUnity playable-world client" ` --expect-runtime-capture-artifact unity-uitoolkit:json-projection:gamecult.eve.unity_uitoolkit_projection.v1:aetheria:aetheria.daemon.game ` --expect-runtime-capture-artifact unity-uitoolkit:json-projection:gamecult.eve.unity_uitoolkit_projection.v1:eve.world-smoke:eve.world-smoke.surface ` --expect-runtime-capture-artifact unity-scene:json-projection:gamecult.eve.unity_scene_projection.v1:aetheria:aetheria.daemon.game ` @@ -59,6 +60,10 @@ try { --expect-split-handoff-move EveUnity:unity-scene:unity-scene-norn-plugin-projection:current:exists:NornGraphUnitySceneProjectionAdapter.cs ` --expect-split-handoff-move EveUnity:unity-scene:unity-scene-tex-plugin-projection:current:exists:TeXMathUnitySceneProjectionAdapter.cs ` --expect-split-handoff-move EveUnity:unity-scene:unity-scene-command-transport:current:exists:EveUnitySceneSurfaceLowerer.cs ` + --expect-split-handoff-move EveUnity:unity-scene:aetheria-playable-world-consumer-proof:observed-provider:exists:Assets/Scripts/Tests/DaemonRuntimeDocumentTests.cs ` + --expect-split-handoff-move EveUnity:unity-scene:aetheria-playable-world-consumer-proof:observed-provider:exists:Packages/org.gamecult.aetheria.eve-runtime/Runtime/AetheriaEveUnitySceneProviderBridge.cs ` + --expect-split-handoff-move EveUnity:unity-scene:aetheria-playable-world-consumer-proof:observed-provider:exists:AetheriaRuntimeDaemonGameSurfaceBuilder.cs ` + --expect-split-handoff-move EveUnity:unity-scene:aetheria-playable-world-consumer-proof:observed-provider:exists:AetheriaRuntimeDaemonOperationsClient.cs ` --expect-split-handoff-move EveUnity:unity-scene:unity-scene-capture-lifecycle:current:exists:eveunity-capture-contract.mjs ` --expect-split-handoff-move EveUnity:unity-uitoolkit:aetheria-unity-consumer-boundary:observed-provider:exists:Packages/manifest.json ` --expect-split-handoff-move EveUnity:unity-uitoolkit:aetheria-unity-consumer-boundary:observed-provider:exists:GameCult.Eve.UnityUIToolkit.csproj ` diff --git a/tools/parity/parity-manifest.json b/tools/parity/parity-manifest.json index 75f3bab..771a280 100644 --- a/tools/parity/parity-manifest.json +++ b/tools/parity/parity-manifest.json @@ -660,6 +660,15 @@ "scripts/run-aetheria-unity-scene-editmode-tests.ps1" ] }, + { + "description": "Aetheria daemon 3D ARPG world lowers through a generic EveUnity playable-world client without Aetheria runtime authority.", + "status": "passed", + "evidencePaths": [ + "runtimes/incubating/eve-unity-scene/eveunity-scene-split-handoff.json", + "scripts/run-eveunity-scene-split-handoff-smoke.ps1", + "scripts/run-aetheria-unity-scene-editmode-tests.ps1" + ] + }, { "description": "Unity scene graph projection lowerer plus Sai, Norn, and TeX projection adapters exist without claiming provider simulation, plugin semantics, or capture ownership.", "status": "passed",