Track EveUnity generic host proof

This commit is contained in:
Meta Vens 2026-07-09 22:53:19 +01:00
commit f6c44d9d65
3 changed files with 47 additions and 8 deletions

View file

@ -686,9 +686,14 @@ Recently cut:
at `AetheriaRuntimeVerseRecordKeys.DaemonAssetManifest`. EveUnity still
consumes only the generic provider/plugin contracts and sidecar transport
ports; Aetheria keeps the gameplay and asset authority. The remaining blocker
is rendered-frame proof from the future EveUnity owner repo, with provider
receipts plus daemon snapshots driving Unity frames rather than
renderer-local simulation.
has narrowed again: Aetheria now mounts
`AetheriaEveUnitySceneProviderComponent` through the generic
`EveUnityPlayableWorldClientHost`, instantiates provider-authored daemon
entities under a real Unity `GameObject` scene root, and drives the generic
camera rig from the advertised player entity without Aetheria-specific Unity
client code. The remaining blocker is owner-repo PNG/frame capture from the
future EveUnity repo, with provider receipts plus daemon snapshots driving
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
@ -1016,12 +1021,18 @@ Recently cut:
`AetheriaRuntimeVerseRecordKeys.DaemonAssetManifest` record, 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
importing Aetheria product authority into EveUnity. Aetheria also proves the
generic Unity scene body, not only a recording sink:
`GenericEveUnityClientHostInstantiatesAetheriaDaemonWorldThroughProviderComponent`
mounts the public provider component through `EveUnityPlayableWorldClientHost`,
creates provider-authored `EveUnityPlayableWorldEntityMarker` GameObjects, and
applies `EveUnityPlayableWorldCameraRig` against the advertised player.
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.
export. The remaining blocker is owner-repo PNG/frame capture from the future
EveUnity 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,

View file

@ -3,7 +3,8 @@ param(
[string] $UnityExe = "C:\Program Files\Unity\Hub\Editor\6000.4.2f1\Editor\Unity.exe",
[string] $OutputRoot = "",
[string] $PackageName = "org.gamecult.eve.unity-uitoolkit",
[string] $TestAssembly = "GameCult.Eve.UnityUIToolkit.Tests"
[string] $TestAssembly = "GameCult.Eve.UnityUIToolkit.Tests",
[string] $TestFilter = ""
)
$ErrorActionPreference = "Stop"
@ -73,6 +74,9 @@ try {
"-testResults", $resultsPath,
"-logFile", $logPath
)
if (-not [string]::IsNullOrWhiteSpace($TestFilter)) {
$arguments += @("-testFilter", $TestFilter)
}
$process = Start-Process -FilePath $UnityExe -ArgumentList $arguments -Wait -PassThru -WindowStyle Hidden
$exitCode = $process.ExitCode

View file

@ -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"
$aetheriaDaemonRuntimeTests = Join-Path $AetheriaRoot "Assets\Scripts\Tests\DaemonRuntimeDocumentTests.cs"
$aetheriaClientState = Join-Path $AetheriaRoot "Packages\org.gamecult.aetheria.state\Runtime\AetheriaClientState.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"
@ -47,6 +48,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 $aetheriaDaemonRuntimeTests)) {
throw "Aetheria daemon runtime tests not found: $aetheriaDaemonRuntimeTests"
}
if (-not (Test-Path $aetheriaClientState)) {
throw "Aetheria client state not found: $aetheriaClientState"
}
@ -181,6 +185,8 @@ foreach ($symbol in @(
"stateFilePathOverride",
"surfaceId",
"runtimeId",
"public void Configure(",
"Dispose();",
"Refresh",
"Submit",
"SubmitCommand"
@ -190,6 +196,24 @@ foreach ($symbol in @(
}
}
$daemonRuntimeTests = Get-Content -Raw -LiteralPath $aetheriaDaemonRuntimeTests
foreach ($symbol in @(
"GenericEveUnityClientHostInstantiatesAetheriaDaemonWorldThroughProviderComponent",
"AetheriaEveUnitySceneProviderComponent",
"provider.Configure(",
"EveUnityPlayableWorldClientHost",
"host.Configure(",
"rootObject.GetComponentsInChildren<EveUnityPlayableWorldEntityMarker>()",
"EveUnityPlayableWorldCameraRig",
"cameraRig.ApplyRig(0f)",
"TestGameObjectAssetProvider",
"IEveUnityGameObjectAssetProvider"
)) {
if (-not $daemonRuntimeTests.Contains($symbol)) {
throw "Aetheria daemon runtime tests missing generic EveUnity GameObject host proof symbol: $symbol"
}
}
$surfaceCatalog = Get-Content -Raw -LiteralPath $aetheriaSurfaceCatalog
foreach ($symbol in @(
"AetheriaRuntimeEveWorldInteractionAdvertisement",