Track Unity scene Norn split handoff

This commit is contained in:
Meta Vens 2026-07-09 13:00:25 +01:00
commit cb17b293ed
5 changed files with 33 additions and 7 deletions

View file

@ -436,9 +436,10 @@ Recently cut:
- Unity scene now has a direct split handoff smoke at
`scripts/run-eveunity-scene-split-handoff-smoke.ps1`. The smoke verifies the
scene runtime's current source paths for runtime body, scene graph lowering,
and command transport, does not treat Aetheria product paths as generic
runtime source, names the required Eve contracts, and keeps capture as an
external proof until EveUnity owns it.
Norn plugin projection, and command transport, does not treat Aetheria
product paths or Norn implementation state as generic runtime source, names
the required Eve contracts, and keeps capture as an external proof until
EveUnity owns it.
- Runtime split handoff documents now have a catalog-backed schema,
`gamecult.eve.runtime_split_handoff.v1`. EveConformance exports that schema
so runtime owner repos can consume split target, move set, contract input,

View file

@ -16,6 +16,7 @@
"runtimes/incubating/eve-unity-scene/package.json",
"runtimes/incubating/eve-unity-scene/Runtime/GameCult.Eve.UnityScene.asmdef",
"runtimes/incubating/eve-unity-scene/Runtime/EveUnitySceneSurfaceLowerer.cs",
"runtimes/incubating/eve-unity-scene/Runtime/NornGraphUnitySceneProjectionAdapter.cs",
"runtimes/incubating/eve-unity-scene/Tests/Editor/GameCult.Eve.UnityScene.Tests.asmdef",
"runtimes/incubating/eve-unity-scene/Tests/Editor/EveUnitySceneSurfaceLowererTests.cs"
],
@ -27,12 +28,25 @@
"stage": "world-surface-lowering",
"currentPaths": [
"runtimes/incubating/eve-unity-scene/Runtime/EveUnitySceneSurfaceLowerer.cs",
"runtimes/incubating/eve-unity-scene/Runtime/NornGraphUnitySceneProjectionAdapter.cs",
"runtimes/incubating/eve-unity-scene/Tests/Editor/EveUnitySceneSurfaceLowererTests.cs",
"runtimes/incubating/eve-unity-scene/eve-runtime-capability.json"
],
"destinationOwner": "EveUnity",
"replacementProof": "EveUnity claims the provider-advertised unity-scene lowering target with provider-agnostic scene graph projection and command boundary evidence; capture remains a separate lifecycle proof."
},
{
"id": "unity-scene-norn-plugin-projection",
"stage": "plugin-projection",
"currentPaths": [
"runtimes/incubating/eve-unity-scene/Runtime/NornGraphUnitySceneProjectionAdapter.cs",
"runtimes/incubating/eve-unity-scene/Runtime/EveUnitySceneSurfaceLowerer.cs",
"runtimes/incubating/eve-unity-scene/Tests/Editor/EveUnitySceneSurfaceLowererTests.cs",
"runtimes/incubating/eve-unity-scene/eve-runtime-capability.json"
],
"destinationOwner": "EveUnity",
"replacementProof": "EveUnity owns only the Unity scene projection adapter for Norn's sidecar-advertised embed.norn capability; Norn keeps graph layout, graph state, and graph command semantics."
},
{
"id": "unity-scene-command-transport",
"stage": "command",
@ -68,12 +82,14 @@
"Aetheria gameplay scripts as EveUnity scene lowerer truth",
"provider-specific scene components that bypass gamecult.eve.command.v1",
"renderer-local world simulation as provider truth",
"product assets bundled as Eve runtime contract"
"product assets bundled as Eve runtime contract",
"Norn graph layout, graph state, or command semantics as Unity scene runtime authority"
],
"requiredExternalProofs": [
"EveUnity publishes a Unity scene runtime capability manifest.",
"EveUnity owns a provider-agnostic scene graph lowerer that consumes advertised worldInteraction boundaries without importing Aetheria internals.",
"EveUnity owns the provider-agnostic scene graph lowerer outside Eve incubation.",
"EveUnity owns the Unity scene Norn projection adapter outside Eve incubation without importing Norn implementation state.",
"EveUnity lowers at least one non-Aetheria provider-authored world surface into Unity scene objects.",
"EveUnity lowers Aetheria's game world surface through provider advertisements without importing Aetheria internals.",
"Unity scene input emits gamecult.eve.command.v1 intents and renders provider receipts.",

View file

@ -45,6 +45,7 @@ $moveSets = @($handoff.moveSets)
$expectedMoveSets = @{
"unity-scene-runtime-body" = "runtime-body"
"unity-scene-world-surface-lowering" = "world-surface-lowering"
"unity-scene-norn-plugin-projection" = "plugin-projection"
"unity-scene-command-transport" = "command"
"unity-scene-capture-lifecycle" = "capture"
}
@ -65,7 +66,7 @@ foreach ($id in $expectedMoveSets.Keys) {
}
$currentPaths = if ($null -eq $moveSet.currentPaths) { @() } else { @($moveSet.currentPaths) }
$observedProviderPaths = if ($null -eq $moveSet.observedProviderPaths) { @() } else { @($moveSet.observedProviderPaths) }
if ($id -in @("unity-scene-runtime-body", "unity-scene-world-surface-lowering", "unity-scene-command-transport", "unity-scene-capture-lifecycle")) {
if ($id -in @("unity-scene-runtime-body", "unity-scene-world-surface-lowering", "unity-scene-norn-plugin-projection", "unity-scene-command-transport", "unity-scene-capture-lifecycle")) {
if ($currentPaths.Count -eq 0) {
throw "EveUnity scene split handoff move set $id must name current Eve incubation paths"
}
@ -98,13 +99,19 @@ foreach ($forbiddenImport in @(
"Aetheria gameplay scripts as EveUnity scene lowerer truth",
"provider-specific scene components that bypass gamecult.eve.command.v1",
"renderer-local world simulation as provider truth",
"product assets bundled as Eve runtime contract"
"product assets bundled as Eve runtime contract",
"Norn graph layout, graph state, or command semantics as Unity scene runtime authority"
)) {
if (-not (@($handoff.forbiddenImports) -contains $forbiddenImport)) {
throw "EveUnity scene split handoff missing forbidden import: $forbiddenImport"
}
}
$nornProjectionMoveSet = $moveSets | Where-Object { $_.id -eq "unity-scene-norn-plugin-projection" } | Select-Object -First 1
if (-not (@($nornProjectionMoveSet.currentPaths) -contains "runtimes/incubating/eve-unity-scene/Runtime/NornGraphUnitySceneProjectionAdapter.cs")) {
throw "EveUnity scene split handoff Norn projection move set must include the scene adapter path"
}
foreach ($proof in @($handoff.requiredExternalProofs)) {
if (-not $proof) {
throw "EveUnity scene split handoff contains an empty required external proof"

View file

@ -49,6 +49,7 @@ try {
--expect-split-target-blocker-record "EveUnity:pending-proof:Unity scene runtime body graduates to EveUnity outside Aetheria product code." `
--expect-split-handoff-move EveUnity:unity-scene:unity-scene-runtime-body:current:exists:EveUnitySceneSurfaceLowerer.cs `
--expect-split-handoff-move EveUnity:unity-scene:unity-scene-world-surface-lowering:current:exists:EveUnitySceneSurfaceLowerer.cs `
--expect-split-handoff-move EveUnity:unity-scene:unity-scene-norn-plugin-projection:current:exists:NornGraphUnitySceneProjectionAdapter.cs `
--expect-split-handoff-move EveUnity:unity-scene:unity-scene-command-transport:current:exists:EveUnitySceneSurfaceLowerer.cs `
--expect-split-handoff-move EveUnity:unity-scene:unity-scene-capture-lifecycle:current:exists:eveunity-capture-contract.mjs `
--expect-split-target-blocker "EveUnity:Tagged UPM release" `

View file

@ -610,11 +610,12 @@
]
},
{
"description": "Unity scene graph projection lowerer exists without claiming provider simulation, plugin projection, or capture ownership.",
"description": "Unity scene graph projection lowerer and Norn projection adapter exist without claiming provider simulation, Norn semantics, or capture ownership.",
"status": "passed",
"evidencePaths": [
"runtimes/incubating/eve-unity-scene/package.json",
"runtimes/incubating/eve-unity-scene/Runtime/EveUnitySceneSurfaceLowerer.cs",
"runtimes/incubating/eve-unity-scene/Runtime/NornGraphUnitySceneProjectionAdapter.cs",
"runtimes/incubating/eve-unity-scene/Tests/Editor/EveUnitySceneSurfaceLowererTests.cs",
"scripts/run-eveunity-scene-provider-shell-smoke.ps1"
]