Rust rewrite gates
Prototype behavior is not precedent. Only behavior that passes threat modeling, protocol tests, and security review should enter the Rust provider.
Required gates
- Email cannot become verified without mailbox proof.
- Managed organization membership cannot be created from an unverified email.
- Password, OTP, signup, recovery, device, and token endpoints enforce rate limits.
- Device approval shows client, domain, scopes, and supports deny.
- Signing key lifecycle is separate from raw application database rows.
- WebAuthn verifies challenge, origin, RP ID, credential ID, user presence, user verification, and sign count.
- TOTP secrets are encrypted and enrolled through server-side pending state.
- Organization domains cannot be reassigned by another organization creating a challenge.
- UserInfo rejects bearer tokens in query strings.
- Production refuses to boot without explicit issuer configuration.
- Metadata advertises only implemented features.
Release bar
The Rust provider is releaseable only when the contract is narrow, tested, and honest. A smaller correct provider is better than a broad IAM clone with hidden edge cases.