# Data-миграции не отбирают строки по обрезаемым спискам **Приоритет:** низкий Остаток задачи «Дозакрыть находки ревью по слиянию сущностей» (архивный change `dozakryt-nahodki-sushchnostej`). ## Оракул: механизм доказан, дефект пока пустой Миграция `00007` переводит в `pending` доставки, у которых имя ставшей покрытой секции стоит в `uncovered_sections`: ```sql WHERE EXISTS (SELECT 1 FROM json_each(delivery.uncovered_sections) WHERE json_each.value IN ('workouts', 'stateOfMind')) ``` Список `uncovered_sections` обрезается на 32 имени **в порядке встречи** (`hae.maxUncovered`, счётчик `UncoveredDropped`). Секция, стоящая в теле после тридцати двух незнакомых ключей, в список не попадает — и отбор миграции её не найдёт. Оракул жил в `tmp/adv/uncovered_test.go`: тело с 32 ключами `junk` и секцией `ecg` за ними даёт список без `ecg`. Для `00007` дефект **пустой**: HAE шлёт одну секцию за доставку (`docs/local-research.md`, находка 50), секций восемь, тела с 32 незнакомыми ключами в архиве не существует. Но следующая покрытая секция унаследует ту же слепую зону, а к тому времени причину никто не вспомнит. ## Что делать Записать принцип и выбрать форму отбора: - **Принцип:** data-миграция не отбирает строки по списку, который где-то обрезается. Отбирать надо по признаку, который обрезке не подлежит, — например «эту доставку смотрел разбор старше версии N». - Практическое следствие для существующего кода: `UncoveredDropped > 0` обязан означать безусловное пересворачивание — доставка, у которой список обрезан, про своё покрытие ничего достоверного не говорит. - Кандидат в `docs/conventions.md` (раздел про миграции), если форма отбора окажется общей. ## Связано - [Проверка секций, которых поток ещё не приносил](proverka-novyh-sekcij.md) — именно она следующей сделает секцию покрытой и напишет такую миграцию.