# VEX Consensus Stream Contract (draft placeholder) **Status:** Draft v0.2 · owner-proposed ## Scope - `/vex/consensus` streaming APIs via Web gateway with tenant RBAC/ABAC, caching, and telemetry. ## Endpoint - `GET /vex/consensus/stream` — SSE stream of consensus VEX statements per tenant. Headers: `Authorization: DPoP `, `DPoP: `, `X-StellaOps-Tenant`, optional `If-None-Match`. Scopes (proposal): `vex:read` and `vex:consensus`. Events (draft) - `started`: `{ tenantId, streamId, status }` - `consensus_update`: `{ statementId, state, justification, validFrom, validUntil, sources[], etag }` - `heartbeat`: `{ streamId, ts }` - `completed`: `{ streamId, status }` - `failed`: `{ streamId, code, message }` Rate limits: heartbeats every 30s; idle timeout 90s; backoff via `Retry-After` header on reconnect. Samples: `docs/api/vex-consensus-sample.ndjson` Outstanding: finalize scopes, error codes, cache/etag semantics, and add pagination/replay guidance.