# ADR-009: История — только на устройстве, в IndexedDB

Уточнён [ADR-053](053-feed-pages-without-virtualization.md): виртуализация списка в DOM снята, пагинация курсором по 50 в силе.

## Контекст

История, живущая на сервере, делает сервер архивом и целью атак. У Bare история — собственность устройства.

## Решение

Клиент хранит историю в IndexedDB. messageId — ULID/UUIDv7: хронологическая сортировка и идемпотентный merge. Составной индекс (chatId, messageId). Пагинация курсором по ~50 сообщений, виртуализация списка в DOM. При старте — `navigator.storage.persist()`; занятое место показывается через `storage.estimate()`.

## Следствия

- Зашёл с другого устройства — там только новые сообщения.
- Потеря устройства без экспорта — потеря истории.
- Браузер может вычистить storage; `persist()` снижает риск, но не исключает его.
