sprint: набран спринт 2026-08-06 под цель распознавания

- в наборе шесть задач: локаль TVDB и confidence-гейт под цель, плюс баги и
  техдолг помимо неё
- взятым дописаны разделы своего типа: «Затрагивает», критерии с оракулами,
  воспроизведение
- решены развилки: оба расхождения код↔спека правятся спекой (и потому стали
  chore), опрос qBittorrent тормозится бэкоффом до минутного потолка
This commit is contained in:
av
2026-08-06 13:57:33 +03:00
parent d2d386945e
commit f42db0a275
8 changed files with 197 additions and 65 deletions
+23 -1
View File
@@ -3,7 +3,6 @@
- **Тип:** chore
- **Категория:** Ядро продукта
- **Зачем:** косметика приёма: NoName в контексте, устаревшие комментарии, лог, bencode-аллокации _(ревью 2026-07-08)_
- **Теги:** goal:state-integrity
Ревью Fable 2026-07-08 (приём). Косметические нити.
@@ -16,3 +15,26 @@ N4 — qbt.go:246 логирует «Fails.» со счётчиками, но qB
N5 — anacrolix bencode (v1.61.0, bencode/decode.go:17,250) аллоцирует до MaxStrLen (~128MiB) на объявленную строку до чтения — крафт-8MiB-торрент может форсить транзиентные ~128MiB аллокации при metainfo.Load. Ограничено и завершается ошибкой; на umbar приемлемо, но знать стоит. (files()-panic-guard torrent.go НЕ покрывает Load/UnmarshalInfo/HashBytes, но panic-путей там не найдено.)
Вердикт: простые фиксы/принять.
## Затрагивает
- `internal/torrent/torrent.go``Context()` и фильтр NoName-сентинела «-»;
- `internal/httpapi/httpapi.go` и `internal/tgbot/bot.go` — устаревшие
комментарии про непустой `DownloadID` на пути ошибки;
- `internal/qbt/qbt.go` — лог `Fails.` без причины;
- N5 (аллокации bencode в `anacrolix/torrent`) — граница чужой библиотеки,
правке не подлежит: исход пункта — запись наблюдения, а не код.
## Критерии приёмки
- Для безымянного торрента `Context()` не отдаёт «-» как название — поле пустое
(оракул: тест разбора на фикстуре безымянного торрента в
`internal/torrent`).
- Комментарии в `httpapi` и `tgbot` описывают фактическое поведение `Ingest`:
на любом пути ошибки возвращается пустой `Result`, корреляция идёт по
`request_id` (оракул: чтение диффа на ревью — механического оракула нет).
- Лог неудачного добавления в qBittorrent несёт инфохэш для корреляции (оракул:
тест клиента с подставным сервером, проверяющий поля записи).
- Наблюдение про аллокации bencode до `MaxStrLen` записано в
`docs/research/` с провенансом либо явно отклонено строкой в теле задачи
(оракул: `task gate`, шаг канона).