The authorization-code half of the state machine: issue a code on consent, exchange it once for a token the host mints. Codes live five minutes, are stored hashed, and are bound to the subject, the client, the redirect URI and the PKCE challenge the exchange must answer.