- байтовый порядок канонических форм остался тай-брейком только внутри одной
доставки: на живом корпусе он решал 98,8% спорных координат и системно хранил
меньшее значение, из-за чего step_count терял род и verify:archive был красным
- правило перестало быть коммутативным осознанно, поэтому порядок свёртки
приведён к журнальному: проход воркера прекращается на отложенной доставке,
а свёртка вне порядка журнала пишет WARN
- заведены счётчики PointsHeld и PointsErased — удержание полнотой и
единственное направление, в котором правило теряет содержание
- фазы сна, контекст пульса и имена тренировок попадают в реестр
`category_value` (миграция 00010): строка хранится дословно, выведенный код
лежит рядом отдельной записью, а не полем внутри точки
- словарь и синонимы кодов живут в бинаре (`internal/healthkit`); локаль из
`Accept-Language` сужает поиск, но в ключ реестра не входит — заголовков в
сыром архиве нет
- наблюдение входит в отпечаток витрины, выведенный код — нет: он производная
от словаря, а не от журнала
- Правило покрытия получило второй разряд (условный, как у точек), запрет
вырождения формы и счёт содержательных элементов ряда: скелет из скаляров и
ряд из null больше не затирают маршрут. Победитель внутри доставки стал
функцией множества версий — общим помощником с точками, — а провенанс
поднимается и при совпавшем хеше, иначе отложенная доставка возвращала витрину
к прежнему содержимому.
- Одно поле не того типа больше не уносит сущность, а пропуски видны в учётной
записи доставки (миграция 00008, NULL = «не измерялось»); каноническая форма
считается один раз и вне транзакции; откат бинаря поверх новой схемы отказывает
на старте; текст ошибки разбора не несёт значений из тела.
- Ревью кода профилем deep (девять проходов) нашло две регрессии и обе закрыты:
безусловный второй разряд запирал законный досчёт навсегда, а выбор победителя
был квадратичен по числу присланных версий одного ключа.
- секции `workouts` и `stateOfMind` покрыты разбором: тренировка лежит одной
строкой вместе с маршрутом и внутренними рядами, запись — по ключу `род + id`;
миграция 00007 заводит обе таблицы и возвращает в очередь `partial`-доставки
с этими ключами
- сущность заменяется целиком, но условно: приехавшая побеждает, если не теряет
содержания сохранённой (множество ключей и длины верхнеуровневых массивов), а
при равном содержании выигрывает версия из более поздней доставки ЖУРНАЛА —
«побеждает приехавшая» было бы функцией порядка свёртки, и живая витрина
расходилась бы с пересборкой молча
- отпечаток витрины покрывает тренировки и записи и снимается одним снимком
базы; отчёт `reindex` считает «было и стало» по каждой единице хранения