Rules that cut across the types.
- Three orders:
sessionSequence,workflowSequence, and run-treesequence. Each is strictly increasing and contiguous in its scope. Timestamps do not reorder authority. - Delivery is at least once. Reducers deduplicate on
(sessionId, eventId)and apply once. - Subscribe before replay, so live events and history meet without a hole.
- A dropped socket, silence, or a missed heartbeat is not a terminal.
- Receiving an authority event does not run a client tool. Execution is
client.tool.executeonly. - A run cannot finish while it owns open child work, a tool call, or an interrupt.
- Servers advertise active profiles before sending profile events. Clients ignore profiles they did not negotiate, and fail closed on an unknown type from a profile they claimed.
- Unknown protocol versions are rejected.
- The backend is the only issuer of authority events. Clients do not invent terminals.
Schemas define structure. Golden traces define lifecycle and replay. If prose, schema, and trace disagree in the released 0.1.0 specification, that disagreement is a specification defect.