processCatched перед Add проверяет присутствие торрента в qBittorrent (один листинг на тик): если раздача уже есть — усыновляем (promote catched→downloading без повторного Add и без LLM-namer, имя из раздачи), иначе добавляем как раньше. Это убирает бесконечный цикл дубль-Add → 409 → ретрай и лишние вызовы LLM. Инвариант приёма «одна активная на infohash» делает различие «наш/чужой» ненужным. source_type перечитывается под замком (сужение гонки апгрейда F6); при недоступности qBittorrent тик пропускается без вызова LLM. Дедуп на приёме (дубль на уже активную задачу) теперь отражается явным ответом бота «дубль уже активной #id — добавление отменено». Спека download-tracking обновлена (OpenSpec change заархивирован); закрыта задача беклога review-f2-promote-without-add. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Документация jellybit
Три раздела с разной ролью — не путать:
-
specs/ — спецификации. Описывают целевое и текущее устройство системы. Живые и изменяемые: правим по мере развития, держим в соответствии с кодом. Отвечают на вопрос «как устроено».
-
adr/ — Architecture Decision Records. Неизменяемый журнал значимых решений, пишется постфактум. Хранит главное — почему так сделано. Передумали → не правим старую запись, заводим новую. Процесс — в adr/README.md.
-
drafts/ — черновики: заметки, мысли, планы на будущее, ещё не принятые решения. Не источник истины и ни к чему не обязывают. Когда черновик становится реальностью — его место в specs (как устроено) и/или adr (почему решили).