docs(auth): the short reading of the fixes (ADR 0017)

ADR 0017 gets "The short reading": its findings, the developer's four
decisions of 21 Oct, and what changed. "The rules as they stand" says a
reset takes effect 14 days after it was asked at the latest, that a member
keeps the session a reset signed in and deletes nobody while the register
is out of reach, and no longer claims every secret is kept out of every
capture: Android holds them back, Windows from 10 2004, macOS from
screenshots but not ScreenCaptureKit on macOS 15 and later, iOS covers
the app switcher's picture alone, Linux nothing. The module's and
halkyon_app's READMEs and Learn's AGENTS.md follow.

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-21 18:17:08 +02:00
commit a3b70175f6
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -67,7 +67,9 @@ Written as the apps are: Dart 3.13's primary constructors, Material from
the system's keyring, per instance and person, gone once another person
signs in or nobody; on iOS and macOS `unlocked_this_device`, so readable
only while the device is unlocked, never in a backup restored elsewhere nor
in iCloud Keychain, each write deleting the entry before it). Signing in (SRP's M2 checked and the keys opened before
in iCloud Keychain, each write deleting the entry before it, and forgetting
finding too the entries earlier builds kept with another accessibility, a
keyring that can't be read now stopping nothing). Signing in (SRP's M2 checked and the keys opened before
anything is trusted), signing up (the recovery phrase shown once and three of
its words typed back before anything reaches the instance), a setup never
finished, the authenticators (QR codes drawn with pub.dev's `qr`), recovery
@ -87,13 +89,17 @@ Written as the apps are: Dart 3.13's primary constructors, Material from
through Flutter, so clipboard histories and cloud clipboards would keep
it): the recovery phrase and codes are saved or written down, an
authenticator's key scanned, opened or typed; all of them show in a
`SecretScreen` (the phrase typed back too), kept out of screenshots,
`SecretScreen` (the phrase typed back too, its fields offering Paste and
Select all alone, their copy keys doing nothing), kept out of screenshots,
screen recordings and recents where the app's window answers
`app.halkyon/screen_guard`: Android's `FLAG_SECURE` (as Learn's and Todo's
`ScreenGuard.kt` in their `MainActivity`), macOS's `sharingType = .none`
(`MainFlutterWindow.swift`) and Windows' `WDA_EXCLUDEFROMCAPTURE`
(`flutter_window.cpp`); covered on iOS while the app isn't in front;
nothing on Linux; keyboards learn nothing typed into a password, a code or
(`MainFlutterWindow.swift`; screenshots, but not ScreenCaptureKit's
captures on macOS 15 and later) and Windows' `WDA_EXCLUDEFROMCAPTURE`
from Windows 10 2004 on, `WDA_MONITOR` (black in captures) before, by the
version `RtlGetVersion` tells (`flutter_window.cpp`); neither run yet;
covered on iOS in the app switcher's picture while the app isn't in front,
screenshots there not held back; nothing on Linux; keyboards learn nothing typed into a password, a code or
the phrase; no state's text (which a debug build's bloc observer logs) holds
a secret, a code or the address; only an `otpauth:` URI is shown as a QR
code or opened; and anything a step didn't expect (bytes of the wrong