закрыта задача ingest-nits
This commit is contained in:
@@ -1,40 +0,0 @@
|
||||
# 🧹 Закрыть мелочи приёма: NoName в контексте, устаревшие комментарии, лог без причины, bencode-аллокации (N1, N3, N4, N5)
|
||||
|
||||
- **Тип:** chore
|
||||
- **Категория:** Ядро продукта
|
||||
- **Зачем:** косметика приёма: NoName в контексте, устаревшие комментарии, лог, bencode-аллокации _(ревью 2026-07-08)_
|
||||
|
||||
Ревью Fable 2026-07-08 (приём). Косметические нити.
|
||||
|
||||
N1 — torrent.go:114: Context() включает NoName-сентинел «-» как строку-название (name != "" проходит); ingest.parse фильтрует «-» только для source_ref (ingest.go:160-162). Одна грязная строка контекста для безымянных торрентов. Фикс: фильтровать «-» и в Context().
|
||||
|
||||
N3 — устаревшие комментарии. httpapi.go:574-577 и tgbot/bot.go:256-258 утверждают, что res.DownloadID может быть непуст при ошибке приёма («сбой после создания задачи, напр. qbit»). После fast-catch рефактора Ingest возвращает Result{} на КАЖДОМ пути ошибки (ingest.go:74-75,86,106-107) → корреляция всегда падает на request_id / без ключа. Фикс: поправить комментарии.
|
||||
|
||||
N4 — qbt.go:246 логирует «Fails.» со счётчиками, но qBittorrent не даёт причину; вместе с F2 оператор не отличит «дубль» от «битый файл». Идея: логировать хеши/первые байты для корреляции.
|
||||
|
||||
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`, шаг канона).
|
||||
Reference in New Issue
Block a user