Регистрация открытая (015), контакты и приглашения по нику с закреплением ключа и блокировкой (016), лимиты (017), идентификация устройства через случайный deviceId в IndexedDB и серверный fan-out (018), отказ от серверного перца (019), смена пароля не в v1 (020), интерфейс ru/en (021), айдентика «Скобы» по turn 2 канваса (022). Архитектура, модель угроз и README обновлены. В открытых вопросах остались два: моногарнитура с кириллицей (Fragment Mono её не содержит) и удаление аккаунта. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R2pCJkWyG2aYu48u1Vp1A1
16 lines
1.2 KiB
Markdown
16 lines
1.2 KiB
Markdown
# ADR-008: Сервер — реле с per-device очередью
|
|
|
|
## Контекст
|
|
|
|
Сервер никогда не является местом, где живёт история (философия, п. 2). Но получатель бывает офлайн — сообщение надо где-то подержать до доставки.
|
|
|
|
## Решение
|
|
|
|
Сервер хранит транзитную очередь зашифрованных недоставленных сообщений, per-device. Доставлено и подтверждено ACK — удалено с сервера. Не забрано за 30 дней — удалено. Кроме очереди сервер хранит только аккаунты и метаданные комнат и контактов.
|
|
|
|
## Следствия
|
|
|
|
- На сервере нет истории — компрометация сервера не раскрывает переписку.
|
|
- Устройство, молчавшее больше 30 дней, теряет недоставленные сообщения. Осознанно.
|
|
- Идентификация устройства для очередей — ADR-018.
|