Thing/runtimes/incubating/eve-electron/eve-runtime-capability.json
2026-07-10 04:03:05 +01:00

191 lines
8.2 KiB
JSON

{
"schema": "gamecult.eve.runtime_capability.v1",
"runtimeId": "electron-shell",
"title": "Electron shell",
"owner": "EveElectron",
"incubation": {
"ownerRepo": "EveElectron",
"currentHostRepo": "Eve",
"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.",
"splitHandoff": {
"manifestPath": "runtimes/incubating/eve-electron/eveelectron-split-handoff.json",
"smokeCommand": "powershell -ExecutionPolicy Bypass -File .\\scripts\\run-eveelectron-split-handoff-smoke.ps1"
}
},
"supportedFeatures": [
"providerAdvertisements",
"commandTransport",
"surfaceTreeProjection",
"embeddedDocuments",
"pluginProjection"
],
"supportedPlugins": [
{
"pluginId": "sai.vn",
"capabilities": [
"vn.stage",
"story.choose",
"story.continue",
"story.jump"
],
"projectionAdapter": "EveElectronShell.buildPluginProjection"
},
{
"pluginId": "norn.graph",
"capabilities": [
"embed.norn"
],
"projectionAdapter": "EveElectronShell.buildPluginProjection"
},
{
"pluginId": "tex.math",
"capabilities": [
"embed.tex",
"tex.inline",
"tex.block"
],
"projectionAdapter": "EveElectronShell.buildPluginProjection"
}
],
"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",
"web/fixtures/eve-world-smoke.provider-advertisement.json"
]
}
],
"commandTransport": {
"schema": "gamecult.eve.command_invocation.v1",
"status": "provider-shell-contract-skeleton",
"emitter": "EveElectronShell.createCommandIntent",
"clientId": "electron-shell",
"authority": "Electron emits command intents through provider-advertised command boundaries; providers accept, deny, and publish receipts."
},
"lifecycle": {
"release": {
"ownerRepo": "EveElectron",
"status": "pending-electron-package",
"releaseContract": {
"ownerRepo": "EveElectron",
"packageName": "eve-electron",
"packageRoot": "runtimes/incubating/eve-electron",
"versionSource": "runtimes/incubating/eve-electron/package.json",
"tagPattern": "eveelectron-v{version}",
"artifactKind": "electron-app",
"requestSchema": "gamecult.eve.runtime_release_request.v1",
"requestBuilder": "tools/eveelectron/eveelectron-release-contract.mjs",
"artifactPattern": "artifacts/eveelectron-release/{version}/eve-electron-{version}.zip",
"publishProof": "Packaged Electron release is created from the EveElectron repo and references the provider-agnostic shell package root."
},
"evidencePaths": [
"runtimes/incubating/eve-electron/package.json",
"runtimes/incubating/eve-electron/src/eve-electron-shell.mjs",
"runtimes/incubating/eve-electron/eveelectron-split-handoff.json",
"scripts/run-eveelectron-split-handoff-smoke.ps1",
"scripts/run-eveelectron-release-contract-smoke.ps1",
"tools/eveelectron/eveelectron-release-contract.mjs",
"tools/eveelectron/eveelectron-release-contract.test.mjs"
],
"pendingProofs": [
"Electron packaged app release is cut from EveElectron rather than Eve incubation."
]
},
"test": {
"ownerRepo": "EveElectron",
"status": "provider-shell-contract-skeleton",
"testContract": {
"ownerRepo": "EveElectron",
"runnerKind": "electron-provider-shell-smoke",
"runnerScript": "scripts/run-eveelectron-provider-shell-smoke.ps1",
"consumerProject": "E:\\Projects\\Aetheria",
"packageName": "eve-electron",
"testAssembly": "eve-electron-shell.test.mjs",
"testPlatform": "Node contract skeleton",
"resultsArtifact": "artifacts/eveelectron-provider-shell/{stamp}/provider-shell-results.json",
"logArtifact": "artifacts/eveelectron-provider-shell/{stamp}/provider-shell.log",
"manifestMutation": "None; the shell consumes provider advertisements and must not mutate provider product manifests."
},
"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",
"runtimes/incubating/eve-electron/eveelectron-split-handoff.json",
"scripts/run-eveelectron-split-handoff-smoke.ps1",
"scripts/run-eveelectron-provider-shell-smoke.ps1"
],
"pendingProofs": [
"Electron provider-advertisement smoke runs from EveElectron in a packaged Electron window without importing Aetheria source layout."
]
},
"capture": {
"ownerRepo": "EveElectron",
"status": "pending-electron-window-capture",
"captureContract": {
"ownerRepo": "EveElectron",
"runtimeId": "electron-shell",
"targetId": "electron-shell",
"requestSchema": "gamecult.eve.runtime_capture_request.v1",
"requestBuilder": "tools/eveelectron/eveelectron-capture-contract.mjs",
"advertisementPath": "web/fixtures/aetheria.provider-advertisement.json",
"captureKind": "electron-window-png",
"artifactKind": "png",
"artifactPattern": "artifacts/eveelectron-capture/{stamp}/electron-shell.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."
},
{
"providerId": "aetheria",
"surfaceId": "aetheria.daemon.editor",
"purpose": "Aetheria interactive-world-editor capture control."
}
],
"authority": "Capture observes Electron projection only; provider state, command acceptance, and receipts stay provider-owned.",
"publishProof": "Electron window capture artifact is attached to the runtime conformance report from EveElectron."
},
"evidencePaths": [
"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",
"scripts/run-eveelectron-capture-contract-smoke.ps1",
"scripts/run-eveelectron-capture-smoke.ps1"
],
"pendingProofs": [
"Electron window capture artifact is attached to the runtime conformance report."
]
}
},
"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"
}
]
}
}