Declare plugin sidecar ABI boundaries

This commit is contained in:
Meta Vens 2026-07-09 02:10:04 +01:00
commit 169dbfafd4
16 changed files with 310 additions and 4 deletions

View file

@ -65,6 +65,31 @@ foreach ($handoffPath in $HandoffPaths) {
if ($manifest.incubation.splitTarget -ne $handoff.splitTarget) {
throw "Plugin handoff $($handoff.pluginId) split target does not match manifest: $($manifest.incubation.splitTarget)"
}
if ($manifest.runtime.invocationModel -ne "executable-sidecar") {
throw "Plugin handoff $($handoff.pluginId) runtime is not executable-sidecar: $($manifest.runtime.invocationModel)"
}
if ($manifest.runtime.contract -ne "gamecult.eve.plugin_abi.v1") {
throw "Plugin handoff $($handoff.pluginId) runtime contract is not gamecult.eve.plugin_abi.v1: $($manifest.runtime.contract)"
}
if ($advertisement.runtime.invocationModel -ne $manifest.runtime.invocationModel) {
throw "Plugin handoff $($handoff.pluginId) advertisement runtime does not match manifest runtime: $($advertisement.runtime.invocationModel)"
}
foreach ($transport in @("cultmesh", "stdio")) {
if (-not (@($manifest.runtime.transports) -contains $transport)) {
throw "Plugin handoff $($handoff.pluginId) manifest runtime missing transport: $transport"
}
if (-not (@($advertisement.runtime.transports) -contains $transport)) {
throw "Plugin handoff $($handoff.pluginId) advertisement runtime missing transport: $transport"
}
}
foreach ($authority in @("renderer-independent", "no-provider-state-mutation", "provider-accepts-or-denies-commands")) {
if (-not (@($manifest.runtime.authority) -contains $authority)) {
throw "Plugin handoff $($handoff.pluginId) manifest runtime missing authority: $authority"
}
if (-not (@($advertisement.runtime.authority) -contains $authority)) {
throw "Plugin handoff $($handoff.pluginId) advertisement runtime missing authority: $authority"
}
}
$operations = @($abiFixture.operations | ForEach-Object { $_.operation })
foreach ($operation in @("describe", "validate", "project", "lower", "measure", "apply")) {

View file

@ -54,7 +54,13 @@ node $consumerScript $consumerExport `
--expect-plugin-capability sai.vn:story.continue `
--expect-plugin-capability sai.vn:story.jump `
--expect-plugin-capability norn.graph:embed.norn `
--expect-plugin-capability norn.graph:graph.node.activate
--expect-plugin-capability norn.graph:graph.node.activate `
--expect-plugin-runtime sai.vn:executable-sidecar `
--expect-plugin-runtime-transport sai.vn:cultmesh `
--expect-plugin-runtime-authority sai.vn:no-provider-state-mutation `
--expect-plugin-runtime norn.graph:executable-sidecar `
--expect-plugin-runtime-transport norn.graph:cultmesh `
--expect-plugin-runtime-authority norn.graph:no-provider-state-mutation
if ($LASTEXITCODE -ne 0) {
throw "Plugin owner conformance consumer smoke failed with exit code $LASTEXITCODE"