## Why

Пересканирование Jellyfin сейчас дёргается **только** при входе в `done` (после
успешной раскладки). Но наши библиотечные хардлинки меняются ещё в двух случаях:
**Undo** (`done → reverted`) и **Delete** (`… → deleted`) снимают ссылки. После них
Jellyfin продолжает показывать записи с битыми путями до следующего скана по
расписанию — рассинхрон видимого каталога с реальностью, который мы уже умеем
чинить, но не сигналим.

Интеграция готова целиком (`internal/jellyfin`, конфиг `[jellyfin]`, проводка
`SetScanner`) — не хватает лишь расширить условие срабатывания. Точка правки —
единый чекпоинт `transitionErr` (`internal/worker/worker.go`), через который уже
проходят оба пути снятия ссылок (`Undo`, `Delete`) и reconcile-производный
`deleted`.

## What Changes

- Расширить гейт пересканирования Jellyfin в `transitionErr` с
  `state == done` на множество состояний **входа**, где наши библиотечные
  хардлинки только что изменились: `done` (файлы разложены), `reverted` (Undo снял
  ссылки), `deleted` (Delete снял ссылки / сверка констатировала их отсутствие).
- Гейт **по состоянию-цели** в едином чекпоинте: он естественно ловит и
  пользовательские Undo/Delete, и reconcile-производный `deleted` — это
  задумано и идемпотентно (лишний скан безвреден, инкрементальный скан дёшев).
- `target_missing` (и `orphaned`) в множество **не** включаем: это промежуточные
  состояния рассинхрона, где раскладка ещё не «улеглась» — источник жив, задача
  ждёт relink/восстановления и может залечиться обратно в `done`. Скан там
  откладываем, чтобы не слать его на каждое колебание сверки; когда задача
  придёт в `done`/`deleted`, скан сработает по общему правилу.
- Зафиксировать поведение в спеке `file-layout` (сейчас про Jellyfin-скан в
  `openspec/specs/` нет ни слова) и поправить рукописные доки, где формулировка
  «при входе в `done`» стала неверной.

## Capabilities

### New Capabilities
<!-- нет новых capability -->

### Modified Capabilities
- `file-layout`: фиксируется триггер пересканирования Jellyfin — не только после
  раскладки (`done`), но и после снятия наших библиотечных хардлинков
  (`reverted`, `deleted`), неблокирующе и опционально (`[jellyfin]`).

## Impact

- Код воркера: `internal/worker/worker.go` — расширить условие скана в
  `transitionErr` (`state == done` → множество `{done, reverted, deleted}`),
  обновить поясняющий комментарий.
- Тесты: `internal/worker/review_test.go` — позитивные тесты, что скан стреляет
  на `reverted` (после `Undo`) и `deleted` (после `Delete`); при желании
  негативный (скан не стреляет на входе, не меняющем наши ссылки).
- Доки: `docs/specs/architecture.md` («Пересканирование Jellyfin»),
  `docs/specs/workflow.md` — формулировку «при входе в `done`» заменить на
  «после раскладки и после снятия наших ссылок (Undo/Delete)».
- Данные/инварианты: не затрагиваются. Скан по-прежнему неблокирующий, вне
  `w.mu`, в фоновом ctx; недоступность Jellyfin на состояние задачи не влияет.
  Источник неприкосновенен — скан лишь читает библиотеку.
