Idempotency
Two layers:
- HTTP.
shared-idempotencyIdempotencyFilter, andcommunication.idempotency_keysfor email sends. Clients that retry a create send the same idempotency key. - Events.
event_idon the envelope. Inbox handlers and notification consumers treat a repeated id as already done.
Refreshing a token is not idempotent in the "return the same body" sense: rotation invalidates the presented refresh token. Retrying a refresh with the same token is a replay and is rejected.
Guest bill invite tokens are hashed with SPLICK_BILL_INVITE_PEPPER. A retry of claim must not create a second split owner.