# Страница архива задаётся ключом, а не номером

- **Дата:** 2026-08-15
- **Источник:** openspec/changes/archive/2026-08-15-app-json-contract/design.md,
  раздел «Страница задаётся ключом, а не номером»

## Решение

Постраничное чтение своих записей идёт непрозрачным ключом по паре «время
заведения и идентификатор». Номер страницы отвергнут.

## Почему

«Приём пишет в голову той же таблицы записей, которую читает список, и человек,
загрузивший запись и листающий свой архив, — штатный сценарий. Номер страницы
сдвинул бы окно на единицу: последний элемент первой страницы пришёл бы вторым
разом первым элементом второй, а один элемент между ними не пришёл бы никогда.
Отказ молчаливый — ни кода, ни строки в журнале, — и человек видел бы архив, в
котором записи нет.»

Ключ полный: у записей, принятых одним запросом, время совпадает, и порядок
между ними одним лишь временем не определён.

## Последствия

- `+` запись, заведённая между двумя страницами, не даёт ни повтора, ни
  пропуска;
- `+` порядок между записями с равным временем устойчив;
- `−` экран с нумерацией страниц так не сделать — листать можно только
  «дальше». Архиву это не нужно;
- `−` ключ приходит от клиента и потому разбирается: время приводится к виду
  хранилища, иначе побайтовое сравнение молча обращает условие в постоянную
  истину или ложь.
