diff --git a/docs/eve-migration-roadmap.md b/docs/eve-migration-roadmap.md index a714b0a..b92c387 100644 --- a/docs/eve-migration-roadmap.md +++ b/docs/eve-migration-roadmap.md @@ -830,6 +830,10 @@ Recently cut: `gamecult.eve.plugin_abi.request.v1` and `gamecult.eve.plugin_abi.response.v1` from the exported pack instead of reading Eve's parity manifest to discover contract paths. +- EveConformance handoff now treats the exported schema catalog as part of the + split boundary. The handoff schema move set includes plugin, provider, + runtime, conformance, and ABI wire schemas, and the handoff smoke verifies the + latest conformance export copied those schema documents. - Split-readiness reporting now exists for `EveFlutter` and `EveUnity`. The parity report lists member runtime health, required plugin capability claims, pending proofs, and blockers before either repo can graduate out of Eve diff --git a/scripts/run-eveconformance-handoff-smoke.ps1 b/scripts/run-eveconformance-handoff-smoke.ps1 index 9267425..1e8773d 100644 --- a/scripts/run-eveconformance-handoff-smoke.ps1 +++ b/scripts/run-eveconformance-handoff-smoke.ps1 @@ -77,6 +77,10 @@ foreach ($contract in @( "gamecult.eve.conformance_fixture.v1", "gamecult.eve.provider_scenario.v1", "gamecult.eve.plugin.v1", + "gamecult.eve.plugin_advertisement.v1", + "gamecult.eve.plugin_abi_fixture.v1", + "gamecult.eve.plugin_abi.request.v1", + "gamecult.eve.plugin_abi.response.v1", "gamecult.eve.provider_advertisement.v1", "gamecult.eve.runtime_capability.v1" )) { @@ -102,6 +106,29 @@ if (Test-Path -LiteralPath (Join-Path $absoluteExportDirectory "index.json")) { throw "Conformance export missing pack: $packId" } } + foreach ($schemaId in @( + "gamecult.eve.conformance_export.v1", + "gamecult.eve.conformance_fixture.v1", + "gamecult.eve.provider_scenario.v1", + "gamecult.eve.provider_advertisement.v1", + "gamecult.eve.runtime_capability.v1", + "gamecult.eve.plugin.v1", + "gamecult.eve.plugin_advertisement.v1", + "gamecult.eve.plugin_abi_fixture.v1", + "gamecult.eve.plugin_abi.request.v1", + "gamecult.eve.plugin_abi.response.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)) { diff --git a/tools/conformance/eveconformance-handoff.json b/tools/conformance/eveconformance-handoff.json index 54ad02b..5491d12 100644 --- a/tools/conformance/eveconformance-handoff.json +++ b/tools/conformance/eveconformance-handoff.json @@ -21,9 +21,16 @@ "currentPaths": [ "schemas/gamecult.eve.conformance_export.v1.schema.json", "schemas/gamecult.eve.conformance_fixture.v1.schema.json", - "schemas/gamecult.eve.provider_scenario.v1.schema.json" + "schemas/gamecult.eve.provider_scenario.v1.schema.json", + "schemas/gamecult.eve.provider_advertisement.v1.schema.json", + "schemas/gamecult.eve.runtime_capability.v1.schema.json", + "schemas/gamecult.eve.plugin.v1.schema.json", + "schemas/gamecult.eve.plugin_advertisement.v1.schema.json", + "schemas/gamecult.eve.plugin_abi_fixture.v1.schema.json", + "schemas/gamecult.eve.plugin_abi.request.v1.schema.json", + "schemas/gamecult.eve.plugin_abi.response.v1.schema.json" ], - "replacementProof": "EveConformance publishes conformance export, fixture metadata, and provider scenario schemas as consumed contracts." + "replacementProof": "EveConformance publishes the schema catalog and copied schema documents needed by conformance, plugin, provider, and runtime consumers." }, { "id": "consumer-smokes", @@ -58,6 +65,10 @@ "gamecult.eve.conformance_fixture.v1", "gamecult.eve.provider_scenario.v1", "gamecult.eve.plugin.v1", + "gamecult.eve.plugin_advertisement.v1", + "gamecult.eve.plugin_abi_fixture.v1", + "gamecult.eve.plugin_abi.request.v1", + "gamecult.eve.plugin_abi.response.v1", "gamecult.eve.provider_advertisement.v1", "gamecult.eve.runtime_capability.v1" ],