## Why

Разбор читает только `data.metrics`. Доставка, целиком состоящая из другой
секции, получает `parse_status=parsed` с нулём точек — неотличимо от доставки с
пустой секцией метрик. Измерено на живом архиве: из 99 доставок 48 не содержат
`metrics` вовсе (24 `workouts`, 24 `stateOfMind`), то есть почти половина потока
сейчас числится разобранной, не будучи разобранной.

Само по себе это некритично — тела лежат в архиве. Опасность в сцепке с
ретеншеном: он по замыслу срезает архив до следующего проверенного экспорта, и
если станет опираться на `parse_status`, снесёт тела, которые числятся
разобранными. Для `stateOfMind` это необратимо — в экспорте Apple его нет
(находка 46), доставки HAE единственный его источник. Ретеншен — следующая
задача, поэтому признак нужен до неё.

## What Changes

- `hae.Parse` перечисляет верхнеуровневые ключи `data` и возвращает те, что
  разбор не покрыл. Перечисление идёт **без чтения содержимого секций**: тела
  доходят до 42 МиБ, и удержание кучи здесь — часть контракта.
- Появляется статус доставки `partial` рядом с `parsed`/`failed`: тело
  разобрано в той части, которую разбор покрывает, и в нём остались
  непокрытые секции.
- Свёртка сохраняет список непокрытых ключей в исход доставки и называет их
  **именами ключей** в своём единственном логирующем чекпоинте. Содержимого
  секций в логе нет и быть не может.
- Число ключей и длина имени в записи ограничены: ключи приходят из тела,
  которым отправитель управляет целиком; усечение видно счётчиком и маркером.
- **Миграция переписывает `parse_status` у всех накопленных доставок:**
  существующие `parsed` становятся `pending` — «этим разбором ещё не смотрели».
  Статус, поставленный кодом, который частичного разбора не различал, ничего не
  доказывает, а ретеншен собирается на него опираться. Цена: 99 строк живой базы
  меняют статус на первом старте нового бинаря, и до появления подбора `pending`
  (задача `otvet-i-svyortka`) никто их не пересвернёт; тела при этом остаются в
  архиве, объекты витрины — на месте, и `Down` прежние статусы не восстановит.

## Capabilities

### New Capabilities

Новых нет.

### Modified Capabilities

- `parsing`: разбор обязан перечислять непокрытые верхнеуровневые ключи `data`,
  не читая их содержимого, и отдавать их вызывающему.
- `storage`: у доставки появляется статус `partial` и список непокрытых секций;
  учёт обязан отличать «разобрано целиком» от «разобрано частично».

## Impact

- `internal/hae` — перечисление ключей в том же проходе, что и разбор метрик.
- `internal/store` — константа статуса, колонка `uncovered_sections`, миграция.
- `internal/fold` — исход свёртки, статус и атрибут лога.
- `docs/database.md`, `docs/architecture.md`, `docs/local-research.md` —
  схема, статусы и находка о наборах секций в живом потоке.
- Ретеншен сырого архива (задача `raw-archive-retention`) получает признак,
  на который ему можно опираться.
