Require released EveUnity package consumption

This commit is contained in:
Meta Vens 2026-07-10 12:12:06 +01:00
commit a47648002e
5 changed files with 20 additions and 18 deletions

View file

@ -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.

View file

@ -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"
}

View file

@ -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."

View file

@ -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" `

View file

@ -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" `