feat(base)!: no anonymous accounts on the server (ADR 0020, D25)
All checks were successful
CI / check (push) Successful in 30m13s
CI / deploy (push) Has been skipped

The server's half of D25: every account has a way in, and the anonymous
accounts left from before go with the daily pruning.

- The module signs nobody in anonymously: `anonymousIdp` and
  `gitHubUpgrade` are gone, and so is linking GitHub at the register.
- A password is set only by someone whose address is theirs (a
  `firstPassword` code) or who signs in with GitHub alone (a fresh
  sign-in and a `signUp` code); an anonymous account is refused
  `wrongCredentials` before any code is used.
- SimpleLogin refuses to link onto a caller without `identified`
  (`wrongCaller`), the member's endpoint too, so nothing turns an
  anonymous account into one with a way in.
- `pruneAnonymousPeople` deletes every anonymous account left, however
  new, never one identified. Learn and Todo schedule it as
  `prune-accounts` and cancel the old `prune-abandoned-anonymous-people`
  entry once.
- Learn: someone without `identified` keeps no files;
  `FILE_LIMIT_ANONYMOUS_MB` is gone. `minimumAppBuild` is 23, as builds
  up to 22 start with an anonymous account.
- Learn's sync tests make their person and session by SQL in the
  development database, as Serverpod stores sessions.
- Docs, store listings and ADRs 0010, 0014, 0016, 0017 and 0019 amended.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-24 16:07:27 +02:00
commit 87671208df
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -79,8 +79,18 @@
starts (`AuthRepository.endAnonymousSession`), so it goes at once rather than with
the next day's pruning. Where the instance can't be reached, the device only signs
it out. Adding GitHub, the Profile tab's GitHub sign-in with its Cancel, the
signed-out mark and an anonymous device's own keys went with it. The server's half
follows.
signed-out mark and an anonymous device's own keys went with it. Then the server's
half: halkyon_base signs nobody in anonymously and has no endpoint adding GitHub; a
password is set only by an account with a way in (an anonymous one left from before
is refused, `wrongCredentials`, before any code is used), and SimpleLogin is added
only to a caller with `identified` (`wrongCaller`, also on a member, which then asks
the register nothing). The daily pruning (`pruneAnonymousPeople`, renamed
`prune-accounts` in Learn and Todo, the entry under its old name cancelled as they
start) deletes every anonymous account left, whatever its age, never one with
`identified`. Learn keeps no files for an account without `identified`
(`FILE_LIMIT_ANONYMOUS_MB` went), and `minimumAppBuild` is 23 (v0.20.0), as builds up
to 22 start anonymously. Learn's sync tests make their people and sessions by SQL,
as Serverpod's server-side sessions make them, in place of an anonymous sign-in.
- **Builds on:** ADR 0010 (email sign-in), ADR 0011 (profile pages), ADR 0016 (the
register), ADR 0017 (a password, TOTP and the keys).
- **Changes:** ADR 0017's way in on an instance that offers SimpleLogin (its keys, their