- предел длины компонента (255 байт) проверяется в BuildLinks до первой
операции с ФС: ни каталога, ни ссылки при отказе не создаётся
- причина пустого предпросмотра считается на показе (ReviewData.PreviewError)
и печатается в панели действий и в карточке Telegram: у задачи без
записанной причины взять её больше неоткуда
- чистка стоит на каждой точке входа значения метабазы в план — сборка матча,
копия кандидата для ревью, набор закреплённых значений источника и его
чтение: гарантия, поставленная только на запись, обходится данными,
сохранёнными прежними версиями
- название, непригодное как имя каталога (пустое или без единой буквы и
цифры), не подставляется — раздача уходит в review с названной причиной
- гейт подтверждения матча не сдвинут: сравнение с планом идёт по значениям
провайдера, чистится только копия, уходящая дальше
- каталог задач переехал в tasks/ в корне, спринт упразднён — приоритет
теперь порядок строк в BACKLOG.md, четыре задачи набора вернулись в беклог
- гейт: путь docs.py переведён на av-dev-docs вместо снесённого av-dev-pm,
добавлены шаги tasks.py check и openspec.py check
- относительные ссылки внутри задач и ссылки из docs/ на задачи починены
- локаль из [general].language применяется при разборе ответа /search, а в
запрос не уходит: параметр language у TVDB — фильтр выдачи, а не селектор
перевода (ADR-2026-08-07)
- Title берётся из блока translations с тотальным фолбэком на primary name,
OriginalTitle — из primary name; форма ответа сверена по документации и
живым прогоном не подтверждена (docs/research)
- неожиданная форма ответа даёт WARN: признак — отсутствие во всей выдаче
ключей языка ожидаемого вида, а не неудача разбора блока
- review.md: заведён род узла «вызов LLM и разбор ответа», добавлены вопросы
тем autotests, security и operations, маршрут к уже механизированному
- architecture.md: «Открытые вопросы» вместо «пока нет» — восемь областей
знаемо тонкого устройства со ссылкой на задачу
- security.md: снят указатель на несуществующую задачу про лимит ответа LLM
- review.md переведён на словарь меток: вопросы адресованы темам, триггеры
профиля стали триггерами метки в три списка, quick/standard/wide → small/
medium/large, профиль deep упразднён
- openspec/config.yaml переписан по канонической форме: адреса passport и
CLAUDE.md вместо пересказа правил ревью и конвенций
- разобраны находки doc-consistency и doc-code-drift: исключение инварианта
сверено со спеками, единая точка времени и таблица classifyErr дополнены,
MaxTorrentSize получил дом в database.md
- имя раздачи нормализуется на границе разбора: вырожденное `-`
(metainfo.NoName) даёт пустое имя, пробельное схлопывается — сентинел больше
не доходит ни до контекста распознавания, ни до source_ref, ни до подсказки
вывода имени
- контракт «на любом пути ошибки приёма результат нулевой» объявлен в ingest и
удерживается структурно; три транспорта перестали обещать идентификатор,
которого нет, и коррелируют отказ по request_id
- scoped-логгер загрузки ставится до вызова внешнего сервиса в семи командах
воркера — записи об отказе qBittorrent и метабаз получили download_id
и infohash; граница разбора bencode записана в docs/research
- перечни узлов названы картой мест, где живут правила; ступень поднимает
новое или изменённое правило, а не правка рядом с ним
- заведён закрытый перечень отсекающих условий: исход, названный дельта-спекой
поимённо, отсутствие новых сценариев, правка сообщений и тестов, сужение
существующей нормализации
- записан ориентир частоты: deep — исключение на крупной функциональности,
задача-уборка идёт в quick или standard даже в узле из перечня
- требование «Ручное закрытие загрузки» приведено к коду: два пути закрытия,
error_code на каждом, раскладка поверхностей — описательно, а не SHALL
- уборка своего торрента после отмены названа исключением по состоянию, а не
по команде; убрана ложная гарантия «данных пользователя не касается»
- в docs/review.md записан проскочивший дефект гарда окна после add и новый
вопрос проходу adversary про асимметрию признака владения
- закрыты few-shot на правках человека и eval-харнес с размеченным корпусом:
направление — тюнинг автоматического распознавания без участия человека
- цель распознавания переписана: точность видна по рабочему потоку, а не по
фиксированному корпусу
- поправлены ссылки на удалённые задачи в CLAUDE.md, review.md,
research/README.md и в задаче про confidence-гейт
- каталог задач: PLAN.md → ROADMAP.md с каноническими секциями, все 44
записи получили тип, заголовки приведены к форме своего типа
- расхождения, найденные судьями канона: исключения инварианта «источник
неприкосновенен», инвариант про один активный infohash, UTC в logging.md,
поведение из architecture.md заменено ссылками на спеки
- триггеры профиля ревью переписаны под умолчание standard
- Раскладка 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.