Track Aetheria advertised Unity world interaction

This commit is contained in:
Meta Vens 2026-07-09 22:05:03 +01:00
commit af2c53e85f
2 changed files with 35 additions and 8 deletions

View file

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

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"
$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"',