# Proposal ## Why В режиме переноса (C) на устройстве остаётся только превью, а оригинал живёт на сервере. Если серверное фото исчезает из целевого альбома (удалено с другого устройства, из web или из экрана серверного альбома), приложение этого не замечает: локальный индекс продолжает держать `serverPhotoId`, элемент показывается с обычным значком облака, а при открытии оригинал бесконечно не загружается. Пользователь не видит, что связи с сервером больше нет, и не может этот элемент убрать или перезалить. ## What Changes - Новое локальное состояние ассета **ORPHANED**: превью на устройстве есть, а серверного фото в целевом альбоме больше нет. - Определение состояния при проверке синхронизации: `serverPhotoId` элемента сверяется с живыми фото альбома; отсутствие переводит элемент в `ORPHANED`, повторное появление — обратно в `PREVIEW`. - Метка элемента в сетке: для `ORPHANED` показывается перечёркнутое облако вместо обычного. - Действие `ORPHANED`-элемента — «Удалить с устройства»: удаляет превью-файл и запись индекса, сервер не затрагивается (его копии уже нет). Серверные атрибуты (теги, обложка, серверное удаление) для такого элемента недоступны. - Возврат оригинала: если содержимое с исходным hash снова появляется на телефоне (в этом же альбоме или в другом альбоме устройства), элемент заливается заново; в режиме C он снова проходит обычный цикл разгрузки. - Автоматическое поведение остаётся консервативным: файл-превью не удаляется и не перезаливается без участия пользователя, превью не выдаётся за оригинал. ## Capabilities ### New Capabilities Нет. ### Modified Capabilities - `phone-album-sync`: отражение серверных изменений распространяется на разгруженные превью (элемент становится `ORPHANED`, файл сохраняется), добавляется действие удаления с устройства и повторная заливка вернувшегося оригинала. - `android-client`: метка перенесённого элемента получает состояние «перечёркнутое облако», а шит элемента — действие «Удалить с устройства» для потерявших серверную копию. ## Impact - Android-клиент: `domain/model/Sync.kt` (`LocalAssetState`), `domain/sync/GallerySyncPolicy.kt`, `data/sync/SyncPlan.kt`, `data/sync/SyncCoordinator.kt`, `data/sync/SyncCheck.kt`, `ui/devicealbum/DeviceAlbumViewModel.kt`, `ui/devicealbum/DeviceAlbumScreen.kt`, `domain/attributes/PhotoAttributeSource.kt`. - Удаление превью — через MediaStore delete-consent (элемент галереи не принадлежит приложению), переиспользуется существующий путь согласия. - Серверный API и схема БД не меняются.