- имя раздачи нормализуется на границе разбора: вырожденное `-` (metainfo.NoName) даёт пустое имя, пробельное схлопывается — сентинел больше не доходит ни до контекста распознавания, ни до source_ref, ни до подсказки вывода имени - контракт «на любом пути ошибки приёма результат нулевой» объявлен в ingest и удерживается структурно; три транспорта перестали обещать идентификатор, которого нет, и коррелируют отказ по request_id - scoped-логгер загрузки ставится до вызова внешнего сервиса в семи командах воркера — записи об отказе qBittorrent и метабаз получили download_id и infohash; граница разбора bencode записана в docs/research
38 lines
3.0 KiB
Markdown
38 lines
3.0 KiB
Markdown
# Разведка
|
||
|
||
Наблюдения за внешним миром: что реально шлёт источник, чем документация формата
|
||
расходится с практикой и как ведут себя наши разборщики и зависимости на границе
|
||
формата. Источник истины — этот каталог, а не чужая документация.
|
||
|
||
Наблюдение о чужом **коде** живёт здесь наравне с наблюдением о чужих
|
||
**данных**, но у него есть срок годности: такая записка обязана называть версию
|
||
зависимости и условие пересмотра, потому что протухает от обновления `go.mod`, а
|
||
не от смены формата.
|
||
|
||
**Каждый вывод — с числами и командой или условиями, которыми получен**, чтобы
|
||
его можно было перепроверить. Число без провенанса проход обязан читать как
|
||
условие, а не как замер. Число, чей источник по ссылке не подтвердился, не
|
||
выбрасывается и не переписывается по догадке — остаётся с пометкой «расходится
|
||
с источником: там <что нашли>».
|
||
|
||
## Как снималось
|
||
|
||
Наблюдения снимались вручную, по ходу разработки, на домашнем контуре: реальные
|
||
сообщения торрент-бота в Telegram, реальные ответы qBittorrent WebUI API и
|
||
LLM-эндпоинта на живых раздачах. Автоматического сбора и корпуса кейсов **нет** —
|
||
и не планируется: размеченный корпус решено не собирать
|
||
(`../tasks/REJECTED.md`, 2026-08-06). Числа здесь единичные и приведены как
|
||
условия, а не как статистика.
|
||
|
||
Зафиксированные образцы чужих форматов лежат прямо в тестах пакета-разборщика —
|
||
там они заодно и проверяются; где именно и почему без каталога `testdata/`, см.
|
||
[CLAUDE.md](../../CLAUDE.md) → «Запреты».
|
||
|
||
## Записи
|
||
|
||
- [torrent-bot-message.md](torrent-bot-message.md) — формат сообщения
|
||
торрент-бота, из которого приходит magnet и контекст.
|
||
- [torrent-bencode-limits.md](torrent-bencode-limits.md) — границы разбора
|
||
`.torrent` в `anacrolix/torrent`: аллокация по объявленной длине строки,
|
||
паники разбора, отсутствие «имени-заглушки». Проверено на `v1.61.0`.
|