- Раскладка docs/ приведена к канону 2: заведены passport/architecture/ database/security/review и research; docs/specs, drafts, backlog, review/ и BRIEF.md разобраны и удалены, беклог переехал в docs/tasks (34 задачи, 6 целей, слаги на английский). - Нарративы specs удалены как дубли openspec-спек после поимённой сверки; остаток заведён задачами (редактор маппинга ревью, крайние случаи именования), отказ от сущности title промоутнут в ADR. - Проектные копии агентов и скиллов ревью/пайплайна удалены в пользу плагинов av-dev-pm и av-dev-pipeline; в task gate добавлен шаг canon вместо er-schema.
14 KiB
14 KiB
Беклог
Что можно взять. Одна задача = один файл items/<slug>.md
- строка здесь. Целей тут нет — они в PLAN.md: беклог — то, что берут,
план — то, подо что берут. Порядка внутри секции нет: «что делать
дальше» отвечает набор спринта. Ведётся скиллом
tasks.
Секции «блокеры» здесь нет и не заводится: блокер — это состояние (спринт не может продолжаться ни одной задачей), оно живёт до ответа человека, а его следы — вопросами в файлах задач.
Ядро продукта
- Аниме с абсолютной нумерацией — аниме со сквозной нумерацией (#137) не раскладывается в SxxEyy, который ждёт Jellyfin — нужен пересчёт абсолютной нумерации
addReqне пересобирается из свежегоsource_typeпередAdd(окно namer'а) — При апгрейде magnet→.torrent в окне namer'а добавится magnet из устаревшего снимка; самоисцеляется через magnet_timeout→failed→Retry (аудит 2026-07-17)- Раздачи-копии диска (DVD/BluRay: VIDEO_TS/BDMV) — раздача-образ диска (VIDEO_TS/BDMV) сейчас разбирается пофайлово вместо раскладки каталога целиком — редкий, но реальный случай
- Веб-UI зовёт Cancel вместо Dismiss на не-терминальных → теряется
user_dismiss— Функционально ок (Cancel даёт cancelled), но маркер user_dismiss в error_code теряется; расхождение с буквой спеки (аудит 2026-07-17) - Фетч .torrent по URL — остаток «единого окна» — magnet и .torrent-файл приняты; остался фетч .torrent по URL (нужен SSRF-гард)
- Confidence-гейт авто-раскладки: узаконить в спеке + сделать выключаемым (дефолт 0.7) — Решено (B): гейт оставляем как доп. проверку на ревью — выключаемый порог, дефолт 0.85→0.7, записать в спеку
- [idea] guessit как сервис-спутник — go-ptn слабее питоновского guessit — если точности пред-парса не хватит, завернуть guessit в сервис-спутник рядом с бинарём
- Согласование канона нумерации серий с провайдером тега — Косметика/редкость: порядок просмотра ок, но у тайтлов со спорным порядком (Бибоп) Jellyfin подтягивает не те подписи серий, если канон файлов ≠ дефолтный порядок провайдера тега
- Раздачи с докачиванием (merge при повторном добавлении) — повторная заливка сериала целиком должна доложить недостающие эпизоды merge-раскладкой, не трогая существующие ссылки — блокирует типовой сценарий свежих сериалов
- [idea] Многоступенчатая верификация привязки — несколько проходов распознавания с консенсусом подняли бы точность ценой стоимости/латентности — проработать, когда включать и как мерджить расхождения
- Обучение на правках человека (few-shot из прошлых ревью) — правки человека (матч/тип/нумерация) не переиспользуются — few-shot из прошлых ревью поднял бы точность на «своих» трекерах без смены модели
- Идентичность инфохэшей: split v1/v2 одного торрента + крафт-магнет отравляет владение (F4, F5) — split v1/v2 идентичность и крафт-магнет отравляют владение инфохэшами (ревью 2026-07-08)
- Нити приёма: NoName в контексте, устаревшие комментарии, лог без причины, bencode-аллокации (N1, N3, N4, N5) — косметика приёма: NoName в контексте, устаревшие комментарии, лог, bencode-аллокации (ревью 2026-07-08)
- [idea] Сила совпадения кандидата и пересмотр распознавания/матчинга — у кандидата метабазы нет метрики силы совпадения — список кандидатов на ревью нечем отсортировать по уверенности (сперва проработать процесс матчинга)
- [idea] Сложные сериальные раздачи: все сезоны разом, паки, спецраскладки — сложные раздачи (все сезоны разом, паки, смешанная нумерация) целостно не проработаны — распознавание/ревью/раскладка заточены под один сезон
- Мгновенные обновления через SSE — живые обновления на htmx-поллинге дают задержку и холостые запросы — SSE убрал бы то и другое (поллинг работает, поэтому улучшение, не блокер)
- Проверка свободного места перед copy-fallback — copy-fallback при невозможности хардлинка может упереться в переполненный диск посреди раскладки — нет проверки места до копирования
- Ревью уведомлений в Telegram (аудит текстов и формата) — зонтичный проход по всем текстам бота: полнота карточек, единый язык, оформление; порождает под-задачи
- Привязка уведомлений к источнику в ботах (мульти-бот) — пинги и ревью должен получать автор загрузки в своём транспорте — нет привязки загрузки к источнику/отправителю (нужно для мульти-бота)
- Версии/качество одного тайтла (репаки, апгрейд 1080p → 2160p) — По калибровке болей (2026-07-02) — не боль, из приоритета выпало
- Внешние субтитры: пары VobSub и языковой суффикс — Привязка субтитр→серия уже работает; остались пары VobSub .idx+.sub и потеря Lang/Flags
- Современный Web-UI как PWA — текущий server-rendered UI функционален — PWA (устанавливаемое, удобное с телефона) это улучшение большого объёма, не блокер
- Полный редактор маппинга «файл → серия» и ручной режим ревью — правка S·E, «нумеровать подряд» и ручной режим при полном провале LLM были запланированы объёмом Ф5 и не заведены задачей — в ревью сегодня можно только подсказать текстом
- Крайние случаи именования: многофайловый фильм, редакции, двойная серия — стэкинг частей (part1/cd1), редакции [edition-…] и двойная серия SxxEyy-Eyy описаны нарративом, но в file-layout не заказаны — раскладка таких раздач не определена
Инфраструктура
- Агенты-ревьюверы качества (наименования, архитектура, конвенции, стиль) — конвейер ревью переехал в плагин
av-dev-pipeline; осталась калибровка проходов на этом проекте и ревьювер наименований (ждёт словарь единого языка) - Авторизация веб-UI (на будущее) — для v1 решено без авторизации (доверенная LAN, опц. allowlist подсетей) — задел на случай, если понадобится защита
- Бэкап SQLite — architecture требует бекапить data-том, но стратегия не описана — сбой или редеплой стирают всё in-flight состояние (проще, пока БД маленькая)
- Eval-харнес распознавания (корпус кейсов + метрика точности) — смена модели или правка промпта распознавания сейчас вслепую — нет корпуса кейсов и метрики точности, регрессии не видно
- Глубокий healthcheck и статус зависимостей — /healthz проверяет только сам сервис — недоступность qBittorrent/LLM/метабазы видна лишь по застрявшим задачам, нет readiness и бейджа в UI
- История переходов загрузки — хранится только текущий статус загрузки — разбор «как сюда попали» идёт по логам сервера, нет таблицы истории переходов
- Кэш метабаз (и опционально LLM) — повторные и ретраящиеся прогоны бьют TMDB/TVDB/TVMaze одним запросом — кэш с TTL сэкономил бы лимиты и ускорил «Распознать заново»
- НФТ: масштаб до 100 одновременных загрузок (потолок — 1000) — Зафиксировать в НФТ ориентир 100/1000 загрузок + аудит узких мест (SQLite, воркер, поллинг)
- Шум ERROR фоновых циклов при недоступной зависимости — Остаток задачи логирования: ext.* ERROR-шторм при недоступном qBittorrent + эскалация устойчивого сбоя тика (ревью Fable)
- Ретеншн и очистка БД — терминальные задачи и сырые ответы LLM копятся вечно — без авточистки список загрузок и БД деградируют по мере эксплуатации
- Словарь единого языка (ubiquitous language) — наименования домена расходятся между спеками, UI и кодом — нет единого глоссария (на нём же стоит агент-ревьювер наименований)
- [idea] Завершение загрузки через webhook — завершение сейчас ловим поллингом qBittorrent — webhook реагировал бы быстрее, но связывает нас с его конфигом (решим по опыту эксплуатации)
- [idea] Кандидаты в конвенции кода — накоплен список кандидатов (внешние клиенты, конкурентность, тесты, CLI, время) — надо решить, что из них стало реальным трением, а что выдумано вперёд