## Why

Команда **Defer** («Позже») сейчас гардит только `IsTerminal()`, поэтому
принимает и пре-источниковое состояние `catched` (торрент ещё НЕ добавлен в
qBittorrent). Defer из `catched` уводит задачу в лимбо → необратимый `deleted`
(находка ревью MAJOR-6):

- `catched → deferred`: `processCatched` листает только `catched` и задачу
  больше не видит → торрент никогда не добавится в qBittorrent.
- Из `deferred` дальше тупик: `Apply` → «нет плана»; `Rerecognize`/`Refine` →
  `ensureSourceReady` не находит раздачу → сверка (`sourcePresent=false`,
  `targetPresent=false`) выводит `deleted`, а у `deleted` НОЛЬ исходящих рёбер
  → задача необратима, хотя байты `.torrent` лежат в `download_torrent`.
- Плюс `deleted` семантически неверен: у `catched` ничего не качалось и не
  раскладывалось.

Defer до появления источника бессмысленен: «отложить на потом» нечего — задача
ещё не дошла до ревью. Пре-источниковое `catched` — единственное такое
состояние (все состояния от `downloading` и далее уже имеют раздачу в
qBittorrent; приёмное падение `qbit_add` терминально и Defer его уже отклоняет).

## What Changes

- **Defer отклоняет пре-источниковое состояние `catched`** с конфликтом
  (`ErrConflict`) и понятным сообщением: отложить можно только после добавления
  торрента в qBittorrent. Прочие не-терминальные состояния (`downloading`/
  `completed`/`recognizing`/`review`/`linking`/`stuck`/`deferred`), где раздача
  уже есть, Defer принимает как и раньше.
- **Граф переходов теряет ребро `catched → deferred`** — раз Defer его больше
  не выполняет, ребро мёртвое; граф остаётся тесным надмножеством реальных
  переходов. Инвариант «`deferred` — легальная цель из каждого не-терминального
  состояния» уточняется: **кроме** пре-источникового `catched`.
- UI/HTTP уже не предлагает Defer для `catched`: кнопка «🕗 Позже» живёт только
  на экране ревью (`review`/`deferred`), карточка `catched` лишь самополлингом
  ждёт перехода в `downloading`. Прямой вызов Defer для `catched` теперь
  отклоняется доменным гардом; транспорт транслирует отказ по своему каналу:
  REST — 409 «действие недоступно в текущем состоянии» (`classifyErr`), веб-путь
  `/ui/downloads/{id}/defer` — PRG-редирект (303) на `/review/{id}?err=…` с
  нейтральным сообщением (как прочие отказы команд ревью).

## Capabilities

### New Capabilities

Нет.

### Modified Capabilities

- `review`: требование «Команды ревью и их эффекты» — уточняет допустимые
  исходные состояния команды **Позже** (`Defer`): любое не-терминальное, кроме
  пре-источникового `catched` (там нет раздачи и нечего откладывать).

## Impact

- **Спеки:** дельта `review` (одно MODIFIED-требование с негативным сценарием).
  Требование графа переходов в `download-tracking` (декларативное, конкретные
  рёбра не перечисляет) не меняется — снятие ребра `catched → deferred` из
  единого источника истины в коде ему не противоречит.
- **Код:** `internal/worker/review.go` — `Defer` (гард против `catched`);
  `internal/store/download.go` — убрать `StateDeferred` из исходящих `catched`
  и уточнить комментарий инварианта `deferred`.
- **Тесты:** `internal/worker/review_test.go` — Defer из `catched` отклоняется,
  из `review` по-прежнему работает; `internal/store/transition_test.go` —
  инвариант «`deferred` из каждого не-терминального, кроме `catched`».
