## Why

На шаге добавления пойманной загрузки (`catched`) worker выводит имя (LLM,
секунды) и вызывает `qbt.Add` **вне** блокировки переходов. Если в это окно
пользователь отменяет задачу (`catched → cancelled`), запись перехода
`PromoteCatched` корректно пропускается (гард `state='catched'`), НО источник
уже добавлен в qBittorrent под нашей категорией. Такой торрент качается/сидирует
вечно, ест диск, а видимой задачи-владельца нет: усыновить назад его нельзя —
`adopt` проверяет `ExistsByInfohash` (любое состояние), а хеши уже принадлежат
отменённой задаче. Спека покрывает переход состояния, но не этот побочный эффект
(находка ревью F3/NIT-13).

## What Changes

- **Re-read состояния прямо перед `qbt.Add`** (под блокировкой переходов, после
  медленного вывода имени): если задача уже не в `catched` (отменена) — источник
  в qBittorrent НЕ добавляется вовсе. Сужает окно гонки до промежутка между
  re-read и записью перехода.
- **Scoped cleanup**: если отмена случилась в оставшемся окне (уже ПОСЛЕ
  успешного `add`, но до записи перехода), worker удаляет только что добавленный
  торрент из qBittorrent **вместе с данными** — уборка собственного мусора.
- **Гарантия «удаляем только своё»**: удаление-с-данными допустимо ТОЛЬКО для
  торрента, который worker создал именно этим `add`. Признак — подтверждённое
  **отсутствие** infohash в qBittorrent непосредственно перед `add`. Если
  infohash уже присутствовал до нашего `add` (внешний клиент раздаёт тот же
  торрент), worker источник не добавляет и чужие данные не трогает.
- **WARN-логи** на этом пути (торрент оставлен после отмены → удаляем; факт
  удаления), с корреляцией по `download_id`, без секретов.

## Capabilities

### New Capabilities

Нет.

### Modified Capabilities

- `download-tracking`: требование «Добавление пойманной загрузки в qBittorrent» —
  добавляется re-read состояния перед `add`, подтверждение отсутствия infohash
  перед `add` как признак «своего» торрента и уборка добавленного торрента при
  отмене в окне после `add`. Сценарий «Отмена во время добавления» уточняется и
  дополняется сценариями уборки и негативного инварианта.

## Impact

- **Спеки:** дельта `download-tracking` (одно MODIFIED-требование + сценарии).
- **Код:** `internal/worker/worker.go` — `processCatched` (re-read state и
  проверка присутствия перед `Add`; уборка добавленного при промахе
  `PromoteCatched`). Новых методов `qbt`/`store` не требуется (переиспользуем
  `Torrents`, `Delete`).
- **Тесты:** `internal/worker/catched_test.go` — обновление сценария отмены во
  время namer (Add не вызывается) + новые: уборка после Add, негативный инвариант
  (пред-существующий торрент не удаляется с данными).
- **Миграции БД:** нет.
- **Инвариант «источник неприкосновенен»:** обоснование удаления-с-данными и
  негативная гарантия — в `design.md`.
