Files
jellybit/docs/backlog/review-f2-promote-without-add.md
T
avandClaude Opus 4.8 bfd469bd43 Беклог: закрыты F1, F6, MAJOR-1/2, MAJOR-4, MINOR-7
Реализованы и прошли ревью параллельной волной (worktree):
- F1 (гард дедуп-дозаписи) + F6 (апгрейд catched-magnet→torrent)
- MAJOR-1/2 (сброс базиса ретрая + простой от last_activity) + клэмп
  last_activity из будущего
- MAJOR-4 (sweep linking + persist→review) + MINOR-7 (transitionErr)

Суть переехала в openspec/specs (ingest, state-reconciliation,
file-layout) и в код. В F2 добавлен указатель на смежное окно
F6↔воркер, найденное этим ревью.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 17:37:44 +03:00

2.3 KiB
Raw Blame History

processCatched: promote-without-add если торрент уже в qBittorrent (F2)

Приоритет: средний · Теги: ingest, review-2026-07-08, lifecycle

Ревью Fable 2026-07-08 (приём). worker.go:361-391, sourceAddParts :407-432, qbt.go:243-246.

Сценарий: торрент уже в qBittorrent БЕЗ нашей категории/тега (юзер добавил вручную раньше → discover не усыновляет). Юзер грузит тот же .torrent в jellybit → catched → qbt.Add файлом; для file-add дубль → «Fails.» → Add ошибка → «will retry» каждый тик, вечно, до catch_timeout → failed/qbit_add, который reconcileRecovery НЕ воскрешает (worker.go:124-132). Торрент жив всё это время; юзер видит failed. Retry уже решает это alive-проверкой (worker.go:692-698 «повторный Add вреден»), а processCatched — нет, хотя live-снимок byHash того же тика доступен. Также лечит сценарий B (Add успех, PromoteCatched падает на транзиентной ошибке → снова Add дубля).

Замечание: поведение qBit на дубль file-add версионно-зависимо («Fails.» vs «Ok.») — проверить на целевой версии.

Фикс: перед Add проверить присутствие хешей в qBit; есть → promote без Add (зеркалит Retry).

Смежное (ревью 2026-07-08, кластер A): апгрейд F6 (UpgradeCatchedMagnetToTorrent) оставил узкое окно — processCatched читает снимок source_type вне w.mu, поэтому при точном оверлапе тика воркера с апгрейдом воркер добавит magnet из устаревшего снимка, хотя БД уже torrent. Тот же фикс закрывает и это: перечитать источник под w.mu (или проверить присутствие хешей в qBit) перед Add.

Вердикт: change (малая спека-дельта download-tracking + код).