- Block list: a blocked account that is unlisted and not on the caller's buddy list comes back as "User #<id>" with an empty slug. Rows and shape are unchanged, so unblock still works in both apps. - Vouching: a suspended account can no longer be issued a vouch (403 account_suspended). - Federation: outbound deposit, get and fetch run the outbound address guard, with allowlisted peers exempt as in PeerDirectory. - Email: control characters in an address are refused as bad_email, and the mailer refuses such a recipient and strips them from headers. - Key log: inclusion, consistency, device and subject reads are metered at 3600 per address per hour each, like the head. Not changed: email_taken stays (both apps map it), strict account tokens stay off until the account service stamps iss, aud and jti, and the credential and current-password hardening needs an app update first. swift test: 1015 of 1015 pass, 6 new. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>