245 lines
19 KiB
JSON
245 lines
19 KiB
JSON
{
|
|
"schema": "gamecult.eve.runtime_capability.v1",
|
|
"runtimeId": "unity-scene",
|
|
"title": "Unity / Scene",
|
|
"owner": "EveUnity",
|
|
"incubation": {
|
|
"ownerRepo": "EveUnity",
|
|
"currentHostRepo": "EveUnity",
|
|
"splitTarget": "EveUnity",
|
|
"graduationTrigger": "Graduated: EveUnity owns the provider-agnostic Unity scene package, release lifecycle, runtime tests, and generic PlayMode capture. The Aetheria daemon product witness remains active lifecycle work.",
|
|
"splitHandoff": {
|
|
"manifestPath": "",
|
|
"smokeCommand": ""
|
|
}
|
|
},
|
|
"supportedFeatures": [
|
|
"providerAdvertisements",
|
|
"verseDiscovery",
|
|
"genericPlayableWorldDiscovery",
|
|
"commandTransport",
|
|
"providerSurfaceSession",
|
|
"providerSurfaceSource",
|
|
"providerSurfaceDocumentSource",
|
|
"liveProviderTransportBridge",
|
|
"livePlayableWorldClient",
|
|
"providerCommandReceipts",
|
|
"providerAssetManifestDocumentSource",
|
|
"playableWorldClientHost",
|
|
"playableWorldClientBootstrap",
|
|
"playableWorldInputDriver",
|
|
"playableWorldCameraRig",
|
|
"sceneGraphProjection",
|
|
"playableWorldProjection",
|
|
"playableWorldRuntimeHost",
|
|
"playableWorldScenePresentation",
|
|
"unityGameObjectSceneSink",
|
|
"providerAssetManifestResolution",
|
|
"providerAssetManifestSource",
|
|
"embeddedDocuments"
|
|
],
|
|
"supportedPlugins": [
|
|
{
|
|
"pluginId": "fields.surface",
|
|
"capabilities": [
|
|
"field.surface2d",
|
|
"gravity.surface"
|
|
],
|
|
"projectionAdapter": "EveFieldsSplatRasterizer",
|
|
"evidencePaths": [
|
|
"Runtime/Fields/EveFieldsSplatRasterizer.cs",
|
|
"Runtime/Fields/EveFieldsSplatLayerRenderer.cs",
|
|
"Tests/Editor/EveFieldsUnitySceneProjectionTests.cs",
|
|
"artifacts/fields-surface/latest/unity-fields.png"
|
|
]
|
|
},
|
|
{
|
|
"pluginId": "sai.vn",
|
|
"capabilities": [
|
|
"vn.stage",
|
|
"story.choose",
|
|
"story.continue",
|
|
"story.jump"
|
|
],
|
|
"projectionAdapter": "SaiVisualNovelUnitySceneProjectionAdapter"
|
|
},
|
|
{
|
|
"pluginId": "norn.graph",
|
|
"capabilities": [
|
|
"embed.norn"
|
|
],
|
|
"projectionAdapter": "NornGraphUnitySceneProjectionAdapter"
|
|
},
|
|
{
|
|
"pluginId": "tex.math",
|
|
"capabilities": [
|
|
"embed.tex",
|
|
"tex.inline",
|
|
"tex.block",
|
|
"tex.scene-placement"
|
|
],
|
|
"projectionAdapter": "TeXMathUnitySceneProjectionAdapter"
|
|
}
|
|
],
|
|
"unsupportedPlugins": [
|
|
|
|
],
|
|
"worldSurfaceLowering": [
|
|
{
|
|
"targetId": "unity-scene",
|
|
"surfaceKinds": [
|
|
"interactive-world"
|
|
],
|
|
"projectionKinds": [
|
|
"provider-authored-world-surface"
|
|
],
|
|
"supportLevel": "unity-playable-world-scene-command-surface",
|
|
"ownership": "runtime-lowers-provider-world-surface-without-owning-world-state",
|
|
"evidencePaths": [
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/EveUnitySceneSurfaceLowerer.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/EveUnitySceneClientSession.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/EveUnitySceneProviderConnection.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/EveUnitySceneLiveProviderBridge.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/CultMesh/EveUnityCultMeshProviderDiscovery.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/CultMesh/EveUnityCultMeshPlayableWorldProvider.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/EveUnityPlayableWorldLiveClient.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/EveUnityPlayableWorldRuntime.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/EveUnityPlayableWorldClientHost.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/EveUnityPlayableWorldClientBootstrap.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/EveUnityPlayableWorldInputDriver.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/EveUnityPlayableWorldCameraRig.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/EveUnityProviderRefreshSource.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/EveUnityPlayableWorldPresenter.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/EveUnityGameObjectPlayableWorldSceneSink.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/EveUnityPlayableWorldAssetManifest.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/SaiVisualNovelUnitySceneProjectionAdapter.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/NornGraphUnitySceneProjectionAdapter.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/TeXMathUnitySceneProjectionAdapter.cs",
|
|
"packages/org.gamecult.eve.unity-scene/Tests/Editor/EveUnitySceneSurfaceLowererTests.cs"
|
|
]
|
|
}
|
|
],
|
|
"commandTransport": {
|
|
"schema": "gamecult.eve.command_invocation.v1",
|
|
"status": "provider-shell-contract-skeleton",
|
|
"emitter": "EveUnitySceneSurfaceLowerer.CreateCommandIntent",
|
|
"clientId": "unity-scene",
|
|
"authority": "Unity scene input emits command intents through provider-advertised command boundaries; providers accept, deny, and publish receipts."
|
|
},
|
|
"lifecycle": {
|
|
"release": {
|
|
"ownerRepo": "EveUnity",
|
|
"status": "tagged-upm-release",
|
|
"releaseContract": {
|
|
"ownerRepo": "EveUnity",
|
|
"packageName": "org.gamecult.eve.unity-scene",
|
|
"packageRoot": "packages/org.gamecult.eve.unity-scene",
|
|
"versionSource": "packages/org.gamecult.eve.unity-scene/package.json",
|
|
"tagPattern": "eveunity-scene-v{version}",
|
|
"artifactKind": "upm-package",
|
|
"requestSchema": "gamecult.eve.runtime_release_request.v1",
|
|
"requestBuilder": "scripts/build-release-request.ps1",
|
|
"artifactBuilder": "scripts/pack.ps1",
|
|
"artifactPattern": "artifacts/eveunity-scene-release/{version}/org.gamecult.eve.unity-scene-{version}.tgz",
|
|
"publishProof": "Tagged Unity scene package release is created from the EveUnity repository.",
|
|
"requiredPackageDependencies": [
|
|
{
|
|
"packageName": "org.gamecult.eve.surface",
|
|
"version": "0.1.0",
|
|
"packageManager": "upm",
|
|
"ownerRepo": "EveUnity",
|
|
"purpose": "Shared Unity DTOs for gamecult.eve.surface.v1 documents."
|
|
}
|
|
]
|
|
},
|
|
"evidencePaths": [
|
|
"packages/org.gamecult.eve.unity-scene/package.json",
|
|
"packages/org.gamecult.eve.unity-scene/Runtime/GameCult.Eve.UnityScene.asmdef",
|
|
"scripts/pack.ps1",
|
|
"scripts/build-release-request.ps1"
|
|
],
|
|
"pendingProofs": [
|
|
|
|
]
|
|
},
|
|
"test": {
|
|
"ownerRepo": "EveUnity",
|
|
"status": "released-package-editmode-batchmode",
|
|
"testContract": {
|
|
"ownerRepo": "EveUnity",
|
|
"runnerKind": "unity-editmode-batchmode",
|
|
"runnerScript": "scripts/run-package-tests.ps1",
|
|
"consumerProject": "TestProject",
|
|
"packageName": "org.gamecult.eve.unity-scene",
|
|
"testAssembly": "GameCult.Eve.UnityScene.Tests",
|
|
"testPlatform": "EditMode",
|
|
"resultsArtifact": "artifacts/package-tests/{stamp}/unity-editmode-results.xml",
|
|
"logArtifact": "artifacts/package-tests/{stamp}/unity-editmode.log",
|
|
"manifestMutation": "none"
|
|
},
|
|
"evidencePaths": [
|
|
"packages/org.gamecult.eve.unity-scene/Tests/Editor/GameCult.Eve.UnityScene.Tests.asmdef",
|
|
"packages/org.gamecult.eve.unity-scene/Tests/Editor/EveUnitySceneSurfaceLowererTests.cs",
|
|
"scripts/run-package-tests.ps1"
|
|
],
|
|
"pendingProofs": []
|
|
},
|
|
"capture": {
|
|
"ownerRepo": "EveUnity",
|
|
"status": "released-aetheria-playmode-capture",
|
|
"captureContract": {
|
|
"ownerRepo": "EveUnity",
|
|
"runtimeId": "unity-scene",
|
|
"targetId": "unity-scene",
|
|
"requestSchema": "gamecult.eve.runtime_capture_request.v1",
|
|
"requestBuilder": "scripts/build-capture-request.ps1",
|
|
"advertisementPath": "Aetheria:conformance/eve/aetheria.provider-advertisement.json",
|
|
"captureKind": "unity-scene-frame-png",
|
|
"artifactKind": "png",
|
|
"artifactPattern": "artifacts/eveunity-scene-capture/{stamp}/unity-scene.png",
|
|
"conformanceAttachment": "runtime.captureArtifacts[]",
|
|
"requiredProvider": "aetheria",
|
|
"requiredSurface": "aetheria.daemon.game",
|
|
"additionalProviderSurfaces": [
|
|
{
|
|
"providerId": "eve.world-smoke",
|
|
"surfaceId": "eve.world-smoke.surface",
|
|
"purpose": "Generic non-product interactive-world capture control."
|
|
}
|
|
],
|
|
"authority": "Capture observes Unity scene projection only; provider state, command acceptance, and receipts stay provider-owned.",
|
|
"publishProof": "Unity scene screenshot or frame-capture PNG artifact is attached to the runtime conformance report from EveUnity."
|
|
},
|
|
"evidencePaths": [
|
|
"scripts/build-capture-request.ps1",
|
|
"scripts/run-playmode-capture.ps1",
|
|
"ReleaseConsumerProject/Assets/Tests/PlayMode/GenericWorldCaptureTests.cs",
|
|
"scripts/run-aetheria-daemon-world-witness.ps1",
|
|
"conformance/captures/aetheria-daemon/aetheria-daemon-world.png"
|
|
],
|
|
"pendingProofs": [
|
|
|
|
]
|
|
}
|
|
},
|
|
"capture": {
|
|
"status": "released-aetheria-playmode-capture",
|
|
"note": "The released generic EveUnity client discovers and captures the separately running Aetheria daemon world.",
|
|
"artifacts": [
|
|
{
|
|
"kind": "png",
|
|
"schema": "gamecult.eve.runtime_frame_capture.v1",
|
|
"path": "conformance/captures/world-smoke/world-smoke.png",
|
|
"providerId": "eve.world-smoke",
|
|
"surfaceId": "eve.world-smoke.surface"
|
|
},
|
|
{
|
|
"kind": "png",
|
|
"schema": "gamecult.eve.runtime_frame_capture.v1",
|
|
"path": "conformance/captures/aetheria-daemon/aetheria-daemon-world.png",
|
|
"providerId": "aetheria.daemon",
|
|
"surfaceId": "aetheria.game"
|
|
}
|
|
]
|
|
}
|
|
}
|