Vord status list — v0
Status: DRAFT — v0, unstable. Normative language (RFC 2119), no v0 stability promise; stamped stable under the same rule as the token spec. The list follows the IETF Token Status List direction where it can and departs only where the ADRs require it (the freshness counter and the key-revocation section).
The status list is the signed, edge-cached revocation projection (ADR-0005) with the freshness and replay discipline of ADR-0032 and ADR-0043.
1. Container
A status list is a JOSE JWT in compact serialization, signed by the realm's
distribution key (ADR-0043) — never a token-signing key. Header rules
(alg, kid required, per-kid binding) are those of the
token spec §2.
2. Claims
| Claim | Requirement |
|---|---|
iss |
REQUIRED. The realm's issuer URL; one list (set) per realm (ADR-0023). |
iat |
REQUIRED. Publication time; input to the max-age check. |
ctr |
REQUIRED. The monotonic publication counter, scoped to this list (ADR-0032). |
vfmt |
REQUIRED. The list-format version, 0 in v0. Unknown versions MUST be rejected. |
bits |
REQUIRED. The compressed per-token status bitstring; a token's status claim names its index. |
revoked_kids |
REQUIRED (MAY be empty). The key-revocation set: every kid revoked wholesale (ADR-0036). |
revoked_sids |
REQUIRED (MAY be empty). Session-scoped revocation: every sid whose tokens are dead (ADR-0044). |
3. Verifier obligations (normative)
- Verify the signature against the distribution key material; the list MUST NOT be trusted on transport security alone.
- Reject a list older than the configured max-age (
iat+ max-age vs the trusted clock ± skew); a verifier that cannot refresh within max-age MUST fail closed for affected tokens (ADR-0032). - Enforce monotonicity: reject
ctrolder than the last accepted value for this list; an equalctris the same list and MUST be accepted. The high-water mark (ctr,iat) MUST be persisted locally across restarts; a verifier without its mark treats its cache as cold (ADR-0010 §4, ADR-0032 decision 4). - A token MUST be rejected if its
statusindex bit is set, itskidis inrevoked_kids, or itssidis inrevoked_sids.
4. Token linkage
The token's status claim (token spec §3.2) carries the
list URI and the token's index. In v0 an issuer maintains one active list per
realm; partitioning a realm across multiple lists is a v-next concern the URI
indirection already permits.
5. Conformance
Vectors under conformance/: accept-vectors (fresh
list, equal-counter refetch) and reject-vectors (stale list, regressed counter,
revoked index / kid / sid, wrong signing key). They land with the reference
implementation.