diff --git a/docs/eve-migration-roadmap.md b/docs/eve-migration-roadmap.md index 0c47f9c..4ad7fc6 100644 --- a/docs/eve-migration-roadmap.md +++ b/docs/eve-migration-roadmap.md @@ -1288,12 +1288,12 @@ Recently cut: ## Live Unity Gameplay Gate -The extracted EveUnity package currently proves provider-agnostic lowering in -EditMode and inside Aetheria's Unity consumer project. It does not yet prove a -standalone generic Unity client connected to the running Aetheria daemon. The -existing `AetheriaEveUnitySceneProviderBridge` reads a local CultCache replica -and previously emitted immediate submission acknowledgements; neither is a -remote subscription or an authoritative daemon receipt. +The extracted EveUnity package now proves provider-agnostic lowering against a +separately running Aetheria daemon. `EveUnityCultMeshLiveProviderTransport` +knows only Eve core documents and CultLib: it discovers the provider +advertisement, fetches the advertised world surface, forwards command puts to +the provider primary, and reconciles provider receipts. Aetheria-specific DTOs, +record-key constants, and client bridges are absent from the runtime body. Completion requires one EveUnity-owned PlayMode client and one separately running Aetheria daemon to prove the whole path: @@ -1302,21 +1302,36 @@ running Aetheria daemon to prove the whole path: 2. Subscribe to the provider advertisement, `aetheria.daemon.game`, asset manifest, and receipt records without importing Aetheria code into EveUnity. 3. Render the initial world in a minimal EveUnity-owned Unity project. -4. Submit movement and action intents through `gamecult.eve.command.v1`. +4. Submit movement and action intents through + `gamecult.eve.command_invocation.v1`. 5. Observe a separately published provider receipt and a later surface version. 6. Reconcile the Unity scene to that version without local simulation authority. 7. Capture PNG evidence for both Aetheria and the generic world-smoke provider. -The first transport foundation now lives in Aetheria's typed Unity state client: -`AetheriaRuntimeVerseClient.OpenRemoteAsync` creates a non-authoritative local -replica, synchronizes snapshots through CultMesh, and routes writes to the -daemon's primary shard. The local-file scene adapter is explicitly labeled -`aetheria-local-cultmesh-replica`; it must not satisfy the live gameplay gate. -Remote command reconciliation now consumes Aetheria's provider-owned -`gamecult.aetheria.committed_command_fact.v1` records. A command becomes -terminal only when a fact with the same command ID exists and the synchronized -game surface version is at least the fact's source frame. Submission -acknowledgements and aggregate status documents are not receipts. +Evidence on 2026-07-10: + +- `E:\Projects\EveUnity\scripts\run-aetheria-daemon-world-witness.ps1` + starts an isolated Aetheria daemon, runs the EveUnity-owned PlayMode client, + and tears both bodies down. +- The client lowered `aetheria.game`, instantiated provider-authored entities, + submitted an idempotent move-vector invocation, received the separately + published reconciled receipt, observed a later surface version and visible + player displacement, and captured + `artifacts/aetheria-daemon/aetheria-daemon-world.png`. +- The same EveUnity project retains the non-Aetheria `eve.world-smoke` capture, + proving the runtime body is generic rather than an extracted Aetheria client. +- Aetheria no longer overrides `EveSurfaceDocument` metadata with its private + runtime surface serializer. Core surface wire fields use CultMesh transport + records; provider-private surface documents remain separate authority. + +Remaining before this gate is complete: + +- publish and consume Aetheria's asset manifest through a generic core boundary + so the clean client uses provider-authored assets rather than fallback + geometry; +- add one action/combat invocation witness alongside movement; +- attach both PNGs and receipt/version evidence to the exported conformance + pack rather than leaving them only in EveUnity's local artifacts. ## Stop Conditions