# Разведка

Наблюдения за внешним миром: что реально шлёт источник, чем документация формата
расходится с практикой и как ведут себя наши разборщики и зависимости на границе
формата. Источник истины — этот каталог, а не чужая документация.

Наблюдение о чужом **коде** живёт здесь наравне с наблюдением о чужих
**данных**, но у него есть срок годности: такая записка обязана называть версию
зависимости и условие пересмотра, потому что протухает от обновления `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`.
- [tvdb-search-translations.md](tvdb-search-translations.md) — переводы в ответе
  поиска TheTVDB v4: карта `translations`, параметр `language` как фильтр
  выдачи, вырожденные значения. Сверено по swagger `4.7.10`, **живым прогоном
  не подтверждено**.
