Contrato único Zeus: state | intent | track | ledger. El campo game en el envelope discrimina el juego; el engine no nombra juegos. Roles de intent: player, dj, operator. Credencial de rol: Peer Card (scopes role:*). Gates: G-PROTO.1, G-PROTO.2, G-PROTO.3, G-PROTO.4, G-PROTO.5. Snapshot budget default: 32768 bytes.
Socket.IO room channel (ROOM_MESSAGE). Wire event name = kind (state|intent|track|ledger).
Room id resolved via @zeus/rooms / ZEUS_SCRIPTORIUM_URL
Accepts the following message:
{
"v": 1,
"game": "string",
"from": "string",
"ts": 0,
"kind": "state",
"tick": 0,
"reason": "change"
}
Socket.IO room channel (ROOM_MESSAGE). Wire event name = kind (state|intent|track|ledger).
Room id resolved via @zeus/rooms / ZEUS_SCRIPTORIUM_URL
Accepts the following message:
Actor requests a domain mutation; authority validates role + shape then reduces
{
"v": 1,
"game": "string",
"from": "string",
"ts": 0,
"kind": "intent",
"actorId": "string",
"intent": "string",
"role": "player",
"peerCard": {
"roomId": "string",
"endpoint": "string",
"token": "string",
"scopes": [
"string"
],
"expiresAt": "2019-08-24T14:15:22Z"
}
}
Socket.IO room channel (ROOM_MESSAGE). Wire event name = kind (state|intent|track|ledger).
Room id resolved via @zeus/rooms / ZEUS_SCRIPTORIUM_URL
Accepts the following message:
{
"v": 1,
"game": "string",
"from": "string",
"ts": 0,
"kind": "track",
"actorId": "string",
"ref": {},
"hint": "string"
}
Socket.IO room channel (ROOM_MESSAGE). Wire event name = kind (state|intent|track|ledger).
Room id resolved via @zeus/rooms / ZEUS_SCRIPTORIUM_URL
Accepts the following message:
{
"v": 1,
"game": "string",
"from": "string",
"ts": 0,
"kind": "ledger",
"seq": 0,
"entryKind": "string",
"actorId": "string",
"detail": {}
}
Actor requests a domain mutation; authority validates role + shape then reduces