What may be said about a user to anyone allowed to manage it. A separate
type from the stored record, so the password hash cannot end up in a
response by someone serializing the wrong struct.
Shortest password accepted by UserPassAuth::upsert_user, in characters.
These identities belong to services, whose passwords are generated, so
the floor costs nothing and rules out a guessable one slipping in.
[A-Za-z0-9_.-], 1 to MAX_USERNAME_LEN characters, not starting with
.. The name becomes a storage key and a policy path segment, so it must
not carry / (which would reach into another key’s namespace) or look
like a relative path component.