49 KiB
Отчёт полигона: ПАКЕТ 5 — факты ToS/AUP под accepts_labels + семь док-синк пингов
Ревью-шапка оркестратора №8 (25.07; ПРИНЯТ —
D39.29). 0 блокеров. Приёмка — не чтением: поднял свои копии первоисточников по трём клеткам с наибольшей ставкой, все три подтвердились. mistral/sexually-explicit ALLOWED —legal.mistral.aiHTTP 200, Effective: June 11, 2026 совпадает, названы CSAM/NCII/sexual services, взрослая художественная эротика НЕ названа, широкого контентного катч-олла в документе нет ⇒contrastive-absenceзаконна; насилие — глагол-пропаганда ⇒ UNCLEAR верно. xai — прямойx.aiдал 403 у меня тоже, Waybackid_200, Effective: June 26, 2026 совпадает,grep -c -i violen= 0 по МОЕЙ копии ⇒ самоопровержение сессии (ALLOWED→UNCLEAR) сделано правильно; по эротике названы только реальные лица и дети ⇒ ALLOWED стоит. zai FORBIDDEN оба — Last Update: April 14, 2026, п. f) «obscene, pornographic, violent, murderous…» плоско, п. g) «sexually explicit» ⇒ D39.27 п.7 закрыт: glm-5 под лейблом недоступен. Принимаю доктрину целиком, включая решение против собственного независимого контура (openai/violence): последовательность правила про катч-олл дороже одной выигранной клетки, цена низка, клетка переворачивается одной правкой данных. Errata D14 п.1 (§5.3) принята — записана в D39.29, тело исторического блока не переписано (дисциплина D23.3). Мой добор к §5.1 (шире лейблов):zaiзапрещает «violent content» ПЛОСКО, а экспозиция уже состоялась — glm-арм (configs/pipeline-arm-glm.yaml, editorglm-5) гонялся живьём на 蛊真人 в rerun2 (D39.20, 0.589 по 56 играм). При этомglm-5.1вchains.defaultсегодня НЕдостижим (single-hop черезescalate_to;budget_usd: 0) ⇒ вектор — арм-конфиг, не цепочка. Операционное решение владельца. Моя рекомендация по §5.1 — синтез варианта 2 с аудит-следом: лейблviolenceмеханически НЕ заводить (статус-кво, под которым уже прошли exp10 и rerun2 — нового риска нет, книга едет), а интерпретацию «нейтральное изображение ≠ пропаганда» зафиксировать письменно в контракте за подписью владельца. Вариант 1 остаётся доступен одной правкой данных. Две строки данных (xai/mistral→[sexually-explicit]) готовы и ЖДУТ ПОДПИСИ владельца — до неё fail-closed. Восемь пингов блока B закрыты; пинг-1 дал живой факт (катовер исполнен, цены не изменились ⇒prices_checkedпродлевается без правки чисел — предложение бэкенду).
Сессия: полигон, 2026-07-25. Промт: docs/POLYGON_PACKAGE5_SESSION_PROMPT.md (выдан оркестратором №8).
Зона записи: eval/ + docs/experiments/ (+ этот отчёт). backend/ — read-only, НЕ тронут.
Коммитов не делал. git mv не делал. Платных вызовов к моделям не делал (только $0-листинг /models).
⚠ ПРИМЕНЕНИЕ СТРОК ДАННЫХ ТРЕБУЕТ ПОДПИСИ ВЛАДЕЛЬЦА
Ниже — ФАКТЫ первоисточников, а не юридическое заключение. Я фиксирую, что написано в договорах, и где текст не даёт однозначного чтения — говорю «не даёт». Решение «считать ли это правом» — 18+/юридическая ось, зона владельца. Ни одна строка не должна попасть в
backend/configs/models.yamlбез его подписи; применяет оркестратор.
Аддендумы по релею: за время сессии не поступало. Подтверждаю явной строкой, как требует промт.
§1. Метод
1.1 Что именно спрашивалось (ось не перепутана)
accepts_labels = ПРАВО отправить контент класса X на этот эндпойнт по ToS/AUP вендора. Это НЕ предсказание отказа. Оси разведены жёстко, и у нас есть свежий случай на каждую сторону: Gemini fail-closed PROHIBITED_CONTENT на графичной эротике (D22.6, wire-verified) — поведение фильтра при отсутствии соответствующего пункта договора в той же строгости; DeepSeek в exp11 переводил explicit-фрагменты против собственного ToS — готовность модели не даёт права. Поведенческих проб в пакете не было и не требовалось: это работа с документами.
Вопрос задавался дважды на вендора — отдельно по violence (художественное описание насилия в вымысле) и отдельно по sexually-explicit (художественное описание секса между взрослыми в вымысле). Классы, запрещённые везде и нам не нужные (CSAM, NCII, сексуализация несовершеннолетних), не исследовались как «право» — они использовались только как контрастная улика: если вендор выносит узкий подкласс отдельным пунктом, значит его перечень различающий.
1.2 Доктрина вердикта (моя, аргументирую — промт отдал её мне)
- FORBIDDEN — пункт прямо запрещает класс. Основание
explicit-prohibition. - ALLOWED —
explicit-permission/explicit-carveout/contrastive-absence: есть общий грант И перечень запретов, в котором соседний, более узкий класс той же семьи назван явно, а наш — нет. - UNCLEAR — всё остальное:
no-clause(класс не упомянут вовсе),ambiguous-term(пункт есть, но глагол/термин не даёт однозначного чтения),scope(непонятно, какой документ применим).
Три решения, которые я принял и на которых стоит вся таблица:
- Молчание документа само по себе НЕ даёт ALLOWED. Мы маршрутизируем по праву, fail-closed безопасен, гадать запрещено.
contrastive-absenceтребует именно контраста, а не тишины: должен быть назван более узкий сосед. Это стоило нам одного «красивого» ALLOWED (см. §5.2) — и правильно стоило. - Широкий катч-олл в том же документе убивает contrastive-absence. Если вендор отдельным пунктом запрещает что-то неопределённо-широкое («вредно для духовного здоровья», «иные применения, способные причинить социальный вред»), то отсутствие нашего класса в перечне уже ничего не доказывает. Именно это, а не «неисчерпаемость перечня» как таковая, разводит Kimi/OpenAI (UNCLEAR) и xAI/Mistral (ALLOWED по эротике).
- Различаю глагол-пропаганду и глагол-изображение. «promotes / incites / glorifies / facilitates violence» регулирует пропаганду насилия; «violent content» регулирует изображение. Это различение сами вендоры проводят в своих текстах (у OpenAI — буквально в соседних абзацах), и оно оказалось главной осью всей картины (§5.1).
1.3 Какие документы считались первоисточником
Брал всю цепочку, применимую к API-клиенту, а не одну страницу: головной ToS → API/Enterprise-договор → AUP/Usage Policy → инкорпорированные по ссылке политики. Каждому документу фиксировал scope — кому он адресован — и подпирал scope цитатой. Потребительские правила отделял от API-правил и при расхождении писал scope-divergence вместо того, чтобы выбирать удобное. Три места, где это оказалось решающим:
- xAI: контентные пункты про «18+ adult content» живут в консьюмерском ToS, в австралийском annex'е. К нам применим Enterprise ToS («these terms are for enterprise (business) users of the xAI API…»), в котором контентных пунктов ноль, плюс AUP, который явно покрывает всех («applies to anyone using our Service, including consumers, developers and businesses»).
- DeepSeek: контентных пунктов в Open Platform Terms of Service НЕТ; они в Terms of Use, которые Open Platform ToS §3.1 втягивает по ссылке. Это же вскрыло ошибку в нашем D-логе (§5.3).
- OpenAI: в договор через Services Agreement §17 инкорпорирована Sharing & publication policy 2022 года — документ старше действующих Usage Policies, но действующий, и бьющий ровно в наш сценарий публикации книги.
1.4 Добыча: команды (норма «заявление = команда», приёмка ре-ранит)
UA="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
# основной путь
curl -sS -L --compressed -m 45 -A "$UA" -H "Accept-Language: en-US,en;q=0.9" -o doc.html "<URL>"
# HTML -> текст (стандартный стриппер; для Next.js-страниц дополнительно раскодировался self.__next_f)
python3 -c "import html,re,sys; s=open(sys.argv[1],encoding='utf-8',errors='replace').read(); \
s=re.sub(r'(?is)<(script|style|noscript)[^>]*>.*?</\1>',' ',s); \
s=re.sub(r'(?i)<br\s*/?>|</(p|div|li|h[1-6]|tr|td|th|section)>','\n',s); \
s=re.sub(r'<[^>]+>',' ',s); s=html.unescape(s); \
s=re.sub(r'[ \t]+',' ',s); s=re.sub(r'\n\s*\n+','\n',s); print(s)" doc.html > doc.txt
# ДОКАЗАТЕЛЬСТВО дословности каждой цитаты
grep -c -F "<кусок цитаты>" doc.txt # принимается только 1+; 0 = цитаты не существует
Обходы, которые понадобились (все зафиксированы, потому что приёмке они понадобятся тоже):
| Препятствие | Обход | Провенанс |
|---|---|---|
x.ai, openai.com → HTTP 403 (Cloudflare; воспроизводится и через WebFetch) |
Wayback https://web.archive.org/web/<ts>id_/<url> (суффикс id_ = оригинальные байты) И живой https://r.jina.ai/<url>; цитата засчитана только при совпадении обоих |
xAI AUP — снимок 20260719182005; OpenAI Usage Policies — 20260724222421 |
ai.google.dev/gemini-api/terms → 302 в OAuth, curl умирает на 50 редиректах |
Wayback 20260725065834 + reader |
— |
mistral.ai/terms/usage-policy → HTTP 404, снимков в Wayback нет |
верный хост — legal.mistral.ai/terms/usage-policy (HTTP 200) |
найден поиском по домену; ⚠ 404 может быть edge-специфичным для нашего прокси |
| WebFetch режет цитату ~125 символами и переходит на пересказ | для цитат не использовался вовсе | — |
⚠ Timestamp снимка Wayback ≠ дата ревизии документа. В таблице везде стоит дата, которую объявляет САМ вендор.
1.5 Самопроверка исполнением (мандат владельца 12.07)
Целевой дефект-класс — овер-атрибуция (верная цитата у не того вендора / не того пункта / не той ревизии), поэтому проверка строилась в два независимых контура с разными исполнителями (author ≠ reviewer):
- Контур добычи: по одному агенту на вендора — поиск цепочки документов, дословные цитаты, вердикты пер-лейблу.
- Контур перечитки: по одному НЕЗАВИСИМОМУ агенту на вендора, с задачей сломать результат: пере-фетчить источник САМОСТОЯТЕЛЬНО, найти цитату своим
grep -F, проверить (а) вендора, (б) документ и его дату, (в) что цитата поддерживает ИМЕННО этот вердикт ИМЕННО для этого лейбла, (г) что вердикт не шире улики. - Мой собственный третий проход: я поднял свои копии всех первоисточников по всем семи вендорам и сам перечитал каждую цитату на месте. Итоговая батарея — 15 цитат,
grep -c -F= 1 по каждой, по моим файлам, а не по чужим.
Расхождение цитаты и вердикта — ожидаемый и ценный результат; найденное перечислено в §5. Ни один вердикт в таблице не стоит на цитате, которую я не нашёл сам.
§2. Таблица вердиктов
Дата проверки 2026-07-25. Пере-проверка: 2026-10-25 (квартально) и безусловно перед заводкой первой лейблованной книги.
| Провайдер | violence |
sexually-explicit |
Применимый первоисточник (объявленная вендором ревизия) |
|---|---|---|---|
| deepseek | UNCLEAR ambiguous-term |
FORBIDDEN | DeepSeek Terms of Use §3.4(5)/(6), Last Update: March 27, 2026 → втянут в API через Open Platform ToS §3.1, Effective date: April 29, 2026 |
| zai | FORBIDDEN | FORBIDDEN | Z.ai Terms of Use п. f)/g), Last Update: April 14, 2026 |
| kimi | UNCLEAR ambiguous-term |
UNCLEAR no-clause + катч-олл |
Terms of Service for Kimi OpenPlatform §3.1, Last Updated: May 27th, 2026 |
| xai | UNCLEAR no-clause |
ALLOWED contrastive-absence |
xAI AUP, Effective: June 26, 2026 + Enterprise ToS, Last Updated: May 12, 2026 |
| gemini | UNCLEAR ambiguous-term |
FORBIDDEN | Generative AI Prohibited Use Policy, Last Modified: December 17, 2024 → втянута Gemini API Additional ToS, Effective March 23, 2026 |
| openai | UNCLEAR ambiguous-term |
UNCLEAR ambiguous-term |
Usage Policies, Effective: October 29, 2025 + Sharing & publication policy, Updated: November 14, 2022 (инкорпорирована Services Agreement §17) |
| mistral | UNCLEAR ambiguous-term |
ALLOWED contrastive-absence |
Usage Policy, Effective: June 11, 2026 |
| local | UNCLEAR scope |
UNCLEAR scope |
вендор-API нет; веса Apache-2.0; Ollama Inc. ToS §4, Last updated: May 2026 |
Полные дословные цитаты по каждой клетке — docs/experiments/00-provider-quirks.md, секция «Право по ToS/AUP: провайдер × content-label». Здесь не дублирую, чтобы источник истины был один.
§3. Предложенные строки для backend/configs/models.yaml
Строки порождают ТОЛЬКО вердикты ALLOWED. UNCLEAR и FORBIDDEN не порождают ничего — молчание строки и есть fail-closed, и это верное состояние.
# providers:
xai:
accepts_labels: [sexually-explicit] # xAI AUP Effective 2026-06-26 + Enterprise ToS Last Updated 2026-05-12;
# запрещены только реальные лица и дети, взрослая художественная эротика не названа.
# violence НЕ включён: слова violen* в AUP 0 вхождений = чистое молчание.
mistral:
accepts_labels: [sexually-explicit] # Mistral Usage Policy Effective 2026-06-11; названы CSAM / NCII / sexual services,
# взрослая художественная эротика не названа. violence НЕ включён (§3 «glorifies violence»).
Всё. Остальные шесть провайдеров строк не получают:
deepseek,gemini— поsexually-explicitпрямой запрет, поviolenceнеясность;zai— прямой запрет по обоим лейблам;kimi,openai— неясность по обоим;local— вопрос применимости документа, решает владелец.
⚠ Обратите внимание на форму: обе предложенные строки дают эндпойнту право ТОЛЬКО на sexually-explicit. Это значит, что книга, помеченная [violence] или [violence, sexually-explicit], под fail-closed не поедет никуда. Почему так вышло и что с этим делать — §5.1.
§4. Полный список UNCLEAR: чего именно не хватило
| Клетка | Чего не хватило (конкретно) |
|---|---|
| deepseek / violence | Пункт §3.4(6) есть, но его глаголы — facilitates, promotes, incites or glorifies — регулируют пропаганду. Батальная сцена в вымысле насилию не способствует и не подстрекает, но «glorifies» текстуально способно её задеть, а границы «вымысел / реальность» документ не проводит. Нужно решение, а не факт. |
| kimi / violence | §3.1(5) promote violence — та же пропаганда-конструкция; плюс перечень введён словами «For example», плюс §3.1(1) — широкий катч-олл. |
| kimi / sexually-explicit | Класс не назван вовсе. Но contrastive-absence не проходит: §3.1(1) прямо запрещает «purposes that may have a harmful impact on … spiritual health or that violate ethical principles» — термины не определены и способны накрыть что угодно. |
| xai / violence | Слова violen* в AUP 0 вхождений — ни запрета, ни разрешения, ни узкого соседа. Чистое молчание. Молчание по доктрине не даёт ALLOWED (§1.2 п.1). |
| gemini / violence | Буллит Violence or the incitement of violence. сидит под стемом content that facilitates: — грамматически пропаганда; но заголовок раздела говорит «Do not engage in … violent … activities». Текст держит оба чтения одинаково хорошо. Художественная оговорка есть, но это We may make exceptions — дискреция вендора, не выданное право. |
| openai / violence | Во «взрослом» перечне стоит terrorism or violence в конструкции «use our services FOR …» (деяние), а «violent content» упомянут ТОЛЬКО в минорной секции — это сильный довод за ALLOWED. Убивает его инкорпорированная Sharing & publication policy с открытым хвостом or other uses that may cause social harm. |
| openai / sexually-explicit | Действующие Usage Policies (29.10.2025) взрослый секс НЕ запрещают. Но Sharing & publication policy (14.11.2022), инкорпорированная §17 и адресованная буквально публикации книги, сделанной через API, ставит условием, что темы are not related to adult content — термин не определён нигде у OpenAI. |
| local / оба | Наружу ничего не уходит, лицензия весов (Apache-2.0) области применения не ограничивает (в LICENSE 0 вхождений контентных терминов). Остаётся Ollama ToS §4 «Transmit harmful, offensive, or illegal content»: «offensive» не определён, а «Service» определён через «software» — непонятно, накрывает ли пункт локальный ollama serve. |
§5. Что нашлось сверх задания
5.1 ГЛАВНОЕ: по violence права нет ни у одного вендора, и причина структурная
Это не про наши книги и не про строгость моей доктрины. Это про то, как написаны все AUP на рынке:
- все регулируют пропаганду насилия — «promotes, incites, glorifies, facilitates»;
- ни один не регулирует нейтральное художественное изображение — ни чтобы запретить, ни чтобы разрешить;
- ровно два исключения, оба в «неудобную» сторону: Z.AI пишет
violent contentплоско, без глагола-пропаганды → прямой запрет; xAI не пишет про насилие вообще ничего → чистое молчание.
Следствие для продукта: экономическая посылка D14 п.1 — «ToS DeepSeek запрещает sexually explicit, но violence оставляет допустимым, поэтому violence-тяжёлая книга не теряет дешёвого редактора» — первоисточником не подтверждается. Первая половина верна дословно (§5.3). Вторая половина была прочитана как «раз про насилие в §3.4(5) не сказано — значит можно», но соседний §3.4(6) про насилие как раз есть. Под fail-closed это означает: книга с лейблом violence не маршрутизируется никуда, включая нашу приёмочную 蛊真人.
Это НЕ отменяет ратифицированную пару violence / sexually-explicit (D39.27 п.5): пара по-прежнему единственная форма, в которой различие вообще выразимо, и по sexually-explicit она уже окупилась — xAI и Mistral получают право, которого единый «adult» им не дал бы. Отменяется конкретное ожидание, что violence будет заполнен из текстов.
Три варианта, между которыми выбирает владелец (я не выбираю — это юридическая ось):
- Интерпретационное решение владельца: постановить, что нейтральное художественное изображение насилия не является «promoting / inciting / glorifying violence», и на этом основании выдать
violenceтем вендорам, у кого стоят только глаголы-пропаганды (deepseek,gemini,mistral,openai,kimi). Защитимо текстуально;zaiостаётся FORBIDDEN в любом случае;xai— отдельный разговор, там молчание, а не глагол. Цена: подпись под юридическим чтением. - Не помечать violence вовсе: решить, что уровень насилия в наших ранобэ не образует лейблуемого класса, и держать
violenceв вокабуляре под действительно экстремальный контент, который мы пока не берём. Цена: нулевая сегодня, но лейбл лежит незаполненным. - Оставить fail-closed как есть: violence-помеченные книги не запускаются до письменного разъяснения вендора. Цена: приёмочная книга не поедет.
Мой (не обязывающий) комментарий: вариант 1 выглядит наиболее соответствующим тому, что вендоры на самом деле имели в виду, а вариант 3 стоит дороже, чем даёт защиты, — но выбор не мой.
5.2 Адверсариальный контур сработал: одно опровержение по существу
xai / violence: ALLOWED → UNCLEAR. Контур добычи выдал ALLOWED / contrastive-absence, опершись на то, что xAI «умеет регулировать изображение, когда хочет» — и процитировав в подтверждение… пункты про сексуальные изображения реальных лиц. Независимый верификатор это снёс, и правильно: (1) это улика другого лейбла, подпирающая вердикт по violence — ровно тот тихий дефект, ради которого контур и строился; (2) сама эта таксономия сидит под шапкой про privacy / right of publicity реальных лиц, то есть общего регулятора изображений из неё не следует. Остаётся чистое молчание, а молчание ALLOWED не даёт.
Честно: моя собственная первая прикидка по этой клетке была такой же — ALLOWED. Я поменял её после разбора возражения и проверки собственной копией: grep -c -i violen по xAI AUP = 0. Записываю это как найденную у себя ошибку, а не как чужую.
Остальные вендоры верификаторы подтвердили без изменения вердиктов (vendor_correct, document_and_date_correct, quote_supports_verdict — все true). Побочно пойманы неточности провенанса, на вердикты не влияющие: у xAI Enterprise ToS есть объявленная дата (Last Updated: May 12, 2026), которую первый проход счёл отсутствующей (грепал только литерал «Effective:», а reader-прокси срезает шапку страницы — два пути дали согласованный ложный ноль); у Gemini — микро-ошибка в номере строки в clause_id; у OpenAI в поле гранта стояла директива соблюдения («Your use of OpenAI services must follow these Usage Policies:») вместо собственно гранта, который сидит в Services Agreement §2.2 и связан с политиками цепочкой §2.2 → §3.3(a) → §17.
Одно расхождение я разрешил ПРОТИВ независимого контура и говорю об этом прямо: openai / violence. Контур (и добыча, и перечитка) держит ALLOWED; в таблице у меня стоит UNCLEAR. Их аргумент силён и я его не прячу: настоящий грант существует и связан с политиками проверенной цепочкой; в Usage Policies слово «violent content» (изображение) встречается ТОЛЬКО в секции про несовершеннолетних, а во взрослом перечне стоит «use our services for … terrorism or violence» (деяние) — то есть составители сами различают деяние и изображение и ограничивают второе исключительно в адрес минорной аудитории. Это добротный contrastive-absence. Я всё же ставлю UNCLEAR по одной причине: в тот же договор через §17 инкорпорирована Sharing & publication policy с открытым хвостом or other uses that may cause social harm — а по моему собственному правилу (§1.2 п.2) широкий катч-олл в применимом документе снимает доказательную силу отсутствия класса в перечне. Применяю это правило к OpenAI ровно так же, как применил к Kimi; иначе доктрина стала бы подгонкой под желаемый ответ. Цена ошибки здесь низкая (OpenAI не в боевой цепочке Ф1), а перевернуть клетку — одна правка данных: если владелец решит, что публикационная политика 2022 года нас не связывает (вопрос §6 п.3), openai: accepts_labels: [violence] выдаётся сразу.
5.3 Поправка к D-логу: D14 п.1 указывает не на тот документ
D-лог (05-decisions-log.md:836) говорит: «D14 п.1: ToS DeepSeek §3.4(5) запрещает sexually explicit». Проверено по первоисточнику:
- Номер пункта верен дословно.
DeepSeek Terms of Use§3.4(5):is pornographic, obscene, or sexually explicit (e.g., sexual chatbots); - Название документа — нет. Этот пункт живёт в Terms of Use, а не в «DeepSeek Open Platform Terms of Service». В Open Platform ToS §3.4 — про организационные и технические меры безопасности, к контенту отношения не имеющие.
- На вывод это не влияет: Open Platform ToS §3.1 втягивает Terms of Use по ссылке (
you should procure that both of you and your end users comply with the requirements of the "DeepSeek Terms of Use"), так что для API-клиента пункт действует.
Это ровно тот класс дефекта, который промт назвал целевым: верная цитата, приписанная не тому документу. Формально — вопрос точности ссылки; практически — при следующей проверке по названию документа пункт не находится, что и произошло у меня в первом заходе. Правку в D-лог не вносил (чужая зона), пингую оркестратору.
5.4 Прочее, что стоит записать
- Головной Google Terms of Service обновляется 30.07.2026 — через пять дней после даты проверки. Баннер на
policies.google.com/terms: «We're updating our Terms of Service on July 30, 2026… Until then, the Terms below continue to apply.» Контентные оси головной ToS не решает (их решает PUP), но это конкретный триггер пере-проверки. - Gemini PUP старше своего API-договора на 15 месяцев (декабрь 2024 против марта 2026) и слова «API» не содержит вовсе.
- OpenAI Services Agreement §17 привязывает применимую редакцию политик к дате НАШЕГО договора/продления, а не к сегодняшнему сайту. Я смотрел текущую редакцию. Если аккаунт OpenAI заведён до 29.10.2025 и не продлевался, к нам может применяться более старая редакция Usage Policies с другими формулировками про взрослый контент.
- Gemini API Additional ToS запрещает API-клиентов, «directed towards or … likely to be accessed by individuals under the age of 18» — это обязательство на КОНЕЧНЫЙ продукт (ридер-IDE, публикация), а не только на бэкенд, и действует независимо от лейблов.
- Судейские вызовы. Gemini PUP запрещает «generating or distributing» — отправка текста на ОЦЕНКУ судье формально не перечислена. Я не считаю это лазейкой и в вердикт не закладывал (вердикт FORBIDDEN распространён на весь трафик к эндпойнту), но дыра в тексте есть, и её стоит зафиксировать сознательно. Практическое следствие уже сегодня: Gemini стоит судьёй Ф2, а по
sexually-explicitон FORBIDDEN — grok-фолбэк на 18+ (D22.6) оказывается не только поведенческой необходимостью, но и договорной. zai= FORBIDDEN по обоим лейблам закрывает открытый вопрос D39.27 п.7 («glm-5 как редактор под лейблом — только после сверки ToS Z.AI по первоисточнику»). Сверка сделана: под любым из двух лейблов glm-5 недоступен. Как редактор для НЕпомеченных книг он, разумеется, остаётся.- Юрисдикционные annex'ы кусаются. В консьюмерском ToS xAI австралийский раздел запрещает, среди прочего, «Material depicting abhorrent or offensive fetish or fantasy practices, for example, incest» — и это уже про изображение. К нам (рынок RU) он не применим, но показывает, что страновые приложения могут вводить депикт-запреты поверх общего AUP. При выходе на новые рынки — перепроверять annex'ы, а не только основной AUP.
§6. Вопросы владельцу (нужна подпись/решение)
violence— какой из трёх вариантов §5.1? Это блокирующий вопрос: без него лейблviolenceостаётся незаполнимым, а приёмочная 蛊真人 — незапускаемой под пометкой.- Gemini /
sexually-explicit: считать ли-- for example, content created for the purpose of pornography or sexual gratificationсужающим определением (тогда сюжетная сцена внутри романа под запрет не подпадает) или иллюстрацией (тогда запрещён класс целиком)? Я прочитал как иллюстрацию → FORBIDDEN. Альтернативное чтение текстуально возможно и переворачивает вердикт. - OpenAI: признаём ли Sharing & publication policy (2022) действующим ограничением? Она инкорпорирована §17, но ссылается на несуществующую «Content Policy» и запрещает «adult content», которого в действующих Usage Policies больше нет. Это единственное, что удерживает обе клетки OpenAI в UNCLEAR.
local: ваш вердикт по применимости Ollama ToS §4 к локальному инференсу. «н/п» — легитимный ответ; я не имею оснований решать это за вас.- Различать ли в конфиге ПРИЧИНУ пустоты (
FORBIDDENпротивUNCLEAR)? Механизм D39.28 позволяет и то, и другое. Практическая разница:UNCLEAR-клетки переоткрываются одной правкой данных после вашего решения,FORBIDDEN-клетки не переоткроются никогда без смены вендором политики. - Дата заведения/последнего продления аккаунта OpenAI — нужна, чтобы понять, какая редакция Usage Policies к нам применима (§5.4).
- Нужен ли периодический ре-чек политик по хешу файла перед каждым платным прогоном? Триггеры уже известны: Google ToS 30.07.2026, квартальный цикл 25.10.2026.
§7. БЛОК B — семь док-синк пингов + восьмой
Все правки — в моей зоне, тела доков не переписывались.
| # | Что просили | Что сделано | Файл |
|---|---|---|---|
| 1 | катовер deepseek-chat → v4-flash: жив ли алиас, какие цены |
Исполнено с живой пробой. Обе строки обновлены | 00-provider-quirks.md строки DeepSeek + календарь |
| 2 | снять mistral-editor-оговорку, цифры rate-limit оставить | Оговорка снята как superseded D39.20; все цифры на месте, добавлено, что гард продолжает гейтить путь переводчика | 00-provider-quirks.md §Транспорт |
| 3 | продлить ⚠-указатель до пост-D39.22 | Добавлен второй абзац указателя (dspro-интерим · планка ≤2 не пройдена · авто-QA слепыми метками · стайл-каноны D39.21). Тело протокола не тронуто | 09-pilot-protocol.md:3 |
| 4 | перевернуть застрявший статус | Перевёрнут: исполнен и залендён REV.2, $12.79/$15, вердикты D39.7, гейт D39.8 | 15-segmentation-empirics.md:6-7 |
| 5 | дописать финал | Дописан: D39.10 · gender-тачпойнт §7 закрыт D39.19 · продолжение = Go-майнер, парити EXACT | 16-bank-mining.md:3 |
| 6 | досвести индекс (нет exp15/exp16) | Добавлены обе строки + раздел «Что было после дуги: 15 → 16 → пере-прогон»; срез сдвинут с D38.2 на D39.28 | experiments/README.md |
| 7 | освежить под пост-D39.22 | Очередь переписана (rerun2 исполнен и закрыт), выделен блок инвариантов полигона, помечено закрытое и открытое | eval/README.md:5 |
| 8 | permissive как живой флаг — поправить |
Проверено: в моей зоне флага НЕТ. grep -rn "permissive" docs/experiments/ eval/ → 0 совпадений. Правка не потребовалась; вместо неё в новой ToS-секции явно записано, что флаг отставлен и заменён на accepts_labels пер-лейблу |
— |
Пинг 1 — доказательства (живая проба $0, ключ прочитан скриптом из eval/.env и нигде не печатался):
GET https://api.deepseek.com/v1/models -> 200, model_ids = ['deepseek-v4-flash', 'deepseek-v4-pro']
GET https://api.deepseek.com/v1/models/deepseek-chat -> 404 {"message":"Model Not Found","type":"not_found_error"}
GET https://api.deepseek.com/v1/models/deepseek-reasoner -> 404 {"message":"Model Not Found","type":"not_found_error"}
GET https://api.deepseek.com/v1/models/deepseek-v4-flash -> 200 {"id":"deepseek-v4-flash","owned_by":"deepseek"}
GET https://api.deepseek.com/v1/models/deepseek-v4-pro -> 200 {"id":"deepseek-v4-pro","owned_by":"deepseek"}
Вендор-дока (api-docs.deepseek.com/quick_start/pricing, сноска (1); тот же текст в Change Log), grep -c -F = 1:
«The model names deepseek-chat and deepseek-reasoner will be deprecated on 2026/07/24 15:59 UTC. For compatibility, they correspond to the non-thinking mode and thinking mode of deepseek-v4-flash, respectively.»
Три вывода пинга 1:
- Катовер прошёл. Слаги сняты не только из листинга, но и из пер-слагового реестра — это сильнее, чем прежний алиас-урок («нет в /models ≠ не работает»), и исчерпывает его для этих двух слагов.
- Честная граница:
chat/completionsэтими слагами я НЕ дёргал — платные вызовы в пакете не санкционированы. Реестр-404 — сильная, но формально не тождественная улика. Если владельцу нужна стопроцентная точка — это один вызов на сотые доли цента, скажите. - Цены не изменились (flash $0.14/$0.28, cache-hit $0.0028; pro $0.435/$0.87, cache-hit $0.003625) →
prices_checkedвmodels.yamlможно продлить до 2026-07-25 без правки чисел. Заодно со страницы: контекст 1M, max output 384K, конкуренц-кап 2500 / 500.models.yaml— чужая зона, не трогал; это предложение оркестратору.
⚠ Сноска на прайс-странице всё ещё стоит в будущем времени («will be deprecated») хотя дата прошла — это несвежесть доки, а не отсрочка; живая проба разрешает противоречие в пользу «катовер исполнен». Записано в календарь депрекаций.
§8. Дисциплина и остатки
- Не коммитил. Мои незакоммиченные правки — ровно семь файлов:
docs/experiments/00-provider-quirks.md,09-pilot-protocol.md,15-segmentation-empirics.md,16-bank-mining.md,README.md,eval/README.md+ этот отчёт.git mvне делал.backend/не трогал..envне читал.refusal_corpus/не открывал. L3-классификатор не проектировал. - ⚠ В ДЕРЕВЕ ЕСТЬ ЧУЖИЕ ПРАВКИ — ПАРАЛЛЕЛЬНАЯ БЭКЕНД-СЕССИЯ РАБОТАЕТ ПРЯМО СЕЙЧАС. На старте моей сессии дерево было ЧИСТОЕ; к её концу в
backend/появились изменения с mtime 18:37–18:38 (моя сессия началась ~18:05):cmd/tmctl/invocation.go,cmd/tmctl/main.go,internal/config/book.go,internal/pipeline/{bookrun,runner,status}.go,internal/pipeline/{status_test,waverun_test}.goи новыйinternal/pipeline/rebill.go(по шапке — гейт согласия на ПОВТОРНУЮ оплату, D20.2-Q2 / спека §7.3). Я их не трогал и не трогаю. Фиксирую для оркестратора: при лендинге в дереве вперемешку мои док-правки и чужой код — коммитить нужно РАЗДЕЛЬНО, пофайлово, а неgit add -A. Никакихreset --hard,amend,rebaseиcheckoutповерх этого дерева до согласования (урок 09.07). - Сырьё первоисточников (HTML + текст + jina/Wayback-копии по всем вендорам) лежит вне репо, в скретчпаде сессии. Один из добывающих агентов записал часть сырья в каталог
undefined/в КОРНЕ репо (промах подстановки пути в его собственной команде) — каталог перенесён в скретчпад и из репо убран, дерево чистое от него; в git он не попадал. - Платных вызовов к моделям — ноль. Единственные сетевые вызовы к вендорам:
/models-листинг и пер-слаговый retrieve у DeepSeek (оба $0) + HTTP-чтение публичных юридических страниц. - Что осталось незакрытым и почему:
violenceпо всем вендорам — упирается в решение владельца (§6 п.1), не в недостаток данных. Дополнительным чтением документов это не закрывается: нужных пунктов в них нет.- Живая проба
chat/completionsнаdeepseek-chat— не делал сознательно (не санкционировано). mistral.ai/terms/*→ 404 при живомlegal.mistral.ai/terms/*: аномалия зафиксирована, но природа (edge/geo или реальная поломка маршрутов) не установлена — из-под нашего прокси не отличить.
- Канал вопросов: конфликтов промта с кодом или доками не встретил; единственное расхождение доков с первоисточником — D14 п.1 (§5.3), выношу пингом оркестратору, сам в
docs/architecture/не лезу.