Graduate conformance authority from Eve
This commit is contained in:
parent
4ab9fa5185
commit
44649e4c9f
19 changed files with 195 additions and 9595 deletions
|
|
@ -32,7 +32,8 @@ if (Test-Path $consumerExport) {
|
|||
New-Item -ItemType Directory -Force -Path $consumerRoot | Out-Null
|
||||
Copy-Item -LiteralPath $sourceExport -Destination $consumerExport -Recurse
|
||||
|
||||
$consumerScript = Join-Path $projectRoot "tools\conformance\consume-export.mjs"
|
||||
$conformanceRoot = if ($env:EVE_CONFORMANCE_ROOT) { $env:EVE_CONFORMANCE_ROOT } else { "E:\Projects\EveConformance" }
|
||||
$consumerScript = Join-Path $conformanceRoot "tools\conformance\consume-export.mjs"
|
||||
|
||||
Push-Location $AetheriaRoot
|
||||
try {
|
||||
|
|
@ -93,8 +94,7 @@ try {
|
|||
--expect-provider-command aetheria:aetheria.daemon.commands `
|
||||
--expect-provider-receipt-state aetheria:accepted `
|
||||
--expect-provider-receipt-state aetheria:pending `
|
||||
--expect-provider-receipt-state aetheria:reconciled `
|
||||
--expect-provider-handoff-move aetheria:provider-scenario:current:exists:run-aetheria-conformance-consumer-smoke.ps1
|
||||
--expect-provider-receipt-state aetheria:reconciled
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Aetheria conformance consumer smoke failed with exit code $LASTEXITCODE"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@ param(
|
|||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$projectRoot = Split-Path -Parent $PSScriptRoot
|
||||
$conformanceRoot = if ($env:EVE_CONFORMANCE_ROOT) { $env:EVE_CONFORMANCE_ROOT } else { "E:\Projects\EveConformance" }
|
||||
$consumerScript = Join-Path $conformanceRoot "tools\conformance\consume-export.mjs"
|
||||
$sourceExport = if ([System.IO.Path]::IsPathRooted($ExportDirectory)) {
|
||||
$ExportDirectory
|
||||
} else {
|
||||
|
|
@ -30,10 +32,9 @@ Copy-Item -LiteralPath $sourceExport -Destination $consumerExport -Recurse
|
|||
|
||||
Push-Location $projectRoot
|
||||
try {
|
||||
node .\tools\conformance\consume-export.mjs $consumerExport `
|
||||
node $consumerScript $consumerExport `
|
||||
--expect-capability-matrix `
|
||||
--expect-schema gamecult.eve.conformance_export.v1 `
|
||||
--expect-schema gamecult.eve.conformance_handoff.v1 `
|
||||
--expect-schema gamecult.eve.capability_matrix.v1 `
|
||||
--expect-schema gamecult.eve.command_receipt.v1 `
|
||||
--expect-schema gamecult.eve.plugin_receipt.v1 `
|
||||
|
|
@ -104,8 +105,7 @@ try {
|
|||
--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
|
||||
--expect-capability-gap "split-target:EveUnity:EveUnity:proof:Tagged UPM release"
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Conformance consumer smoke failed with exit code $LASTEXITCODE"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,170 +0,0 @@
|
|||
param(
|
||||
[string] $HandoffPath = "tools\conformance\eveconformance-handoff.json",
|
||||
[string] $ManifestPath = "tools\parity\parity-manifest.json",
|
||||
[string] $ExportDirectory = "artifacts\conformance\latest"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$projectRoot = Split-Path -Parent $PSScriptRoot
|
||||
$absoluteHandoffPath = if ([System.IO.Path]::IsPathRooted($HandoffPath)) {
|
||||
$HandoffPath
|
||||
} else {
|
||||
Join-Path $projectRoot $HandoffPath
|
||||
}
|
||||
$absoluteManifestPath = if ([System.IO.Path]::IsPathRooted($ManifestPath)) {
|
||||
$ManifestPath
|
||||
} else {
|
||||
Join-Path $projectRoot $ManifestPath
|
||||
}
|
||||
$absoluteExportDirectory = if ([System.IO.Path]::IsPathRooted($ExportDirectory)) {
|
||||
$ExportDirectory
|
||||
} else {
|
||||
Join-Path $projectRoot $ExportDirectory
|
||||
}
|
||||
|
||||
if (-not (Test-Path -LiteralPath $absoluteHandoffPath)) {
|
||||
throw "EveConformance handoff manifest not found: $absoluteHandoffPath"
|
||||
}
|
||||
if (-not (Test-Path -LiteralPath $absoluteManifestPath)) {
|
||||
throw "Parity manifest not found: $absoluteManifestPath"
|
||||
}
|
||||
|
||||
$handoff = Get-Content -LiteralPath $absoluteHandoffPath -Raw | ConvertFrom-Json
|
||||
$manifest = Get-Content -LiteralPath $absoluteManifestPath -Raw | ConvertFrom-Json
|
||||
|
||||
if ($handoff.schema -ne "gamecult.eve.conformance_handoff.v1") {
|
||||
throw "Unexpected EveConformance handoff schema: $($handoff.schema)"
|
||||
}
|
||||
if ($handoff.splitTarget -ne "EveConformance") {
|
||||
throw "Unexpected EveConformance handoff split target: $($handoff.splitTarget)"
|
||||
}
|
||||
if ($handoff.ownerRepo -ne "EveConformance") {
|
||||
throw "Unexpected EveConformance handoff owner: $($handoff.ownerRepo)"
|
||||
}
|
||||
if ($handoff.currentHostRepo -ne "Eve") {
|
||||
throw "Unexpected EveConformance handoff host: $($handoff.currentHostRepo)"
|
||||
}
|
||||
|
||||
$expectedPath = $HandoffPath.Replace("\", "/")
|
||||
if ($manifest.repoStrategy.conformanceHandoffPath -ne $expectedPath) {
|
||||
throw "Parity manifest does not point at EveConformance handoff. Expected $expectedPath got $($manifest.repoStrategy.conformanceHandoffPath)"
|
||||
}
|
||||
|
||||
foreach ($id in @("conformance-runner", "conformance-schemas", "consumer-smokes", "fixture-corpus")) {
|
||||
$moveSet = @($handoff.moveSets) | Where-Object { $_.id -eq $id } | Select-Object -First 1
|
||||
if (-not $moveSet) {
|
||||
throw "EveConformance handoff missing move set: $id"
|
||||
}
|
||||
if ($moveSet.destinationOwner -ne "EveConformance") {
|
||||
throw "EveConformance move set $id has unexpected destination owner: $($moveSet.destinationOwner)"
|
||||
}
|
||||
if (-not $moveSet.replacementProof) {
|
||||
throw "EveConformance move set $id missing replacement proof"
|
||||
}
|
||||
foreach ($relativePath in @($moveSet.currentPaths)) {
|
||||
$absolutePath = Join-Path $projectRoot $relativePath
|
||||
if (-not (Test-Path -LiteralPath $absolutePath)) {
|
||||
throw "EveConformance move set $id references missing current path: $relativePath"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($contract in @(
|
||||
"gamecult.eve.surface.v1",
|
||||
"gamecult.eve.command.v1",
|
||||
"gamecult.eve.command_receipt.v1",
|
||||
"gamecult.eve.conformance_export.v1",
|
||||
"gamecult.eve.conformance_handoff.v1",
|
||||
"gamecult.eve.capability_matrix.v1",
|
||||
"gamecult.eve.conformance_fixture.v1",
|
||||
"gamecult.eve.provider_scenario.v1",
|
||||
"gamecult.eve.plugin.v1",
|
||||
"gamecult.eve.plugin_receipt.v1",
|
||||
"gamecult.eve.plugin_advertisement.v1",
|
||||
"gamecult.eve.plugin_handoff.v1",
|
||||
"gamecult.eve.plugin_abi_fixture.v1",
|
||||
"gamecult.eve.plugin_abi.request.v1",
|
||||
"gamecult.eve.plugin_abi.response.v1",
|
||||
"gamecult.eve.runtime_release_request.v1",
|
||||
"gamecult.eve.runtime_capture_request.v1",
|
||||
"gamecult.eve.provider_advertisement.v1",
|
||||
"gamecult.eve.provider_handoff.v1",
|
||||
"gamecult.eve.electron_shell_projection.v1",
|
||||
"gamecult.eve.unity_scene_projection.v1",
|
||||
"gamecult.eve.unity_playable_world_asset_manifest.v1",
|
||||
"gamecult.eve.tui_grid.v1",
|
||||
"gamecult.eve.web_layout_probe.v1",
|
||||
"gamecult.eve.runtime_capability.v1",
|
||||
"gamecult.eve.runtime_lifecycle.v1",
|
||||
"gamecult.eve.runtime_split_handoff.v1"
|
||||
)) {
|
||||
if (-not (@($handoff.contractInputs) -contains $contract)) {
|
||||
throw "EveConformance handoff missing contract input: $contract"
|
||||
}
|
||||
}
|
||||
|
||||
if (Test-Path -LiteralPath (Join-Path $absoluteExportDirectory "index.json")) {
|
||||
$export = Get-Content -LiteralPath (Join-Path $absoluteExportDirectory "index.json") -Raw | ConvertFrom-Json
|
||||
if ($export.conformanceHandoffPath -ne $expectedPath) {
|
||||
throw "Conformance export does not point at EveConformance handoff. Expected $expectedPath got $($export.conformanceHandoffPath)"
|
||||
}
|
||||
if (-not $export.conformanceHandoffExportPath) {
|
||||
throw "Conformance export missing EveConformance handoff export path"
|
||||
}
|
||||
if (-not (Test-Path -LiteralPath (Join-Path $absoluteExportDirectory $export.conformanceHandoffExportPath))) {
|
||||
throw "Conformance export missing EveConformance handoff document: $($export.conformanceHandoffExportPath)"
|
||||
}
|
||||
foreach ($packId in @("core", "plugin", "provider", "runtime")) {
|
||||
$pack = @($export.packs) | Where-Object { $_.id -eq $packId } | Select-Object -First 1
|
||||
if (-not $pack) {
|
||||
throw "Conformance export missing pack: $packId"
|
||||
}
|
||||
}
|
||||
foreach ($schemaId in @(
|
||||
"gamecult.eve.conformance_export.v1",
|
||||
"gamecult.eve.conformance_handoff.v1",
|
||||
"gamecult.eve.capability_matrix.v1",
|
||||
"gamecult.eve.conformance_fixture.v1",
|
||||
"gamecult.eve.provider_scenario.v1",
|
||||
"gamecult.eve.provider_advertisement.v1",
|
||||
"gamecult.eve.provider_handoff.v1",
|
||||
"gamecult.eve.electron_shell_projection.v1",
|
||||
"gamecult.eve.unity_scene_projection.v1",
|
||||
"gamecult.eve.unity_playable_world_asset_manifest.v1",
|
||||
"gamecult.eve.tui_grid.v1",
|
||||
"gamecult.eve.web_layout_probe.v1",
|
||||
"gamecult.eve.runtime_capability.v1",
|
||||
"gamecult.eve.runtime_lifecycle.v1",
|
||||
"gamecult.eve.runtime_split_handoff.v1",
|
||||
"gamecult.eve.command_receipt.v1",
|
||||
"gamecult.eve.plugin.v1",
|
||||
"gamecult.eve.plugin_receipt.v1",
|
||||
"gamecult.eve.plugin_advertisement.v1",
|
||||
"gamecult.eve.plugin_handoff.v1",
|
||||
"gamecult.eve.plugin_abi_fixture.v1",
|
||||
"gamecult.eve.plugin_abi.request.v1",
|
||||
"gamecult.eve.plugin_abi.response.v1",
|
||||
"gamecult.eve.runtime_release_request.v1",
|
||||
"gamecult.eve.runtime_capture_request.v1"
|
||||
)) {
|
||||
$schema = @($export.schemaCatalog) | Where-Object { $_.schemaId -eq $schemaId } | Select-Object -First 1
|
||||
if (-not $schema) {
|
||||
throw "Conformance export schema catalog missing schema: $schemaId"
|
||||
}
|
||||
if (-not $schema.exportPath) {
|
||||
throw "Conformance export schema catalog missing export path for schema: $schemaId"
|
||||
}
|
||||
if (-not (Test-Path -LiteralPath (Join-Path $absoluteExportDirectory $schema.exportPath))) {
|
||||
throw "Conformance export missing copied schema document for $($schemaId): $($schema.exportPath)"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($proof in @($handoff.requiredExternalProofs)) {
|
||||
if (-not $proof) {
|
||||
throw "EveConformance handoff contains an empty required external proof"
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "EveConformance handoff smoke passed: $absoluteHandoffPath"
|
||||
|
|
@ -25,7 +25,9 @@ if ($runtimeSources -match "aetheria|repixelizer|gamecult\.home") {
|
|||
}
|
||||
|
||||
New-Item -ItemType Directory -Force -Path $fontDirectory | Out-Null
|
||||
node (Join-Path (Split-Path -Parent $PSScriptRoot) "tools\parity\export-fixture.mjs") cultui-inspector $surfacePath
|
||||
$conformanceRoot = if ($env:EVE_CONFORMANCE_ROOT) { $env:EVE_CONFORMANCE_ROOT } else { "E:\Projects\EveConformance" }
|
||||
$env:EVE_KERNEL_ROOT = Split-Path -Parent $PSScriptRoot
|
||||
node (Join-Path $conformanceRoot "tools\parity\export-fixture.mjs") cultui-inspector $surfacePath
|
||||
if ($LASTEXITCODE -ne 0) { throw "Eve fixture export for EveFlutter failed." }
|
||||
Copy-Item -LiteralPath (Join-Path $FlutterRoot "bin\cache\artifacts\material_fonts\roboto-regular.ttf") -Destination (Join-Path $fontDirectory "Roboto-Regular.ttf") -Force
|
||||
Copy-Item -LiteralPath (Join-Path $FlutterRoot "bin\cache\artifacts\material_fonts\roboto-bold.ttf") -Destination (Join-Path $fontDirectory "Roboto-Bold.ttf") -Force
|
||||
|
|
|
|||
|
|
@ -5,6 +5,10 @@ param(
|
|||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$projectRoot = Split-Path -Parent $PSScriptRoot
|
||||
$conformanceRoot = if ($env:EVE_CONFORMANCE_ROOT) { $env:EVE_CONFORMANCE_ROOT } else { "E:\Projects\EveConformance" }
|
||||
if (-not (Test-Path (Join-Path $conformanceRoot "tools\parity\run-parity.mjs"))) {
|
||||
throw "EveConformance checkout not found: $conformanceRoot"
|
||||
}
|
||||
$env:EVE_PARITY_OUTPUT = if ([System.IO.Path]::IsPathRooted($OutputDirectory)) {
|
||||
$OutputDirectory
|
||||
} else {
|
||||
|
|
@ -39,17 +43,18 @@ try {
|
|||
-ExpectedSurfaceId "eve.world-smoke.surface" `
|
||||
-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 `
|
||||
$env:EVE_KERNEL_ROOT = $projectRoot
|
||||
$env:EVE_CONFORMANCE_OUTPUT = Join-Path $projectRoot "artifacts\conformance"
|
||||
node (Join-Path $conformanceRoot "tools\parity\run-parity.mjs")
|
||||
node (Join-Path $conformanceRoot "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 `
|
||||
node (Join-Path $conformanceRoot "tools\conformance\attach-runtime-witness.mjs") `
|
||||
"E:\Projects\EveElectron\artifacts\capture\aetheria-world\runtime-witness.json" `
|
||||
".\artifacts\conformance\latest"
|
||||
node .\tools\conformance\attach-plugin-witness.mjs `
|
||||
node (Join-Path $conformanceRoot "tools\conformance\attach-plugin-witness.mjs") `
|
||||
"E:\Projects\EvePlugins\artifacts\tex-math\runtime-witness.json" `
|
||||
".\artifacts\conformance\latest"
|
||||
& (Join-Path $PSScriptRoot "run-eveconformance-handoff-smoke.ps1")
|
||||
& (Join-Path $PSScriptRoot "run-eveelectron-owner-smoke.ps1")
|
||||
& (Join-Path $PSScriptRoot "run-evetui-split-handoff-smoke.ps1")
|
||||
& (Join-Path $PSScriptRoot "run-evetui-lifecycle-smoke.ps1")
|
||||
|
|
|
|||
|
|
@ -11,7 +11,9 @@ $projectRoot = Split-Path -Parent $PSScriptRoot
|
|||
$stamp = Get-Date -Format "yyyyMMdd-HHmmss"
|
||||
$runRoot = Join-Path $projectRoot (Join-Path $OutputDirectory $stamp)
|
||||
New-Item -ItemType Directory -Force $runRoot | Out-Null
|
||||
$manifest = Get-Content (Join-Path $projectRoot "tools\parity\parity-manifest.json") | ConvertFrom-Json
|
||||
$conformanceRoot = if ($env:EVE_CONFORMANCE_ROOT) { $env:EVE_CONFORMANCE_ROOT } else { "E:\Projects\EveConformance" }
|
||||
$manifest = Get-Content (Join-Path $conformanceRoot "tools\parity\parity-manifest.json") | ConvertFrom-Json
|
||||
$env:EVE_KERNEL_ROOT = $projectRoot
|
||||
$responsiveCases = @($manifest.responsiveCases)
|
||||
$androidDeviceCases = @($manifest.androidDeviceCases)
|
||||
|
||||
|
|
@ -82,7 +84,7 @@ try {
|
|||
throw "Semantic parity harness failed with exit code $LASTEXITCODE"
|
||||
}
|
||||
$flutterSurface = Join-Path $runRoot "flutter-current-surface.json"
|
||||
node .\tools\parity\export-fixture.mjs $ProviderId $flutterSurface | Out-Host
|
||||
node (Join-Path $conformanceRoot "tools\parity\export-fixture.mjs") $ProviderId $flutterSurface | Out-Host
|
||||
if ($LASTEXITCODE -ne 0) { throw "Flutter fixture export failed with exit code $LASTEXITCODE" }
|
||||
|
||||
foreach ($case in $responsiveCases) {
|
||||
|
|
@ -97,7 +99,7 @@ try {
|
|||
|
||||
Invoke-Capture "ios" {
|
||||
$iosFixture = Join-Path $runRoot "ios-current-surface.json"
|
||||
node .\tools\parity\export-fixture.mjs $ProviderId $iosFixture | Out-Host
|
||||
node (Join-Path $conformanceRoot "tools\parity\export-fixture.mjs") $ProviderId $iosFixture | Out-Host
|
||||
powershell -ExecutionPolicy Bypass -File .\scripts\capture-eve-screenshot.ps1 `
|
||||
-Target $IosSshTarget `
|
||||
-OutputDirectory $runRoot `
|
||||
|
|
|
|||
|
|
@ -28,7 +28,8 @@ if (Test-Path $consumerExport) {
|
|||
New-Item -ItemType Directory -Force -Path $consumerRoot | Out-Null
|
||||
Copy-Item -LiteralPath $sourceExport -Destination $consumerExport -Recurse
|
||||
|
||||
$consumerScript = Join-Path $projectRoot "tools\conformance\consume-export.mjs"
|
||||
$conformanceRoot = if ($env:EVE_CONFORMANCE_ROOT) { $env:EVE_CONFORMANCE_ROOT } else { "E:\Projects\EveConformance" }
|
||||
$consumerScript = Join-Path $conformanceRoot "tools\conformance\consume-export.mjs"
|
||||
|
||||
node $consumerScript $consumerExport `
|
||||
--expect-pack plugin `
|
||||
|
|
|
|||
|
|
@ -28,7 +28,8 @@ if (Test-Path $consumerExport) {
|
|||
New-Item -ItemType Directory -Force -Path $consumerRoot | Out-Null
|
||||
Copy-Item -LiteralPath $sourceExport -Destination $consumerExport -Recurse
|
||||
|
||||
$consumerScript = Join-Path $projectRoot "tools\conformance\consume-export.mjs"
|
||||
$conformanceRoot = if ($env:EVE_CONFORMANCE_ROOT) { $env:EVE_CONFORMANCE_ROOT } else { "E:\Projects\EveConformance" }
|
||||
$consumerScript = Join-Path $conformanceRoot "tools\conformance\consume-export.mjs"
|
||||
|
||||
node $consumerScript $consumerExport `
|
||||
--expect-pack runtime `
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@ param(
|
|||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$projectRoot = Split-Path -Parent $PSScriptRoot
|
||||
$conformanceRoot = if ($env:EVE_CONFORMANCE_ROOT) { $env:EVE_CONFORMANCE_ROOT } else { "E:\Projects\EveConformance" }
|
||||
$consumerScript = Join-Path $conformanceRoot "tools\conformance\consume-export.mjs"
|
||||
$sourcePath = if ([System.IO.Path]::IsPathRooted($SourceDirectory)) {
|
||||
$SourceDirectory
|
||||
} else {
|
||||
|
|
@ -30,7 +32,7 @@ Copy-Item -LiteralPath $sourcePath -Destination $exportPath -Recurse
|
|||
|
||||
Push-Location $projectRoot
|
||||
try {
|
||||
node .\tools\conformance\consume-export.mjs $exportPath `
|
||||
node $consumerScript $exportPath `
|
||||
--expect-split-target EveFlutter `
|
||||
--expect-split-target-status EveFlutter:incubating `
|
||||
--expect-split-target-proof "EveFlutter:Provider picker consumes provider advertisements" `
|
||||
|
|
|
|||
Loading…
Reference in a new issue