docs: перевод документации на канон av-dev

- Раскладка docs/ приведена к канону 2: заведены passport/architecture/
  database/security/review и research; docs/specs, drafts, backlog, review/
  и BRIEF.md разобраны и удалены, беклог переехал в docs/tasks (34 задачи,
  6 целей, слаги на английский).
- Нарративы specs удалены как дубли openspec-спек после поимённой сверки;
  остаток заведён задачами (редактор маппинга ревью, крайние случаи
  именования), отказ от сущности title промоутнут в ADR.
- Проектные копии агентов и скиллов ревью/пайплайна удалены в пользу
  плагинов av-dev-pm и av-dev-pipeline; в task gate добавлен шаг canon
  вместо er-schema.
This commit is contained in:
av
2026-08-04 09:27:26 +03:00
parent 08bef2cac0
commit 42d5b73a04
128 changed files with 1606 additions and 4889 deletions
+75
View File
@@ -0,0 +1,75 @@
# Формат сообщения торрент-бота
Основной способ добавления загрузки — переслать в jellybit сообщение стороннего
торрент-бота (`exfreedomist`, поиск по rutracker и соседним трекерам). Из
сообщения берутся **источник** (magnet) и **контекст** для распознавания. Формат
чужой, ничем не документирован и может измениться без предупреждения.
**Провенанс.** Образец снят вручную из личного чата Telegram (сообщение
датировано 2026-03-21) и зафиксирован в [BRIEF.md] проекта; второй образец,
меньшего размера, живёт константой `botMessage` в
`internal/tgbot/parse_test.go` и проверяется тестами разборщика. Статистики по
вариантам формата нет — наблюдений всего два, и это условие, а не замер.
[BRIEF.md]: перенесён в [../passport.md](../passport.md); полный текст образца —
ниже и в истории git.
## Образец
```
[1] #6514485 [rutracker], 2026-03-21 (https://hashurl.ru/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…):
Дюна: Часть вторая / Dune: Part Two (Дени Вильнёв / Denis Villeneuve) [2024, США, Канада, фантастика, WEB-DL 2160p, HDR10+, Dolby Vision] Dub (Bravo Records Georgia, RHS, Jaskier, HDrezka) + MVO (LostFilm, TVShows, Jaskier) + AVO (Сербин, Яроцкий) + (Ukr) + Original (Eng) + Sub (Rus, Eng, Ukr)
✅ (проверено) | 34.82 GB
magnet:?xt=urn:btih:541ADCFF3B6DD5DBA7088EA83317D9D6FAC331D6&tr=http%3A%2F%2Fbt.t-ru.org%2Fann%3Fmagnet&dn=rutracker-topic-6514485
Открыть magnet в вашем клиенте (https://hashurl.ru/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…)
или получить .torrent: /tr_5c054
Оцените раздачу:
👍: /g_eabdce или 👎🏿: /r_eabdce
[список файлов] (https://download.exfreedomist.com/files/541ADCFF3B6DD5DBA7088EA83317D9D6FAC331D6)
Следить: /us_5c054
Добавить в закладки: /mka_96423
cправка: /help, index (https://exfreedomist.com/stats/)
```
## Что из этого наблюдается
- **Заголовок строки 1** — порядковый номер выдачи, `#<topic-id>`, имя трекера в
квадратных скобках, дата раздачи и ссылка-редирект `hashurl.ru` с JWT в пути.
Токен в ссылке **имеет срок жизни** (`exp` в payload) — как долгоживущий
идентификатор он не годится.
- **Строка описания** — самый ценный кусок: локализованное название, оригинальное
название через `/`, режиссёр в скобках (тоже через `/`), затем блок в
квадратных скобках `[год, страны, жанры, качество, HDR…]` и перечисление
дорожек и субтитров. Именно она уходит контекстом в распознавание.
- **Разделитель `/`** используется одновременно для пары «локализованное /
оригинальное» и для пары «имя режиссёра кириллицей / латиницей». По позиции
они не различаются — только по тому, что вторая пара стоит в скобках.
- **magnet отдельной строкой**, с `dn=rutracker-topic-<id>` — то есть `dn`
здесь **не** содержит названия фильма и как имя раздачи бесполезен.
Инфохэш в magnet — v1, uppercase hex; нормализуем в lowercase.
- **`.torrent` не приложен** — предлагается командой бота (`/tr_…`), то есть
вторым шагом в чужом чате. Поэтому источник, приходящий этим путём, —
практически всегда magnet.
- **Размер раздачи** в человекочитаемом виде (`34.82 GB`) и отметка
«✅ (проверено)».
- **Команды бота** (`/g_…`, `/r_…`, `/us_…`, `/mka_…`, `/help`) и ссылка на
список файлов — шум для распознавания, но безвредный: попадают в контекст как
есть.
- Весь текст — **недоверенный вход**: он полностью составляется чужим ботом по
данным трекера и уезжает в промпт LLM. См. [../security.md](../security.md).
## Чего не знаем
- Насколько формат стабилен: наблюдений два, оба от одного бота, разница между
ними — только в наличии строки «сохранённая копия описания раздачи».
- Как выглядит сообщение для сериала-сезонника и для аниме — образцов не
снимали, а именно на них строится самый сложный случай раскладки.
- Что бот присылает при неудачном поиске и при слишком длинном описании
(обрезка Telegram — 4096 символов на сообщение).