KemalIdentity::Outcome
The result of any authentication attempt.
A union rather than a struct with a nilable principal and a nilable failure: the
union makes the principal reachable only in the branch where it exists, so there is
no not_nil! at any call site, and an exhaustive case ... in means adding a variant
is a compile error at every consumer rather than a silently unhandled case.
docs/01-architecture.md names the credential-side result AuthenticationResult and
lists two variants; src/CLAUDE.md and the login example in
docs/04-kemal-integration.md use three. One three-variant union is used everywhere —
see blueprints/0001-single-outcome-union.md for why.