Open your authenticator app and enter the 6-digit code for amara@rowan.co.
recoveryAvailable: true (recovery offered → frame 07)Choose how to get your code.
That didn't work. Enter the current 6-digit code.
recoveryAvailable false or absent (fail-closed: no recovery choice)Choose how to get your code.
No “Recovery code” row at all — not a disabled one. recoveryAvailable is
false (no unused codes) or missing (older server), and both mean “don't offer it”.
Wait comes from the 429's Retry-After header (seconds): show a live m:ss countdown in the
callout and on the disabled button, and enable “Try again” when it reaches zero. If the header is missing or not a
positive integer, show “Wait a few minutes, then try again.” with the button enabled. The entered code is kept
and not marked red (it wasn't judged wrong). A retry that still gets 429 restarts the countdown from the new header.
The text didn't go through. Try again, or use your authenticator app or a recovery code instead.