Add EveUnity lifecycle split proof
This commit is contained in:
parent
8767acedb2
commit
96f1eb6927
4 changed files with 131 additions and 0 deletions
|
|
@ -280,6 +280,14 @@ Exit criteria:
|
|||
|
||||
Recently cut:
|
||||
|
||||
- EveUnity now has a split lifecycle smoke at
|
||||
`scripts/run-eveunity-lifecycle-smoke.ps1`. It validates the existing
|
||||
`packages/org.gamecult.eve.unity-uitoolkit/eve-runtime-capability.json`
|
||||
lifecycle claims directly instead of duplicating them, checks evidence paths,
|
||||
and runs the Aetheria Unity package consumer-build smoke. `-RunUnityEditMode`
|
||||
is available for the heavier Unity batchmode path. EveUnity remains
|
||||
incubating until tagged UPM release, batchmode runner ownership, and capture
|
||||
artifacts live under the `EveUnity` repo.
|
||||
- EveFlutter now has explicit lifecycle incubation evidence at
|
||||
`flutter/eve_parity/eveflutter-lifecycle.json` and a smoke runner at
|
||||
`scripts/run-eveflutter-lifecycle-smoke.ps1`. The smoke validates the
|
||||
|
|
|
|||
|
|
@ -45,6 +45,18 @@ evidence:
|
|||
Those lifecycle claims are validated by the parity harness. A missing evidence
|
||||
path is a runtime capability error, not a README footnote.
|
||||
|
||||
From the repository root, run the split lifecycle smoke with:
|
||||
|
||||
```powershell
|
||||
powershell -ExecutionPolicy Bypass -File .\scripts\run-eveunity-lifecycle-smoke.ps1
|
||||
```
|
||||
|
||||
That smoke validates `eve-runtime-capability.json`, checks lifecycle evidence
|
||||
paths, and runs the Aetheria Unity package consumer-build smoke. Pass
|
||||
`-RunUnityEditMode` when the local Unity editor should also execute the
|
||||
incubating batchmode EditMode test runner. The final tagged UPM release,
|
||||
batchmode runner ownership, and capture artifact still graduate to `EveUnity`.
|
||||
|
||||
For Aetheria, the Unity evidence path is:
|
||||
|
||||
- `powershell -ExecutionPolicy Bypass -File ..\..\scripts\run-aetheria-unity-package-smoke.ps1`
|
||||
|
|
|
|||
99
scripts/run-eveunity-lifecycle-smoke.ps1
Normal file
99
scripts/run-eveunity-lifecycle-smoke.ps1
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
param(
|
||||
[string] $CapabilityManifestPath = "packages\org.gamecult.eve.unity-uitoolkit\eve-runtime-capability.json",
|
||||
[switch] $RunUnityEditMode
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$projectRoot = Split-Path -Parent $PSScriptRoot
|
||||
$absoluteManifestPath = if ([System.IO.Path]::IsPathRooted($CapabilityManifestPath)) {
|
||||
$CapabilityManifestPath
|
||||
} else {
|
||||
Join-Path $projectRoot $CapabilityManifestPath
|
||||
}
|
||||
|
||||
if (-not (Test-Path -LiteralPath $absoluteManifestPath)) {
|
||||
throw "EveUnity runtime capability manifest not found: $absoluteManifestPath"
|
||||
}
|
||||
|
||||
$manifest = Get-Content -LiteralPath $absoluteManifestPath -Raw | ConvertFrom-Json
|
||||
|
||||
if ($manifest.schema -ne "gamecult.eve.runtime_capability.v1") {
|
||||
throw "Unexpected EveUnity manifest schema: $($manifest.schema)"
|
||||
}
|
||||
if ($manifest.runtimeId -ne "unity-uitoolkit") {
|
||||
throw "Unexpected EveUnity runtime id: $($manifest.runtimeId)"
|
||||
}
|
||||
if ($manifest.owner -ne "EveUnity") {
|
||||
throw "Unexpected EveUnity owner: $($manifest.owner)"
|
||||
}
|
||||
if ($manifest.incubation.ownerRepo -ne "EveUnity") {
|
||||
throw "Unexpected EveUnity incubation owner: $($manifest.incubation.ownerRepo)"
|
||||
}
|
||||
if ($manifest.incubation.currentHostRepo -ne "Eve") {
|
||||
throw "Unexpected EveUnity current host repo: $($manifest.incubation.currentHostRepo)"
|
||||
}
|
||||
if ($manifest.incubation.splitTarget -ne "EveUnity") {
|
||||
throw "Unexpected EveUnity split target: $($manifest.incubation.splitTarget)"
|
||||
}
|
||||
|
||||
foreach ($feature in @("embeddedDocuments")) {
|
||||
if (-not ($manifest.supportedFeatures -contains $feature)) {
|
||||
throw "EveUnity manifest missing supported feature: $feature"
|
||||
}
|
||||
}
|
||||
|
||||
$pluginClaims = @{}
|
||||
foreach ($plugin in $manifest.supportedPlugins) {
|
||||
$pluginClaims[$plugin.pluginId] = @($plugin.capabilities)
|
||||
}
|
||||
foreach ($claim in @(
|
||||
@{ pluginId = "sai.vn"; capabilities = @("vn.stage", "story.choose", "story.continue", "story.jump") },
|
||||
@{ pluginId = "norn.graph"; capabilities = @("embed.norn") }
|
||||
)) {
|
||||
if (-not $pluginClaims.ContainsKey($claim.pluginId)) {
|
||||
throw "EveUnity manifest missing plugin claim: $($claim.pluginId)"
|
||||
}
|
||||
foreach ($capability in $claim.capabilities) {
|
||||
if (-not ($pluginClaims[$claim.pluginId] -contains $capability)) {
|
||||
throw "EveUnity manifest missing plugin capability: $($claim.pluginId):$capability"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($manifest.commandTransport.schema -ne "gamecult.eve.command.v1") {
|
||||
throw "Unexpected EveUnity command schema: $($manifest.commandTransport.schema)"
|
||||
}
|
||||
|
||||
foreach ($stage in @("release", "test", "capture")) {
|
||||
$stageDocument = $manifest.lifecycle.$stage
|
||||
if ($null -eq $stageDocument) {
|
||||
throw "EveUnity lifecycle missing stage: $stage"
|
||||
}
|
||||
if ($stageDocument.ownerRepo -ne "EveUnity") {
|
||||
throw "EveUnity lifecycle stage $stage has unexpected owner: $($stageDocument.ownerRepo)"
|
||||
}
|
||||
if (-not $stageDocument.status) {
|
||||
throw "EveUnity lifecycle stage $stage missing status"
|
||||
}
|
||||
foreach ($evidencePath in $stageDocument.evidencePaths) {
|
||||
$absoluteEvidencePath = Join-Path $projectRoot $evidencePath
|
||||
if (-not (Test-Path -LiteralPath $absoluteEvidencePath)) {
|
||||
throw "EveUnity lifecycle stage $stage missing evidence path: $evidencePath"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
& (Join-Path $projectRoot "scripts\run-aetheria-unity-package-smoke.ps1")
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Aetheria Unity package smoke failed with exit code $LASTEXITCODE"
|
||||
}
|
||||
|
||||
if ($RunUnityEditMode) {
|
||||
& (Join-Path $projectRoot "scripts\run-aetheria-unity-editmode-tests.ps1")
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Aetheria Unity EditMode smoke failed with exit code $LASTEXITCODE"
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "EveUnity lifecycle smoke passed: $absoluteManifestPath"
|
||||
|
|
@ -493,6 +493,18 @@
|
|||
"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"
|
||||
]
|
||||
}
|
||||
],
|
||||
"pendingProofs": [
|
||||
"Tagged UPM release is cut from EveUnity rather than Eve incubation.",
|
||||
"Unity batchmode EditMode runner is owned by EveUnity rather than Eve incubation.",
|
||||
|
|
|
|||
Loading…
Reference in a new issue