Middleware Channel Frame v2¶
Source schema: doc/schemas/middleware-channel-frame.v2.schema.json
Strict outer application frame for one accepted middleware channel session.
Governing Basis¶
doc/project/40-proposals/080-multiplexed-middleware-channel-executor.mddoc/project/40-proposals/086-component-communication-observation-and-trace-sessions.mddoc/project/40-proposals/090-inference-execution-provenance-and-non-local-disclosure.md
Project Lineage¶
Fields¶
| Field | Required | Shape | Description |
|---|---|---|---|
schema |
yes |
const: middleware-channel-frame.v2 |
|
schema/v |
yes |
const: 2 |
|
session/id |
yes |
ref: middleware-channel-frame.v1.schema.json#/properties/session~1id |
|
session/epoch |
yes |
ref: middleware-channel-frame.v1.schema.json#/properties/session~1epoch |
|
frame/seq |
yes |
ref: middleware-channel-frame.v1.schema.json#/properties/frame~1seq |
|
message/kind |
yes |
ref: middleware-channel-frame.v1.schema.json#/properties/message~1kind |
|
operation |
yes |
ref: middleware-channel-frame.v1.schema.json#/properties/operation |
|
request/id |
no |
ref: middleware-channel-frame.v1.schema.json#/properties/request~1id |
|
reply/to |
no |
ref: middleware-channel-frame.v1.schema.json#/properties/reply~1to |
|
deadline/at |
no |
ref: middleware-channel-frame.v1.schema.json#/properties/deadline~1at |
|
trace/correlation-id |
no |
ref: middleware-channel-frame.v1.schema.json#/properties/trace~1correlation-id |
|
payload/schema |
yes |
ref: middleware-channel-frame.v1.schema.json#/properties/payload~1schema |
|
payload |
yes |
ref: middleware-channel-frame.v1.schema.json#/properties/payload |
Definitions¶
| Definition | Shape | Description |
|---|---|---|
id |
ref: middleware-channel-frame.v1.schema.json#/$defs/id |
|
schemaName |
ref: middleware-channel-frame.v1.schema.json#/$defs/schemaName |
Conditional Rules¶
Rule 1¶
When:
{
"properties": {
"message/kind": {
"const": "request"
}
},
"required": [
"message/kind"
]
}
Then:
{
"required": [
"request/id",
"deadline/at"
],
"not": {
"required": [
"reply/to"
]
},
"properties": {
"operation": {
"enum": [
"middleware.init",
"middleware.invoke",
"module-http.invoke",
"host-capability.invoke"
]
}
}
}
Rule 2¶
When:
{
"properties": {
"message/kind": {
"const": "response"
}
},
"required": [
"message/kind"
]
}
Then:
{
"required": [
"reply/to"
],
"not": {
"anyOf": [
{
"required": [
"request/id"
]
},
{
"required": [
"deadline/at"
]
}
]
},
"properties": {
"operation": {
"enum": [
"middleware.init",
"middleware.invoke",
"module-http.invoke",
"host-capability.invoke"
]
}
}
}
Rule 3¶
When:
{
"properties": {
"message/kind": {
"const": "event"
}
},
"required": [
"message/kind"
]
}
Then:
{
"not": {
"anyOf": [
{
"required": [
"request/id"
]
},
{
"required": [
"reply/to"
]
},
{
"required": [
"deadline/at"
]
}
]
},
"properties": {
"operation": {
"enum": [
"middleware.observe",
"middleware.trace.report"
]
}
}
}
Rule 4¶
When:
{
"properties": {
"message/kind": {
"const": "event"
},
"operation": {
"const": "middleware.trace.report"
}
},
"required": [
"message/kind",
"operation"
]
}
Then:
{
"properties": {
"payload/schema": {
"const": "component-communication-report.v1"
}
}
}
Rule 5¶
When:
{
"properties": {
"message/kind": {
"const": "control"
}
},
"required": [
"message/kind"
]
}
Then:
{
"not": {
"anyOf": [
{
"required": [
"request/id"
]
},
{
"required": [
"reply/to"
]
},
{
"required": [
"deadline/at"
]
}
]
},
"properties": {
"operation": {
"enum": [
"request.cancel",
"heartbeat",
"session.shutdown"
]
}
}
}
Rule 6¶
When:
{
"properties": {
"message/kind": {
"const": "request"
},
"operation": {
"const": "host-capability.invoke"
}
},
"required": [
"message/kind",
"operation"
]
}
Then:
{
"properties": {
"payload/schema": {
"const": "middleware-channel-host-capability-call.v2"
}
}
}
Rule 7¶
When:
{
"properties": {
"message/kind": {
"const": "response"
},
"operation": {
"const": "host-capability.invoke"
}
},
"required": [
"message/kind",
"operation"
]
}
Then:
{
"properties": {
"payload/schema": {
"const": "middleware-channel-call-result.v1"
}
}
}
Rule 8¶
When:
{
"properties": {
"message/kind": {
"const": "request"
},
"operation": {
"const": "module-http.invoke"
}
},
"required": [
"message/kind",
"operation"
]
}
Then:
{
"properties": {
"payload/schema": {
"const": "middleware-module-http-request.v1"
}
}
}
Rule 9¶
When:
{
"properties": {
"message/kind": {
"const": "response"
},
"operation": {
"const": "module-http.invoke"
}
},
"required": [
"message/kind",
"operation"
]
}
Then:
{
"properties": {
"payload/schema": {
"const": "middleware-module-http-response.v1"
}
}
}
Rule 10¶
When:
{
"properties": {
"message/kind": {
"const": "control"
},
"operation": {
"const": "request.cancel"
}
},
"required": [
"message/kind",
"operation"
]
}
Then:
{
"properties": {
"payload/schema": {
"const": "middleware-channel-request-cancel.v1"
}
}
}
Rule 11¶
When:
{
"properties": {
"message/kind": {
"const": "control"
},
"operation": {
"const": "heartbeat"
}
},
"required": [
"message/kind",
"operation"
]
}
Then:
{
"properties": {
"payload/schema": {
"const": "middleware-channel-heartbeat.v1"
}
}
}
Rule 12¶
When:
{
"properties": {
"message/kind": {
"const": "control"
},
"operation": {
"const": "session.shutdown"
}
},
"required": [
"message/kind",
"operation"
]
}
Then:
{
"properties": {
"payload/schema": {
"const": "middleware-channel-session-shutdown.v1"
}
}
}
Field Semantics¶
schema¶
- Required:
yes - Shape: const:
middleware-channel-frame.v2
schema/v¶
- Required:
yes - Shape: const:
2
session/id¶
- Required:
yes - Shape: ref:
middleware-channel-frame.v1.schema.json#/properties/session~1id
session/epoch¶
- Required:
yes - Shape: ref:
middleware-channel-frame.v1.schema.json#/properties/session~1epoch
frame/seq¶
- Required:
yes - Shape: ref:
middleware-channel-frame.v1.schema.json#/properties/frame~1seq
message/kind¶
- Required:
yes - Shape: ref:
middleware-channel-frame.v1.schema.json#/properties/message~1kind
operation¶
- Required:
yes - Shape: ref:
middleware-channel-frame.v1.schema.json#/properties/operation
request/id¶
- Required:
no - Shape: ref:
middleware-channel-frame.v1.schema.json#/properties/request~1id
reply/to¶
- Required:
no - Shape: ref:
middleware-channel-frame.v1.schema.json#/properties/reply~1to
deadline/at¶
- Required:
no - Shape: ref:
middleware-channel-frame.v1.schema.json#/properties/deadline~1at
trace/correlation-id¶
- Required:
no - Shape: ref:
middleware-channel-frame.v1.schema.json#/properties/trace~1correlation-id
payload/schema¶
- Required:
yes - Shape: ref:
middleware-channel-frame.v1.schema.json#/properties/payload~1schema
payload¶
- Required:
yes - Shape: ref:
middleware-channel-frame.v1.schema.json#/properties/payload
Definition Semantics¶
$defs.id¶
- Shape: ref:
middleware-channel-frame.v1.schema.json#/$defs/id
$defs.schemaName¶
- Shape: ref:
middleware-channel-frame.v1.schema.json#/$defs/schemaName