Сверка с метабазой промахивалась на иностранных фильмах с русским релиз-именем (кейс «Тёмный рыцарь»): поиск шёл по одной строке provider_hint||title и игнорировал original_title, а базы индексированы прежде всего по оригинальным названиям. - matchMetadata ищет по ключам original_title → title → provider_hint с ранним стопом на первом единичном сильном матче; пустые и нормализованно-дублирующие ключи пропускаются, кандидаты для review копятся из всех заходов. - Промпт требует всегда заполнять title и original_title (дублировать при отсутствии оригинала / российском контенте; при неуверенности дублировать, не выдумывать). Разбор остаётся мягким к пустому original_title. - TMDB-поиск передаёт language (по умолчанию ru-RU, настраивается [metadata.tmdb].language); original_title не зависит от локали. - Нормализация названий сводит ё→е. Инварианты не ослаблены: авто только при подтверждённом единичном матче + структурной валидации + согласованности сигналов. Capability recognition впервые перенесена в OpenSpec; change архивирован. 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, в которые раскладываем.