- роль локального файла определяется меткой провенанса, а не состоянием
индекса: собственное превью выправляет запись (MarkPreview) вместо
повторной загрузки, постер видео связывается с самим видео;
- изменённое содержимое заменяет серверную копию только после сверки
original_checksum (ReplaceUpload): прежняя копия удаляется мягко, а при
расхождении принятая загрузка отбрасывается и элемент не разгружается;
- файл не разгружается, пока по нему есть незавершённая загрузка;
- восстановленный оригинал помечается UPLOADED, чтобы следующий проход не
разгрузил его снова;
- миграция 8→9 добавляет upload_jobs.replacesPhotoId.