Долгий metaDL больше не убивается агрессивным таймаутом: дефолт magnet_timeout 30m → 24h (страховочный предохранитель), базис отсчёта — added_on из qBittorrent, а не created_at (переживает retry/усыновление). Авто-восстановление: фоновая сверка возвращает в поток задачи, упавшие по нашей нетерпеливости (magnet_timeout/stalled), когда источник ожил и продвинулся за условие падения (downloading/completed по статусу торрента); qbit_error не воскрешается. Конфликт idempotency (infohash занят другой активной задачей) — оставляем в failed. Уведомления: любой переход в failed/stuck пингует автора (включая приёмный qbit_add через ingest), с дебаунсом против спама при флаппинге stalled. Ручной retry добавлен в веб-UI и Telegram; Retry перецепляется к живому торренту вместо слепого Add. Дельта state-reconciliation влита в живые спеки; обновлён workflow.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Спецификации
Живые документы о том, как устроена система — целевое и актуальное состояние. В отличие от ADR, спецификации изменяемы: их правят по мере развития проекта и держат в соответствии с кодом. В отличие от черновиков, описывают принятое и реализуемое, а не идеи.
Соглашения
- Имя файла —
kebab-topic.md, без дат (дата живёт в git-истории). - Одна спецификация — одна тема.
- Если решение требует объяснения «почему именно так» с долгим следом — заведи ADR и сошлись на него из спецификации.
Записи
- architecture.md — общее устройство: компоненты, транспорты, хранилище, раскладка, деплой.
- workflow.md — жизненный цикл загрузки: машина состояний, переходы, сопоставление состояний qBittorrent.
- recognition.md — распознавание контента и модель уверенности.
- review-ux.md — ревью раскладки человеком: UI/UX-сценарии на случай, когда система не уверена.
- jellyfin-layout.md — конвенции именования файлов Jellyfin, в которые раскладываем.