Add Unity command receipt boundary

This commit is contained in:
Meta Vens 2026-07-09 18:43:48 +01:00
commit ccbaba2a05
11 changed files with 218 additions and 22 deletions

View file

@ -617,7 +617,10 @@ Recently cut:
`EveUnityPlayableWorldLiveClient` now composes the provider connection with
the playable-world presenter, so provider snapshots immediately drive scene
presentation and Unity input still exits through the provider command sink
rather than local simulation.
rather than local simulation. The same live client now observes provider
command receipts through `IEveUnitySceneCommandReceiptSource`: pending
receipts remain status only, while accepted or reconciled receipts refresh
from the provider surface source instead of moving entities locally.
`EveUnityPlayableWorldPresenter` now maps provider-authored entity rows and
asset refs into scene sink operations, including removal of entities absent
from later provider snapshots, without importing Aetheria entity/prefab
@ -634,8 +637,8 @@ Recently cut:
Unity client boundary is generic before it learns live transport. The next
blocker is the live generic Unity player loop: implement that CultMesh/CultNet
adapter, implement the concrete CultMesh/CultCache asset-manifest source, and
route provider receipts/next frames through the live client rather than
renderer-local simulation.
prove provider receipts plus daemon snapshots 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

@ -489,6 +489,11 @@ runtime-owned port to implement. The runtime now also declares
provider connection with `EveUnityPlayableWorldPresenter`, applies every live
snapshot to the scene sink, and delegates player intent back to the advertised
provider command boundary. The runtime now also declares
`providerCommandReceipts`: `IEveUnitySceneCommandReceiptSource` and
`EveUnitySceneCommandReceipt` keep provider-owned pending/accepted/denied/
reconciled command status distinct from scene state; accepted or reconciled
receipts can refresh the provider snapshot, but receipts do not mutate world
entities. The runtime now also declares
`playableWorldScenePresentation`: `EveUnityPlayableWorldPresenter` maps
provider-authored entity rows and asset refs into scene sink operations while
removing entities absent from later provider snapshots. The runtime now also
@ -504,8 +509,8 @@ and `EveUnityPlayableWorldAssetManifestCache` key live manifest updates by the
`playableWorld.AssetManifest` pointer, giving the future CultMesh/CultCache
reader a narrow slot that does not change scene lowering. The remaining blocker
is the live CultMesh/CultNet adapter, a concrete CultMesh/CultCache provider
asset-manifest source, receipt-aware refresh through the live client, and Unity
screenshot or frame-capture PNG production from EveUnity.
asset-manifest source, and Unity screenshot or frame-capture PNG production from
EveUnity.
Runtime capture probe coverage is exported as `runtimeCaptureProbeCoverage[]`.
Each record joins runtime status, capture owner, lifecycle capture contract,

View file

@ -166,8 +166,11 @@ radii, asset refs, controllability, and command affordances. The generic
while `IEveUnitySceneCommandSink` receives command envelopes.
`EveUnityPlayableWorldLiveClient` composes that connection with the playable
world presenter: every provider snapshot is lowered into a presentation pass,
and Unity input still emits provider-owned command intents rather than mutating
local world truth.
Unity input still emits provider-owned command intents rather than mutating
local world truth, and `IEveUnitySceneCommandReceiptSource` reports provider
receipts as derived command status. Pending receipts do not move the scene;
accepted or reconciled receipts only trigger a refresh from the provider surface
source, so the next presentation still comes from daemon-authored state.
`EveUnityPlayableWorldPresenter` maps the provider-authored entity rows and
asset refs into scene operations through `IEveUnityPlayableWorldSceneSink` and
`IEveUnityPlayableWorldAssetResolver`, including removal of entities that
@ -188,9 +191,9 @@ locally.
This is not yet the final playable client. The remaining cut is a live
CultMesh/CultNet provider subscription adapter implementing those source/sink
ports, a concrete CultMesh/CultCache asset-manifest source implementation,
receipt-aware refresh over the same live client, and proof that daemon receipts
drive the next rendered Unity frame rather than renderer-local state.
ports, a concrete CultMesh/CultCache asset-manifest source implementation, and
proof that daemon receipts plus provider snapshots drive the next rendered
Unity frame rather than renderer-local state.
## Non-Goals