Attach native EveElectron capture witnesses

This commit is contained in:
Meta Vens 2026-07-10 08:02:04 +01:00
commit 2355032c56
12 changed files with 68 additions and 28 deletions

View file

@ -285,11 +285,21 @@ Exit criteria:
## Active Work Queue
1. Produce owner-repo Electron window captures for the generic world fixture
and Aetheria, then attach them to conformance from EveElectron.
1. Audit the migration against the target ownership rule and remove any
remaining runtime, plugin-semantic, or provider-product authority from Eve.
Recently cut:
- EveElectron now produces native offscreen-painted 1280x800 PNG captures for
both `eve.world-smoke.surface` and `aetheria.daemon.game`. The owner runner
emits generic runtime witnesses with dimensions, byte counts, SHA-256 hashes,
provider/surface assertions, and runtime-owned authority. Eve's parity
harness regenerates the captures, attaches both witnesses to conformance,
and downstream consumers require them. The generic runtime-witness contract
no longer requires Unity-specific movement, targeting, action, or receipt
fields; those remain valid profile assertions when a gameplay witness has
them. EveElectron is now reported as graduated rather than "ready to split."
- `GameCult/EveElectron` now owns the generic Electron runtime package. Its
shell lowers provider-advertised surfaces and command intents; its window
host owns secure `BrowserWindow` construction and controls; its preload

View file

@ -476,9 +476,9 @@ artifact.
Electron runtime evidence is consumed from the `EveElectron` owner repo.
Eve core no longer manufactures a JSON shell projection and presents it as
runtime capture evidence. Until EveElectron attaches real window PNGs for a
generic provider and Aetheria, the capture contract reports
`contract-artifact-missing` and remains visibly pending.
runtime capture evidence. EveElectron produces native offscreen-painted PNGs
for the generic world fixture and Aetheria, emits hashed runtime witnesses, and
the parity harness attaches both witnesses to the conformance export.
Unity scene runtime evidence is now consumed from the `EveUnity` owner repo
through the parity runtime's `sourceRoot`. Eve does not generate a substitute

View file

