Verify generic Electron host lifecycle

This commit is contained in:
Meta Vens 2026-07-10 13:49:38 +01:00
commit f7acd2152f
2 changed files with 16 additions and 8 deletions

View file

@ -89,6 +89,11 @@ advertisements and typed command/receipt documents are the boundary.
renderer API contract, product preload, preload copy script, and product IPC
registration are deleted. The Aetheria renderer entry now supplies only its
provider asset-URL boundary before mounting the generic runtime.
- EveElectron owns the live main-process provider host: secure window creation,
provider client construction, Eve IPC and receipt handling, provider readiness,
renderer loading, and cleanup. Aetheria delegates that lifecycle and retains
only daemon development launch, provider target configuration, its live smoke
scenario, and the asset protocol implementation.
- EveFlutter owns the generic Flutter clients and platform lifecycle.
- Sai and Norn publish independent sidecar plugins. Sai serves retained Ink
sessions and Norn serves graph projection and measurement through CultNet
@ -118,11 +123,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.
- Move the remaining Electron host lifecycle and generic CultMesh client
construction out of `Aetheria.Rts.Web/Electron/main.ts` into EveElectron.
Aetheria should retain only provider daemon launch/development configuration
and its asset protocol implementation until those become separately
advertised provider capabilities.
- Advertise browser/Electron asset resolution as a provider capability and move
the remaining Aetheria asset protocol reader behind EveElectron's generic
provider client. Keep daemon development launch configuration in Aetheria.
- Expand world lowering only through generic surface contracts: entities,
transforms, animation state, collision/navigation intent, cameras, effects,
interaction prompts, and command boundaries.

View file

@ -12,7 +12,8 @@ $windowPath = Join-Path $EveElectronRoot "src\window-host.mjs"
$preloadPath = Join-Path $EveElectronRoot "src\eve-provider-preload.cjs"
$preloadEntryPath = Join-Path $EveElectronRoot "src\eve-provider-preload-entry.cjs"
$rendererRuntimePath = Join-Path $EveElectronRoot "src\eve-electron-renderer.mjs"
foreach ($path in @($manifestPath, $packagePath, $shellPath, $windowPath, $preloadPath, $preloadEntryPath, $rendererRuntimePath)) {
$liveHostPath = Join-Path $EveElectronRoot "src\live-provider-host.mjs"
foreach ($path in @($manifestPath, $packagePath, $shellPath, $windowPath, $preloadPath, $preloadEntryPath, $rendererRuntimePath, $liveHostPath)) {
if (-not (Test-Path -LiteralPath $path)) { throw "EveElectron owner path missing: $path" }
}
@ -28,10 +29,14 @@ $main = Get-Content -LiteralPath (Join-Path $AetheriaRoot "Aetheria.Rts.Web\Elec
$renderer = Get-Content -LiteralPath (Join-Path $AetheriaRoot "Aetheria.Rts.Web\Client\app.ts") -Raw
$preloadEntry = Get-Content -LiteralPath $preloadEntryPath -Raw
$rendererRuntime = Get-Content -LiteralPath $rendererRuntimePath -Raw
foreach ($symbol in @("createEveElectronWindow", "registerEveWindowControls", "@gamecult/eve-electron")) {
$liveHost = Get-Content -LiteralPath $liveHostPath -Raw
foreach ($symbol in @("startEveElectronProviderHost", "@gamecult/eve-electron/live-provider-host")) {
if (-not $main.Contains($symbol)) { throw "Aetheria Electron host does not consume owner symbol: $symbol" }
}
if (-not $main.Contains("eve-provider-preload-entry.cjs") -or -not $preloadEntry.Contains("installEveProviderBridge")) {
if (-not $liveHost.Contains("eve-provider-preload-entry.cjs") -or
-not $liveHost.Contains("registerEveProviderIpc") -or
-not $liveHost.Contains("createEveElectronWindow") -or
-not $preloadEntry.Contains("installEveProviderBridge")) {
throw "Aetheria host does not consume EveElectron's standalone provider preload."
}
if (Test-Path -LiteralPath (Join-Path $AetheriaRoot "Aetheria.Rts.Web\Electron\preload.cjs")) {