tasks: выкинуты задачи про сбор базы человеком
- закрыты few-shot на правках человека и eval-харнес с размеченным корпусом: направление — тюнинг автоматического распознавания без участия человека - цель распознавания переписана: точность видна по рабочему потоку, а не по фиксированному корпусу - поправлены ссылки на удалённые задачи в CLAUDE.md, review.md, research/README.md и в задаче про confidence-гейт
This commit is contained in:
@@ -111,8 +111,9 @@ Go 1.26, один статический бинарь (`CGO_ENABLED=0`). Module
|
|||||||
проверяет проход `ops` рассуждением, и это идёт в границы покрытия.
|
проверяет проход `ops` рассуждением, и это идёт в границы покрытия.
|
||||||
- Ничего не гоняется против **живого** qBittorrent, LLM и метабаз:
|
- Ничего не гоняется против **живого** qBittorrent, LLM и метабаз:
|
||||||
интеграционные тесты за env-гейтами, запускает человек вручную.
|
интеграционные тесты за env-гейтами, запускает человек вручную.
|
||||||
- Качество распознавания гейтом не проверяется вовсе — нужен корпус кейсов
|
- Качество распознавания гейтом не проверяется вовсе и проверяться не будет:
|
||||||
(задача `recognition-eval-harness`).
|
размеченный корпус решено не собирать (`docs/tasks/REJECTED.md`,
|
||||||
|
2026-08-06). Сдвиг точности виден только по рабочему потоку.
|
||||||
|
|
||||||
## Запреты
|
## Запреты
|
||||||
|
|
||||||
|
|||||||
@@ -14,8 +14,9 @@
|
|||||||
Наблюдения снимались вручную, по ходу разработки, на домашнем контуре: реальные
|
Наблюдения снимались вручную, по ходу разработки, на домашнем контуре: реальные
|
||||||
сообщения торрент-бота в Telegram, реальные ответы qBittorrent WebUI API и
|
сообщения торрент-бота в Telegram, реальные ответы qBittorrent WebUI API и
|
||||||
LLM-эндпоинта на живых раздачах. Автоматического сбора и корпуса кейсов **нет** —
|
LLM-эндпоинта на живых раздачах. Автоматического сбора и корпуса кейсов **нет** —
|
||||||
это отдельная задача (eval-харнес распознавания), до неё числа здесь единичные
|
и не планируется: размеченный корпус решено не собирать
|
||||||
и приведены как условия, а не как статистика.
|
(`../tasks/REJECTED.md`, 2026-08-06). Числа здесь единичные и приведены как
|
||||||
|
условия, а не как статистика.
|
||||||
|
|
||||||
Зафиксированные образцы чужих форматов лежат прямо в тестах пакета-разборщика —
|
Зафиксированные образцы чужих форматов лежат прямо в тестах пакета-разборщика —
|
||||||
там они заодно и проверяются; где именно и почему без каталога `testdata/`, см.
|
там они заодно и проверяются; где именно и почему без каталога `testdata/`, см.
|
||||||
|
|||||||
+3
-1
@@ -164,7 +164,9 @@ merge-раскладка при повторном добавлении разд
|
|||||||
- Завязка внешних потребителей (Jellyfin, закладки, чужие ссылки) на текущее
|
- Завязка внешних потребителей (Jellyfin, закладки, чужие ссылки) на текущее
|
||||||
поведение.
|
поведение.
|
||||||
- Качество распознавания как таковое: правильно ли LLM определил фильм — вопрос
|
- Качество распознавания как таковое: правильно ли LLM определил фильм — вопрос
|
||||||
eval-харнеса и корпуса кейсов, а не ревью кода.
|
тюнинга модели и промпта, а не ревью кода. Размеченный корпус, по которому это
|
||||||
|
можно было бы судить числом, решено не собирать (`tasks/REJECTED.md`,
|
||||||
|
2026-08-06).
|
||||||
- Суждение «этой функциональности не должно существовать».
|
- Суждение «этой функциональности не должно существовать».
|
||||||
|
|
||||||
**Перестали проверять сознательно** — пересматривается первым, как только
|
**Перестали проверять сознательно** — пересматривается первым, как только
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
- [✨ Принимать ссылку на .torrent и скачивать файл самим (нужен SSRF-гард)](items/torrent-url-fetch.md) — magnet и .torrent-файл приняты; остался фетч .torrent по URL (нужен SSRF-гард)
|
- [✨ Принимать ссылку на .torrent и скачивать файл самим (нужен SSRF-гард)](items/torrent-url-fetch.md) — magnet и .torrent-файл приняты; остался фетч .torrent по URL (нужен SSRF-гард)
|
||||||
- [✨ Узаконить confidence-гейт авто-раскладки в спеке и сделать его выключаемым (дефолт 0.7)](items/auto-link-confidence-gate.md) — Решено (B): гейт оставляем как доп. проверку на ревью — выключаемый порог, дефолт 0.85→0.7, записать в спеку
|
- [✨ Узаконить confidence-гейт авто-раскладки в спеке и сделать его выключаемым (дефолт 0.7)](items/auto-link-confidence-gate.md) — Решено (B): гейт оставляем как доп. проверку на ревью — выключаемый порог, дефолт 0.85→0.7, записать в спеку
|
||||||
- [✨ Докладывать недостающие эпизоды merge-раскладкой при повторной заливке](items/merge-incremental-redownload.md) — повторная заливка сериала целиком должна доложить недостающие эпизоды merge-раскладкой, не трогая существующие ссылки — блокирует типовой сценарий свежих сериалов
|
- [✨ Докладывать недостающие эпизоды merge-раскладкой при повторной заливке](items/merge-incremental-redownload.md) — повторная заливка сериала целиком должна доложить недостающие эпизоды merge-раскладкой, не трогая существующие ссылки — блокирует типовой сценарий свежих сериалов
|
||||||
- [✨ Подмешивать прошлые правки человека в промпт распознавания (few-shot)](items/learn-from-user-corrections.md) — правки человека (матч/тип/нумерация) не переиспользуются — few-shot из прошлых ревью поднял бы точность на «своих» трекерах без смены модели
|
|
||||||
- [🐞 Связать v1/v2-хеши одного торрента и не доверять паре xt из магнета (F4, F5)](items/infohash-identity-integrity.md) — split v1/v2 идентичность и крафт-магнет отравляют владение инфохэшами _(ревью 2026-07-08)_
|
- [🐞 Связать v1/v2-хеши одного торрента и не доверять паре xt из магнета (F4, F5)](items/infohash-identity-integrity.md) — split v1/v2 идентичность и крафт-магнет отравляют владение инфохэшами _(ревью 2026-07-08)_
|
||||||
- [🧹 Закрыть мелочи приёма: NoName в контексте, устаревшие комментарии, лог без причины, bencode-аллокации (N1, N3, N4, N5)](items/ingest-nits.md) — косметика приёма: NoName в контексте, устаревшие комментарии, лог, bencode-аллокации _(ревью 2026-07-08)_
|
- [🧹 Закрыть мелочи приёма: NoName в контексте, устаревшие комментарии, лог без причины, bencode-аллокации (N1, N3, N4, N5)](items/ingest-nits.md) — косметика приёма: NoName в контексте, устаревшие комментарии, лог, bencode-аллокации _(ревью 2026-07-08)_
|
||||||
- [✨ Слать живые обновления через SSE вместо htmx-поллинга](items/sse-live-updates.md) — живые обновления на htmx-поллинге дают задержку и холостые запросы — SSE убрал бы то и другое (поллинг работает, поэтому улучшение, не блокер)
|
- [✨ Слать живые обновления через SSE вместо htmx-поллинга](items/sse-live-updates.md) — живые обновления на htmx-поллинге дают задержку и холостые запросы — SSE убрал бы то и другое (поллинг работает, поэтому улучшение, не блокер)
|
||||||
@@ -42,7 +41,6 @@
|
|||||||
- [🧹 Откалибровать проходы ревью и завести ревьювер наименований](items/quality-review-agents.md) — конвейер ревью переехал в плагин `av-dev-pipeline`; осталась калибровка проходов на этом проекте и ревьювер наименований (ждёт словарь единого языка)
|
- [🧹 Откалибровать проходы ревью и завести ревьювер наименований](items/quality-review-agents.md) — конвейер ревью переехал в плагин `av-dev-pipeline`; осталась калибровка проходов на этом проекте и ревьювер наименований (ждёт словарь единого языка)
|
||||||
- [✨ Закрыть веб-UI авторизацией, когда доверенной LAN станет мало](items/web-ui-auth.md) — для v1 решено без авторизации (доверенная LAN, опц. allowlist подсетей) — задел на случай, если понадобится защита
|
- [✨ Закрыть веб-UI авторизацией, когда доверенной LAN станет мало](items/web-ui-auth.md) — для v1 решено без авторизации (доверенная LAN, опц. allowlist подсетей) — задел на случай, если понадобится защита
|
||||||
- [🧹 Бэкапить SQLite по расписанию с ротацией](items/sqlite-backup.md) — architecture требует бекапить data-том, но стратегия не описана — сбой или редеплой стирают всё in-flight состояние (проще, пока БД маленькая)
|
- [🧹 Бэкапить SQLite по расписанию с ротацией](items/sqlite-backup.md) — architecture требует бекапить data-том, но стратегия не описана — сбой или редеплой стирают всё in-flight состояние (проще, пока БД маленькая)
|
||||||
- [🧹 Завести eval-харнес распознавания: корпус кейсов и метрику точности](items/recognition-eval-harness.md) — смена модели или правка промпта распознавания сейчас вслепую — нет корпуса кейсов и метрики точности, регрессии не видно
|
|
||||||
- [✨ Проверять в healthcheck доступность qBittorrent, LLM и метабаз и показывать её в UI](items/deep-healthcheck-dependencies.md) — /healthz проверяет только сам сервис — недоступность qBittorrent/LLM/метабазы видна лишь по застрявшим задачам, нет readiness и бейджа в UI
|
- [✨ Проверять в healthcheck доступность qBittorrent, LLM и метабаз и показывать её в UI](items/deep-healthcheck-dependencies.md) — /healthz проверяет только сам сервис — недоступность qBittorrent/LLM/метабазы видна лишь по застрявшим задачам, нет readiness и бейджа в UI
|
||||||
- [✨ Хранить историю переходов загрузки отдельной таблицей](items/download-transition-history.md) — хранится только текущий статус загрузки — разбор «как сюда попали» идёт по логам сервера, нет таблицы истории переходов
|
- [✨ Хранить историю переходов загрузки отдельной таблицей](items/download-transition-history.md) — хранится только текущий статус загрузки — разбор «как сюда попали» идёт по логам сервера, нет таблицы истории переходов
|
||||||
- [🧹 Кэшировать ответы метабаз с TTL (и опционально LLM)](items/metadata-cache.md) — повторные и ретраящиеся прогоны бьют TMDB/TVDB/TVMaze одним запросом — кэш с TTL сэкономил бы лимиты и ускорил «Распознать заново»
|
- [🧹 Кэшировать ответы метабаз с TTL (и опционально LLM)](items/metadata-cache.md) — повторные и ретраящиеся прогоны бьют TMDB/TVDB/TVMaze одним запросом — кэш с TTL сэкономил бы лимиты и ускорил «Распознать заново»
|
||||||
|
|||||||
@@ -5,3 +5,5 @@
|
|||||||
есть коммит. Это первое место, куда смотрит дедупликация при заведении.
|
есть коммит. Это первое место, куда смотрит дедупликация при заведении.
|
||||||
|
|
||||||
<!-- - ГГГГ-ММ-ДД `slug` — Заголовок. Причина: … Была секция: … -->
|
<!-- - ГГГГ-ММ-ДД `slug` — Заголовок. Причина: … Была секция: … -->
|
||||||
|
- 2026-08-06 `learn-from-user-corrections` — ✨ Подмешивать прошлые правки человека в промпт распознавания (few-shot). Причина: решено не собирать базу правок человека: направление — тюнинг автоматического распознавания без участия человека. Была секция: ядро продукта.
|
||||||
|
- 2026-08-06 `recognition-eval-harness` — 🧹 Завести eval-харнес распознавания: корпус кейсов и метрику точности. Причина: решено не собирать размеченный корпус руками: направление — тюнинг автоматического распознавания без участия человека. Была секция: инфраструктура.
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
## Направления
|
## Направления
|
||||||
|
|
||||||
- [🎯 Раздача узнаётся верно, и точность этого измерима](items/recognition-accuracy.md) — смена модели или правка промпта сегодня вслепую — нет ни метрики, ни способа переиспользовать уже сделанные человеком правки
|
- [🎯 Раздача узнаётся верно без подсказок человека](items/recognition-accuracy.md) — распознавание ошибается молча и правдоподобно, а смена модели или правка промпта идёт вслепую — сдвига точности не видно ни до, ни после
|
||||||
- [🎯 Раскладывается не только типовая раздача](items/complex-releases.md) — типовая раздача раскладывается, а всё, что сложнее одного сезона одного тайтла, упирается в ручной разбор
|
- [🎯 Раскладывается не только типовая раздача](items/complex-releases.md) — типовая раздача раскладывается, а всё, что сложнее одного сезона одного тайтла, упирается в ручной разбор
|
||||||
- [🎯 Раздача приносится и подтверждается из любого транспорта](items/ingest-and-review-interfaces.md) — путь «принести раздачу и подтвердить догадку» упирается в незакрытые куски интерфейсов, а не в логику
|
- [🎯 Раздача приносится и подтверждается из любого транспорта](items/ingest-and-review-interfaces.md) — путь «принести раздачу и подтвердить догадку» упирается в незакрытые куски интерфейсов, а не в логику
|
||||||
- [🎯 По записи загрузки видно, как она сюда попала](items/state-integrity.md) — известные окна рассинхрона и потери маркеров: каждое по отдельности самоисцеляется, вместе — источник необъяснимых состояний
|
- [🎯 По записи загрузки видно, как она сюда попала](items/state-integrity.md) — известные окна рассинхрона и потери маркеров: каждое по отдельности самоисцеляется, вместе — источник необъяснимых состояний
|
||||||
|
|||||||
@@ -44,12 +44,13 @@
|
|||||||
задача не должна.
|
задача не должна.
|
||||||
5. **Тесты:** `decide` с `threshold=0` (гейт выключен, авто при чистых 1–3);
|
5. **Тесты:** `decide` с `threshold=0` (гейт выключен, авто при чистых 1–3);
|
||||||
confidence ниже/выше порога при выполненных 1–3.
|
confidence ниже/выше порога при выполненных 1–3.
|
||||||
6. Точное число порога откалибровать позже — для этого есть задача
|
6. Точное число порога откалибровать позже по рабочему потоку — сколько раздач
|
||||||
[eval-харнес распознавания](recognition-eval-harness.md) (сейчас гейтим по
|
ушло в ревью и сколько из них пришлось поправить. Размеченный корпус, по
|
||||||
неизмеренному сигналу).
|
которому порог можно было бы подобрать заранее, решено не собирать
|
||||||
|
(`../REJECTED.md`, 2026-08-06), так что первое значение остаётся оценкой.
|
||||||
|
|
||||||
Оформить как OpenSpec-change (дельта `recognition` + правки
|
Оформить как OpenSpec-change (дельта `recognition` + правки
|
||||||
`validate.go`/`recognize.go`/`config`).
|
`validate.go`/`recognize.go`/`config`).
|
||||||
|
|
||||||
Связано: openspec/specs/recognition, ADR-2026-06-13-auto-link-requires-db-match,
|
Связано: openspec/specs/recognition, ADR-2026-06-13-auto-link-requires-db-match,
|
||||||
[eval-харнес](recognition-eval-harness.md), пакет recognize.
|
пакет recognize.
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
# ✨ Подмешивать прошлые правки человека в промпт распознавания (few-shot)
|
|
||||||
|
|
||||||
- **Тип:** feature
|
|
||||||
- **Категория:** Ядро продукта
|
|
||||||
- **Зачем:** правки человека (матч/тип/нумерация) не переиспользуются — few-shot из прошлых ревью поднял бы точность на «своих» трекерах без смены модели
|
|
||||||
- **Теги:** goal:recognition-accuracy
|
|
||||||
|
|
||||||
Когда человек поправил матч, тип или нумерацию — сохранять это как пример и подмешивать похожие в будущие промпты. Системно повышает точность на «твоих» трекерах и форматах имён без смены модели. Развитие идеи многоступенчатой верификации, но дешевле: учимся на уже собранных hint/override.
|
|
||||||
|
|
||||||
Связано: specs/recognition.md (конвейер, промпт), «Многоступенчатая верификация», specs/architecture.md → «Хранилище» (hint, override).
|
|
||||||
@@ -1,12 +1,14 @@
|
|||||||
# 🎯 Раздача узнаётся верно, и точность этого измерима
|
# 🎯 Раздача узнаётся верно без подсказок человека
|
||||||
|
|
||||||
- **Тип:** goal
|
- **Тип:** goal
|
||||||
- **Секция:** Направления
|
- **Секция:** Направления
|
||||||
- **Зачем:** смена модели или правка промпта сегодня вслепую — нет ни метрики, ни способа переиспользовать уже сделанные человеком правки
|
- **Зачем:** распознавание ошибается молча и правдоподобно, а смена модели или правка промпта идёт вслепую — сдвига точности не видно ни до, ни после
|
||||||
- **Теги:** decomposed
|
- **Теги:** decomposed
|
||||||
|
|
||||||
Ради чего: распознавание — единственное место, где система может ошибиться молча и правдоподобно. Сегодня её точность не измеряется ничем, кроме впечатления, а накопленные правки человека пропадают.
|
Ради чего: распознавание — единственное место, где система может ошибиться молча и правдоподобно. Сегодня о его точности судят по впечатлению, и сдвиг от смены модели или правки промпта заметен только задним числом.
|
||||||
|
|
||||||
|
Размеченный корпус и обучение на правках человека из этой цели исключены сознательно (`REJECTED.md`, 2026-08-06): базу руками не собираем, точность поднимаем тюнингом автоматического распознавания.
|
||||||
|
|
||||||
## Завершение
|
## Завершение
|
||||||
|
|
||||||
Достигнута, когда точность распознавания меряется числом на фиксированном корпусе реальных раздач, смена модели или правка промпта прогоняются через этот корпус до выкатки, а решение auto/review опирается на измеримую силу совпадения, а не на самооценку модели.
|
Достигнута, когда решение auto/review опирается на измеримую силу совпадения с записью метабазы, а не на самооценку модели, и доля раздач, ушедших в ревью или поправленных после авто-раскладки, видна по рабочему потоку и не растёт от версии к версии.
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
# 🧹 Завести eval-харнес распознавания: корпус кейсов и метрику точности
|
|
||||||
|
|
||||||
- **Тип:** chore
|
|
||||||
- **Категория:** Инфраструктура
|
|
||||||
- **Зачем:** смена модели или правка промпта распознавания сейчас вслепую — нет корпуса кейсов и метрики точности, регрессии не видно
|
|
||||||
- **Теги:** goal:recognition-accuracy
|
|
||||||
|
|
||||||
Распознавание — ядро продукта, но смена модели или правка промпта сейчас вслепую: регрессий не видно. Нужен корпус размеченных кейсов (русские релизы, аниме, сезон-паки, репаки, спецвыпуски) и прогон распознавания по нему с метрикой точности (тип/название/год/нумерация). Тогда можно сравнивать LLM-провайдеры и версии промпта по числам. Прогон — отдельной командой (jellybit eval или тестом), на фикстурах, без реального qBittorrent.
|
|
||||||
|
|
||||||
Связано: specs/recognition.md (конвейер, модель уверенности), пакет recognize.
|
|
||||||
Reference in New Issue
Block a user