Skip to main content
InternalMarkdown

ADR 0028. v1 recovery is codes, passkeys, and linked factors

Status​

Accepted (as listed in the decisions index).

Spec §19 requires recovery without email or SMS, including operator-assisted recovery with a cooling-off period. Inventing a staff take-over now would let an operator or support key own a PlayerPal Account, which §19 forbids.

Decision​

v1 recovery is Player-held factors only:

  • one-time recovery codes (already Nest-owned)
  • additional passkeys (encouraged, not a signup gate)
  • an already-linked social method
  • an existing password, only after a recovery-scoped session

Device loss: revoke other portal sessions from a remaining device; if none remain, consume a recovery code, enrol a new passkey, and revoke other sessions on that upgrade. Social email match still must not recover an Account (ADR 0012, ADR 0019).

Operator-assisted recovery is out of scope until a workforce identity domain exists and a later ADR defines cooling-off, dual control, and audit. Staff may list or revoke portal sessions; they must not reset credentials or take ownership.

Consequences​

  • Account UX should prompt for recovery-code confirm and a second passkey after first login, without blocking play.
  • Password reset stays recovery-code or existing-device, never email or SMS.
  • docs/authentication.md no longer treats operator-assisted recovery as an unspecified v1 requirement.