Thing/tools/parity/parity-manifest.json
2026-07-09 16:18:30 +01:00

1739 lines
81 KiB
JSON

{
"schema": "gamecult.eve.parity_manifest.v1",
"repoStrategy": {
"boundaryRule": "Eve core owns contracts; plugins own semantics; runtime repos own native projection; provider repos own live truth.",
"incubationPolicy": "Eve may host runtimes, plugins, and conformance packs only while their contract is still forming.",
"graduationDocument": "docs/repo-strategy.md",
"conformanceHandoffPath": "tools/conformance/eveconformance-handoff.json"
},
"schemas": {
"gamecult.eve.conformance_fixture.v1": "schemas/gamecult.eve.conformance_fixture.v1.schema.json",
"gamecult.eve.conformance_export.v1": "schemas/gamecult.eve.conformance_export.v1.schema.json",
"gamecult.eve.capability_matrix.v1": "schemas/gamecult.eve.capability_matrix.v1.schema.json",
"gamecult.eve.command.v1": "schemas/gamecult.eve.command.v1.schema.json",
"gamecult.eve.command_receipt.v1": "schemas/gamecult.eve.command_receipt.v1.schema.json",
"gamecult.eve.plugin.v1": "schemas/gamecult.eve.plugin.v1.schema.json",
"gamecult.eve.plugin_receipt.v1": "schemas/gamecult.eve.plugin_receipt.v1.schema.json",
"gamecult.eve.plugin_abi.request.v1": "schemas/gamecult.eve.plugin_abi.request.v1.schema.json",
"gamecult.eve.plugin_abi.response.v1": "schemas/gamecult.eve.plugin_abi.response.v1.schema.json",
"gamecult.eve.plugin_abi_fixture.v1": "schemas/gamecult.eve.plugin_abi_fixture.v1.schema.json",
"gamecult.eve.plugin_advertisement.v1": "schemas/gamecult.eve.plugin_advertisement.v1.schema.json",
"gamecult.eve.plugin_handoff.v1": "schemas/gamecult.eve.plugin_handoff.v1.schema.json",
"gamecult.eve.runtime_capability.v1": "schemas/gamecult.eve.runtime_capability.v1.schema.json",
"gamecult.eve.runtime_lifecycle.v1": "schemas/gamecult.eve.runtime_lifecycle.v1.schema.json",
"gamecult.eve.runtime_split_handoff.v1": "schemas/gamecult.eve.runtime_split_handoff.v1.schema.json",
"gamecult.eve.runtime_release_request.v1": "schemas/gamecult.eve.runtime_release_request.v1.schema.json",
"gamecult.eve.runtime_capture_request.v1": "schemas/gamecult.eve.runtime_capture_request.v1.schema.json",
"gamecult.eve.web_layout_probe.v1": "schemas/gamecult.eve.web_layout_probe.v1.schema.json",
"gamecult.eve.provider_scenario.v1": "schemas/gamecult.eve.provider_scenario.v1.schema.json",
"gamecult.eve.provider_advertisement.v1": "schemas/gamecult.eve.provider_advertisement.v1.schema.json",
"gamecult.eve.local_provider_catalog.v1": "schemas/gamecult.eve.local_provider_catalog.v1.schema.json",
"gamecult.eve.provider_handoff.v1": "schemas/gamecult.eve.provider_handoff.v1.schema.json",
"gamecult.eve.conformance_handoff.v1": "schemas/gamecult.eve.conformance_handoff.v1.schema.json",
"gamecult.eve.electron_shell_projection.v1": "schemas/gamecult.eve.electron_shell_projection.v1.schema.json",
"gamecult.eve.unity_uitoolkit_projection.v1": "schemas/gamecult.eve.unity_uitoolkit_projection.v1.schema.json",
"gamecult.eve.unity_scene_projection.v1": "schemas/gamecult.eve.unity_scene_projection.v1.schema.json",
"gamecult.eve.tui_grid.v1": "schemas/gamecult.eve.tui_grid.v1.schema.json"
},
"conformancePacks": [
{
"id": "core",
"ownerRepo": "Eve",
"exitCriteria": "Stays in Eve; proves surface contract, CultUI DSL, bindings, commands, and embedded documents."
},
{
"id": "plugin",
"ownerRepo": "EvePlugins until owner repos stabilize",
"exitCriteria": "Moves when plugin semantics, fixtures, and conformance cases are stable."
},
{
"id": "provider",
"ownerRepo": "Provider repo",
"exitCriteria": "Moves when fixture carries product-specific state, assets, flows, or receipts."
},
{
"id": "runtime",
"ownerRepo": "Runtime repo",
"exitCriteria": "Moves when runtime has its own build/deploy lifecycle or platform SDK pressure."
}
],
"responsiveCases": [
{
"id": "phone",
"width": 390,
"height": 844,
"orientation": "portrait",
"deviceScale": 1
},
{
"id": "tablet",
"width": 768,
"height": 1024,
"orientation": "portrait",
"deviceScale": 1
},
{
"id": "desktop",
"width": 1280,
"height": 720,
"orientation": "landscape",
"deviceScale": 1
}
],
"androidDeviceCases": [
{
"id": "native-portrait",
"orientation": "portrait"
},
{
"id": "native-landscape",
"orientation": "landscape"
}
],
"fixtures": [
{
"id": "cultui-inspector",
"title": "CultUI Inspector",
"pack": "core",
"ownerRepo": "Eve",
"surface": {
"transport": "local-eve-dsl",
"path": "web/fixtures/cultui-slider-inspector.eve"
},
"metadataPath": "web/fixtures/cultui-slider-inspector.conformance.json",
"expect": {
"providerId": "eve.cultui.inspector",
"componentKinds": ["surface", "partition", "pane", "label", "control.slider"],
"minimumCounts": {
"partition": 8,
"control.slider": 3,
"label": 3
},
"controlSkins": ["inspector.orangeSlider"],
"controlParts": ["track", "fill", "thumb"],
"bindings": ["tester.fov", "tester.throttleDecay", "tester.flowSpeed"]
}
},
{
"id": "repixelizer",
"title": "Repixelizer",
"pack": "provider",
"ownerRepo": "Repixelizer",
"surface": {
"transport": "local-json",
"path": "web/fixtures/repixelizer.eve-surface.json"
},
"metadataPath": "web/fixtures/repixelizer.conformance.json",
"expect": {
"providerId": "repixelizer",
"componentKinds": [
"surface",
"pane",
"card",
"text",
"image.preview",
"canvas.preview",
"canvas.editor",
"input.file",
"dropzone",
"input.number",
"control.button",
"status.stage"
],
"styleTokens": [
"colorBackgroundTop",
"colorPanel",
"colorAccent",
"fontTitle",
"fontBody",
"imageRendering"
]
}
},
{
"id": "sai-vn",
"title": "Sai VN",
"pack": "plugin",
"ownerRepo": "Sai",
"requiredPlugins": [
{
"pluginId": "sai.vn",
"capabilities": ["vn.stage", "story.choose", "story.continue", "story.jump"]
}
],
"optionalNestedPlugins": [
{
"pluginId": "norn.graph",
"capabilities": ["embed.norn"]
},
{
"pluginId": "tex.math",
"capabilities": ["embed.tex"]
}
],
"surface": {
"transport": "local-json",
"path": "web/fixtures/sai-vn-surface.json"
},
"metadataPath": "web/fixtures/sai-vn-surface.conformance.json",
"expect": {
"providerId": "gamecult.home.vn",
"componentKinds": [
"vn.stage",
"image.background",
"embed.norn",
"embed.tex",
"panel.dialogue",
"rail.actions",
"control.button"
],
"styleTokens": [
"colorBackground",
"colorPanel",
"colorPanelAlt",
"colorText",
"colorAccent",
"fontBody",
"fontTitle",
"pixelArt"
],
"commandDescriptors": ["story.continue", "story.choose", "story.jump", "style.patch"],
"commandDescriptorSchema": "gamecult.eve.command.v1",
"commandReferencesDeclared": true
}
},
{
"id": "aetheria-world",
"title": "Aetheria Interactive World",
"pack": "provider",
"ownerRepo": "Aetheria",
"surface": {
"transport": "local-json",
"path": "web/fixtures/aetheria-world-surface.json"
},
"metadataPath": "web/fixtures/aetheria-world-surface.conformance.json",
"expect": {
"providerId": "aetheria",
"componentKinds": ["surface", "card", "text", "metric", "partition", "field.surface2d", "control.button"],
"styleTokens": ["colorBackground", "colorPanel", "colorText", "colorMuted", "colorAccent"],
"bindings": ["aetheria.daemon.frameId", "aetheria.daemon.soaView.gravityField", "aetheria.daemon.commands"],
"commandDescriptors": ["aetheria.daemon.commands"],
"commandDescriptorSchema": "gamecult.eve.command.v1",
"commandReferencesDeclared": true
}
},
{
"id": "fensalir-direct2d",
"title": "Fensalir Direct2D Adapter",
"pack": "runtime",
"ownerRepo": "Fensalir",
"surface": {
"transport": "local-json",
"path": "web/fixtures/fensalir-direct2d-surface.json"
},
"metadataPath": "web/fixtures/fensalir-direct2d-surface.conformance.json",
"expect": {
"providerId": "fensalir.direct2d",
"componentKinds": ["surface", "card", "text", "metric", "partition", "surface.slot", "control.button"],
"styleTokens": ["colorBackground", "colorPanel", "colorText", "colorMuted", "colorAccent"],
"bindings": ["fensalir.overlay.phase"],
"embeddedDocuments": ["fensalir.adapter.detail"],
"commandDescriptors": ["fensalir.overlay.commands"],
"commandDescriptorSchema": "gamecult.eve.command.v1",
"commandReferencesDeclared": true,
"authorityStates": ["fresh"],
"authorityOwners": ["runtime"],
"witnessRefs": 1
}
},
{
"id": "authority-staleness",
"title": "Authority And Staleness Witness",
"pack": "core",
"ownerRepo": "Eve",
"surface": {
"transport": "local-json",
"path": "web/fixtures/authority-staleness-witness.json"
},
"metadataPath": "web/fixtures/authority-staleness-witness.conformance.json",
"expect": {
"providerId": "gamecult.eve.authority-witness",
"componentKinds": ["surface", "card", "text", "metric", "partition"],
"styleTokens": ["colorBackground", "colorPanel", "colorText", "colorMuted", "colorAccent", "colorWarning", "colorDanger"],
"bindings": [
"authority.temperature.accepted",
"authority.sensor.echo",
"authority.missing.field",
"authority.orbit.predicted",
"authority.orbit.accepted"
],
"commandDescriptors": ["authority.fixture.patch"],
"commandDescriptorSchema": "gamecult.eve.command.v1",
"commandReferencesDeclared": true,
"authorityStates": ["accepted", "denied", "fresh", "missing", "pending", "predicted", "reconciled", "stale"],
"authorityOwners": ["provider", "renderer"],
"witnessRefs": 8,
"receiptRefs": 2
}
},
{
"id": "reactive-dsl",
"title": "Reactive DSL",
"pack": "core",
"ownerRepo": "Eve",
"surface": {
"transport": "local-eve-dsl",
"path": "web/fixtures/reactive-composition.eve"
},
"metadataPath": "web/fixtures/reactive-composition.conformance.json",
"expect": {
"providerId": "gamecult.eve.reactive-demo",
"componentKinds": ["surface", "card", "text", "metric", "list", "control.button"],
"bindings": ["face.name", "face.body", "swarm.heat", "swarm.eventCount", "swarm.latestEvent"]
}
},
{
"id": "huginn-cc",
"title": "Huginn .cc",
"pack": "provider",
"ownerRepo": "Huginn",
"surface": {
"transport": "local-eve-dsl",
"path": "web/fixtures/huginn-cc-surface.eve"
},
"metadataPath": "web/fixtures/huginn-cc-surface.conformance.json",
"expect": {
"providerId": "cultcache.huginn.inspector",
"componentKinds": ["surface", "card", "text", "list"],
"bindings": ["huginn.catalog.entries", "huginn.records.entries"]
}
},
{
"id": "embedded-surface",
"title": "Embedded Surface Slot",
"pack": "core",
"ownerRepo": "Eve",
"surface": {
"transport": "local-json",
"path": "web/fixtures/cultui-embedded-surface.json"
},
"metadataPath": "web/fixtures/cultui-embedded-surface.conformance.json",
"expect": {
"providerId": "gamecult.eve.embedded-demo",
"componentKinds": ["surface", "card", "text", "surface.slot"],
"embeddedDocuments": ["inventory.dropdown"],
"styleTokens": ["colorBackground", "colorPanel", "colorText", "colorMuted", "colorAccent"]
}
}
],
"providerAdvertisements": [
{
"providerId": "repixelizer",
"title": "Repixelizer",
"kind": "service.product",
"ownerRepo": "Repixelizer",
"repoRole": "provider-external",
"graduationTrigger": "Provider-owned product state, assets, sessions, and receipts stay in Repixelizer; Eve keeps only the advertisement-shaped fixture.",
"schemaPath": "schemas/gamecult.eve.provider_advertisement.v1.schema.json",
"advertisementPath": "web/fixtures/repixelizer.provider-advertisement.json",
"requiredFixtures": ["repixelizer"],
"expectedSchemas": ["gamecult.eve.surface.v1"],
"expectedSurfaces": ["repixelizer.operator.surface"],
"expectedCommands": ["repixelizer.job.submit", "repixelizer.job.cancel_own"]
},
{
"providerId": "gamecult.home.vn",
"title": "GameCult Compound VN",
"kind": "plugin.fixture.provider",
"ownerRepo": "Sai",
"repoRole": "provider-fixture",
"graduationTrigger": "Move this advertisement-shaped VN fixture to Sai when sai-vn-plugin owns VN/Ink semantics and conformance packs.",
"schemaPath": "schemas/gamecult.eve.provider_advertisement.v1.schema.json",
"advertisementPath": "web/fixtures/sai-vn.provider-advertisement.json",
"requiredFixtures": [],
"expectedSchemas": ["gamecult.eve.surface.v1", "gamecult.eve.command.v1", "sai.vn.story_session.v1"],
"expectedSurfaces": ["sai.visual_novel.surface"],
"expectedCommands": ["story.continue", "story.choose", "story.jump", "style.patch"]
},
{
"providerId": "aetheria",
"title": "Aetheria",
"kind": "game.runtime",
"ownerRepo": "Aetheria",
"repoRole": "provider-external",
"graduationTrigger": "Aetheria owns RTS/ARPG world surfaces, generated level state, assets, command receipts, and scenario conformance; Eve keeps contract fixtures only.",
"schemaPath": "schemas/gamecult.eve.provider_advertisement.v1.schema.json",
"advertisementPath": "web/fixtures/aetheria.provider-advertisement.json",
"scenarioPath": "web/fixtures/aetheria-world-scenario.json",
"handoffPath": "web/fixtures/aetheria-provider-handoff.json",
"requiredFixtures": ["aetheria-world"],
"expectedSchemas": ["gamecult.eve.surface.v1", "gamecult.eve.command.v1", "aetheria.runtime.daemon.frame.v1"],
"expectedSurfaces": ["aetheria.daemon.game", "aetheria.daemon.editor"],
"expectedSurfaceKinds": {
"aetheria.daemon.game": "interactive-world",
"aetheria.daemon.editor": "interactive-world-editor"
},
"expectedCommands": ["aetheria.daemon.commands"],
"expectedPaths": [
"web/fixtures/aetheria-world-scenario.json",
"web/fixtures/aetheria-provider-handoff.json",
"scripts/run-aetheria-provider-handoff-smoke.ps1"
]
}
],
"pluginManifests": [
{
"pluginId": "sai.vn",
"title": "Sai Visual Novel",
"kind": "external-owner-planned",
"ownerRepo": "Sai",
"repoRole": "plugin-incubating",
"splitTarget": "Sai/sai-vn-plugin",
"graduationTrigger": "Split when VN/Ink semantics, story command fixtures, and ABI project/apply/validate cases are stable.",
"capabilities": ["vn.stage", "story.choose", "story.continue", "story.jump"],
"optionalPlugins": ["norn.graph", "tex.math"],
"expectedRuntime": {
"invocationModel": "executable-sidecar",
"contract": "gamecult.eve.plugin_abi.v1",
"transports": ["cultmesh", "stdio"],
"authority": ["renderer-independent", "no-provider-state-mutation", "provider-accepts-or-denies-commands"],
"sidecar": {
"processKind": "long-running-daemon",
"protocol": "cultmesh-rpc-with-stdio-dev-transport",
"requestSchema": "gamecult.eve.plugin_abi.request.v1",
"responseSchema": "gamecult.eve.plugin_abi.response.v1",
"commandEnvelope": "gamecult.eve.command.v1",
"receiptSchema": "gamecult.eve.command_receipt.v1",
"stateAuthority": "proposes-plugin-state-only-provider-accepts"
}
},
"requiredFixtures": ["sai-vn"],
"schemaPath": "schemas/gamecult.eve.plugin.v1.schema.json",
"manifestPath": "plugins/incubating/sai-vn.plugin.json",
"abiFixturePath": "plugins/incubating/sai-vn.plugin-abi-fixture.json",
"handoffPath": "plugins/incubating/sai-vn.plugin-handoff.json",
"advertisementSchemaPath": "schemas/gamecult.eve.plugin_advertisement.v1.schema.json",
"advertisementPath": "plugins/incubating/sai-vn.plugin-advertisement.json",
"expectedPaths": [
"plugins/incubating/sai-vn.plugin.json",
"plugins/incubating/sai-vn.plugin-abi-fixture.json",
"plugins/incubating/sai-vn.plugin-advertisement.json",
"plugins/incubating/sai-vn.plugin-handoff.json",
"scripts/run-plugin-handoff-smoke.ps1"
]
},
{
"pluginId": "norn.graph",
"title": "Norn Graph",
"kind": "external-owner-planned",
"ownerRepo": "Norn",
"repoRole": "plugin-incubating",
"splitTarget": "Norn/eve-plugin-graph",
"graduationTrigger": "Split when embed.norn graph layout, interaction, fallback, and conformance fixtures are stable.",
"capabilities": ["embed.norn", "graph.node.activate"],
"expectedRuntime": {
"invocationModel": "executable-sidecar",
"contract": "gamecult.eve.plugin_abi.v1",
"transports": ["cultmesh", "stdio"],
"authority": ["renderer-independent", "no-provider-state-mutation", "provider-accepts-or-denies-commands"],
"sidecar": {
"processKind": "long-running-daemon",
"protocol": "cultmesh-rpc-with-stdio-dev-transport",
"requestSchema": "gamecult.eve.plugin_abi.request.v1",
"responseSchema": "gamecult.eve.plugin_abi.response.v1",
"commandEnvelope": "gamecult.eve.command.v1",
"receiptSchema": "gamecult.eve.command_receipt.v1",
"stateAuthority": "proposes-plugin-state-only-provider-accepts"
}
},
"requiredFixtures": [],
"schemaPath": "schemas/gamecult.eve.plugin.v1.schema.json",
"manifestPath": "plugins/incubating/norn-graph.plugin.json",
"abiFixturePath": "plugins/incubating/norn-graph.plugin-abi-fixture.json",
"handoffPath": "plugins/incubating/norn-graph.plugin-handoff.json",
"advertisementSchemaPath": "schemas/gamecult.eve.plugin_advertisement.v1.schema.json",
"advertisementPath": "plugins/incubating/norn-graph.plugin-advertisement.json",
"expectedPaths": [
"plugins/incubating/norn-graph.plugin.json",
"plugins/incubating/norn-graph.plugin-abi-fixture.json",
"plugins/incubating/norn-graph.plugin-advertisement.json",
"plugins/incubating/norn-graph.plugin-handoff.json",
"scripts/run-plugin-handoff-smoke.ps1"
]
},
{
"pluginId": "tex.math",
"title": "TeX Math",
"kind": "incubating",
"ownerRepo": "EvePlugins",
"repoRole": "plugin-incubating",
"splitTarget": "EvePlugins/eve-plugin-tex",
"graduationTrigger": "Split when TeX source, macro, baseline, cached render, and fallback fixtures are stable.",
"capabilities": ["embed.tex", "tex.inline", "tex.block"],
"expectedRuntime": {
"invocationModel": "executable-sidecar",
"contract": "gamecult.eve.plugin_abi.v1",
"transports": ["cultmesh", "stdio"],
"authority": ["renderer-independent", "no-provider-state-mutation", "provider-accepts-or-denies-commands"],
"sidecar": {
"processKind": "long-running-daemon",
"protocol": "cultmesh-rpc-with-stdio-dev-transport",
"requestSchema": "gamecult.eve.plugin_abi.request.v1",
"responseSchema": "gamecult.eve.plugin_abi.response.v1",
"commandEnvelope": "gamecult.eve.command.v1",
"receiptSchema": "gamecult.eve.plugin_receipt.v1",
"stateAuthority": "emits-render-results-only-provider-owns-source-state"
}
},
"requiredFixtures": [],
"schemaPath": "schemas/gamecult.eve.plugin.v1.schema.json",
"manifestPath": "plugins/incubating/tex-math.plugin.json",
"abiFixturePath": "plugins/incubating/tex-math.plugin-abi-fixture.json",
"handoffPath": "plugins/incubating/tex-math.plugin-handoff.json",
"advertisementSchemaPath": "schemas/gamecult.eve.plugin_advertisement.v1.schema.json",
"advertisementPath": "plugins/incubating/tex-math.plugin-advertisement.json",
"expectedPaths": [
"plugins/incubating/tex-math.plugin.json",
"plugins/incubating/tex-math.plugin-abi-fixture.json",
"plugins/incubating/tex-math.plugin-advertisement.json",
"plugins/incubating/tex-math.plugin-handoff.json",
"scripts/run-plugin-handoff-smoke.ps1"
]
}
],
"splitTargets": [
{
"id": "EveFlutter",
"ownerRepo": "EveFlutter",
"repoRole": "runtime-target",
"status": "incubating",
"runtimes": ["windows-flutter", "linux-flutter", "android-flutter"],
"requiredRuntimeStatuses": ["active"],
"requiredFeatures": ["embeddedDocuments"],
"requiredPlugins": [
{
"pluginId": "sai.vn",
"capabilities": ["vn.stage", "story.choose", "story.continue", "story.jump"]
},
{
"pluginId": "norn.graph",
"capabilities": ["embed.norn"]
},
{
"pluginId": "tex.math",
"capabilities": ["embed.tex"]
}
],
"proofs": [
{
"description": "Provider picker consumes provider advertisements without Eve source-layout knowledge.",
"status": "passed",
"evidencePaths": [
"flutter/eve_parity/lib/main.dart",
"flutter/eve_parity/test/parity_smoke_test.dart",
"tools/parity/run-parity.mjs"
]
},
{
"description": "Conformance pack can be consumed without depending on Eve's local harness layout.",
"status": "passed",
"evidencePaths": [
"scripts/run-eveflutter-conformance-consumer-smoke.ps1",
"tools/conformance/consume-export.mjs",
"tools/parity/run-parity.mjs"
]
},
{
"description": "Flutter lifecycle evidence is declared and smoke-checked for EveFlutter incubation.",
"status": "passed",
"evidencePaths": [
"flutter/eve_parity/eveflutter-lifecycle.json",
"scripts/run-eveflutter-lifecycle-smoke.ps1",
"scripts/capture-flutter-parity.ps1",
"scripts/capture-linux-flutter-parity.ps1",
"scripts/capture-android-flutter-parity.ps1"
]
}
],
"pendingProofs": [
"Tagged EveFlutter release, test runner, and capture runners are owned by EveFlutter rather than Eve incubation."
]
},
{
"id": "EveUnity",
"ownerRepo": "EveUnity",
"repoRole": "runtime-target",
"status": "incubating",
"runtimes": ["unity-uitoolkit", "unity-scene"],
"requiredRuntimeStatuses": ["active"],
"requiredFeatures": ["embeddedDocuments"],
"requiredPlugins": [
{
"pluginId": "sai.vn",
"capabilities": ["vn.stage", "story.choose", "story.continue", "story.jump"]
},
{
"pluginId": "norn.graph",
"capabilities": ["embed.norn"]
}
],
"proofs": [
{
"description": "Unity lifecycle evidence is declared and smoke-checked for EveUnity incubation.",
"status": "passed",
"evidencePaths": [
"packages/org.gamecult.eve.unity-uitoolkit/eve-runtime-capability.json",
"scripts/run-eveunity-lifecycle-smoke.ps1",
"scripts/run-aetheria-unity-package-smoke.ps1",
"scripts/run-aetheria-unity-editmode-tests.ps1"
]
},
{
"description": "EveUnity split handoff is machine-readable and smoke-checked.",
"status": "passed",
"evidencePaths": [
"packages/org.gamecult.eve.unity-uitoolkit/eveunity-split-handoff.json",
"scripts/run-eveunity-split-handoff-smoke.ps1",
"packages/org.gamecult.eve.unity-uitoolkit/eve-runtime-capability.json"
]
},
{
"description": "Unity scene split handoff is machine-readable and smoke-checked.",
"status": "passed",
"evidencePaths": [
"runtimes/incubating/eve-unity-scene/eveunity-scene-split-handoff.json",
"scripts/run-eveunity-scene-split-handoff-smoke.ps1"
]
},
{
"description": "Unity scene lifecycle contract is machine-readable and smoke-checked.",
"status": "passed",
"evidencePaths": [
"runtimes/incubating/eve-unity-scene/eve-runtime-capability.json",
"scripts/run-eveunity-scene-lifecycle-smoke.ps1",
"scripts/run-eveunity-scene-provider-shell-smoke.ps1"
]
},
{
"description": "Unity scene graph projection lowerer plus Sai, Norn, and TeX projection adapters exist without claiming provider simulation, plugin 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/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/EveUnitySceneSurfaceLowererTests.cs",
"scripts/run-eveunity-scene-provider-shell-smoke.ps1"
]
}
],
"pendingProofs": [
"Tagged UPM release is cut from EveUnity rather than Eve incubation.",
"Unity batchmode EditMode runner is owned by EveUnity rather than Eve incubation.",
"Unity batchmode or editor capture artifact is attached to the runtime conformance report.",
"Unity scene runtime body graduates to EveUnity outside Aetheria product code.",
"Unity scene screenshot or frame-capture PNG artifact is attached to the runtime conformance report."
]
},
{
"id": "EveElectron",
"ownerRepo": "EveElectron",
"repoRole": "runtime-target",
"status": "pending",
"runtimes": ["electron-shell"],
"requiredRuntimeStatuses": ["active"],
"requiredFeatures": ["providerAdvertisements", "surfaceTreeProjection", "embeddedDocuments"],
"requiredPlugins": [],
"proofs": [
{
"description": "EveElectron split handoff is machine-readable.",
"status": "passed",
"evidencePaths": [
"runtimes/incubating/eve-electron/eveelectron-split-handoff.json",
"scripts/run-eveelectron-split-handoff-smoke.ps1",
"docs/eve-migration-roadmap.md",
"docs/parity-testing-harness.md"
]
},
{
"description": "EveElectron lifecycle contract is machine-readable and smoke-checked.",
"status": "passed",
"evidencePaths": [
"runtimes/incubating/eve-electron/eve-runtime-capability.json",
"scripts/run-eveelectron-lifecycle-smoke.ps1",
"scripts/run-eveelectron-provider-shell-smoke.ps1"
]
},
{
"description": "EveElectron provider-shell skeleton selects advertised surfaces, projects Eve surface trees, and emits Eve command intents.",
"status": "passed",
"evidencePaths": [
"runtimes/incubating/eve-electron/package.json",
"runtimes/incubating/eve-electron/src/eve-electron-shell.mjs",
"runtimes/incubating/eve-electron/test/eve-electron-shell.test.mjs",
"scripts/run-eveelectron-provider-shell-smoke.ps1"
]
}
],
"pendingProofs": [
"Electron shell runtime body graduates to EveElectron outside Aetheria product code.",
"Electron renders embedded Eve documents in a packaged Electron window.",
"Electron packaged window PNG capture artifacts are attached to conformance output."
]
},
{
"id": "EveTui",
"ownerRepo": "EveTui",
"repoRole": "runtime-target",
"status": "incubating",
"runtimes": ["tui"],
"requiredRuntimeStatuses": ["active"],
"requiredFeatures": ["providerAdvertisements", "embeddedDocuments", "commandTransport"],
"requiredPlugins": [],
"proofs": [
{
"description": "EveTui split handoff is machine-readable.",
"status": "passed",
"evidencePaths": [
"runtimes/incubating/eve-tui/evetui-split-handoff.json",
"scripts/run-evetui-split-handoff-smoke.ps1",
"docs/eve-migration-roadmap.md",
"docs/parity-testing-harness.md"
]
},
{
"description": "EveTui lifecycle contract is machine-readable and smoke-checked.",
"status": "passed",
"evidencePaths": [
"runtimes/incubating/eve-tui/eve-runtime-capability.json",
"scripts/run-evetui-lifecycle-smoke.ps1",
"scripts/run-evetui-provider-shell-smoke.ps1"
]
},
{
"description": "EveTui provider-shell skeleton selects advertised surfaces, lowers Eve surface trees into terminal grids, and emits Eve command intents.",
"status": "passed",
"evidencePaths": [
"runtimes/incubating/eve-tui/package.json",
"runtimes/incubating/eve-tui/src/eve-tui-shell.mjs",
"runtimes/incubating/eve-tui/test/eve-tui-shell.test.mjs",
"scripts/run-evetui-provider-shell-smoke.ps1"
]
}
],
"pendingProofs": [
"TUI package release is cut from EveTui rather than Eve incubation.",
"TUI capture path is owned by EveTui rather than Eve incubation."
]
}
],
"runtimes": [
{
"id": "electron-shell",
"title": "Electron shell",
"kind": "pending",
"ownerRepo": "EveElectron",
"repoRole": "runtime-target",
"splitTarget": "EveElectron",
"graduationTrigger": "Split when Electron has a provider-agnostic shell body, provider advertisement consumption, command transport, packaged app lifecycle, and capture evidence independent of Aetheria product code.",
"capabilityManifest": {
"schemaPath": "schemas/gamecult.eve.runtime_capability.v1.schema.json",
"manifestPath": "runtimes/incubating/eve-electron/eve-runtime-capability.json"
},
"splitHandoffPath": "runtimes/incubating/eve-electron/eveelectron-split-handoff.json",
"requiredFixtures": ["embedded-surface", "aetheria-world"],
"pluginFixtures": ["sai-vn"],
"supportedFeatures": ["providerAdvertisements", "commandTransport", "surfaceTreeProjection", "embeddedDocuments", "pluginProjection"],
"supportedPlugins": [
{
"pluginId": "sai.vn",
"capabilities": ["vn.stage", "story.choose", "story.continue", "story.jump"]
},
{
"pluginId": "norn.graph",
"capabilities": ["embed.norn"]
},
{
"pluginId": "tex.math",
"capabilities": ["embed.tex", "tex.inline", "tex.block"]
}
],
"unsupportedPlugins": [],
"worldSurfaceLowering": [
{
"targetId": "electron-shell",
"surfaceKinds": ["interactive-world", "interactive-world-editor"],
"projectionKinds": ["provider-authored-world-surface", "provider-authored-world-editor-surface"],
"supportLevel": "electron-shell-surface-tree-command-surface",
"ownership": "runtime-lowers-provider-world-surface-without-owning-world-state",
"evidencePaths": [
"runtimes/incubating/eve-electron/src/eve-electron-shell.mjs",
"runtimes/incubating/eve-electron/test/eve-electron-shell.test.mjs",
"web/fixtures/sai-vn-surface.json",
"web/fixtures/aetheria.provider-advertisement.json"
]
}
],
"expectedPaths": [
"runtimes/incubating/eve-electron/package.json",
"runtimes/incubating/eve-electron/src/eve-electron-shell.mjs",
"runtimes/incubating/eve-electron/test/eve-electron-shell.test.mjs",
"runtimes/incubating/eve-electron/eveelectron-split-handoff.json",
"runtimes/incubating/eve-electron/eve-runtime-capability.json",
"scripts/run-eveelectron-lifecycle-smoke.ps1",
"scripts/run-eveelectron-provider-shell-smoke.ps1",
"scripts/run-eveelectron-release-contract-smoke.ps1",
"scripts/run-eveelectron-capture-contract-smoke.ps1",
"scripts/run-eveelectron-capture-smoke.ps1",
"tools/eveelectron/eveelectron-release-contract.mjs",
"tools/eveelectron/eveelectron-release-contract.test.mjs",
"tools/eveelectron/eveelectron-capture-contract.mjs",
"tools/eveelectron/eveelectron-capture-contract.test.mjs",
"tools/eveelectron/eveelectron-capture-artifact.mjs",
"tools/eveelectron/eveelectron-capture-artifact.test.mjs"
],
"expectedSourceSymbols": [
{
"path": "runtimes/incubating/eve-electron/src/eve-electron-shell.mjs",
"contains": ["EveElectronShell", "selectSurface", "lowerSurface", "createCommandIntent", "normalizeSurfaceDocument", "buildShellNode", "buildPluginProjection", "normalizeEmbeddedDocuments", "embeddedDocuments", "shellElementKind", "sai.vn", "norn.graph", "tex.math", "sidecar-advertised-plugin-abi", "worldInteraction", "commandBoundary", "receiptSchema", "electron-shell"]
},
{
"path": "runtimes/incubating/eve-electron/test/eve-electron-shell.test.mjs",
"contains": ["selects the active advertised provider surface", "lowers provider surface trees into an Electron shell projection", "lowers Sai, Norn, and TeX sidecar plugin shells without owning semantics", "embeddedDocuments", "norn.map", "sai-vn-stage-shell", "norn-graph-shell", "tex-math-shell", "rejects surface documents that do not match the advertised target", "command intents carry provider-advertised boundaries", "aetheria.daemon.commands", "aetheria.eve_command_acceptance_status.v1"]
},
{
"path": "tools/eveelectron/eveelectron-capture-contract.mjs",
"contains": ["buildElectronCaptureRequest", "gamecult.eve.runtime_capture_request.v1", "loweringTargets", "artifactPattern", "writeCaptureRequest"]
},
{
"path": "tools/eveelectron/eveelectron-capture-contract.test.mjs",
"contains": ["builds Electron shell capture request from provider advertisement", "rejects capture request when the surface does not advertise Electron shell", "electron-shell", "aetheria.daemon.commands"]
},
{
"path": "tools/eveelectron/eveelectron-capture-artifact.mjs",
"contains": ["buildElectronCaptureArtifact", "EveElectronShell", "gamecult.eve.electron_shell_projection.v1", "json-projection", "writeElectronCaptureArtifact", "request-output"]
},
{
"path": "tools/eveelectron/eveelectron-capture-artifact.test.mjs",
"contains": ["builds Electron shell projection capture artifact", "gamecult.eve.electron_shell_projection.v1", "electron-shell-projection-json"]
},
{
"path": "tools/eveelectron/eveelectron-release-contract.mjs",
"contains": ["buildElectronReleaseRequest", "gamecult.eve.runtime_release_request.v1", "eveelectron-release", "writeReleaseRequest"]
},
{
"path": "tools/eveelectron/eveelectron-release-contract.test.mjs",
"contains": ["builds EveElectron release request from package manifest", "eveelectron-v0.1.0", "artifacts/eveelectron-release/0.1.0/eve-electron-0.1.0.zip"]
}
],
"capture": {
"status": "json-projection",
"note": "Electron attaches a provider-advertisement-backed gamecult.eve.electron_shell_projection.v1 JSON projection artifact; packaged window PNG capture remains an EveElectron split blocker.",
"artifacts": [
{
"kind": "json-projection",
"schema": "gamecult.eve.electron_shell_projection.v1",
"path": "artifacts/eveelectron-capture/latest/electron-shell-projection.json",
"runtimeId": "electron-shell",
"providerId": "aetheria",
"surfaceId": "aetheria.daemon.game",
"sourceSurfacePath": "web/fixtures/aetheria-world-surface.json",
"requestPath": "artifacts/eveelectron-capture/latest/capture-request.json"
}
]
}
},
{
"id": "tui",
"title": "Compact TUI",
"kind": "active",
"ownerRepo": "EveTui",
"repoRole": "runtime-target",
"splitTarget": "EveTui",
"graduationTrigger": "Split when TUI has a provider-agnostic terminal/grid lowerer, provider advertisement consumption, command transport, terminal capability manifest, and transcript/cell-grid capture evidence.",
"capabilityManifest": {
"schemaPath": "schemas/gamecult.eve.runtime_capability.v1.schema.json",
"manifestPath": "runtimes/incubating/eve-tui/eve-runtime-capability.json"
},
"splitHandoffPath": "runtimes/incubating/eve-tui/evetui-split-handoff.json",
"requiredFixtures": ["embedded-surface", "aetheria-world"],
"pluginFixtures": ["sai-vn"],
"supportedFeatures": ["providerAdvertisements", "commandTransport", "terminalGridSummary", "terminalGridLowering", "embeddedDocuments", "pluginProjection"],
"supportedPlugins": [
{
"pluginId": "sai.vn",
"capabilities": ["vn.stage", "story.choose", "story.continue", "story.jump"]
},
{
"pluginId": "norn.graph",
"capabilities": ["embed.norn"]
},
{
"pluginId": "tex.math",
"capabilities": ["embed.tex", "tex.inline", "tex.block"]
}
],
"unsupportedPlugins": [],
"worldSurfaceLowering": [
{
"targetId": "tui",
"surfaceKinds": ["interactive-world", "interactive-world-editor"],
"projectionKinds": ["provider-authored-world-surface", "provider-authored-world-editor-surface"],
"supportLevel": "terminal-grid-command-surface",
"ownership": "runtime-lowers-provider-world-surface-without-owning-world-state",
"lossiness": "terminal-grid-summary-only",
"evidencePaths": [
"runtimes/incubating/eve-tui/src/eve-tui-shell.mjs",
"runtimes/incubating/eve-tui/test/eve-tui-shell.test.mjs",
"web/fixtures/sai-vn-surface.json",
"web/fixtures/aetheria.provider-advertisement.json"
]
}
],
"expectedPaths": [
"runtimes/incubating/eve-tui/package.json",
"runtimes/incubating/eve-tui/src/eve-tui-shell.mjs",
"runtimes/incubating/eve-tui/test/eve-tui-shell.test.mjs",
"runtimes/incubating/eve-tui/evetui-split-handoff.json",
"runtimes/incubating/eve-tui/eve-runtime-capability.json",
"scripts/run-evetui-split-handoff-smoke.ps1",
"scripts/run-evetui-lifecycle-smoke.ps1",
"scripts/run-evetui-provider-shell-smoke.ps1",
"scripts/run-evetui-capture-contract-smoke.ps1",
"scripts/run-evetui-capture-smoke.ps1",
"scripts/run-evetui-release-contract-smoke.ps1",
"tools/evetui/evetui-capture-contract.mjs",
"tools/evetui/evetui-capture-contract.test.mjs",
"tools/evetui/evetui-capture-artifact.mjs",
"tools/evetui/evetui-capture-artifact.test.mjs",
"tools/evetui/evetui-release-contract.mjs",
"tools/evetui/evetui-release-contract.test.mjs"
],
"expectedSourceSymbols": [
{
"path": "runtimes/incubating/eve-tui/src/eve-tui-shell.mjs",
"contains": ["EveTuiShell", "selectSurface", "lowerSurface", "normalizeSurfaceDocument", "buildComponentLines", "buildPluginProjection", "collectPluginProjections", "collectEmbeddedDocumentSlots", "normalizeEmbeddedDocuments", "embeddedDocumentSlots", "pluginProjections", "terminalElementKind", "sai.vn", "norn.graph", "tex.math", "sidecar-advertised-plugin-abi", "createCommandIntent", "renderSummary", "gamecult.eve.tui_grid.v1", "commandBoundary", "receiptSchema"]
},
{
"path": "runtimes/incubating/eve-tui/test/eve-tui-shell.test.mjs",
"contains": ["selects advertised provider surfaces", "command intents carry provider-advertised boundaries", "summary grid is explicitly lossy", "lowers provider surface trees into a terminal grid", "lowers Sai, Norn, and TeX plugin surfaces into compact terminal fallbacks", "embeddedDocumentSlots", "pluginProjections", "norn.map", "sai-vn-terminal-stage-summary", "norn-graph-terminal-outline", "tex-math-terminal-block-source", "rejects surface documents that do not match the advertised TUI target", "aetheria.daemon.commands"]
},
{
"path": "tools/evetui/evetui-capture-contract.mjs",
"contains": ["buildTuiCaptureRequest", "gamecult.eve.runtime_capture_request.v1", "artifactKind", "loweringTargets", "writeCaptureRequest"]
},
{
"path": "tools/evetui/evetui-capture-contract.test.mjs",
"contains": ["builds TUI capture request from provider advertisement", "rejects capture request when the surface does not advertise TUI", "artifacts/evetui-capture/smoke/tui-grid.json"]
},
{
"path": "tools/evetui/evetui-capture-artifact.mjs",
"contains": ["buildTuiCaptureArtifact", "EveTuiShell", "gamecult.eve.tui_grid.v1", "writeTuiCaptureArtifact", "request-output"]
},
{
"path": "tools/evetui/evetui-capture-artifact.test.mjs",
"contains": ["builds TUI JSON grid capture artifact", "gamecult.eve.tui_grid.v1", "artifacts/evetui-capture/smoke/tui-grid.json"]
},
{
"path": "tools/evetui/evetui-release-contract.mjs",
"contains": ["buildTuiReleaseRequest", "gamecult.eve.runtime_release_request.v1", "evetui-release", "writeReleaseRequest"]
},
{
"path": "tools/evetui/evetui-release-contract.test.mjs",
"contains": ["builds EveTui release request from package manifest", "evetui-v0.1.0", "artifacts/evetui-release/0.1.0/eve-tui-0.1.0.tgz"]
}
],
"capture": {
"status": "json-grid",
"note": "TUI attaches a provider-advertisement-backed gamecult.eve.tui_grid.v1 JSON capture artifact; packaged runtime ownership remains an EveTui split blocker.",
"artifacts": [
{
"kind": "json-grid",
"schema": "gamecult.eve.tui_grid.v1",
"path": "artifacts/evetui-capture/latest/tui-grid.json",
"providerId": "aetheria",
"surfaceId": "aetheria.daemon.game",
"sourceSurfacePath": "web/fixtures/aetheria-world-surface.json",
"requestPath": "artifacts/evetui-capture/latest/capture-request.json"
}
]
}
},
{
"id": "unity-scene",
"title": "Unity / Scene",
"kind": "pending",
"ownerRepo": "EveUnity",
"repoRole": "runtime-target",
"splitTarget": "EveUnity",
"graduationTrigger": "Split with EveUnity when a provider-agnostic Unity scene lowerer consumes provider world surfaces, emits command intents, and attaches scene capture evidence without importing Aetheria product code.",
"capabilityManifest": {
"schemaPath": "schemas/gamecult.eve.runtime_capability.v1.schema.json",
"manifestPath": "runtimes/incubating/eve-unity-scene/eve-runtime-capability.json"
},
"splitHandoffPath": "runtimes/incubating/eve-unity-scene/eveunity-scene-split-handoff.json",
"requiredFixtures": ["aetheria-world"],
"pluginFixtures": ["sai-vn"],
"supportedFeatures": ["providerAdvertisements", "commandTransport", "sceneGraphProjection", "embeddedDocuments"],
"supportedPlugins": [
{
"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-scene-graph-command-surface",
"ownership": "runtime-lowers-provider-world-surface-without-owning-world-state",
"evidencePaths": [
"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/EveUnitySceneSurfaceLowererTests.cs",
"web/fixtures/aetheria.provider-advertisement.json"
]
}
],
"expectedPaths": [
"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/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",
"runtimes/incubating/eve-unity-scene/eve-runtime-capability.json",
"runtimes/incubating/eve-unity-scene/eveunity-scene-split-handoff.json",
"scripts/run-eveunity-scene-lifecycle-smoke.ps1",
"scripts/run-eveunity-scene-release-contract-smoke.ps1",
"scripts/run-eveunity-scene-provider-shell-smoke.ps1",
"scripts/run-eveunity-scene-capture-contract-smoke.ps1",
"scripts/run-eveunity-scene-capture-smoke.ps1",
"tools/eveunity/eveunity-release-contract.mjs",
"tools/eveunity/eveunity-release-contract.test.mjs",
"tools/eveunity/eveunity-capture-contract.mjs",
"tools/eveunity/eveunity-capture-contract.test.mjs",
"tools/eveunity/eveunity-scene-capture-artifact.mjs",
"tools/eveunity/eveunity-scene-capture-artifact.test.mjs"
],
"expectedSourceSymbols": [
{
"path": "runtimes/incubating/eve-unity-scene/Runtime/EveUnitySceneSurfaceLowerer.cs",
"contains": ["EveUnitySceneSurfaceLowerer", "EveUnitySceneProviderSurfaceAdvertisement", "WorldInteraction", "CommandBoundary", "ReceiptSchema", "EveSurfaceCommandRequest", "BuildSceneGraph", "BuildEmbeddedDocumentSlots", "BuildPluginProjection", "SaiVisualNovelUnitySceneProjectionAdapter", "TeXMathUnitySceneProjectionAdapter", "EveUnitySceneEmbeddedDocumentSlot", "EveUnityScenePluginProjection", "EveUnitySceneNode", "SceneObjectKind", "unity-scene"]
},
{
"path": "runtimes/incubating/eve-unity-scene/Runtime/SaiVisualNovelUnitySceneProjectionAdapter.cs",
"contains": ["SaiVisualNovelUnitySceneProjectionAdapter", "sai.vn", "vn.stage", "story.choose", "story.continue", "story.jump", "gamecult.eve.plugin_abi.v1", "sidecar-advertised-plugin-abi", "Sai"]
},
{
"path": "runtimes/incubating/eve-unity-scene/Runtime/NornGraphUnitySceneProjectionAdapter.cs",
"contains": ["NornGraphUnitySceneProjectionAdapter", "norn.graph", "embed.norn", "gamecult.eve.plugin_abi.v1", "sidecar-advertised-plugin-abi", "Norn"]
},
{
"path": "runtimes/incubating/eve-unity-scene/Runtime/TeXMathUnitySceneProjectionAdapter.cs",
"contains": ["TeXMathUnitySceneProjectionAdapter", "tex.math", "embed.tex", "tex.scene-placement", "gamecult.eve.plugin_abi.v1", "sidecar-advertised-plugin-abi", "EvePlugins"]
},
{
"path": "runtimes/incubating/eve-unity-scene/Tests/Editor/EveUnitySceneSurfaceLowererTests.cs",
"contains": ["LowerCarriesProviderAdvertisedWorldBoundary", "LowerBuildsProviderAgnosticSceneGraphFromSurfaceTree", "SaiVisualNovelLowersThroughRuntimeProjectionAdapterWithoutOwningStoryState", "CommandIntentCarriesAdvertisedBoundaryWithoutOwningReceipts", "world-projection-node", "sai-vn-scene-stage", "norn-graph-scene-projection", "tex-math-scene-projection", "norn.map", "cultmesh://aetheria/norn/map", "sai.vn", "norn.graph", "tex.math", "sidecar-advertised-plugin-abi", "aetheria.daemon.commands", "aetheria.eve_command_acceptance_status.v1"]
},
{
"path": "tools/eveunity/eveunity-capture-contract.test.mjs",
"contains": ["builds Unity scene capture request from provider advertisement", "unity-scene", "artifacts/eveunity-scene-capture/smoke/unity-scene.png"]
},
{
"path": "tools/eveunity/eveunity-scene-capture-artifact.mjs",
"contains": ["buildUnitySceneCaptureArtifact", "buildUnitySceneProjection", "gamecult.eve.unity_scene_projection.v1", "unity-scene-projection-json", "writeUnitySceneCaptureArtifact", "request-output"]
},
{
"path": "tools/eveunity/eveunity-scene-capture-artifact.test.mjs",
"contains": ["builds Unity scene projection capture artifact", "keeps Sai, Norn, and TeX semantics in sidecar plugin projections", "gamecult.eve.unity_scene_projection.v1", "unity-scene-projection-json"]
},
{
"path": "tools/eveunity/eveunity-release-contract.test.mjs",
"contains": ["builds EveUnity scene UPM release request from package manifest", "eveunity-scene-v0.1.0", "artifacts/eveunity-scene-release/0.1.0/org.gamecult.eve.unity-scene-0.1.0.tgz"]
}
],
"capture": {
"status": "json-projection",
"note": "Unity scene attaches a provider-advertisement-backed gamecult.eve.unity_scene_projection.v1 JSON projection artifact; Unity screenshot or frame-capture PNG remains an EveUnity split blocker.",
"artifacts": [
{
"kind": "json-projection",
"schema": "gamecult.eve.unity_scene_projection.v1",
"path": "artifacts/eveunity-scene-capture/latest/unity-scene-projection.json",
"runtimeId": "unity-scene",
"providerId": "aetheria",
"surfaceId": "aetheria.daemon.game",
"sourceSurfacePath": "web/fixtures/aetheria-world-surface.json",
"requestPath": "artifacts/eveunity-scene-capture/latest/capture-request.json"
}
]
}
},
{
"id": "web",
"title": "Web reference",
"kind": "active",
"ownerRepo": "Eve",
"repoRole": "core",
"splitTarget": "Eve",
"graduationTrigger": "Stay in Eve while it is the behavior oracle; split only if it becomes a deployable runtime product.",
"capabilityManifest": {
"schemaPath": "schemas/gamecult.eve.runtime_capability.v1.schema.json",
"manifestPath": "web/eve-runtime-capability.json"
},
"semanticHarness": true,
"requiredFixtures": ["embedded-surface"],
"pluginFixtures": ["sai-vn"],
"supportedFeatures": ["embeddedDocuments", "providerAdvertisements", "stateBindings", "styleTokens", "authorityWitnesses"],
"localProviderCatalog": {
"path": "web/local-provider-catalog.json",
"requiredProviders": ["aetheria", "repixelizer", "gamecult.home.vn"],
"requiredAdvertisements": [
"web/fixtures/aetheria.provider-advertisement.json",
"web/fixtures/repixelizer.provider-advertisement.json",
"web/fixtures/sai-vn.provider-advertisement.json"
]
},
"supportedPlugins": [
{
"pluginId": "sai.vn",
"capabilities": ["vn.stage", "story.choose", "story.continue", "story.jump"]
},
{
"pluginId": "norn.graph",
"capabilities": ["embed.norn"]
},
{
"pluginId": "tex.math",
"capabilities": ["embed.tex"]
}
],
"worldSurfaceLowering": [
{
"targetId": "web-reference",
"surfaceKinds": ["interactive-world", "interactive-world-editor"],
"projectionKinds": ["provider-authored-world-surface", "provider-authored-world-editor-surface"],
"supportLevel": "reference-dom-canvas-command-boundary",
"ownership": "runtime-lowers-provider-world-surface-without-owning-world-state",
"evidencePaths": [
"web/surface.js",
"packages/eve-browser-lowering/src/index.ts",
"web/fixtures/aetheria.provider-advertisement.json"
]
}
],
"expectedSourceSymbols": [
{
"path": "web/surface.js",
"contains": ["loadLocalProviderCatalog", "loadProviderAdvertisement", "publishCommandIntent", "browser.reference"]
},
{
"path": "web/local-provider-catalog.json",
"contains": ["aetheria.provider-advertisement.json", "repixelizer.provider-advertisement.json", "sai-vn.provider-advertisement.json"]
},
{
"path": "packages/eve-browser-lowering/src/index.ts",
"contains": ["surface.slot", "embeddedDocuments", "cultui-embedded-slot", "createEveCommandIntent", "resolveComponentCommandId", "localAdvertisement", "activeSurfaceId"]
}
],
"commandTransportSmoke": {
"schema": "gamecult.eve.command.v1",
"expectedPaths": ["packages/eve-browser-lowering/src/index.ts", "packages/eve-browser-lowering/test/browser-lowering.test.mjs", "web/surface.js"],
"expectedSourceSymbols": [
{
"path": "packages/eve-browser-lowering/src/index.ts",
"contains": ["EveCommandIntent", "createEveCommandIntent", "schema: \"gamecult.eve.command.v1\"", "clientId", "commandBoundary", "receiptSchema", "activeSurfaceId"]
},
{
"path": "packages/eve-browser-lowering/test/browser-lowering.test.mjs",
"contains": ["activeSurfaceId", "aetheria.daemon.editor", "aetheria.daemon.editor.commands", "component.fallback.boundary"]
},
{
"path": "web/surface.js",
"contains": ["publishCommandIntent", "/hermodr/commands/eve", "createEveCommandIntent", "browser.reference", "activeSurfaceId"]
}
]
},
"lifecycle": {
"release": {
"ownerRepo": "Eve",
"status": "reference-oracle-in-core",
"evidencePaths": [
"web/index.html",
"web/surface.js",
"packages/eve-browser-lowering/src/index.ts"
],
"pendingProofs": [
"Split to EveWeb only if the browser reference gains independent deployment and release lifecycle."
]
},
"test": {
"ownerRepo": "Eve",
"status": "node-tests-and-parity-harness",
"command": "node --test web/eve-dsl.test.mjs && npm --prefix packages/eve-browser-lowering test && powershell -ExecutionPolicy Bypass -File .\\scripts\\run-parity-harness.ps1",
"evidencePaths": [
"web/eve-dsl.test.mjs",
"packages/eve-browser-lowering/test/browser-lowering.test.mjs",
"tools/parity/parity-manifest.json",
"scripts/run-parity-harness.ps1"
],
"pendingProofs": []
},
"capture": {
"ownerRepo": "Eve",
"status": "chrome-headless",
"evidencePaths": [
"scripts/capture-web-reference.ps1",
"scripts/run-parity-smoke.ps1",
"tools/parity/render-contact-sheet.py"
],
"pendingProofs": []
}
},
"capture": {
"status": "chrome-headless",
"note": "Chrome headless captures phone, tablet, and desktop PNGs through the provider query parameter.",
"layoutProbes": [
{
"fixtureId": "embedded-surface",
"providerId": "gamecult.eve.embedded-demo",
"surfaceId": "gamecult.eve.embedded-demo",
"schema": "gamecult.eve.web_layout_probe.v1",
"path": "artifacts/web-reference-layout-probe/latest/embedded-surface.json",
"runner": "scripts/run-web-reference-layout-probe-smoke.ps1"
},
{
"fixtureId": "sai-vn",
"providerId": "gamecult.home.vn",
"surfaceId": "sai.visual_novel.surface",
"schema": "gamecult.eve.web_layout_probe.v1",
"path": "artifacts/web-reference-layout-probe/latest/sai-vn.json",
"runner": "scripts/run-web-reference-layout-probe-smoke.ps1"
}
]
}
},
{
"id": "windows-flutter",
"title": "Windows / Flutter",
"kind": "active",
"ownerRepo": "Eve",
"repoRole": "runtime-incubating",
"splitTarget": "EveFlutter",
"graduationTrigger": "Split when Flutter has provider picker, command transport, plugin projection adapters, and its own build/release lifecycle.",
"lifecycleManifest": {
"schemaPath": "schemas/gamecult.eve.runtime_lifecycle.v1.schema.json",
"manifestPath": "flutter/eve_parity/eveflutter-lifecycle.json"
},
"requiredFixtures": ["embedded-surface"],
"pluginFixtures": ["sai-vn"],
"supportedFeatures": ["embeddedDocuments"],
"supportedPlugins": [
{
"pluginId": "sai.vn",
"capabilities": ["vn.stage", "story.choose", "story.continue", "story.jump"]
},
{
"pluginId": "norn.graph",
"capabilities": ["embed.norn"]
},
{
"pluginId": "tex.math",
"capabilities": ["embed.tex"]
}
],
"expectedPaths": ["flutter/eve_parity/lib/main.dart", "scripts/capture-flutter-parity.ps1"],
"expectedSourceSymbols": [
{
"path": "flutter/eve_parity/lib/main.dart",
"contains": ["embeddedDocuments", "surface.slot", "EveEmbeddedDocumentSlot", "EveProviderCatalog", "EveProviderPicker"]
}
],
"commandTransportSmoke": {
"schema": "gamecult.eve.command.v1",
"expectedPaths": ["flutter/eve_parity/lib/main.dart", "flutter/eve_parity/test/parity_smoke_test.dart"],
"expectedSourceSymbols": [
{
"path": "flutter/eve_parity/lib/main.dart",
"contains": ["EveCommandIntent", "createEveCommandIntent", "resolveComponentCommandId", "commandSink", "gamecult.eve.command.v1", "flutter-parity"]
},
{
"path": "flutter/eve_parity/test/parity_smoke_test.dart",
"contains": ["emits gamecult Eve command intent", "aetheria.daemon.commands", "aetheria.daemon.focus"]
}
]
},
"capture": {
"status": "golden",
"note": "Uses the Flutter parity golden smoke on the Windows host."
}
},
{
"id": "linux-flutter",
"title": "Linux / Flutter",
"kind": "active",
"ownerRepo": "Eve",
"repoRole": "runtime-incubating",
"splitTarget": "EveFlutter",
"graduationTrigger": "Split with EveFlutter when Linux capture and runner health become runtime-owned.",
"lifecycleManifest": {
"schemaPath": "schemas/gamecult.eve.runtime_lifecycle.v1.schema.json",
"manifestPath": "flutter/eve_parity/eveflutter-lifecycle.json"
},
"requiredFixtures": ["embedded-surface"],
"pluginFixtures": ["sai-vn"],
"supportedFeatures": ["embeddedDocuments"],
"supportedPlugins": [
{
"pluginId": "sai.vn",
"capabilities": ["vn.stage", "story.choose", "story.continue", "story.jump"]
},
{
"pluginId": "norn.graph",
"capabilities": ["embed.norn"]
},
{
"pluginId": "tex.math",
"capabilities": ["embed.tex"]
}
],
"expectedPaths": ["flutter/eve_parity/linux", "scripts/capture-flutter-parity.ps1"],
"expectedSourceSymbols": [
{
"path": "flutter/eve_parity/lib/main.dart",
"contains": ["embeddedDocuments", "surface.slot", "EveEmbeddedDocumentSlot", "EveProviderCatalog", "EveProviderPicker"]
}
],
"commandTransportSmoke": {
"schema": "gamecult.eve.command.v1",
"expectedPaths": ["flutter/eve_parity/lib/main.dart", "flutter/eve_parity/test/parity_smoke_test.dart"],
"expectedSourceSymbols": [
{
"path": "flutter/eve_parity/lib/main.dart",
"contains": ["EveCommandIntent", "createEveCommandIntent", "resolveComponentCommandId", "commandSink", "gamecult.eve.command.v1", "flutter-parity"]
},
{
"path": "flutter/eve_parity/test/parity_smoke_test.dart",
"contains": ["emits gamecult Eve command intent", "aetheria.daemon.commands", "aetheria.daemon.focus"]
}
]
},
"capture": {
"status": "ssh-golden",
"note": "Runs the Flutter parity golden smoke on Nightwing over SSH and pulls back phone, tablet, and desktop PNGs."
}
},
{
"id": "ios-uikit",
"title": "iOS / UIKit",
"kind": "active",
"ownerRepo": "Eve",
"repoRole": "runtime-incubating",
"splitTarget": "EveIOS",
"graduationTrigger": "Split when UIKit renderer has generic surface lowering, sensor edge release flow, and device CI independent of Eve core.",
"requiredFixtures": ["embedded-surface"],
"pluginFixtures": [],
"supportedFeatures": ["embeddedDocuments"],
"unsupportedPlugins": [],
"expectedPaths": ["Sources/EVEViewController.mm", "scripts/capture-eve-screenshot.ps1"],
"expectedSourceSymbols": [
{
"path": "Sources/EVEViewController.mm",
"contains": ["surface.slot", "embeddedDocuments", "accessibilityIdentifier"]
}
],
"capture": {
"status": "ssh-png",
"note": "SSH capture script foregrounds EveCanvas and requests latest-screenshot.png."
}
},
{
"id": "android-flutter",
"title": "Android / Flutter",
"kind": "active",
"ownerRepo": "Eve",
"repoRole": "runtime-incubating",
"splitTarget": "EveFlutter",
"graduationTrigger": "Split with EveFlutter when Android APK smoke, provider discovery, command transport, and plugin projection adapters are runtime-owned.",
"lifecycleManifest": {
"schemaPath": "schemas/gamecult.eve.runtime_lifecycle.v1.schema.json",
"manifestPath": "flutter/eve_parity/eveflutter-lifecycle.json"
},
"requiredFixtures": ["embedded-surface"],
"pluginFixtures": ["sai-vn"],
"supportedFeatures": ["embeddedDocuments"],
"supportedPlugins": [
{
"pluginId": "sai.vn",
"capabilities": ["vn.stage", "story.choose", "story.continue", "story.jump"]
},
{
"pluginId": "norn.graph",
"capabilities": ["embed.norn"]
},
{
"pluginId": "tex.math",
"capabilities": ["embed.tex"]
}
],
"expectedPaths": ["flutter/eve_parity/lib/main.dart", "scripts/capture-android-flutter-parity.ps1"],
"expectedSourceSymbols": [
{
"path": "flutter/eve_parity/lib/main.dart",
"contains": ["embeddedDocuments", "surface.slot", "EveEmbeddedDocumentSlot", "EveProviderCatalog", "EveProviderPicker"]
}
],
"commandTransportSmoke": {
"schema": "gamecult.eve.command.v1",
"expectedPaths": ["flutter/eve_parity/lib/main.dart", "flutter/eve_parity/test/parity_smoke_test.dart"],
"expectedSourceSymbols": [
{
"path": "flutter/eve_parity/lib/main.dart",
"contains": ["EveCommandIntent", "createEveCommandIntent", "resolveComponentCommandId", "commandSink", "gamecult.eve.command.v1", "flutter-parity"]
},
{
"path": "flutter/eve_parity/test/parity_smoke_test.dart",
"contains": ["emits gamecult Eve command intent", "aetheria.daemon.commands", "aetheria.daemon.focus"]
}
]
},
"capture": {
"status": "adb-png",
"note": "Builds the shared Flutter parity APK, installs it on Periwinkle, and pulls responsive plus physical-panel screencaps through adb."
}
},
{
"id": "android-kotlin",
"title": "Android / Kotlin device edge",
"kind": "active",
"ownerRepo": "Eve",
"repoRole": "runtime-incubating",
"splitTarget": "EveAndroid",
"graduationTrigger": "Split when Kotlin device edge has generic surface traversal, sensor release flow, and Android-specific CI.",
"requiredFixtures": ["embedded-surface"],
"pluginFixtures": [],
"supportedFeatures": ["cultmesh-dashboard-documents", "sensor-uplink", "embeddedDocuments", "styleTokens"],
"unsupportedPlugins": [],
"expectedPaths": ["android/app/src/main/java/org/gamecult/eve/MainActivity.kt", "scripts/build-android.ps1"],
"expectedSourceSymbols": [
{
"path": "android/app/src/main/java/org/gamecult/eve/MainActivity.kt",
"contains": ["surface.slot", "embeddedDocuments", "contentDescription", "tokenLabel", "tokenTextSize", "typefaceForToken", "fontBody", "fontTitle", "fontMono"]
}
],
"capture": {
"status": "manual",
"note": "Native Kotlin preserves CultUI embedded document slots in its lightweight dashboard renderer; full responsive GUI capture still belongs to Android Flutter."
}
},
{
"id": "unity-uitoolkit",
"title": "Unity / UI Toolkit",
"kind": "active",
"ownerRepo": "Eve",
"repoRole": "runtime-incubating",
"splitTarget": "EveUnity",
"graduationTrigger": "Split when Unity package has independent UPM release, plugin projection adapter behavior, and Unity test/capture lifecycle.",
"capabilityManifest": {
"schemaPath": "schemas/gamecult.eve.runtime_capability.v1.schema.json",
"manifestPath": "packages/org.gamecult.eve.unity-uitoolkit/eve-runtime-capability.json"
},
"requiredFixtures": ["embedded-surface"],
"pluginFixtures": ["sai-vn"],
"supportedFeatures": ["embeddedDocuments"],
"supportedPlugins": [
{
"pluginId": "sai.vn",
"capabilities": ["vn.stage", "story.choose", "story.continue", "story.jump"]
},
{
"pluginId": "norn.graph",
"capabilities": ["embed.norn"]
},
{
"pluginId": "tex.math",
"capabilities": ["embed.tex", "tex.inline", "tex.block"]
}
],
"unsupportedPlugins": [],
"worldSurfaceLowering": [
{
"targetId": "unity-uitoolkit",
"surfaceKinds": ["interactive-world", "interactive-world-editor"],
"projectionKinds": ["provider-authored-world-surface", "provider-authored-world-editor-surface"],
"supportLevel": "ui-toolkit-semantic-command-surface",
"ownership": "runtime-lowers-provider-world-surface-without-owning-world-state",
"evidencePaths": [
"packages/org.gamecult.eve.unity-uitoolkit/Runtime/EveUiToolkitSurfaceLowerer.cs",
"packages/org.gamecult.eve.unity-uitoolkit/Tests/Editor/EveUiToolkitSurfaceLowererTests.cs",
"web/fixtures/aetheria.provider-advertisement.json"
]
}
],
"expectedPaths": [
"packages/org.gamecult.eve.unity-uitoolkit/Runtime/EveUiToolkitSurfaceLowerer.cs",
"packages/org.gamecult.eve.unity-uitoolkit/Runtime/IEveUiToolkitPluginProjectionAdapter.cs",
"packages/org.gamecult.eve.unity-uitoolkit/Runtime/SaiVisualNovelUiToolkitProjectionAdapter.cs",
"packages/org.gamecult.eve.unity-uitoolkit/Runtime/NornGraphUiToolkitProjectionAdapter.cs",
"packages/org.gamecult.eve.unity-uitoolkit/Runtime/TeXMathUiToolkitProjectionAdapter.cs",
"packages/org.gamecult.eve.unity-uitoolkit/Tests/Editor/GameCult.Eve.UnityUIToolkit.Tests.asmdef",
"packages/org.gamecult.eve.unity-uitoolkit/Tests/Editor/EveUiToolkitSurfaceLowererTests.cs",
"packages/org.gamecult.eve.unity-uitoolkit/eveunity-split-handoff.json",
"scripts/run-aetheria-unity-editmode-tests.ps1",
"scripts/run-eveunity-split-handoff-smoke.ps1",
"scripts/run-eveunity-uitoolkit-capture-smoke.ps1",
"tools/eveunity/eveunity-uitoolkit-capture-artifact.mjs",
"tools/eveunity/eveunity-uitoolkit-capture-artifact.test.mjs"
],
"expectedSourceSymbols": [
{
"path": "packages/org.gamecult.eve.unity-uitoolkit/Runtime/EveUiToolkitSurfaceLowerer.cs",
"contains": ["LowerEmbeddedDocument(", "EmbeddedDocuments", "eve-embedded-document", "FindPluginProjectionAdapter", "projectionAdapter.Lower"]
},
{
"path": "packages/org.gamecult.eve.unity-uitoolkit/Runtime/IEveUiToolkitPluginProjectionAdapter.cs",
"contains": ["PluginId", "Capabilities", "CanLower", "Lower("]
},
{
"path": "packages/org.gamecult.eve.unity-uitoolkit/Runtime/SaiVisualNovelUiToolkitProjectionAdapter.cs",
"contains": ["sai.vn", "vn.stage", "story.choose", "story.continue", "story.jump", "StoryButton", "EmitStoryCommand", "EveSurfaceCommandRequest", "sai-vn-stage", "sai-vn-dialogue", "sai-vn-actions"]
},
{
"path": "packages/org.gamecult.eve.unity-uitoolkit/Runtime/NornGraphUiToolkitProjectionAdapter.cs",
"contains": ["norn.graph", "embed.norn", "NornGraphUiToolkitProjectionAdapter", "norn-graph", "EmitGraphCommand", "EveSurfaceCommandRequest"]
},
{
"path": "packages/org.gamecult.eve.unity-uitoolkit/Runtime/TeXMathUiToolkitProjectionAdapter.cs",
"contains": ["tex.math", "embed.tex", "TeXMathUiToolkitProjectionAdapter", "tex-math", "tex-math-source-fallback"]
},
{
"path": "packages/org.gamecult.eve.unity-uitoolkit/Tests/Editor/EveUiToolkitSurfaceLowererTests.cs",
"contains": ["FindPluginProjectionAdapter", "SaiStageLowersThroughRuntimeProjectionAdapter", "NornGraphLowersThroughRuntimeProjectionAdapter", "TeXMathLowersThroughRuntimeProjectionAdapterAsSourceFallback", "EmbeddedDocumentSlotMountsResolverBackedChildSurface", "eve-plugin-projection"]
},
{
"path": "tools/eveunity/eveunity-uitoolkit-capture-artifact.mjs",
"contains": ["buildUnityUiToolkitCaptureArtifact", "buildUnityUiToolkitProjection", "gamecult.eve.unity_uitoolkit_projection.v1", "unity-uitoolkit-projection-json", "writeUnityUiToolkitCaptureArtifact", "request-output"]
},
{
"path": "tools/eveunity/eveunity-uitoolkit-capture-artifact.test.mjs",
"contains": ["builds Unity UI Toolkit projection capture artifact", "keeps Sai, Norn, and TeX semantics in sidecar plugin UI projections", "gamecult.eve.unity_uitoolkit_projection.v1", "unity-uitoolkit-projection-json"]
}
],
"commandTransportSmoke": {
"schema": "gamecult.eve.command.v1",
"expectedPaths": [
"packages/org.gamecult.eve.surface/Runtime/EveSurfaceDocument.cs",
"packages/org.gamecult.eve.unity-uitoolkit/Runtime/EveUiToolkitSurfaceLowerer.cs"
],
"expectedSourceSymbols": [
{
"path": "packages/org.gamecult.eve.surface/Runtime/EveSurfaceDocument.cs",
"contains": ["EveSurfaceCommandRequest", "SchemaId", "gamecult.eve.command.v1", "ClientId"]
},
{
"path": "packages/org.gamecult.eve.unity-uitoolkit/Runtime/EveUiToolkitSurfaceLowerer.cs",
"contains": ["commandSink", "EmitCommand", "ResolveOperation", "unity-uitoolkit"]
}
]
},
"lifecycle": {
"release": {
"ownerRepo": "EveUnity",
"status": "incubating-upm-package",
"releaseContract": {
"ownerRepo": "EveUnity",
"packageName": "org.gamecult.eve.unity-uitoolkit",
"packageRoot": "packages/org.gamecult.eve.unity-uitoolkit",
"versionSource": "packages/org.gamecult.eve.unity-uitoolkit/package.json",
"tagPattern": "eveunity-uitoolkit-v{version}",
"artifactKind": "upm-package",
"requestSchema": "gamecult.eve.runtime_release_request.v1",
"requestBuilder": "tools/eveunity/eveunity-release-contract.mjs",
"artifactPattern": "artifacts/eveunity-uitoolkit-release/{version}/org.gamecult.eve.unity-uitoolkit-{version}.tgz",
"publishProof": "Tagged UPM release is created from the EveUnity repo and references this package root.",
"requiredPackageDependencies": [
{
"packageName": "org.gamecult.eve.surface",
"version": "0.1.0",
"packageManager": "upm",
"ownerRepo": "Eve",
"purpose": "Shared Unity DTOs for gamecult.eve.surface.v1 documents."
}
]
},
"evidencePaths": [
"packages/org.gamecult.eve.unity-uitoolkit/package.json",
"packages/org.gamecult.eve.unity-uitoolkit/README.md",
"tools/eveunity/eveunity-release-contract.mjs",
"tools/eveunity/eveunity-release-contract.test.mjs",
"scripts/run-eveunity-release-contract-smoke.ps1",
"scripts/run-aetheria-unity-package-smoke.ps1"
],
"pendingProofs": [
"Tagged UPM release cut from EveUnity rather than Eve incubation."
]
},
"test": {
"ownerRepo": "EveUnity",
"status": "batchmode-editmode-tests-and-consumer-build-smoke",
"command": "powershell -ExecutionPolicy Bypass -File .\\scripts\\run-aetheria-unity-editmode-tests.ps1",
"testContract": {
"ownerRepo": "EveUnity",
"runnerKind": "unity-editmode-batchmode",
"runnerScript": "scripts/run-aetheria-unity-editmode-tests.ps1",
"consumerProject": "E:\\Projects\\Aetheria",
"unityExeDefault": "C:\\Program Files\\Unity\\Hub\\Editor\\6000.4.2f1\\Editor\\Unity.exe",
"packageName": "org.gamecult.eve.unity-uitoolkit",
"testAssembly": "GameCult.Eve.UnityUIToolkit.Tests",
"testPlatform": "EditMode",
"resultsArtifact": "artifacts/aetheria-unity-editmode/{stamp}/unity-editmode-results.xml",
"logArtifact": "artifacts/aetheria-unity-editmode/{stamp}/unity-editmode.log",
"manifestMutation": "Temporarily adds org.gamecult.eve.unity-uitoolkit to Aetheria Packages/manifest.json testables and restores the manifest after the run.",
"managedAssemblyDependencies": [
{
"assemblyName": "GameCult.Caching.dll",
"packageId": "GameCult.Caching",
"packageManager": "nuget",
"ownerRepo": "CultLib",
"resolutionMode": "Unity precompiled reference during EveUnity incubation."
},
{
"assemblyName": "GameCult.Mesh.dll",
"packageId": "GameCult.Mesh",
"packageManager": "nuget",
"ownerRepo": "CultLib",
"resolutionMode": "Unity precompiled reference during EveUnity incubation."
},
{
"assemblyName": "MessagePack.Annotations.dll",
"packageId": "MessagePack.Annotations",
"packageManager": "nuget",
"ownerRepo": "CultLib",
"resolutionMode": "Unity precompiled reference during EveUnity incubation."
}
]
},
"evidencePaths": [
"packages/org.gamecult.eve.unity-uitoolkit/Tests/Editor/GameCult.Eve.UnityUIToolkit.Tests.asmdef",
"packages/org.gamecult.eve.unity-uitoolkit/Tests/Editor/EveUiToolkitSurfaceLowererTests.cs",
"scripts/run-aetheria-unity-editmode-tests.ps1",
"scripts/run-aetheria-unity-package-smoke.ps1",
"scripts/run-eveunity-split-handoff-smoke.ps1",
"packages/org.gamecult.eve.unity-uitoolkit/eveunity-split-handoff.json"
],
"pendingProofs": [
"Unity batchmode EditMode runner is owned by EveUnity rather than Eve incubation."
]
},
"capture": {
"ownerRepo": "EveUnity",
"status": "pending-editor-capture",
"captureContract": {
"ownerRepo": "EveUnity",
"runtimeId": "unity-uitoolkit",
"targetId": "unity-uitoolkit",
"requestSchema": "gamecult.eve.runtime_capture_request.v1",
"requestBuilder": "tools/eveunity/eveunity-capture-contract.mjs",
"advertisementPath": "web/fixtures/aetheria.provider-advertisement.json",
"captureKind": "unity-editor-or-batchmode-png",
"artifactKind": "png",
"artifactPattern": "artifacts/eveunity-uitoolkit-capture/{stamp}/unity-uitoolkit.png",
"conformanceAttachment": "runtime.captureArtifacts[]",
"requiredProvider": "aetheria",
"requiredSurface": "aetheria.daemon.game",
"authority": "Capture observes runtime projection only; provider state, command acceptance, and receipts stay provider-owned.",
"publishProof": "Unity editor or batchmode capture artifact is attached to the runtime conformance report from EveUnity."
},
"evidencePaths": [
"tools/eveunity/eveunity-capture-contract.mjs",
"tools/eveunity/eveunity-capture-contract.test.mjs",
"scripts/run-eveunity-capture-contract-smoke.ps1",
"tools/eveunity/eveunity-uitoolkit-capture-artifact.mjs",
"tools/eveunity/eveunity-uitoolkit-capture-artifact.test.mjs",
"scripts/run-eveunity-uitoolkit-capture-smoke.ps1",
"web/fixtures/aetheria.provider-advertisement.json"
],
"pendingProofs": [
"Unity batchmode or editor capture artifact attached to the runtime conformance report."
]
}
},
"capture": {
"status": "json-projection",
"note": "Unity UI Toolkit attaches a provider-advertisement-backed gamecult.eve.unity_uitoolkit_projection.v1 JSON projection artifact; Unity editor or batchmode PNG capture remains an EveUnity split blocker.",
"artifacts": [
{
"kind": "json-projection",
"schema": "gamecult.eve.unity_uitoolkit_projection.v1",
"path": "artifacts/eveunity-uitoolkit-capture/latest/unity-uitoolkit-projection.json",
"runtimeId": "unity-uitoolkit",
"providerId": "aetheria",
"surfaceId": "aetheria.daemon.game",
"sourceSurfacePath": "web/fixtures/aetheria-world-surface.json",
"requestPath": "artifacts/eveunity-uitoolkit-capture/latest/capture-request.json"
}
]
}
},
{
"id": "direct2d",
"title": "Fensalir Direct2D",
"kind": "pending",
"ownerRepo": "Fensalir",
"repoRole": "runtime-external-target",
"splitTarget": "Fensalir or EveDirect2D if it earns a separate body",
"graduationTrigger": "Do not graduate until the Eve-to-AquariumUiDocument adapter and Direct2D frame capture exist.",
"adapterSpike": "external",
"demotionReason": "Fensalir has an external Aquarium.EveSurface adapter spike and a recorded gamecult.eve.surface.v1 adapter fixture, but Eve still has no Direct2D frame capture or runtime-owned command smoke.",
"activationCriteria": [
"Fensalir runs recorded gamecult.eve.surface.v1 fixtures without provider-specific renderer knowledge.",
"Fensalir emits gamecult.eve.command.v1 intents through the advertised provider command boundary.",
"Direct2D capture artifacts are produced and attached to the parity report."
],
"requiredFixtures": ["fensalir-direct2d"],
"pluginFixtures": [],
"supportedFeatures": ["embeddedDocuments"],
"expectedPaths": ["web/fixtures/fensalir-direct2d-surface.json"],
"expectedExternalPaths": [
"E:\\Projects\\Fensalir\\src\\Aquarium.EveSurface\\EveSurfaceRuntime.cs",
"E:\\Projects\\Fensalir\\docs\\eve-direct2d-client-surface.md"
],
"expectedExternalSourceSymbols": [
{
"path": "E:\\Projects\\Fensalir\\src\\Aquarium.EveSurface\\EveSurfaceRuntime.cs",
"contains": [
"FENSALIR_EVE_BROKER",
"AquariumUiDocument Ui => ComposeUi()",
"ReadSurface(root)",
"EveCompositionElement",
"DirectWriteOverlay"
]
}
],
"capture": {
"status": "missing",
"note": "External Fensalir adapter spike and recorded surface fixture exist; Eve still needs runtime-owned command smoke and Direct2D frame capture before this runtime can become active."
}
}
]
}