Norn/plugins/norn-graph.plugin.json
2026-07-10 11:44:19 +01:00

56 lines
2.2 KiB
JSON

{
"schema": "gamecult.eve.plugin.v1",
"pluginId": "norn.graph",
"title": "Norn Graph",
"owner": "Norn",
"splitTarget": "Norn",
"graduationTrigger": "Graduated: Norn owns graph semantics, fixtures, ABI sidecar, and release lifecycle.",
"componentKinds": ["embed.norn"],
"commands": [
{ "command": "graph.node.activate", "schema": "norn.graph.command.v1", "effect": "activate-node" },
{ "command": "graph.focus", "schema": "norn.graph.command.v1", "effect": "focus-graph" }
],
"runtime": {
"invocationModel": "executable-sidecar",
"contract": "gamecult.eve.plugin_abi.v1",
"transports": ["cultnet-rudp", "stdio"],
"authority": ["renderer-independent", "no-provider-state-mutation", "provider-accepts-or-denies-commands"],
"sidecar": {
"processKind": "long-running-daemon",
"protocol": "cultnet-operation-v0",
"debugProtocol": "stdio-ndjson",
"requestSchema": "gamecult.eve.plugin_abi.request.v1",
"responseSchema": "gamecult.eve.plugin_abi.response.v1",
"operations": ["describe", "validate", "project", "measure"],
"commandEnvelope": "gamecult.eve.command_invocation.v1",
"receiptSchema": "gamecult.eve.command_receipt.v1",
"stateAuthority": "proposes-plugin-state-only-provider-accepts",
"launch": {
"artifact": "cargo:norn-eve-plugin",
"command": "norn-eve-plugin"
},
"stdio": {
"encoding": "utf-8",
"framing": "ndjson",
"ordering": "sequential",
"blankLines": "ignored",
"diagnostics": "stderr"
}
}
},
"stateSchemas": ["norn.graph.document.v1", "norn.graph.layout_request.v1", "norn.graph.layout_result.v1"],
"fixtures": [
{
"fixtureId": "sai-nested-norn",
"schema": "gamecult.eve.plugin_abi_fixture.v1",
"path": "plugins/norn-graph.plugin-abi-fixture.json",
"role": "optional-nested-placement-evidence",
"authority": "Norn owns graph semantics; Sai supplies only an embed.norn composition slot."
}
],
"abiFixtures": ["plugins/norn-graph.plugin-abi-fixture.json"],
"capabilities": {
"requires": ["embed.norn"],
"optionalCapabilities": ["graph.node.activate", "graph.pan", "graph.zoom"]
}
}