- Правило покрытия получило второй разряд (условный, как у точек), запрет
вырождения формы и счёт содержательных элементов ряда: скелет из скаляров и
ряд из null больше не затирают маршрут. Победитель внутри доставки стал
функцией множества версий — общим помощником с точками, — а провенанс
поднимается и при совпавшем хеше, иначе отложенная доставка возвращала витрину
к прежнему содержимому.
- Одно поле не того типа больше не уносит сущность, а пропуски видны в учётной
записи доставки (миграция 00008, NULL = «не измерялось»); каноническая форма
считается один раз и вне транзакции; откат бинаря поверх новой схемы отказывает
на старте; текст ошибки разбора не несёт значений из тела.
- Ревью кода профилем deep (девять проходов) нашло две регрессии и обе закрыты:
безусловный второй разряд запирал законный досчёт навсегда, а выбор победителя
был квадратичен по числу присланных версий одного ключа.
- секции `workouts` и `stateOfMind` покрыты разбором: тренировка лежит одной
строкой вместе с маршрутом и внутренними рядами, запись — по ключу `род + id`;
миграция 00007 заводит обе таблицы и возвращает в очередь `partial`-доставки
с этими ключами
- сущность заменяется целиком, но условно: приехавшая побеждает, если не теряет
содержания сохранённой (множество ключей и длины верхнеуровневых массивов), а
при равном содержании выигрывает версия из более поздней доставки ЖУРНАЛА —
«побеждает приехавшая» было бы функцией порядка свёртки, и живая витрина
расходилась бы с пересборкой молча
- отпечаток витрины покрывает тренировки и записи и снимается одним снимком
базы; отчёт `reindex` считает «было и стало» по каждой единице хранения
- половина потока (50 доставок из 104) не несёт metrics вовсе и до сих пор
числилась parsed: ретеншен, поверив статусу, срезал бы тела stateOfMind,
которых в экспорте Apple нет
- разбор перечисляет верхнеуровневые ключи data, непокрытые проглатываются
декодированием: тело 40 МиБ из непокрытой секции удерживает 0 МиБ
- статус partial и колонка delivery.uncovered_sections; миграция переводит
прежние parsed в pending — им верить нельзя
- витрина не изменилась: отпечаток совпал с прогоном до изменения
- tmp/research/fixtures.py собирает фикстуры из архива, вычищая измерения и
сохраняя порядок ключей, форму литералов, выравнивание меток и невидимые
символы; шесть фикстур в internal/hae/testdata
- internal/canon — общий дом канонической формы, полноты и хеша: числа читаются
литералом через json.Number, округление до 12 значащих цифр
- internal/hae — разбор секции metrics, вывод слоя по метрике, разделение схем
сна, координаты интервалом; recover внутри Parse, фаззинг
- миграция bucket и docs/database.md