@ -6,7 +6,7 @@
"required": [
"schema", "witnessId", "runtimeId", "runtimeOwnerRepo", "providerId",
"surfaceId", "projectionKind", "status", "generatedAtUtc", "execution",
"assertions", "receipts", "screenshotMetrics", "artifacts", "authority"
"assertions", "screenshotMetrics", "artifacts", "authority"
],
"properties": {
"schema": { "const": "gamecult.eve.runtime_witness.v1" },
@ -30,7 +30,6 @@
},
"assertions": {
"type": "object",
"required": ["providerAdvertisement", "providerAssets", "movement", "targeting", "action", "initialVersion", "finalVersion"],
"properties": {
"providerAdvertisement": { "type": "boolean" },
"providerAssets": { "type": "boolean" },
@ -45,7 +44,6 @@
},
"receipts": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["commandKind", "commandId", "state", "sourceVersion"],

View file

@ -82,13 +82,13 @@ try {
--expect-command-boundary-coverage aetheria:aetheria.daemon.editor:tui:covered:EveTui:tui `
--expect-split-target-proof "EveUnity:Aetheria daemon 3D ARPG world lowers through a generic EveUnity playable-world client" `
--expect-runtime-capture-artifact unity-uitoolkit:json-projection:gamecult.eve.unity_uitoolkit_projection.v1:aetheria:aetheria.daemon.game `
--expect-runtime-capture-probe electron-shell:contract-artifact-missing:png:EveElectron `
--expect-runtime-capture-probe electron-shell:contract-artifact-present:png:EveElectron `
--expect-runtime-witness electron-shell:aetheria:aetheria.daemon.game:cold:pass `
--expect-runtime-capture-artifact tui:json-grid:gamecult.eve.tui_grid.v1:aetheria:aetheria.daemon.game `
--expect-split-handoff-move EveTui:tui:tui-runtime-body:current:exists:eve-tui-shell.mjs `
--expect-split-handoff-move EveTui:tui:tui-world-surface-lowering:current:exists:eve-tui-shell.mjs `
--expect-split-handoff-move EveTui:tui:tui-command-transport:current:exists:eve-tui-shell.mjs `
--expect-split-target-proof "EveElectron:Aetheria consumes EveElectron for generic window and preload authority" `
--expect-split-target-blocker "EveElectron:Electron packaged window PNG capture artifacts are attached to conformance output" `
--expect-split-target-blocker "EveTui:TUI package release is cut from EveTui rather than Eve incubation" `
--expect-split-target-blocker "EveTui:TUI capture path is owned by EveTui rather than Eve incubation" `
--expect-split-handoff-move EveUnity:unity-uitoolkit:aetheria-unity-consumer-boundary:observed-provider:exists:Packages/manifest.json `

View file

@ -102,7 +102,9 @@ try {
--expect-screenshot-metric electron-shell:aetheria-world:bounding-boxes:pending-capture `
--expect-runtime-capture-probe unity-uitoolkit:semantic-artifact-present-capture-pending:png:EveUnity `
--expect-runtime-capture-probe unity-scene:control-artifact-present-product-capture-pending:png:EveUnity `
--expect-runtime-capture-probe electron-shell:contract-artifact-missing:png:EveElectron `
--expect-runtime-capture-probe electron-shell:contract-artifact-present:png:EveElectron `
--expect-runtime-witness electron-shell:eve.world-smoke:eve.world-smoke.surface:cold:pass `
--expect-runtime-witness electron-shell:aetheria:aetheria.daemon.game:cold:pass `
--expect-runtime-capture-probe tui:contract-artifact-present:json-grid:EveTui `
--expect-capability-gap "split-target:EveUnity:EveUnity:proof:Tagged UPM release" `
--expect-conformance-handoff

View file

@ -43,6 +43,8 @@ try {
if ($LASTEXITCODE -ne 0) { throw "EveElectron owner tests failed with exit code $LASTEXITCODE" }
npm pack --dry-run | Out-Null
if ($LASTEXITCODE -ne 0) { throw "EveElectron owner package smoke failed with exit code $LASTEXITCODE" }
powershell -ExecutionPolicy Bypass -File scripts/capture-conformance.ps1 -EveRoot $projectRoot
if ($LASTEXITCODE -ne 0) { throw "EveElectron owner capture smoke failed with exit code $LASTEXITCODE" }
} finally {
Pop-Location
}

View file

@ -47,6 +47,12 @@ try {
-ExpectedCommandBoundary "eve.world-smoke.commands" `
-ExpectedReceiptSchema "eve.world_smoke.command_receipt.v1"
node .\tools\parity\run-parity.mjs
node .\tools\conformance\attach-runtime-witness.mjs `
"E:\Projects\EveElectron\artifacts\capture\generic-world\runtime-witness.json" `
".\artifacts\conformance\latest"
node .\tools\conformance\attach-runtime-witness.mjs `
"E:\Projects\EveElectron\artifacts\capture\aetheria-world\runtime-witness.json" `
".\artifacts\conformance\latest"
& (Join-Path $PSScriptRoot "run-eveconformance-handoff-smoke.ps1")
& (Join-Path $PSScriptRoot "run-plugin-handoff-smoke.ps1")
& (Join-Path $PSScriptRoot "run-aetheria-provider-handoff-smoke.ps1")

View file

@ -165,14 +165,18 @@ node $consumerScript $consumerExport `
--expect-runtime-capture-artifact unity-uitoolkit:json-projection:gamecult.eve.unity_uitoolkit_projection.v1:aetheria:aetheria.daemon.game `
--expect-runtime-capture-artifact unity-uitoolkit:json-projection:gamecult.eve.unity_uitoolkit_projection.v1:eve.world-smoke:eve.world-smoke.surface `
--expect-runtime-capture-status unity-scene:partial-world-smoke-playmode-capture `
--expect-runtime-capture-status electron-shell:pending-owner-window-capture `
--expect-runtime-capture-status electron-shell:owner-window-png `
--expect-runtime-capture-artifact electron-shell:png:image/png:eve.world-smoke:eve.world-smoke.surface `
--expect-runtime-capture-artifact electron-shell:png:image/png:aetheria:aetheria.daemon.game `
--expect-runtime-capture-status tui:json-grid `
--expect-runtime-capture-artifact tui:json-grid:gamecult.eve.tui_grid.v1:aetheria:aetheria.daemon.game `
--expect-runtime-capture-artifact tui:json-grid:gamecult.eve.tui_grid.v1:eve.world-smoke:eve.world-smoke.surface `
--expect-runtime-capture-status direct2d:missing `
--expect-runtime-capture-probe unity-uitoolkit:semantic-artifact-present-capture-pending:png:EveUnity `
--expect-runtime-capture-probe unity-scene:control-artifact-present-product-capture-pending:png:EveUnity `
--expect-runtime-capture-probe electron-shell:contract-artifact-missing:png:EveElectron `
--expect-runtime-capture-probe electron-shell:contract-artifact-present:png:EveElectron `
--expect-runtime-witness electron-shell:eve.world-smoke:eve.world-smoke.surface:cold:pass `
--expect-runtime-witness electron-shell:aetheria:aetheria.daemon.game:cold:pass `
--expect-runtime-capture-probe tui:contract-artifact-present:json-grid:EveTui `
--expect-screenshot-metric web:embedded-surface:structure:pass `
--expect-screenshot-metric web:embedded-surface:color-tokens:pass `
@ -263,8 +267,7 @@ node $consumerScript $consumerExport `
--expect-runtime-lifecycle-field "unity-scene:capture:captureContract.additionalProviderSurfaces.0.surfaceId:eve.world-smoke.surface" `
--expect-runtime-lifecycle-status electron-shell:release:owner-npm-package `
--expect-runtime-lifecycle-status electron-shell:test:owner-package-tests-and-aetheria-live-smoke `
--expect-runtime-lifecycle-status electron-shell:capture:pending-owner-window-capture `
--expect-runtime-lifecycle-pending "electron-shell:capture:Capture one non-product and one Aetheria window" `
--expect-runtime-lifecycle-status electron-shell:capture:owner-window-captures `
--expect-runtime-lifecycle-field "electron-shell:release:releaseContract.artifactKind:npm-package" `
--expect-runtime-lifecycle-field "electron-shell:release:releaseContract.versionSource:package.json" `
--expect-runtime-lifecycle-field "electron-shell:release:releaseContract.requestSchema:gamecult.eve.runtime_release_request.v1" `
@ -275,9 +278,9 @@ node $consumerScript $consumerExport `
--expect-runtime-lifecycle-field "electron-shell:capture:captureContract.captureKind:electron-window-png" `
--expect-runtime-lifecycle-field "electron-shell:capture:captureContract.targetId:electron-shell" `
--expect-runtime-lifecycle-field "electron-shell:capture:captureContract.requestSchema:gamecult.eve.runtime_capture_request.v1" `
--expect-runtime-lifecycle-field "electron-shell:capture:captureContract.requestBuilder:pending" `
--expect-runtime-lifecycle-field "electron-shell:capture:captureContract.requestBuilder:scripts/capture-conformance.ps1" `
--expect-runtime-lifecycle-field "electron-shell:capture:captureContract.advertisementPath:provider-supplied" `
--expect-runtime-lifecycle-field "electron-shell:capture:captureContract.requiredSurface:aetheria.game" `
--expect-runtime-lifecycle-field "electron-shell:capture:captureContract.requiredSurface:aetheria.daemon.game" `
--expect-runtime-lifecycle-field "electron-shell:capture:captureContract.additionalProviderSurfaces.0.providerId:eve.world-smoke" `
--expect-runtime-lifecycle-field "electron-shell:capture:captureContract.additionalProviderSurfaces.0.surfaceId:eve.world-smoke.surface" `
--expect-runtime-lifecycle-status tui:release:pending-tui-package `

View file

@ -51,10 +51,9 @@ try {
--expect-split-handoff-move EveUnity:unity-uitoolkit:aetheria-unity-consumer-boundary:observed-provider:exists:Aetheria.State.Unity/AetheriaRuntimeCatalogClient.cs `
--expect-split-target-blocker "EveUnity:Tagged UPM release" `
--expect-split-target EveElectron `
--expect-split-target-status EveElectron:incubating `
--expect-split-target-status EveElectron:graduated `
--expect-split-target-proof "EveElectron:EveElectron owner repository publishes the generic runtime package" `
--expect-split-target-proof "EveElectron:EveElectron owns secure window and preload lifecycle" `
--expect-split-target-blocker "EveElectron:Electron packaged window PNG capture artifacts are attached to conformance output" `
--expect-split-target EveTui `
--expect-split-target-status EveTui:incubating `
--expect-split-target-proof "EveTui:EveTui split handoff is machine-readable" `

View file

@ -64,7 +64,7 @@ function validateWitness(value) {
if (value.schema !== "gamecult.eve.runtime_witness.v1") throw new Error(`Unexpected runtime witness schema: ${value.schema || ""}`);
if (!value.execution?.cacheState || !Number.isFinite(value.execution?.durationMs)) throw new Error("Runtime witness execution is incomplete.");
if (!value.assertions || typeof value.assertions !== "object") throw new Error("Runtime witness assertions are missing.");
if (!Array.isArray(value.receipts) || !value.receipts.length) throw new Error("Runtime witness receipts are missing.");
if (value.receipts !== undefined && !Array.isArray(value.receipts)) throw new Error("Runtime witness receipts must be an array when present.");
if (!Array.isArray(value.artifacts) || !value.artifacts.length) throw new Error("Runtime witness artifacts are missing.");
for (const artifact of value.artifacts) {
if (!artifact.path || !/^[a-f0-9]{64}$/i.test(artifact.sha256 || "") || !(artifact.sizeBytes > 0)) {

View file

@ -658,7 +658,7 @@
"id": "EveElectron",
"ownerRepo": "EveElectron",
"repoRole": "runtime-target",
"status": "graduated-runtime-capture-pending",
"status": "graduated",
"runtimes": ["electron-shell"],
"requiredRuntimeStatuses": ["active"],
"requiredFeatures": ["providerAdvertisements", "surfaceTreeProjection", "embeddedDocuments"],
@ -694,9 +694,7 @@
]
}
],
"pendingProofs": [
"Electron packaged window PNG capture artifacts are attached to conformance output."
]
"pendingProofs": []
},
{
"id": "EveTui",
@ -824,9 +822,30 @@
}
],
"capture": {
"status": "pending-owner-window-capture",
"note": "EveElectron owns capture production; Eve core no longer manufactures runtime projection artifacts on its behalf.",
"artifacts": []
"status": "owner-window-png",
"note": "EveElectron owns native window PNG production for the generic and Aetheria provider surfaces.",
"artifacts": [
{
"kind": "png",
"schema": "image/png",
"path": "artifacts/capture/generic-world/window.png",
"runtimeId": "electron-shell",
"providerId": "eve.world-smoke",
"surfaceId": "eve.world-smoke.surface",
"sourceSurfacePath": "../Eve/web/fixtures/eve-world-smoke-surface.json",
"requestPath": "artifacts/capture/generic-world/runtime-witness.json"
},
{
"kind": "png",
"schema": "image/png",
"path": "artifacts/capture/aetheria-world/window.png",
"runtimeId": "electron-shell",
"providerId": "aetheria",
"surfaceId": "aetheria.daemon.game",
"sourceSurfacePath": "../Eve/web/fixtures/aetheria-world-surface.json",
"requestPath": "artifacts/capture/aetheria-world/runtime-witness.json"
}
]
}
},
{

View file

@ -1856,7 +1856,7 @@ function evaluateSplitTargets(splitTargets, runtimeResults) {
id: target.id,
ownerRepo: target.ownerRepo || "",
repoRole: target.repoRole || "",
status: blockers.length ? "incubating" : "ready-to-split",
status: blockers.length ? "incubating" : target.status === "graduated" ? "graduated" : "ready-to-split",
declaredStatus: target.status || "",
runtimes: runtimeIds,
runtimeStatuses,
@ -2014,6 +2014,7 @@ function summarize(fixtures, runtimes, plugins, providers, splitTargets) {
pendingRuntimes: runtimes.filter(runtime => runtime.status !== "active").length,
totalSplitTargets: splitTargets.length,
readySplitTargets: splitTargets.filter(target => target.status === "ready-to-split").length,
graduatedSplitTargets: splitTargets.filter(target => target.status === "graduated").length,
};
}