From 3a4ce8f8ca83155392e0b946a07f40edc51c8331 Mon Sep 17 00:00:00 2001 From: "Claude (backend session)" Date: Fri, 31 Jul 2026 00:44:32 +0300 Subject: [PATCH] Land the terms-of-service recheck as D39.57: zero verdict deltas, Google monitoring re-anchored to the contract chain, quirks cell synced to the ratified reading --- docs/PROGRESS.md | 12 +- docs/architecture/05-decisions-log.md | 6 +- .../archive/reports/TOS_RECHECK_2026-07-31.md | 155 ++++++++++++++++++ docs/experiments/00-provider-quirks.md | 21 ++- 4 files changed, 185 insertions(+), 9 deletions(-) create mode 100644 docs/archive/reports/TOS_RECHECK_2026-07-31.md diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index e3a651c0..5188e488 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -16,9 +16,9 @@ | 1 | Ответы на вопросы разметки Р1–Р4 (гипербола 千万 · дефект в 成 форма/значение · сокращённая форма терма · неразрешимая офлайн речь/мысль) | владелец | блокер-очереди (без них не пишется дизайн пака-21) | пак-21 | D39.39(г), D39.40, D39.44 Q4 | | 2 | Четыре вопроса границы «алгоритмического идеала» (Annotator · семантический судья · ja→ru §B5 · ru-target до/после) | владелец | скоро (гейт «добора идеала» перед МАСШТАБОМ) | отдельное решение | D39.33, D39.38 | | 3 | Одноразовый `--resnapshot` стендовых книг с auto-строками | владелец | скоро | отдельное решение | D39.45(4) | -| 4 | Ре-чек ToS-политик по триггерам (Google ToS 30.07.2026 · квартал 25.10.2026 · любая правка `accepts_labels`) | владелец/полигон | скоро (первый триггер 30.07.2026) | отдельное решение (правило) | D39.32 | +| 4 | Ре-чек ToS по триггерам — первый ИСПОЛНЕН 31.07, дельт вердиктов нет (D39.57); предмет Google-мониторинга перевешен на цепочку договора (PUP · Additional ToS · Google APIs ToS); следующие: квартал 25.10.2026 · первая лейблованная книга · любая правка `accepts_labels` | владелец/полигон | скоро (следующий триггер 25.10.2026) | отдельное решение (правило) | D39.32, D39.57 | | 5 | Судья-с-декоем как катастроф-экран банкноты — отложен, вернуться после холодного старта и пере-замера P1 | владелец | скоро (после холодного мини-прогона) | отдельное решение | D39.50 п.6, D39.51 п.4, PACK20_BANKNOTE_BUILD §6 | -| 6 | Строка Gemini в `accepts_labels` — ждёт слова владельца о подписи интерпретации сужения как разрешения | владелец | когда-нибудь | отдельное решение | D39.32 | +| 6 | Строка Gemini в `accepts_labels` — ждёт слова владельца о подписи интерпретации сужения как разрешения; ре-чек 31.07 понизил приоритет: подпись даёт ПРАВО, но не судью 18+ (фильтр неконфигурируем D22.6 + обход запрещён договором) — возвращаться при вопросе, требующем именно права | владелец | когда-нибудь | отдельное решение | D39.32, D39.57 | | 7 | Q2 «редактор под `sexually-explicit`» (grok-4.3 интерим · glm-5 после сверки ToS Z.AI · mistral вон) | владелец | когда-нибудь (перед первой explicit-книгой) | отдельное решение | D39.27 п.7 | | 8 | D22.7 пер-чанковый L3-скрин — несня­тое предусловие первой erotica-книги в проде, отдельный гейт | владелец | когда-нибудь | отдельное решение | D22.7, CURRENT-STATE (оркестратор) | | 9 | Промпт-слой под лейблом: лейбл не доезжает до промпта — должны ли переводчик/редактор знать о свойстве контента | владелец | когда-нибудь | отдельное решение | CURRENT-STATE (владелец, из пака-17) | @@ -98,6 +98,14 @@ | 69 | Gemini API «под-18» обязательство на конечный продукт (независимо от лейблов) | владелец | когда-нибудь | Ф3 / отдельное решение | D39.32, D39.34(7) | | 70 | Action-security gate перед выдачей tools/webfetch (D25 п.5) | бэкенд | когда-нибудь | Ф3 | D39.34(7) | | 71 | Планы research/22: epub-tag-rewrite · Q7-леджер | бэкенд | когда-нибудь | Ф3 | D39.34(7) | +## Полигон — РЕ-ЧЕК ToS ПО КАЛЕНДАРНОМУ ТРИГГЕРУ ИСПОЛНЕН ($0): дельт вердиктов НЕТ, но триггер стоит не на том документе, 31.07 + +Отчёт: `archive/reports/TOS_RECHECK_2026-07-31.md`; факты — секция «Право по ToS/AUP» в `experiments/00-provider-quirks.md` (помечена датой ре-чека). **Триггер сработал буквально** — головной Google ToS сменил ревизию `May 22, 2024` → **`Effective July 30, 2026`**, — **но по нашей оси он пуст:** свой байтовый диф архивной и живой US-версий даёт 72 строки, все потребительско-правовые (сетевые расходы, дисклеймеры, калифорнийское право), а счётчики `violen*` = 0 и `sexual*` = 0 в ОБЕИХ ревизиях. Единственная контентная вставка — `Some content may not be suitable for everyone.` в разделе о генерируемом контенте: дисклеймер о ВЫХОДЕ Google, по D39.29 права не даёт, и специально помечена, чтобы её не приняли за сдвиг. **Пере-сняты пять вендоров цепочки — `gemini` · `mistral` · `xai` · `deepseek` · `zai`, все на ПРЕЖНИХ объявленных ревизиях, 34 цитаты подтверждены счётом = 1, дельт вердиктов ноль.** `kimi`/`openai` (403 Cloudflare, JS-шелл) вне названного промтом фокуса — помечены непере-проверенными. **Три находки сверх задачи.** (1) **Триггер поставлен на косвенно привязанный документ:** договор Gemini API — это `Google APIs ToS` (*Last modified: November 9, 2021*, прежде в записи ОТСУТСТВОВАЛ) + `Additional ToS` (*March 23, 2026*) → PUP; потребительский ToS цепляется лишь через API ToS §b `You will not violate any other terms of service with Google`. Предложение: мониторить три документа цепочки, а не `policies.google.com/terms`. (2) **Метод верификации цитат дефектен:** `grep -c -F` по стриппнутому тексту дал ЛОЖНЫЕ НУЛИ на трёх верных цитатах DeepSeek (жёсткие переносы + кавычки в отдельных тегах) — без поправки ре-чек показал бы фантомную дельту вендора; рабочая форма (сверка по копии без пробелов) вписана в quirks. Там же: **`r.jina.ai` как второй путь МЁРТВ (403)**, заменён двумя независимыми снимками Wayback с честной оговоркой «оба в прошлом»; **`ai.google.dev` больше не требует Wayback** — петля была на cookie `signin=autosignin`, лечится cookie-jar. (3) **Рассинхрон:** клетка `gemini` × `sexually-explicit` в quirks стояла `FORBIDDEN` против ратифицированного D39.32 п.2 `UNCLEAR` — помечена ссылкой на амендмент, молча не переписана. **Рекомендация по строке 6 (Gemini в `accepts_labels`): не подписывать сейчас** — ре-чек не дал новой фактуры ни за, ни против, а главное: подпись даст ПРАВО, но не даст судью 18+, потому что по оси ПОВЕДЕНИЯ Gemini fail-closed на графичной эротике (D22.6, 8× wire-verified, фильтр неконфигурируем), а Additional ToS теперь ещё и прямо запрещает обход фильтра (`You may not attempt to bypass these protective measures`). Строка стоит дешевле, чем выглядит: ничего не блокирует и почти ничего не открывает. Следующий триггер — квартальный **25.10.2026**, без изменений. Сессия не коммитила; `accepts_labels` не трогала; бэклог не правила (зона оркестратора). + +## Оркестратор №9 + полигон — ToS-РЕ-ЧЕК ПО ТРИГГЕРУ ИСПОЛНЕН (D39.57): дельт вердиктов нет, 31.07 + +Головной Google ToS сменил ревизию (30.07.2026), но по оси лейблов пуст; пять вендоров пере-сняты — вердикты не двигаются. Находки метода: триггер висел не на том документе — перевешен на цепочку договора (PUP · Additional ToS · Google APIs ToS, последний добавлен в запись); рассинхрон quirks-клетки gemini×SE с D39.32 закрыт; правило «двух путей» амендировано (jina мёртв). Строка 6 понижена в приоритете (подпись ≠ судья 18+). Параллельно бежит холодный мини-прогон (бэкенд). Отчёт: `archive/reports/TOS_RECHECK_2026-07-31.md`. + ## Оркестратор №9 — СТРОЙКА ПАКА-19 ПРИНЯТА И ЗАЛЕНДЕНА (D39.56), ПАК-19 ЗАКРЫТ ЦЕЛИКОМ, 31.07 Фаза 2 сдана и принята короткой приёмкой (норма 30.07): сьют `-race` перегнан — зелёный; `repin.go`/`snapshot.go`/golden не тронуты (запреты (д)/(и) держатся); мутации сессии 23/23. Построено: таблицы v13/v14 + условный фолд (ни байта при выключенной инъекции) · ты/вы-флаггер A–C + D-индикатор · флаггер спойлер-утечки · данные V5 (5 категорий `target-ru` + опциональный `speech-cue`). Инъекция голоса — на бумаге до полигон-эксперимента (D21 п.2). Ратифицированное отклонение: атрибуция целевая, не исходная. Бэклог: 14/15 закрыты; +13б (`speech-cue.txt` — владельцу, к холодному прогону), +49а (миграции неидемпотентны). Очередь: ХОЛОДНЫЙ мини-прогон — теперь несёт и первое измерение осей голоса (`gates.voice` ON, строка 24). Отчёт: `archive/reports/PACK19_BUILD_2026-07-30.md` (ревью-шапка). diff --git a/docs/architecture/05-decisions-log.md b/docs/architecture/05-decisions-log.md index 114c959a..f928ffd7 100644 --- a/docs/architecture/05-decisions-log.md +++ b/docs/architecture/05-decisions-log.md @@ -1179,4 +1179,8 @@ API-529-долг закрыт: 8-осевой refute-by-default воркфлоу ## D39.56 — СТРОЙКА ПАКА-19 ПРИНЯТА И ЗАЛЕНДЕНА ($0, +672/−71, 16+7 файлов; ПАК-19 ЗАКРЫТ ЦЕЛИКОМ): голос/обращения = таблицы v13/v14 с УСЛОВНЫМ фолдом в `memory_version` (при выключенной инъекции не пишется НИ БАЙТА — golden байт-идентичен, ни одна книга не двигается) · ты/вы-флаггер осей A–C + D-индикатор в `gates.voice` (версия не фолдится, едет с прогоном) · флаггер спойлер-утечки поверх `Selection.Rejected` (вне гейта — стоячий механизм C1) · девять «ровно так» D39.55 исполнены, запреты (д)/(и) держатся (`repin.go`/`snapshot.go` не тронуты ни строкой) · ратифицированное отклонение: атрибуция ЦЕЛЕВАЯ, не исходная (выравнивания src↔tgt в движке нет; целевой хвост атрибуции матчится банком через `speech_verb`+`decl`) · `speech-cue.txt` zh НЕ шипнут (байты двигают `LangpackVersion` = перекупка обеих волн всех zh-книг — решение владельца, бэклог 13б) (31.07, оркестратор №9). ✅ -Приёмка короткая (норма 30.07): сьют `-race` перегнан оркестратором — зелёный; vet/gofmt чисто; диффы repin/snapshot/testdata пусты; записка D21.10 сверена (переписана в «BUILT», стабильный ключ и заморозка в ней). Мутации сессии 23/23 красные (две выжившие первого круга = дыры тестов, закрыты с премис-проверками). Критик полноты честен: оси до холодного прогона дают 0 срабатываний («не измерено», не «чисто») · ось A может ловить цитату · ось B precision-over-recall · качество осей = функция полноты `decl` сида · SourceReplies без выравнивания не сопоставим с Replies. Хвосты: бэклог 13б (`speech-cue.txt` — владельцу) · 49а (ALTER-миграции v8–v14 не идемпотентны вопреки шапке `migrate.go:9-11`) · golden-счётчики голоса — кандидат следующего ратифицированного пере-капчера. Первое измерение = `gates.voice` ON на холодном мини-прогоне (бэклог 24). Отчёт: `archive/reports/PACK19_BUILD_2026-07-30.md` (ревью-шапка). +Приёмка короткая (норма 30.07): сьют `-race` перегнан оркестратором — зелёный; vet/gofmt чисто; диффы repin/snapshot/testdata пусты; записка D21.10 сверена (переписана в «BUILT», стабильный ключ и заморозка в ней). + +## D39.57 — ToS-РЕ-ЧЕК ПО ПЕРВОМУ КАЛЕНДАРНОМУ ТРИГГЕРУ ИСПОЛНЕН ($0, полигон, 31.07): головной Google ToS реально сменил ревизию (Effective July 30, 2026), но по оси `violence`/`sexually-explicit` дельта ПУСТА — все пять пере-проверенных вендоров (gemini/mistral/xai/deepseek/zai) на прежних ревизиях, вердикты не двигаются, `accepts_labels` не трогаются · ПРЕДМЕТ Google-мониторИНГА ПЕРЕВЕШЕН на цепочку договора (PUP · Gemini API Additional ToS · Google APIs ToS — потребительский ToS цепляется лишь косвенно и по нашей оси пуст) · в запись добавлен пропущенный головной Google APIs ToS (по оси пуст) · рассинхрон quirks-клетки `gemini`×`sexually-explicit` с D39.32 п.2 закрыт (FORBIDDEN → UNCLEAR, прозрачной правкой) · правило «двух путей» пакета-5 амендировано (r.jina.ai мёртв — 403; замена: Wayback ×2 снимка + прямой curl с cookie-jar; проверка цитат — по копии без пробелов, старая форма давала ложные нули) (31.07, оркестратор №9). ✅ + +Существенное для судьи Ф2: Additional ToS прямо запрещает обход фильтра (`You may not attempt to bypass these protective measures`) — смыкается с D22.6 (фильтр неконфигурируем) ⇒ подпись под строкой 6 дала бы ПРАВО отправки, но НЕ работающего судью эротики; судья 18+ остаётся grok, строка 6 аннотирована и понижена в приоритете (возвращаться при собственном вопросе, требующем именно права). Следующие триггеры: квартал 25.10.2026 · первая лейблованная книга · любая правка `accepts_labels`. Отчёт: `archive/reports/TOS_RECHECK_2026-07-31.md` (ревью-шапка). Мутации сессии 23/23 красные (две выжившие первого круга = дыры тестов, закрыты с премис-проверками). Критик полноты честен: оси до холодного прогона дают 0 срабатываний («не измерено», не «чисто») · ось A может ловить цитату · ось B precision-over-recall · качество осей = функция полноты `decl` сида · SourceReplies без выравнивания не сопоставим с Replies. Хвосты: бэклог 13б (`speech-cue.txt` — владельцу) · 49а (ALTER-миграции v8–v14 не идемпотентны вопреки шапке `migrate.go:9-11`) · golden-счётчики голоса — кандидат следующего ратифицированного пере-капчера. Первое измерение = `gates.voice` ON на холодном мини-прогоне (бэклог 24). Отчёт: `archive/reports/PACK19_BUILD_2026-07-30.md` (ревью-шапка). diff --git a/docs/archive/reports/TOS_RECHECK_2026-07-31.md b/docs/archive/reports/TOS_RECHECK_2026-07-31.md new file mode 100644 index 00000000..5a8f116a --- /dev/null +++ b/docs/archive/reports/TOS_RECHECK_2026-07-31.md @@ -0,0 +1,155 @@ +# Ре-чек ToS по календарному триггеру — 31.07.2026 (полигон) + +**Триггер:** «головной Google ToS **30.07.2026**» — безусловный триггер ре-чека, ратифицированный D39.32 п.4 (строка 4 бэклога). **Деньги: $0** (только веб-чтение первоисточников, ни одного платного вызова). **Зона:** `eval/` + `docs/experiments/`. **Дата доступа ко всем источникам ниже: 2026-07-31.** Сессия не коммитит; `accepts_labels` в конфигах не трогала. + +> **Ревью-шапка (оркестратор №9, 31.07): ПРИНЯТО И ЗАЛЕНДЕНО, D39.57.** Короткая приёмка: дифф quirks +> прочитан — клетка `gemini`×`sexually-explicit` исправлена ПРОЗРАЧНО (зачёркнутый вердикт + атрибуция +> амендменту D39.32 п.2, не находке ре-чека) — правку ратифицирую как восстановление синка с D-логом; +> живой спот-чек головного клейма: `curl policies.google.com/terms` отдаёт `Effective July 30, 2026` ✓. +> Ратифицировано D39.57: предмет Google-мониторинга перевешен с потребительского ToS на ЦЕПОЧКУ договора +> (PUP · Gemini API Additional ToS · Google APIs ToS); правило «двух путей» пакета-5 амендировано +> (jina мёртв — замена по §6; форма проверки цитат — по копии без пробелов). Рекомендация §5.2 принята: +> строка 6 аннотирована доводом «подпись даёт право, но не судью 18+», приоритет вниз. Честные границы +> названы (xAI — последний живой снимок 28.07; kimi/openai вне фокуса). Харнесс verify.py/matrix.json жил +> вне репо — для $0-чека с 34/34 подтверждёнными цитатами в теле отчёта это принято. + +**Скоуп по промту:** Google/Gemini — фокус; Mistral и xAI (канал B); DeepSeek и Z.AI — «если дёшево по ходу» (оказалось дёшево, сделаны). **kimi / openai / local в ре-чек НЕ входили** — см. §6. + +--- + +## 1. Итог одной строкой + +**Триггер сработал буквально — головной Google ToS действительно сменил ревизию на `Effective July 30, 2026`, — но по нашей оси он ПУСТ: ни одного вердикта `violence`/`sexually-explicit` ни у одного из пяти пере-проверенных вендоров это не двигает.** Все пять применимых первоисточников остались на прежних объявленных ревизиях. Дельт вердиктов — ноль. + +Побочно вскрыто существенное: **триггер был поставлен на документ, который в нашей договорной цепочке висит лишь косвенно** (§4.2), а в цепочке нашёлся не учтённый прежде третий документ — Google APIs ToS (§4.3). + +## 2. Вендор × лейбл × вердикт × цитата (пере-проверено 31.07.2026) + +Вердикты и вокабуляр оснований — по D39.27 п.5 / D39.29. Все цитаты дословны и подтверждены счётом вхождений `= 1` по моим собственным копиям (§6.1). + +| Вендор | `violence` | `sexually-explicit` | Применимый первоисточник (объявленная ревизия, пере-снята 31.07) | Опорная цитата | +|---|---|---|---|---| +| **gemini** | UNCLEAR `ambiguous-term` | UNCLEAR ⚠ (см. §5.1) | **Generative AI Prohibited Use Policy** — *Last Modified: December 17, 2024*; втянут **Gemini API Additional ToS** — *Effective March 23, 2026*; над ним **Google APIs ToS** — *Last modified: November 9, 2021* | `Violence or the incitement of violence.` (под стемом «facilitates») · `Sexually explicit content -- for example, content created for the purpose of pornography or sexual gratification.` | +| **mistral** | UNCLEAR `ambiguous-term` | **ALLOWED** `contrastive-absence` | **Usage Policy** — *Effective: June 11, 2026* (`legal.mistral.ai`) | `Use of the Mistral AI Products to conduct or generate any activity or content that promotes, incites, threatens, or glorifies violence is not permitted.` · в сексуальной семье названы только CSAM, NCII (`You shall not use the Mistral AI Products to generate intimate images of any person without the explicit consent of all individuals involved.`) и `Content that enables or exploits individuals, including through human trafficking or sexual services.` | +| **xai** | UNCLEAR `no-clause` (чистое молчание) | **ALLOWED** `contrastive-absence` | **xAI AUP** — *Effective: June 26, 2026*; договор API = **Enterprise ToS** — *Last Updated: May 12, 2026* | `grep -i violen` по AUP = **0** (пере-мерено на двух независимых снимках) · узкие соседи: `Depicting likenesses of persons in a pornographic manner` , `Sexualizing or exploiting children` | +| **deepseek** | UNCLEAR `ambiguous-term` | **FORBIDDEN** | **Terms of Use** §3.4 — *Last Update: March 27, 2026*; втянут через **Open Platform ToS** §3.1 — *Effective date: April 29, 2026* | `(5) is pornographic, obscene, or sexually explicit (e.g., sexual chatbots);` · `(6) facilitates, promotes, incites or glorifies violence or terrorist/extremism content;` | +| **zai** | **FORBIDDEN** | **FORBIDDEN** | **Terms of Use** п. f)/g) — *Last Update: April 14, 2026* | `Creating or disseminating obscene, pornographic, violent, murderous, terroristic, or criminal incitement content.` · `Submitting, creating or disseminating content that is sexually explicit, suggestive, visually shocking, or otherwise disturbing.` | +| kimi · openai · local | — | — | **не пере-проверялись 31.07**, остаются на дате 25.07 | §6.2 | + +## 3. Дельты с прошлого чека (25.07.2026) + +**По вердиктам — ноль.** По документам: + +| Документ | Ревизия 25.07 | Ревизия 31.07 | Дельта | +|---|---|---|---| +| Google Generative AI Prohibited Use Policy | Last Modified: December 17, 2024 | **та же** | нет | +| Gemini API Additional Terms of Service | Effective March 23, 2026 | **та же** | нет; тело построчно идентично снимку 29.07 (§6.1) | +| Mistral Usage Policy | Effective: June 11, 2026 | **та же** | нет | +| xAI AUP | Effective: June 26, 2026 | **та же** | нет | +| xAI Enterprise ToS | Last Updated: May 12, 2026 | **та же** | нет | +| DeepSeek Terms of Use | Last Update: March 27, 2026 | **та же** | нет | +| DeepSeek Open Platform ToS | Effective date: April 29, 2026 | **та же** | нет | +| Z.ai Terms of Use | Last Update: April 14, 2026 | **та же** | нет | +| **Головной Google ToS** (`policies.google.com/terms`) | Effective **May 22, 2024** | **Effective July 30, 2026** | **СМЕНИЛСЯ** → §4 | +| **Google APIs ToS** (`developers.google.com/terms`) | *в записи не было* | Last modified: November 9, 2021 | **новый источник в записи** → §4.3 | + +## 4. Что на самом деле произошло 30.07 (главная работа пакета) + +### 4.1 Единственная контентная вставка — и она не улика + +Я не доверился редлайну Google, а построил **свой байтовый диф** архивной ревизии `20240522` против живой `20260730` (обе — страновая версия United States, тела договоров, §6.1). Диф даёт 72 строки. Всё это — потребительское право ЕС/США: новая секция «Cellular, Wi-Fi, and other Network Connection Costs», расширение медицинско-юридического дисклеймера, формулировка о калифорнийском праве, определение «country version», навигация. **Счётчики по нашей оси не сдвинулись ни на единицу:** + +| | `violen*` | `sexual*` | `pornograph*` | `obscene` | +|---|---|---|---|---| +| ToS от 22.05.2024 | 0 | 0 | 1 | 0 | +| ToS от 30.07.2026 | 0 | 0 | 1 | 0 | + +(единственное `pornograph*` в обеих ревизиях — в перечне примеров права на снос контента: `Examples include child pornography, content that facilitates human trafficking or harassment, terrorist content…`) + +**Единственная контент-смежная вставка** — в разделе о генерируемом контенте: + +> было (22.05.2024): `Some of our services allow you to generate original content. Google won’t claim ownership over that content.` +> стало (30.07.2026): `Some of our services allow you to generate original content. Google won’t claim ownership over that content.` **`Some content may not be suitable for everyone.`** + +**Как это читать — и как НЕ читать.** Фраза — дисклеймер о ВЫХОДЕ сервисов Google («не всякий сгенерированный контент подходит всем»), а не разрешение на наш ВХОД. По ратифицированной доктрине D39.29 («молчание документа и „нас не запрещает“ НЕ дают ALLOWED») она **не создаёт права** и в вердикты не входит. Фиксирую её только потому, что это буквально единственное, что триггер принёс по нашей оси, и потому, что при следующем чтении её легко принять за сдвиг — она не сдвиг. + +### 4.2 Поправка к самому триггеру: он поставлен на косвенно привязанный документ + +Пере-проверка цепочки показала: **головной потребительский `policies.google.com/terms` не является головным документом нашего договора на Gemini API.** Договор объявлен в Gemini API Additional ToS дословно: + +> `To use Gemini API , Google AI Studio , and the other Google developer services that reference these terms … you must accept (1) the Google APIs Terms of Service (the " API Terms "), and (2) these Gemini API Additional Terms of Service` + +Потребительский ToS цепляется только КОСВЕННО — через Google APIs ToS §b: + +> `You will not violate any other terms of service with Google (or its affiliates).` + +То есть привязка реальна (нарушение потребительских ToS = нарушение API-договора), но опосредована, и **сам потребительский ToS по нашим двум классам не говорит ничего** (§4.1). Ре-чек по триггеру был правомерен, а вот сам триггер выбран не по цепочке. + +**Рекомендация по методу (не по праву):** предметом мониторинга Google сделать **три документа цепочки** — PUP · Gemini API Additional ToS · Google APIs ToS, — а потребительский ToS оставить фоновым. Прежний квартальный триггер 25.10.2026 при этом сохраняется как есть. + +### 4.3 Не учтённый прежде документ цепочки: Google APIs ToS + +В записи 25.07 стояли только PUP и Additional ToS. Головной **Google APIs Terms of Service** (*Last modified: November 9, 2021*) в записи отсутствовал. Пере-проверил его перечень «a. API Prohibitions» целиком: по нашим двум классам он **пуст** — ближайшее вхождение `Defame, abuse, harass, stalk, or threaten others.` адресовано поведению в отношении людей, а не изображению в вымысле. **На вердикты не влияет; полнота записи восстановлена.** + +### 4.4 Добор по Gemini, относящийся к судье Ф2 (новые дословные пункты) + +Из Additional ToS (*Effective March 23, 2026*), прежде в записи не цитировались: + +> `The Services include safety features to block harmful content, such as content that violates our Prohibited Use Policy . You may not attempt to bypass these protective measures or use content that violates the API Terms or these Additional Terms.` +> `You are responsible for determining the necessary and appropriate safety settings and factuality tools for your use case. Applications with less restrictive safety settings may be subject to Google's review and approval.` + +Значение: **обход фильтра запрещён договором прямо.** Это смыкается с D22.6 (неконфигурируемый `PROHIBITED_CONTENT` на графичной эротике) и закрывает вопрос, можно ли считать обход фильтра техническим приёмом — нельзя, это нарушение договора. Отдельно подтверждаю, что обязательство «под-18» на конечный продукт (строка 69 бэклога) живо и дословно: `that is directed towards or is likely to be accessed by individuals under the age of 18.` + +## 5. Рекомендация владельцу по строке 6 (Gemini в `accepts_labels`) + +### 5.1 Факт: ре-чек не дал НИЧЕГО нового ни за, ни против + +Строка 6 ждёт подписи под чтением D39.32 п.2 (оговорка «for example, … pornography or sexual gratification» = **сужение** ⇒ вердикт `sexually-explicit` перестал быть `FORBIDDEN` и стал `UNCLEAR`; права не даёт, нужна отдельная подпись «интерпретация как разрешение»). **Текст PUP за неделю не изменился ни на символ, Additional ToS — тоже. Новой фактуры, меняющей расчёт, нет.** Единственная новая строка (§4.1) по доктрине не улика. + +⚠ **Побочная находка док-синка (не мой вердикт, а рассинхрон):** в таблице `experiments/00-provider-quirks.md` клетка `gemini` × `sexually-explicit` до сих пор стоит **`FORBIDDEN`**, тогда как D39.32 п.2 ратифицировал её как **`UNCLEAR`**. По иерархии источников истины (CLAUDE.md) побеждает D-лог. Я **не переписываю вердикт молча** — вместо этого пометил клетку ссылкой на амендмент и выношу рассинхрон оркестратору. + +### 5.2 Моя рекомендация — строку 6 НЕ трогать, и вот довод, которого в ней сейчас нет + +**Рекомендация: оставить как есть (подпись не ставить), но пере-оценить её приоритет вниз.** + +Довод — не про право, а про то, что подпись КУПИТ. Промт связывает строку 6 с судьёй Ф2. Проверил эту связку против записи: **подпись под строкой 6 судью 18+ не открывает.** Ось права и ось поведения разведены нашей же секцией quirks, и по ОСИ ПОВЕДЕНИЯ Gemini на графичной эротике fail-closed отдаёт `PROHIBITED_CONTENT` — 8× wire-verified, exp11, **фильтр неконфигурируем, нативный API не спасает** (D22.6). Теперь к этому добавился и договорный запрет обходить фильтр (§4.4). Значит: + +- подпись даст `gemini: accepts_labels: [sexually-explicit]` = **право отправить**; +- **работающего судьи эротики это не даст** — модель всё равно откажет, а обход запрещён договором; +- судьёй 18+ остаётся grok (D22.6, D39.32 п.2), и это решение подписью по строке 6 не отменяется. + +Иначе говоря, право — необходимое, но **не достаточное** условие, и сегодня связывает не оно. Строка 6 стоит дешевле, чем выглядит: она ничего не блокирует и почти ничего не открывает. **Разумный момент её подписать — не сейчас, а когда появится собственный вопрос, требующий именно права** (например, Gemini в роли судьи на SFW/violence-срезе — там он и так жив, лейбл не назначается, D39.30 п.1). + +Это рекомендация, а не решение; вердикт по строке 6 — подпись владельца (строка 6 бэклога, D39.32). + +## 6. Метод и его честные границы + +### 6.1 Как добывалось + +- Прямой `curl` с браузерными заголовками; текст — собственным стриппером; **каждая цитата подтверждена счётом вхождений `= 1`** (`verify.py`, матрица `matrix.json`: **34 цитаты, 0 неподтверждённых**). +- ⚠ **Поправка к методу пакета-5:** проверка «`grep -c -F` по стриппнутому тексту» **даёт ложные нули**. Поймано на двух документах: DeepSeek ToU верстает жёсткими переносами (`
` рвал предложение), а DeepSeek Open Platform ToS держит кавычки в отдельных тегах, из-за чего стриппер выдаёт `" DeepSeek Terms of Use "` с пробелами. Три верные цитаты сначала показали `0`. **Лечение, применённое здесь: сверять по копии с УДАЛЁННЫМИ пробелами с обеих сторон** — нечувствительно к вёрстке, последовательность символов не трогает. Без этой поправки ре-чек показал бы фантомную дельту DeepSeek. +- **`ai.google.dev` больше не требует Wayback.** Прежняя запись «редиректит в OAuth, curl умирает на 50 редиректах» верна по симптому; причина — cookie `signin=autosignin` в петле. **Лечится cookie-jar (`-c`/`-b`) + `?hl=en` → HTTP 200 живьём.** Живая копия сверена построчно со снимком Wayback 29.07: тело договора идентично, разошлась только навигация сайта. +- **Головной Google ToS:** взяты обе страновые версии (Ireland и United States) и архивная ревизия `20240522`; дельта построена **своим** дифом, редлайн Google использован только как перекрёстная проверка (сошлись). + +### 6.2 Что НЕ проверено — и почему + +- **`r.jina.ai` как второй путь МЁРТВ** — отдаёт **403** и на `x.ai`, и на `ai.google.dev`. Ратифицированное правило пакета-5 («цитата засчитана только при совпадении Wayback и jina») в прежней форме больше неисполнимо. + **Чем заменено для xAI:** прямой `x.ai` = 403 (Cloudflare, воспроизведён и через прокси, и прямым egress `--noproxy '*'`); `docs.x.ai` = 404. Взяты **два независимых захвата Wayback — 25.07 и 28.07**: тела **побайтно идентичны**, `Effective: June 26, 2026` в обоих, `grep -i violen` = **0** в обоих. **Честная граница: оба снимка предшествуют сегодняшнему дню (последний — 28.07), живого подтверждения на 31.07 у xAI НЕТ.** Дельта между 25.07 и 28.07 отсутствует, что делает изменение маловероятным, но не исключает его. +- **kimi** — `platform.moonshot.ai` отдаёт JS-шелл без даты в HTML; вендор вне названного промтом фокуса, дальше не копал. +- **openai** — `openai.com/policies/usage-policies/` = **403** (Cloudflare, как и в пакете-5); вне фокуса, jina мёртв. OpenAI в боевой цепочке не стоит, обе клетки и так `UNCLEAR` — риск от непроверки нулевой. +- **local** — вендор-API нет, строка закрыта решением владельца D39.32 п.1; ре-чек неприменим. +- Юрисдикционные annex'ы (австралийский у xAI) в этот заход не смотрел — они относятся к выходу на новые рынки (запись D39.29). + +## 7. Следующий триггер + +- **Квартальный: 2026-10-25** (D39.32 п.4) — без изменений. +- Безусловные, как и прежде: **перед заводкой первой лейблованной книги** и **при любой правке `accepts_labels`**. +- **Предложение по методу (§4.2), решение оркестратора:** предметом Google-мониторинга сделать PUP · Gemini API Additional ToS · Google APIs ToS вместо потребительского `policies.google.com/terms`. + +## 8. Что уходит оркестратору/владельцу + +1. **Ре-чек по триггеру исполнен, дельт вердиктов нет** — `accepts_labels` править не за чем; сессия их и не трогала. +2. **Рассинхрон:** клетка `gemini` × `sexually-explicit` в quirks = `FORBIDDEN` против ратифицированного D39.32 п.2 `UNCLEAR`; помечено, молча не переписано (§5.1). +3. **Рекомендация по строке 6:** не подписывать сейчас; довод — подпись не открывает судью 18+ (§5.2). +4. **Поправка к методу верификации цитат** (§6.1) — прежняя форма даёт ложные нули; и **`r.jina.ai` как второй путь мёртв** (§6.2), правило «двух путей» нуждается в новой редакции. +5. **Триггер стоит не на том документе** (§4.2) — предложение перевесить его на цепочку. diff --git a/docs/experiments/00-provider-quirks.md b/docs/experiments/00-provider-quirks.md index 0636940f..e18dcbd2 100644 --- a/docs/experiments/00-provider-quirks.md +++ b/docs/experiments/00-provider-quirks.md @@ -62,7 +62,10 @@ ## Право по ToS/AUP: провайдер × content-label (ось ПРАВА — НЕ ось поведения) -> **Внесено полигоном, пакет-5, дата проверки 2026-07-25. Пере-проверка: 2026-10-25 (квартально) И безусловно перед заводкой первой лейблованной книги.** Питает `accepts_labels` в `backend/configs/models.yaml` (D39.25–D39.28). **Строки данных применяет оркестратор ТОЛЬКО после подписи владельца** — здесь зафиксированы ФАКТЫ, не юридическое заключение. +> **Внесено полигоном, пакет-5, дата проверки 2026-07-25.** +> **РЕ-ЧЕК 2026-07-31 по календарному триггеру «головной Google ToS 30.07.2026» (D39.32 п.4, строка 4 бэклога): пере-сняты по первоисточникам `gemini` · `mistral` · `xai` · `deepseek` · `zai` — все пять на ПРЕЖНИХ объявленных ревизиях, ДЕЛЬТ ВЕРДИКТОВ НЕТ. `kimi` / `openai` / `local` в ре-чек НЕ входили и остаются на дате 25.07.** Подробности, дословные цитаты и рекомендация по строке 6 — `docs/archive/reports/TOS_RECHECK_2026-07-31.md`. +> **Следующая пере-проверка: 2026-10-25 (квартально) И безусловно перед заводкой первой лейблованной книги** (плюс при любой правке `accepts_labels`). +> Питает `accepts_labels` в `backend/configs/models.yaml` (D39.25–D39.28). **Строки данных применяет оркестратор ТОЛЬКО после подписи владельца** — здесь зафиксированы ФАКТЫ, не юридическое заключение. **⚠ Эта секция — про ДРУГУЮ ось, чем секция «Контент-фильтры / safety» выше. Не смешивать:** @@ -85,29 +88,35 @@ | **zai** | **FORBIDDEN** | **FORBIDDEN** | Z.ai **Terms of Use** п. f)/g) — *Last Update: April 14, 2026*; scope прямо `z.ai/model-api` | | **kimi** | UNCLEAR `ambiguous-term` | UNCLEAR `no-clause` + катч-олл | **Terms of Service for Kimi OpenPlatform** §3.1(1)/(5) — *Last Updated: May 27th, 2026* (Moonshot AI PTE. LTD.) | | **xai** | UNCLEAR `no-clause` (**чистое молчание**) | **ALLOWED** `contrastive-absence` | **xAI AUP** — *Effective: June 26, 2026*; договор API = **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*) | +| **gemini** | UNCLEAR `ambiguous-term` | ~~FORBIDDEN~~ → **UNCLEAR** ⚠ | **Generative AI Prohibited Use Policy** — *Last Modified: December 17, 2024*; втянут **Gemini API Additional ToS** (*Effective March 23, 2026*), а над ним **Google APIs ToS** (*Last modified: November 9, 2021*) — головной договор API | | **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* (`legal.mistral.ai`, НЕ `mistral.ai/terms/*` — там 404) | | **local** | UNCLEAR `scope` | UNCLEAR `scope` | вендор-API нет; веса Apache-2.0 (0 контентных ограничений), но Ollama ToS §4 (*Last updated: May 2026*) формально говорит о «software» | +⚠ **Клетка `gemini` × `sexually-explicit` — амендмент D39.32 п.2, а не находка ре-чека.** Текст PUP не менялся; изменилось его ратифицированное ЧТЕНИЕ: оговорка «`-- for example, content created for the purpose of pornography or sexual gratification`» читается владельцем как СУЖЕНИЕ (запрет адресован контенту, созданному РАДИ порнографии), поэтому `FORBIDDEN` снят. Но по доктрине D39.29 («молчание и „нас не запрещает“ ≠ разрешение») клетка становится **`UNCLEAR`, а не `ALLOWED`**: строки в `accepts_labels` Gemini НЕ получает, маршрут не меняется, судья 18+ остаётся grok. Право даст только отдельная подпись владельца — **строка 6 бэклога**. *(Рассинхрон таблицы с D-логом обнаружен ре-чеком 31.07 и помечен, а не переписан молча.)* + > **ГЛАВНЫЙ ВЫВОД, который надо прочитать целиком: по `violence` ПРАВА НЕТ НИ У ОДНОГО вендора.** Причина структурная, а не про наши книги: AUP регулируют **пропаганду** насилия («promotes, incites, glorifies, facilitates»), а **нейтральное художественное изображение** не называет НИ ОДИН документ — ни чтобы запретить, ни чтобы разрешить. Z.AI — единственный, кто пишет «violent content» плоско (→ FORBIDDEN); xAI — единственный, у кого слова `violen*` в AUP **нет вообще** (0 вхождений → чистое молчание, а молчание по доктрине не даёт ALLOWED). Следствие: **экономическая посылка D14 п.1 («violence-книга не теряет dspro-редактора») первоисточниками НЕ подтверждается** — под fail-closed violence-книга не поедет никуда. Это решение владельца, не сессии: детали и три варианта — в отчёте `docs/archive/reports/POLYGON_TOS_LABELS_REPORT_2026-07-25.md`. -### Доказательства (дословно; каждая цитата подтверждена `grep -c -F` = 1 по сохранённой копии) +### Доказательства (дословно; каждая цитата подтверждена счётом вхождений = 1 по сохранённой копии — форму проверки см. «Как это добывалось», 31.07 она исправлена) - **deepseek** · *Terms of Use* §3.4 «You will not use the Services to generate, express or promote content or a chatbot that:» → **(5)** `is pornographic, obscene, or sexually explicit (e.g., sexual chatbots);` → SE = FORBIDDEN. **(6)** `facilitates, promotes, incites or glorifies violence or terrorist/extremism content;` → violence = UNCLEAR (глаголы = пропаганда, не изображение). Привязка к API двойная и явная: преамбула Open Platform ToS `serves as a Specific Agreement to the "DeepSeek Terms of Use" and specifically applies to your use of the application programming interface`, плюс §3.1 `you should procure that both of you and your end users comply with the requirements of the "DeepSeek Terms of Use"`; сам ToU §1.1 включает `application programming interfaces (APIs)` в определение «the Services». ⚠ **Поправка к D14 п.1: пункт «§3.4(5)» верен дословно, но он в Terms of Use, а НЕ в «Open Platform Terms of Service» — в последнем §3.4 про оргтехмеры безопасности.** - **zai** · *Terms of Use*, «You are prohibited from engaging in or facilitating any of the following actions … including but not limited to:» → **f)** `Creating or disseminating obscene, pornographic, violent, murderous, terroristic, or criminal incitement content.` **g)** `Submitting, creating or disseminating content that is sexually explicit, suggestive, visually shocking, or otherwise disturbing.` Оба лейбла названы ПЛОСКО (без глагола-пропаганды), g) покрывает и **вход** («Submitting») → **FORBIDDEN/FORBIDDEN**. Scope: `as a user of the Z.ai accessible via z.ai/model-api ("Services")`. - **kimi** · *OpenPlatform ToS* §3.1 вводится «For example, you will not…» (перечень ЯВНО неисчерпывающий) → contrastive-absence неприменим. §3.1(5) `To spam, bully, harass, defame, sexualize children, or promote violence, hatred or the suffering of others.` (пропаганда, не изображение) + широкий катч-олл §3.1(1) `For purposes that may have a harmful impact on physical or spiritual health or that violate ethical principles.` — «spiritual health»/«ethical principles» не определены → **UNCLEAR/UNCLEAR**. - **xai** · *AUP*, грант: `You are free to use our Service so long as you use it to be a good human, act safely and responsibly, comply with the law, not harm people, and respect our guardrails:`. В сексуальной семье названы ТОЛЬКО узкие соседи — реальные лица и дети: `Depicting likenesses of persons in a pornographic manner`, «Undressing or nudifying real persons…», «Sexualizing or exploiting children» → взрослая художественная эротика не названа → **SE = ALLOWED**. По насилию: `grep -c -i violen` по AUP = **0** → **violence = UNCLEAR/no-clause**. Договор API — Enterprise ToS: `these terms are for enterprise (business) users of the xAI API and related xAI Services who are at least 18 years old` (0 контентных пунктов; консьюмерский ToS к нам не применим). - **gemini** · *PUP*: `Do not engage in sexually explicit, violent, hateful, or harmful activities. This includes generating or distributing content that facilitates:` → буллит `Sexually explicit content -- for example, content created for the purpose of pornography or sexual gratification.` (класс назван своим именем; «for example» — иллюстрация, не сужение) → **SE = FORBIDDEN**; буллит `Violence or the incitement of violence.` под стемом «facilitates» → **violence = UNCLEAR**. Художественная оговорка НЕ carve-out — это дискреция: `We may make exceptions to these policies based on educational, documentary, scientific, or artistic considerations, or where harms are outweighed by substantial benefits to the public.` Привязка: Gemini API Additional ToS `you must comply with our Prohibited Use Policy`. + **Добор ре-чека 31.07.2026** (цепочка договора пере-проверена целиком): головной документ API — **не** потребительский `policies.google.com/terms`, а `Google APIs Terms of Service`: Additional ToS дословно требует `you must accept (1) the Google APIs Terms of Service (the " API Terms "), and (2) these Gemini API Additional Terms of Service`. Потребительский ToS цепляется лишь КОСВЕННО, через API ToS §b `You will not violate any other terms of service with Google (or its affiliates).`, и по нашим двум классам он ПУСТ (`violen*` = 0, `sexual*` = 0 вхождений и в ревизии 22.05.2024, и в новой 30.07.2026). Перечень «a. API Prohibitions» в Google APIs ToS по нашей оси тоже пуст (ближайшее — `Defame, abuse, harass, stalk, or threaten others.`, про поведение к людям, не про изображение в вымысле). **Единственная контентная вставка ревизии 30.07.2026** — `Some content may not be suitable for everyone.` в разделе о генерируемом контенте: это дисклеймер о ВЫХОДЕ Google, не разрешение на наш ВХОД, и по D39.29 права не даёт. **Два пункта Additional ToS, прежде не цитированные, важны для судьи Ф2:** `The Services include safety features to block harmful content, such as content that violates our Prohibited Use Policy . You may not attempt to bypass these protective measures…` и `Applications with less restrictive safety settings may be subject to Google's review and approval.` ⇒ обход фильтра запрещён ДОГОВОРОМ, что смыкается с D22.6 (фильтр `PROHIBITED_CONTENT` неконфигурируем) и означает: подпись под строкой 6 даёт ПРАВО, но работающего судьи эротики не даёт. - **openai** · *Usage Policies* (взрослый перечень) `terrorism or violence, including hate-based violence` — конструкция «use our services FOR …» = деяние; слово «violent **content**» встречается ТОЛЬКО в минорной секции: `exposing minors to age-inappropriate content, such as graphic self-harm, sexual, or violent content`. Само по себе это тянет на ALLOWED, НО в договор через Services Agreement §17 инкорпорирована *Sharing & publication policy* (2022), чей раздел «Content co-authored with the OpenAI API» бьёт ровно в наш кейс: `are not related to adult content, spam, hateful content, content that incites violence, or other uses that may cause social harm` — «adult content» не определён, хвост «other uses that may cause social harm» открыт → **UNCLEAR по обоим**. ⚠ §17 привязывает применимую редакцию политик к дате НАШЕГО договора/продления, а не к сегодняшнему сайту. - **mistral** · *Usage Policy*: в сексуальной семье названы CSAM, `You shall not use the Mistral AI Products to generate intimate images of any person without the explicit consent of all individuals involved` (NCII) и «sexual services»/трафикинг — взрослая художественная эротика не названа → **SE = ALLOWED** (подтверждает репо-клейм «policy 11.06.2026 без запрета adult»). Насилие: `promotes, incites, threatens, or glorifies violence is not permitted` → **UNCLEAR**. Scope-оговорка: `This Usage Policy does not apply to Mistral AI Products deployed on a customer's infrastructure…` — наш путь через платформу покрыт. - **local** · Вендор-API нет: инференс на стенде, наружу ничего не уходит. Веса `huihui_ai/qwen3-abliterated:8b` ← `Qwen/Qwen3-8B` и `huihui-ai/Qwen3-8B-abliterated`, обе карточки HF `license: apache-2.0`; в самом LICENSE **0 вхождений** контентных ограничений (`grep -c -iE "sexual|pornograph|violence|acceptable use"` = 0) — Apache-2.0 не ограничивает область применения. Остаётся Ollama Inc. ToS (*Last updated: May 2026*) §4 «You may not: … `Transmit harmful, offensive, or illegal content`»: «offensive» не определён, а «Service» определён через «software», из-за чего непонятно, накрывает ли он локальный `ollama serve` → **UNCLEAR `scope`, вердикт владельца** («н/п» тоже его право). ### Как это добывалось (норма «заявление = команда»; приёмка ре-ранит) -- Прямой `curl` с браузерными заголовками; текст — стандартным питон-стриппером; **каждая цитата проверена `grep -c -F` по сохранённому файлу**. -- **Cloudflare-403 на `x.ai` и `openai.com`** (воспроизводится и в WebFetch): обход — Wayback `https://web.archive.org/web/id_/` (суффикс `id_` = оригинальные байты) **плюс** живой `https://r.jina.ai/`; цитата засчитана только при совпадении обоих путей. **Timestamp снимка ≠ дата ревизии документа** — не путать. -- `ai.google.dev` редиректит в OAuth (`curl` умирает на 50 редиректах) → Wayback/reader. +- Прямой `curl` с браузерными заголовками; текст — стандартным питон-стриппером; **каждая цитата проверена счётом вхождений = 1 по сохранённому файлу**. +- ⚠ **ПОПРАВКА 31.07.2026: `grep -c -F` по стриппнутому тексту даёт ЛОЖНЫЕ НУЛИ — так проверять больше нельзя.** Пойманы два механизма, оба на DeepSeek: ToU верстает жёсткими переносами (`
` рвёт предложение пополам), а Open Platform ToS держит кавычки в отдельных тегах, из-за чего стриппер выдаёт `" DeepSeek Terms of Use "` с пробелами внутри. Три ВЕРНЫЕ цитаты показали `0`, что читалось бы как дельта вендора. **Рабочая форма: сверять по копии с УДАЛЁННЫМИ пробелами с обеих сторон** (`re.sub(r'\s+','',…)` и к цитате, и к документу) — нечувствительно к вёрстке, последовательность символов не трогает. +- **Cloudflare-403 на `x.ai` и `openai.com`** (воспроизводится и в WebFetch): обход — Wayback `https://web.archive.org/web/id_/` (суффикс `id_` = оригинальные байты; добавлять `--compressed`, иначе приходит gzip-мусор). **Timestamp снимка ≠ дата ревизии документа** — не путать. +- ⚠ **`r.jina.ai` как ВТОРОЙ путь МЁРТВ (31.07.2026): 403** и на `x.ai`, и на `ai.google.dev`. Правило пакета-5 «цитата засчитана только при совпадении Wayback и jina» в прежней форме неисполнимо. **Замена, применённая 31.07:** два НЕЗАВИСИМЫХ захвата Wayback разных дат + сверка тел построчно (для xAI: снимки 25.07 и 28.07 побайтно идентичны). Честная граница такой замены — оба снимка в ПРОШЛОМ, живого подтверждения на дату чека нет; писать это явно. Прямой egress (`--noproxy '*'`) от Cloudflare-403 тоже не спасает — проверено. +- ⚠ **`ai.google.dev` БОЛЬШЕ НЕ ТРЕБУЕТ Wayback (31.07.2026).** Прежняя запись «редиректит в OAuth, curl умирает на 50 редиректах» верна по симптому; причина — петля на cookie `signin=autosignin`. **Лечится cookie-jar + явный язык: `curl -L --compressed -c jar -b jar 'https://ai.google.dev/gemini-api/terms?hl=en'` → HTTP 200 живьём.** Живая копия сверена со снимком Wayback: тело договора построчно идентично, расходится только навигация сайта. +- **Головной Google ToS отдаётся по СТРАНОВЫМ версиям** (`?hl=en-US&gl=us` = Google LLC, дефолт с нашего egress = Google Ireland Limited) — версии текстуально разные, дату ревизии смотреть на нужной. Архив ревизий: `policies.google.com/terms/archive`, редлайн между ревизиями — `…/archive/<от>-<до>` (``/`` в разметке). **Редлайн вендора использовать как перекрёстную проверку, а дельту строить своим дифом архивной и живой копий.** - ⚠ **`mistral.ai/terms/usage-policy` отдаёт HTTP 404** (и снимков в Wayback нет) — рабочий хост **`legal.mistral.ai/terms/usage-policy`**. Наш egress — прокси, так что 404 может быть edge-специфичным; при пере-проверке начинать с `legal.` . - ⚠ **WebFetch для цитат НЕ годится** — режет цитату ~125 символами и переходит на пересказ. Только `curl` + `grep -F`.