diff --git a/docs/eve-migration-roadmap.md b/docs/eve-migration-roadmap.md index 446b222..95b583d 100644 --- a/docs/eve-migration-roadmap.md +++ b/docs/eve-migration-roadmap.md @@ -51,6 +51,10 @@ advertisements and typed command/receipt documents are the boundary. movement, targeting, and fire command receipts. - EveUnity's clean `TestProject` owns generic scene and UI Toolkit package verification; ordinary runtime tests no longer open or mutate Aetheria. +- EveUnity publishes immutable `0.1.0` Git package tags for surface, scene, and + UI Toolkit. Its release-only consumer resolves those tags plus CultLib's + assembled Unity package and passes 26 Unity EditMode tests without sibling + package paths. Aetheria pins the same released sources. - EveUnity can start from one CultMesh rendezvous endpoint, discover a Verse, select an advertised `interactive-world` surface, and connect without configured Aetheria provider or surface identifiers. The Aetheria daemon @@ -84,8 +88,6 @@ advertisements and typed command/receipt documents are the boundary. - Extract EveTui when its process lifecycle and release surface are stable. - Move Android Kotlin and iOS UIKit lowerers into runtime owner repos or retire them when Flutter is the intended native owner. -- Tag and publish EveUnity UPM packages; prove installation from a released - package rather than sibling source paths. - Tag EveFlutter releases and remove remaining incubation claims. ### Generic Game Lowering @@ -93,8 +95,9 @@ advertisements and typed command/receipt documents are the boundary. - Route browser and remaining runtimes through Odin's aggregated provider discovery rather than local catalogs or sibling paths; Unity's direct CultMesh Verse discovery is the working reference. -- Prove cold-start Unity play from published packages plus daemon - advertisements, with no Aetheria checkout available to the client. +- Extend the released-package consumer from EditMode lowering proof to + cold-start PlayMode discovery against the separately running Aetheria daemon; + the generic client must still have no Aetheria code or package path. - Expand world lowering only through generic surface contracts: entities, transforms, animation state, collision/navigation intent, cameras, effects, interaction prompts, and command boundaries. diff --git a/scripts/run-conformance-consumer-smoke.ps1 b/scripts/run-conformance-consumer-smoke.ps1 index f92f97c..3eb02c8 100644 --- a/scripts/run-conformance-consumer-smoke.ps1 +++ b/scripts/run-conformance-consumer-smoke.ps1 @@ -105,7 +105,7 @@ try { --expect-runtime-witness electron-shell:eve.world-smoke:eve.world-smoke.surface:cold:pass ` --expect-runtime-witness electron-shell:aetheria:aetheria.daemon.game:cold:pass ` --expect-runtime-capture-probe tui:contract-artifact-present:json-grid:EveTui ` - --expect-capability-gap "split-target:EveUnity:EveUnity:proof:Tagged UPM release" + --expect-capability-gap "split-target:EveUnity:EveUnity:proof:Unity PlayMode frame capture" if ($LASTEXITCODE -ne 0) { throw "Conformance consumer smoke failed with exit code $LASTEXITCODE" } diff --git a/scripts/run-eveunity-owner-smoke.ps1 b/scripts/run-eveunity-owner-smoke.ps1 index 888d8e0..b820c5a 100644 --- a/scripts/run-eveunity-owner-smoke.ps1 +++ b/scripts/run-eveunity-owner-smoke.ps1 @@ -12,7 +12,10 @@ $requiredOwnerPaths = @( "packages\org.gamecult.eve.unity-scene\package.json", "packages\org.gamecult.eve.unity-scene\eve-runtime-capability.json", "scripts\pack-uitoolkit.ps1", - "scripts\run-uitoolkit-tests.ps1" + "scripts\run-uitoolkit-tests.ps1", + "scripts\run-release-consumer-tests.ps1", + "ReleaseConsumerProject\Packages\manifest.json", + "ReleaseConsumerProject\Packages\packages-lock.json" ) foreach ($relativePath in $requiredOwnerPaths) { @@ -24,9 +27,9 @@ foreach ($relativePath in $requiredOwnerPaths) { $aetheriaManifest = Get-Content (Join-Path $AetheriaRoot "Packages\manifest.json") -Raw | ConvertFrom-Json $expectedDependencies = @{ - "org.gamecult.eve.surface" = "file:../../EveUnity/packages/org.gamecult.eve.surface" - "org.gamecult.eve.unity-uitoolkit" = "file:../../EveUnity/packages/org.gamecult.eve.unity-uitoolkit" - "org.gamecult.eve.unity-scene" = "file:../../EveUnity/packages/org.gamecult.eve.unity-scene" + "org.gamecult.eve.surface" = "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.surface#eveunity-surface-v0.1.0" + "org.gamecult.eve.unity-uitoolkit" = "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.unity-uitoolkit#eveunity-uitoolkit-v0.1.0" + "org.gamecult.eve.unity-scene" = "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.unity-scene#eveunity-scene-v0.1.0" } foreach ($entry in $expectedDependencies.GetEnumerator()) { @@ -41,4 +44,4 @@ if ($LASTEXITCODE -ne 0) { throw "EveUnity UI Toolkit package smoke failed." } -Write-Host "EveUnity owns the Unity packages and Aetheria consumes them from the owner repo." +Write-Host "EveUnity owns tagged Unity packages and Aetheria consumes their immutable releases." diff --git a/scripts/run-runtime-owner-conformance-consumer-smoke.ps1 b/scripts/run-runtime-owner-conformance-consumer-smoke.ps1 index e575eba..fa503b2 100644 --- a/scripts/run-runtime-owner-conformance-consumer-smoke.ps1 +++ b/scripts/run-runtime-owner-conformance-consumer-smoke.ps1 @@ -190,11 +190,9 @@ node $consumerScript $consumerExport ` --expect-screenshot-metric unity-scene:aetheria-world:bounding-boxes:pending-capture ` --expect-screenshot-metric electron-shell:aetheria-world:bounding-boxes:pending-capture ` --expect-screenshot-metric tui:aetheria-world:bounding-boxes:terminal-grid-capture ` - --expect-runtime-lifecycle-status unity-uitoolkit:release:upm-package-artifact-smoke ` - --expect-runtime-lifecycle-status unity-uitoolkit:test:batchmode-editmode-tests-and-consumer-build-smoke ` + --expect-runtime-lifecycle-status unity-uitoolkit:release:tagged-upm-release ` + --expect-runtime-lifecycle-status unity-uitoolkit:test:released-package-editmode-batchmode ` --expect-runtime-lifecycle-status unity-uitoolkit:capture:pending-editor-capture ` - --expect-runtime-lifecycle-pending "unity-uitoolkit:release:Tagged UPM release" ` - --expect-runtime-lifecycle-pending "unity-uitoolkit:test:Cut and publish the first tagged EveUnity UI Toolkit package release" ` --expect-runtime-lifecycle-pending "unity-uitoolkit:capture:Unity batchmode or editor capture artifact" ` --expect-runtime-lifecycle-field "unity-uitoolkit:release:releaseContract.packageName:org.gamecult.eve.unity-uitoolkit" ` --expect-runtime-lifecycle-field "unity-uitoolkit:release:releaseContract.artifactKind:upm-package" ` @@ -234,10 +232,9 @@ node $consumerScript $consumerExport ` --expect-runtime-lifecycle-field "unity-uitoolkit:capture:captureContract.additionalProviderSurfaces.0.surfaceId:eve.world-smoke.surface" ` --expect-runtime-lifecycle-field "unity-uitoolkit:capture:captureContract.additionalProviderSurfaces.1.providerId:aetheria" ` --expect-runtime-lifecycle-field "unity-uitoolkit:capture:captureContract.additionalProviderSurfaces.1.surfaceId:aetheria.daemon.editor" ` - --expect-runtime-lifecycle-status unity-scene:release:owner-repo-upm-artifact ` - --expect-runtime-lifecycle-status unity-scene:test:unity-scene-editmode-batchmode ` + --expect-runtime-lifecycle-status unity-scene:release:tagged-upm-release ` + --expect-runtime-lifecycle-status unity-scene:test:released-package-editmode-batchmode ` --expect-runtime-lifecycle-status unity-scene:capture:partial-world-smoke-playmode-capture ` - --expect-runtime-lifecycle-pending "unity-scene:release:Cut and publish the first tagged EveUnity package release" ` --expect-runtime-lifecycle-pending "unity-scene:capture:Attach the Aetheria daemon PlayMode PNG" ` --expect-runtime-lifecycle-field "unity-scene:release:releaseContract.packageName:org.gamecult.eve.unity-scene" ` --expect-runtime-lifecycle-field "unity-scene:release:releaseContract.artifactKind:upm-package" ` diff --git a/scripts/run-split-target-conformance-consumer-smoke.ps1 b/scripts/run-split-target-conformance-consumer-smoke.ps1 index 68cfd47..00df99a 100644 --- a/scripts/run-split-target-conformance-consumer-smoke.ps1 +++ b/scripts/run-split-target-conformance-consumer-smoke.ps1 @@ -46,7 +46,6 @@ try { --expect-split-target-proof "EveUnity:Unity scene runtime is owned by EveUnity" ` --expect-split-target-proof "EveUnity:Unity scene lifecycle is owned and tested from EveUnity" ` --expect-split-target-proof "EveUnity:Aetheria daemon 3D ARPG world lowers through a generic EveUnity playable-world client" ` - --expect-split-target-blocker "EveUnity:Tagged UPM release" ` --expect-split-target EveElectron ` --expect-split-target-status EveElectron:graduated ` --expect-split-target-proof "EveElectron:EveElectron owner repository publishes the generic runtime package" `