- регистрация: политика пароля (≥10 + локальный словарь 10k утечек, SecLists MIT),
username и email без учёта регистра, шифрование email с привязкой к аккаунту,
blind index для поиска, автовступление в главный сервер с ролью @user
- вход: Argon2id+pepper, TOTP при включённом 2FA, блокировка после серии неудач,
события безопасности; единый ответ на неверный пароль и неизвестный аккаунт
- сессии: opaque-токены (в БД только SHA-256), ротация токена, logout/logout-all,
отзыв остальных сессий при смене пароля, step-up с окном 10 минут
- 2FA: настройка секрета с QR-URL, подтверждение кодом, 8 резервных кодов
(хранятся хэшами), обязательность для инстанс-админов, запрет отключения
- тесты на реальной SQLite: регистрация/вход/дубликаты, слабые и утёкшие пароли,
ротация и logout-all, TOTP и резервные коды, step-up, смена пароля,
выключенная регистрация, отсутствие секретов в логах
- структура по AGENT.md §12: cmd/, internal/, web/, deploy/, queries/, docs/
- LICENSE: полный текст AGPL-3.0-or-later
- NOTICE: атрибуция референсов (Spacebar, Fermo) и сторонних компонентов
- SECURITY.md и .well-known/security.txt: правила раскрытия уязвимостей
- .env.example: все переменные окружения с дефолтами
- .gitignore/.dockerignore/.editorconfig/.gitattributes/.gitleaks.toml