Define CultNet plugin operation transport

This commit is contained in:
Meta Vens 2026-07-10 11:18:45 +01:00
commit 520feecd80
2 changed files with 22 additions and 10 deletions

View file

@ -58,6 +58,9 @@ advertisements and typed command/receipt documents are the boundary.
- CultLib emits a verified NuGet dependency closure for `GameCult.Mesh` and a
clean package-reference consumer, while Unity consumes the corresponding
`org.gamecult.cultlib` UPM assembly closure.
- CultLib publishes transport-neutral `cultnet.operation_request.v0` and
`cultnet.operation_response.v0` envelopes in TypeScript, C#, and Rust. These
carry Eve plugin ABI documents without moving plugin semantics into CultLib.
- EveElectron owns its shell, security lifecycle, captures, and runtime witness.
- EveFlutter owns the generic Flutter clients and platform lifecycle.
- Sai and Norn publish independent sidecar plugins. A Sai surface may request
@ -98,9 +101,10 @@ advertisements and typed command/receipt documents are the boundary.
- Publish the verified CultLib NuGet and Unity package artifacts from tagged
releases and consume released versions in runtime CI.
- Replace development `stdio-ndjson` transport where appropriate with the
published CultNet/CultMesh sidecar transport while preserving the same plugin
ABI operations.
- Replace development `stdio-ndjson` transport with the published CultNet
operation sidecar transport while preserving the same plugin ABI operations.
CultNet TS still needs an owner-grade RUDP service host; CultNet Rust
verification must first integrate its current RUDP reset work.
- Graduate graph semantics fully to Norn and VN/Ink semantics fully to Sai once
no Eve fixture is their semantic owner.
- Keep nested plugin availability explicit and non-transitive: Sai does not own

View file

@ -136,6 +136,14 @@ provider or renderer to bypass the contract because the plugin happens to be in
the same language today. The standard shape is an executable plugin runtime with
a typed request/response ABI.
CultNet carries that ABI through the generic service envelopes
`cultnet.operation_request.v0` and `cultnet.operation_response.v0`. The outer
message owns service routing, operation name, correlation, runtime identity,
status, and transport diagnostics. Its `payloadSchema` names the Eve plugin ABI
request or response, and `payload` carries that document as base64 MessagePack.
CultLib owns this transport envelope; Eve owns the inner plugin ABI; each plugin
owns its handler and semantic state.
Allowed implementation forms:
- process sidecar;
@ -183,7 +191,7 @@ Example ABI request:
```json
{
"schema": "gamecult.eve.plugin_invocation.v1",
"schema": "gamecult.eve.plugin_abi.request.v1",
"pluginId": "sai.vn",
"operation": "apply",
"requestId": "cmd-123",
@ -203,7 +211,7 @@ Example ABI response:
```json
{
"schema": "gamecult.eve.plugin_result.v1",
"schema": "gamecult.eve.plugin_abi.response.v1",
"pluginId": "sai.vn",
"operation": "apply",
"requestId": "cmd-123",
@ -459,11 +467,11 @@ Sai surface deploys with nested Norn or TeX, Sai composes the slots and keeps VN
stage authority; Norn and TeX still publish and validate their own semantic
contracts. Each plugin advertises only the ABI operations it actually owns.
The carrier does not define the plugin. The first executable Norn proof uses
UTF-8 NDJSON over stdio: one request document per line, one response per
request in order, blank lines ignored, diagnostics on stderr. A future
CultMesh daemon transport must carry the same typed request and response
documents; it must not create a second semantic API.
The carrier does not define the plugin. UTF-8 NDJSON over stdio remains a local
debug adapter: one request document per line, one response per request in
order, blank lines ignored, diagnostics on stderr. The production sidecar path
uses CultNet operation envelopes carrying the same typed request and response
documents; it does not create a second semantic API.
Nested availability is a composition fact, not a Sai dependency story. A Sai
surface can be deployed with a nested Norn or TeX surface only when that other