Add EveUnity TeX projection shells
This commit is contained in:
parent
0ae4970885
commit
ebd44028a5
19 changed files with 304 additions and 61 deletions
|
|
@ -38,7 +38,8 @@ $requiredCompileItems = @(
|
|||
"Runtime\EveUiToolkitSurfaceLowerer.cs",
|
||||
"Runtime\IEveUiToolkitPluginProjectionAdapter.cs",
|
||||
"Runtime\SaiVisualNovelUiToolkitProjectionAdapter.cs",
|
||||
"Runtime\NornGraphUiToolkitProjectionAdapter.cs"
|
||||
"Runtime\NornGraphUiToolkitProjectionAdapter.cs",
|
||||
"Runtime\TeXMathUiToolkitProjectionAdapter.cs"
|
||||
)
|
||||
foreach ($compileItem in $requiredCompileItems) {
|
||||
$expected = Join-Path $eveRoot "packages\org.gamecult.eve.unity-uitoolkit\$compileItem"
|
||||
|
|
|
|||
|
|
@ -52,7 +52,8 @@ foreach ($plugin in $manifest.supportedPlugins) {
|
|||
}
|
||||
foreach ($claim in @(
|
||||
@{ pluginId = "sai.vn"; capabilities = @("vn.stage", "story.choose", "story.continue", "story.jump") },
|
||||
@{ pluginId = "norn.graph"; capabilities = @("embed.norn") }
|
||||
@{ pluginId = "norn.graph"; capabilities = @("embed.norn") },
|
||||
@{ pluginId = "tex.math"; capabilities = @("embed.tex", "tex.inline", "tex.block") }
|
||||
)) {
|
||||
if (-not $pluginClaims.ContainsKey($claim.pluginId)) {
|
||||
throw "EveUnity manifest missing plugin claim: $($claim.pluginId)"
|
||||
|
|
|
|||
|
|
@ -44,8 +44,8 @@ foreach ($feature in @("providerAdvertisements", "commandTransport", "sceneGraph
|
|||
throw "EveUnity scene manifest missing provider-shell feature: $feature"
|
||||
}
|
||||
}
|
||||
if (@($manifest.supportedPlugins).Count -ne 2) {
|
||||
throw "EveUnity scene must claim exactly two plugin projection adapters"
|
||||
if (@($manifest.supportedPlugins).Count -ne 3) {
|
||||
throw "EveUnity scene must claim exactly three plugin projection adapters"
|
||||
}
|
||||
$saiProjection = @($manifest.supportedPlugins) | Where-Object { $_.pluginId -eq "sai.vn" } | Select-Object -First 1
|
||||
if (-not $saiProjection) {
|
||||
|
|
@ -69,6 +69,18 @@ if ($nornProjection.projectionAdapter -ne "NornGraphUnitySceneProjectionAdapter"
|
|||
if (-not (@($nornProjection.capabilities) -contains "embed.norn")) {
|
||||
throw "EveUnity scene Norn projection adapter must claim embed.norn"
|
||||
}
|
||||
$texProjection = @($manifest.supportedPlugins) | Where-Object { $_.pluginId -eq "tex.math" } | Select-Object -First 1
|
||||
if (-not $texProjection) {
|
||||
throw "EveUnity scene manifest missing supported TeX projection adapter"
|
||||
}
|
||||
if ($texProjection.projectionAdapter -ne "TeXMathUnitySceneProjectionAdapter") {
|
||||
throw "Unexpected EveUnity scene TeX projection adapter: $($texProjection.projectionAdapter)"
|
||||
}
|
||||
foreach ($capability in @("embed.tex", "tex.inline", "tex.block", "tex.scene-placement")) {
|
||||
if (-not (@($texProjection.capabilities) -contains $capability)) {
|
||||
throw "EveUnity scene TeX projection adapter must claim $capability"
|
||||
}
|
||||
}
|
||||
$worldSurfaceLoweringClaims = @()
|
||||
if ($null -ne $manifest.worldSurfaceLowering) {
|
||||
$worldSurfaceLoweringClaims = @($manifest.worldSurfaceLowering)
|
||||
|
|
@ -93,18 +105,15 @@ foreach ($evidencePath in @($worldSurfaceLoweringClaim.evidencePaths)) {
|
|||
}
|
||||
}
|
||||
|
||||
foreach ($pluginId in @("tex.math")) {
|
||||
$unsupported = @($manifest.unsupportedPlugins) | Where-Object { $_.pluginId -eq $pluginId } | Select-Object -First 1
|
||||
if (-not $unsupported) {
|
||||
throw "EveUnity scene manifest missing unsupported plugin declaration: $pluginId"
|
||||
}
|
||||
}
|
||||
if (@($manifest.unsupportedPlugins) | Where-Object { $_.pluginId -eq "sai.vn" } | Select-Object -First 1) {
|
||||
throw "EveUnity scene must not report sai.vn unsupported while the projection adapter is declared"
|
||||
}
|
||||
if (@($manifest.unsupportedPlugins) | Where-Object { $_.pluginId -eq "norn.graph" } | Select-Object -First 1) {
|
||||
throw "EveUnity scene must not report norn.graph unsupported while the projection adapter is declared"
|
||||
}
|
||||
if (@($manifest.unsupportedPlugins) | Where-Object { $_.pluginId -eq "tex.math" } | Select-Object -First 1) {
|
||||
throw "EveUnity scene must not report tex.math unsupported while the projection adapter is declared"
|
||||
}
|
||||
|
||||
if ($manifest.commandTransport.schema -ne "gamecult.eve.command.v1") {
|
||||
throw "Unexpected EveUnity scene command schema: $($manifest.commandTransport.schema)"
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ $expectedFiles = @(
|
|||
"runtimes\incubating\eve-unity-scene\Runtime\EveUnitySceneSurfaceLowerer.cs",
|
||||
"runtimes\incubating\eve-unity-scene\Runtime\SaiVisualNovelUnitySceneProjectionAdapter.cs",
|
||||
"runtimes\incubating\eve-unity-scene\Runtime\NornGraphUnitySceneProjectionAdapter.cs",
|
||||
"runtimes\incubating\eve-unity-scene\Runtime\TeXMathUnitySceneProjectionAdapter.cs",
|
||||
"runtimes\incubating\eve-unity-scene\Tests\Editor\GameCult.Eve.UnityScene.Tests.asmdef",
|
||||
"runtimes\incubating\eve-unity-scene\Tests\Editor\EveUnitySceneSurfaceLowererTests.cs"
|
||||
)
|
||||
|
|
@ -78,7 +79,7 @@ foreach ($relativePath in $expectedFiles) {
|
|||
}
|
||||
|
||||
$lowererSource = Get-Content -LiteralPath (Join-Path $projectRoot "runtimes\incubating\eve-unity-scene\Runtime\EveUnitySceneSurfaceLowerer.cs") -Raw
|
||||
foreach ($symbol in @("EveUnitySceneSurfaceLowerer", "EveUnitySceneProviderSurfaceAdvertisement", "WorldInteraction", "CommandBoundary", "ReceiptSchema", "EveSurfaceCommandRequest", "BuildSceneGraph", "BuildPluginProjection", "SaiVisualNovelUnitySceneProjectionAdapter", "EveUnityScenePluginProjection", "EveUnitySceneNode", "SceneObjectKind", "unity-scene")) {
|
||||
foreach ($symbol in @("EveUnitySceneSurfaceLowerer", "EveUnitySceneProviderSurfaceAdvertisement", "WorldInteraction", "CommandBoundary", "ReceiptSchema", "EveSurfaceCommandRequest", "BuildSceneGraph", "BuildPluginProjection", "SaiVisualNovelUnitySceneProjectionAdapter", "TeXMathUnitySceneProjectionAdapter", "EveUnityScenePluginProjection", "EveUnitySceneNode", "SceneObjectKind", "unity-scene")) {
|
||||
if (-not $lowererSource.Contains($symbol)) {
|
||||
throw "EveUnity scene provider shell lowerer missing symbol: $symbol"
|
||||
}
|
||||
|
|
@ -98,8 +99,15 @@ foreach ($symbol in @("NornGraphUnitySceneProjectionAdapter", "norn.graph", "emb
|
|||
}
|
||||
}
|
||||
|
||||
$texAdapterSource = Get-Content -LiteralPath (Join-Path $projectRoot "runtimes\incubating\eve-unity-scene\Runtime\TeXMathUnitySceneProjectionAdapter.cs") -Raw
|
||||
foreach ($symbol in @("TeXMathUnitySceneProjectionAdapter", "tex.math", "embed.tex", "tex.scene-placement", "gamecult.eve.plugin_abi.v1", "sidecar-advertised-plugin-abi", "EvePlugins")) {
|
||||
if (-not $texAdapterSource.Contains($symbol)) {
|
||||
throw "EveUnity scene TeX projection adapter missing symbol: $symbol"
|
||||
}
|
||||
}
|
||||
|
||||
$testSource = Get-Content -LiteralPath (Join-Path $projectRoot "runtimes\incubating\eve-unity-scene\Tests\Editor\EveUnitySceneSurfaceLowererTests.cs") -Raw
|
||||
foreach ($symbol in @("LowerCarriesProviderAdvertisedWorldBoundary", "LowerBuildsProviderAgnosticSceneGraphFromSurfaceTree", "SaiVisualNovelLowersThroughRuntimeProjectionAdapterWithoutOwningStoryState", "CommandIntentCarriesAdvertisedBoundaryWithoutOwningReceipts", "world-projection-node", "sai-vn-scene-stage", "norn-graph-scene-projection", "sai.vn", "norn.graph", "sidecar-advertised-plugin-abi", "aetheria.daemon.commands", "aetheria.eve_command_acceptance_status.v1")) {
|
||||
foreach ($symbol in @("LowerCarriesProviderAdvertisedWorldBoundary", "LowerBuildsProviderAgnosticSceneGraphFromSurfaceTree", "SaiVisualNovelLowersThroughRuntimeProjectionAdapterWithoutOwningStoryState", "CommandIntentCarriesAdvertisedBoundaryWithoutOwningReceipts", "world-projection-node", "sai-vn-scene-stage", "norn-graph-scene-projection", "tex-math-scene-projection", "sai.vn", "norn.graph", "tex.math", "sidecar-advertised-plugin-abi", "aetheria.daemon.commands", "aetheria.eve_command_acceptance_status.v1")) {
|
||||
if (-not $testSource.Contains($symbol)) {
|
||||
throw "EveUnity scene provider shell tests missing symbol: $symbol"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ $expectedMoveSets = @{
|
|||
"unity-scene-world-surface-lowering" = "world-surface-lowering"
|
||||
"unity-scene-sai-plugin-projection" = "plugin-projection"
|
||||
"unity-scene-norn-plugin-projection" = "plugin-projection"
|
||||
"unity-scene-tex-plugin-projection" = "plugin-projection"
|
||||
"unity-scene-command-transport" = "command"
|
||||
"unity-scene-capture-lifecycle" = "capture"
|
||||
}
|
||||
|
|
@ -67,7 +68,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-sai-plugin-projection", "unity-scene-norn-plugin-projection", "unity-scene-command-transport", "unity-scene-capture-lifecycle")) {
|
||||
if ($id -in @("unity-scene-runtime-body", "unity-scene-world-surface-lowering", "unity-scene-sai-plugin-projection", "unity-scene-norn-plugin-projection", "unity-scene-tex-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"
|
||||
}
|
||||
|
|
@ -102,7 +103,8 @@ foreach ($forbiddenImport in @(
|
|||
"renderer-local world simulation as provider truth",
|
||||
"product assets bundled as Eve runtime contract",
|
||||
"Sai story state, VN/Ink semantics, or story command interpretation as Unity scene runtime authority",
|
||||
"Norn graph layout, graph state, or command semantics as Unity scene runtime authority"
|
||||
"Norn graph layout, graph state, or command semantics as Unity scene runtime authority",
|
||||
"TeX parsing, typesetting, baseline metrics, or render-cache semantics as Unity scene runtime authority"
|
||||
)) {
|
||||
if (-not (@($handoff.forbiddenImports) -contains $forbiddenImport)) {
|
||||
throw "EveUnity scene split handoff missing forbidden import: $forbiddenImport"
|
||||
|
|
@ -119,6 +121,11 @@ if (-not (@($nornProjectionMoveSet.currentPaths) -contains "runtimes/incubating/
|
|||
throw "EveUnity scene split handoff Norn projection move set must include the scene adapter path"
|
||||
}
|
||||
|
||||
$texProjectionMoveSet = $moveSets | Where-Object { $_.id -eq "unity-scene-tex-plugin-projection" } | Select-Object -First 1
|
||||
if (-not (@($texProjectionMoveSet.currentPaths) -contains "runtimes/incubating/eve-unity-scene/Runtime/TeXMathUnitySceneProjectionAdapter.cs")) {
|
||||
throw "EveUnity scene split handoff TeX 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"
|
||||
|
|
|
|||
|
|
@ -91,23 +91,21 @@ node $consumerScript $consumerExport `
|
|||
--expect-runtime-world-field tui:tui:ownership:runtime-lowers-provider-world-surface-without-owning-world-state `
|
||||
--expect-runtime-plugin-projection unity-uitoolkit:sai.vn:supported:EveUnity `
|
||||
--expect-runtime-plugin-projection unity-uitoolkit:norn.graph:supported:EveUnity `
|
||||
--expect-runtime-plugin-projection unity-uitoolkit:tex.math:unsupported:EveUnity `
|
||||
--expect-runtime-plugin-projection unity-uitoolkit:tex.math:supported:EveUnity `
|
||||
--expect-runtime-plugin-projection unity-scene:sai.vn:supported:EveUnity `
|
||||
--expect-runtime-plugin-projection unity-scene:norn.graph:supported:EveUnity `
|
||||
--expect-runtime-plugin-projection unity-scene:tex.math:unsupported:EveUnity `
|
||||
--expect-runtime-plugin-projection unity-scene:tex.math:supported:EveUnity `
|
||||
--expect-runtime-plugin-projection electron-shell:sai.vn:unsupported:EveElectron `
|
||||
--expect-provider-runtime-plugin-projection gamecult.home.vn:sai.visual_novel.surface:web:sai.vn:supported:Eve `
|
||||
--expect-provider-runtime-plugin-projection gamecult.home.vn:sai.visual_novel.surface:web:tex.math:optional-supported:Eve `
|
||||
--expect-provider-runtime-plugin-projection gamecult.home.vn:sai.visual_novel.surface:unity-uitoolkit:sai.vn:supported:EveUnity `
|
||||
--expect-provider-runtime-plugin-projection gamecult.home.vn:sai.visual_novel.surface:unity-uitoolkit:norn.graph:optional-supported:EveUnity `
|
||||
--expect-provider-runtime-plugin-projection gamecult.home.vn:sai.visual_novel.surface:unity-uitoolkit:tex.math:optional-unsupported-runtime-projection:EveUnity `
|
||||
--expect-provider-runtime-plugin-projection gamecult.home.vn:sai.visual_novel.surface:unity-uitoolkit:tex.math:optional-supported:EveUnity `
|
||||
--expect-provider-runtime-plugin-projection gamecult.home.vn:sai.visual_novel.surface:unity-scene:sai.vn:supported:EveUnity `
|
||||
--expect-provider-runtime-plugin-projection gamecult.home.vn:sai.visual_novel.surface:unity-scene:norn.graph:optional-supported:EveUnity `
|
||||
--expect-provider-runtime-plugin-projection gamecult.home.vn:sai.visual_novel.surface:unity-scene:tex.math:optional-unsupported-runtime-projection:EveUnity `
|
||||
--expect-provider-runtime-plugin-projection gamecult.home.vn:sai.visual_novel.surface:unity-scene:tex.math:optional-supported:EveUnity `
|
||||
--expect-provider-runtime-plugin-projection gamecult.home.vn:sai.visual_novel.surface:ios-uikit:sai.vn:unsupported-runtime-projection:EveIOS `
|
||||
--expect-provider-runtime-plugin-projection gamecult.home.vn:sai.visual_novel.surface:ios-uikit:norn.graph:optional-unsupported-runtime-projection:EveIOS `
|
||||
--expect-runtime-plugin-gap unity-uitoolkit:tex.math:EveUnity `
|
||||
--expect-runtime-plugin-gap unity-scene:tex.math:EveUnity `
|
||||
--expect-runtime-plugin-gap electron-shell:sai.vn:EveElectron `
|
||||
--expect-runtime-plugin-gap electron-shell:norn.graph:EveElectron `
|
||||
--expect-runtime-plugin-gap electron-shell:tex.math:EveElectron `
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ try {
|
|||
--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-sai-plugin-projection:current:exists:SaiVisualNovelUnitySceneProjectionAdapter.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-tex-plugin-projection:current:exists:TeXMathUnitySceneProjectionAdapter.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" `
|
||||
|
|
|
|||
Loading…
Reference in a new issue