protocol: add canonical Phase 3A contract sources
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
# VerseVDI control datagram v1
|
||||
|
||||
Phase 3A reserves a bounded control-datagram envelope. It does not forward video,
|
||||
audio, provider traffic, VM traffic, or arbitrary binary clipboard data.
|
||||
|
||||
All multi-byte integers are unsigned big-endian. The fixed header is 21 bytes:
|
||||
|
||||
| Offset | Size | Field | Rule |
|
||||
|---:|---:|---|---|
|
||||
| 0 | 2 | magic | ASCII `VD` (`0x56 0x44`) |
|
||||
| 2 | 1 | version | `1` only |
|
||||
| 3 | 1 | channel | registered channel identifier |
|
||||
| 4 | 1 | flags | registry-defined; unknown bits reject |
|
||||
| 5 | 4 | sequence | session-local wrapping sequence |
|
||||
| 9 | 8 | timestamp_ms | sender timestamp, bounded by transport skew policy |
|
||||
| 17 | 1 | fragment_index | zero-based; `0` when not fragmented |
|
||||
| 18 | 1 | fragment_count | `1` when not fragmented; index less than count |
|
||||
| 19 | 2 | payload_length | exact payload byte count |
|
||||
|
||||
The complete frame is at most 65,536 bytes and `payload_length` is at most 65,515.
|
||||
Truncated, oversized, unknown-version, unknown-channel, invalid-fragment, and
|
||||
length-mismatch frames are rejected before allocation proportional to the claimed
|
||||
payload. Media/provider identifiers are not registered channels.
|
||||
|
||||
Registered Phase 3A channels are `control.ack.v1`, `control.cancel.v1`, and
|
||||
`clipboard.text.v1`. Clipboard payloads are UTF-8 JSON text contracts and remain
|
||||
subject to the 65,536-byte text limit and explicit authorization.
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"version": "1",
|
||||
"header_bytes": 21,
|
||||
"maximum_frame_bytes": 65536,
|
||||
"channels": [
|
||||
{"id": 1, "name": "control.ack.v1", "direction": "bidirectional", "max_payload_bytes": 1024},
|
||||
{"id": 2, "name": "control.cancel.v1", "direction": "client-to-server", "max_payload_bytes": 2048},
|
||||
{"id": 3, "name": "clipboard.text.v1", "direction": "bidirectional", "max_payload_bytes": 65515}
|
||||
],
|
||||
"reserved_rejected": ["video", "audio", "provider", "vm", "file-transfer", "clipboard.binary"]
|
||||
}
|
||||
Reference in New Issue
Block a user