Accept polygon package five and record the owner decisions: first-source ToS rights, no violence label with signed interpretation, accepted Z.AI risk, two signed capability rows
This commit is contained in:
parent
2a08439af4
commit
3bc9eb48b1
12 changed files with 408 additions and 25 deletions
|
|
@ -14,7 +14,7 @@ Go-бэкенд издательского художественного пер
|
|||
|
||||
## Источники истины (по убыванию)
|
||||
|
||||
1. **`docs/architecture/05-decisions-log.md` (D1–D39.28)** — ратифицированный контракт; при конфликте с любым другим доком побеждает он; сверху файла — карта актуальности (что чем superseded). **Правило чтения (онбординг-диета 25.07): карта + живая голова (эра D39.x); корпус D1–D38 = справочник — по ссылкам/grep по D-номеру, целиком НЕ читать.**
|
||||
1. **`docs/architecture/05-decisions-log.md` (D1–D39.30)** — ратифицированный контракт; при конфликте с любым другим доком побеждает он; сверху файла — карта актуальности (что чем superseded). **Правило чтения (онбординг-диета 25.07): карта + живая голова (эра D39.x); корпус D1–D38 = справочник — по ссылкам/grep по D-номеру, целиком НЕ читать.**
|
||||
2. `docs/experiments/00-provider-quirks.md` — wire-квирки провайдеров (читать ПЕРЕД правкой адаптеров/вызовами провайдеров).
|
||||
3. `docs/architecture/09-target-architecture.md` (7 слоёв; статус стройки — шапка-таблица) · `12-go-style-notes.md` (норматив общности §0) · `10-prompt-architecture.md` (промпт-тема).
|
||||
4. `docs/architecture/01-decisions.md` (Р1–Р10), `02-mvp-plan.md`, `04-unhappy-paths.md`, `06-memory-risk-registry.md` — тела исторические, читать через ⚠-баннеры 25.07.
|
||||
|
|
|
|||
|
|
@ -75,13 +75,13 @@ providers:
|
|||
# знает ни одного. ВОКАБУЛЯР РЕШЁН владельцем (D39.27): ПАРА `violence` / `sexually-explicit` —
|
||||
# она сохраняет ратифицированную развязку D14 п.1 (ToS DeepSeek запрещает sexually explicit, но
|
||||
# violence оставляет допустимым), то есть violence-книга не теряет dspro-редактора.
|
||||
# Строка ПУСТА СОЗНАТЕЛЬНО и это ВЕРНОЕ состояние (fail-closed): значения — ФАКТЫ ToS/AUP, а они
|
||||
# (а) добываются только по ПЕРВОИСТОЧНИКАМ (правило двух направлений, `experiments/00-provider-quirks.md`),
|
||||
# (б) даются ПЕР-ЛЕЙБЛУ, а не пер-провайдеру целиком: violence и sexually-explicit — РАЗНЫЕ ответы у
|
||||
# одного и того же вендора, и (в) фиксируются полигоном, не бэкенд-сессией. По памяти не заполнять.
|
||||
# Форма, когда факты будут (одна строка на провайдера, только подтверждённые лейблы):
|
||||
# accepts_labels: [violence] # эндпойнт вправе получать только violence
|
||||
# accepts_labels: [violence, sexually-explicit] # подтверждены оба
|
||||
# ФАКТЫ ДОБЫТЫ полигоном по первоисточникам и ПОДПИСАНЫ владельцем 25.07 (D39.29/D39.30);
|
||||
# цитаты — `experiments/00-provider-quirks.md` §«Право по ToS/AUP», вердикты даны ПЕР-ЛЕЙБЛУ.
|
||||
# xAI AUP (Effective 2026-06-26) + Enterprise ToS (Last Updated 2026-05-12): в сексуальной семье
|
||||
# названы только реальные лица (undressing/nudifying, порнографические подобия) и дети — взрослая
|
||||
# художественная эротика НЕ названа ⇒ право есть. `violence` НЕ выдан: слов violen* в AUP 0 вхождений
|
||||
# (чистое молчание, а молчание права не даёт). Пере-проверка: 2026-10-25 и перед первой explicit-книгой.
|
||||
accepts_labels: [sexually-explicit]
|
||||
# Эмпирика этого endpoint: главный пермиссив-тир канала B + reasoning-ON эскалация (D3/D19.1),
|
||||
# первичный судья эротики (D22.6).
|
||||
timeouts: { attempt_s: 240, max_attempts: 3, backoff_cap_s: 60 }
|
||||
|
|
@ -121,9 +121,13 @@ providers:
|
|||
base_url: https://api.mistral.ai/v1
|
||||
api_key_env: MISTRAL_API_KEY
|
||||
reasoning: subset # mistral-large — не thinking-модель; reasoning-токенов нет
|
||||
# accepts_labels — см. развёрнутый комментарий у провайдера xai: значения ждут вокабуляра владельца
|
||||
# (fail-closed до ответа). Эмпирика: переводчик-дефолт канала B (D19 п.1, 10/10 чисто на violence,
|
||||
# policy 11.06.2026 без запрета adult).
|
||||
# ФАКТЫ ДОБЫТЫ и ПОДПИСАНЫ 25.07 (D39.29/D39.30; цитаты — `experiments/00-provider-quirks.md`).
|
||||
# Mistral Usage Policy (Effective 2026-06-11, хост `legal.mistral.ai`): названы CSAM, NCII
|
||||
# («intimate images … without the explicit consent»), sexual services — взрослая художественная
|
||||
# эротика НЕ названа ⇒ право есть. `violence` НЕ выдан: §«Violence and threats» регулирует
|
||||
# «promotes, incites, threatens, or glorifies» — пропаганду, а не изображение (D39.30 п.1).
|
||||
# Эмпирика: переводчик-дефолт канала B (D19 п.1, 10/10 чисто на violence). Пере-проверка 2026-10-25.
|
||||
accepts_labels: [sexually-explicit]
|
||||
timeouts: { attempt_s: 240, max_attempts: 3, backoff_cap_s: 60 }
|
||||
|
||||
local: # ollama/llama-server на стенде (боевой env — memory textmachine-local-stand)
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
## Структура
|
||||
|
||||
- `architecture/` — синтез. **Источник истины по решениям — [`05-decisions-log.md`](architecture/05-decisions-log.md) (D1–D39.28); при конфликте с любым доком он выше.**
|
||||
- `architecture/` — синтез. **Источник истины по решениям — [`05-decisions-log.md`](architecture/05-decisions-log.md) (D1–D39.30); при конфликте с любым доком он выше.**
|
||||
- `01-decisions.md` — принципы Р1–Р10; `02-mvp-plan.md` — фазы и приёмка (v3, 09.07); `03-implementation-notes.md` — контракты Фазы 0; `04-unhappy-paths.md` — ~70 режимов отказа → механизм; `06-memory-risk-registry.md` — реестр рисков банка памяти; **[`09-target-architecture.md`](architecture/09-target-architecture.md) — целевая 7-слойная архитектура (D39; статус стройки — шапка-таблица; инвариант общности §0.1)** · [`10-prompt-architecture.md`](architecture/10-prompt-architecture.md) — консолидированная промпт-заметка (концерн 4) · [`12-go-style-notes.md`](architecture/12-go-style-notes.md) — норматив общности §0 + Go-ответы. **Исполненные (архив 25.07, санкция владельца, → `archive/architecture/`):** [`07-strategic-review.md`](archive/architecture/07-strategic-review.md) (стратаудит 09.07 — курс исполнен) · [`08-sync-audit-ledger.md`](archive/architecture/08-sync-audit-ledger.md) (ледджер синк-аудита — отработан) · [`11-implementation-plan.md`](archive/architecture/11-implementation-plan.md) (план пака-11 — исполнен целиком); `components.puml`/`pipeline.puml` — диаграммы (перерисованы 25.07 под пост-пак-16 реальность: волновой исполнитель, пакетный сплит пака-15, repair-петля за `enabled:false`, generic content-labels D39.25; владелец смотрит PlantUML-расширением VS Code; вручную НЕ рендерить).
|
||||
- `experiments/` — эмпирика «Полигона»: `00-provider-quirks` (читать перед любым вызовом провайдера), `01-token-calibration`, `02-refusal-benchmark`, `03-local-stand`, `04-editor-quality`, `06-local-extraction`, `07-coverage-precision`, `08-cost-model-v2` (актуальная денежная модель), `09-pilot-protocol` (пилот Ф2.5 + поправки D13), `10-explicit-benchmark` (18+ violence-рука канала B), `11-erotica-benchmark` (erotica по трём парам/регистрам — закрытие D14.4, D22), `12-quality-diagnosis`/`13-translator-bakeoff`/`14-quality-empirics`/`14b-meaning-battery` (дуга качества «мерить→строить», закрыты → D30/D32/D37/D38), `15-segmentation-empirics` (exp15: когезия под floor-шумом, фертильность — закрыт → D39.7/D39.8), `16-bank-mining` (exp16: WHICH/WHAT банк-майнинга — закрыт → D39.10).
|
||||
- `research/` — фактура исследований 04–05.07: `01–10` базовые, `11-gap-*` добор критиком, `12-*` режимы отказа/отзывы/таксономии (+ два внешних материала с провенанс-шапками), `13` валидация памяти, `14` адаптивная память, `15` голос и состояние (принят, D21), **`16` ридер-IDE (принят с ревью-шапкой, D29)**, **`17` внешняя критика GPT-5.6 (принят с ревью-шапкой, D25)** — у 16/17 читать шапку прежде тела. **`18` рычаги качества (два отчёта, D36)** · **`19` нарезка+когезия+контракт t/e (D39.1)** · **`20` банк-майнинг W1.5 (D39.6)** · **`21` обзор LLM-транспорта чужих харнессов (23.07: наш транспорт опережает/вровень со всеми 11)** · **`22` доменные харнессы перевода (24.07: калибрующий — ядро подтверждено, впереди COGS/18+/общность/измеренность, позади Q4-выпуск и gate+repair-петля; сиквел `02`/`05`)** — у всех ревью-шапки. ⚠ Часть под superseded-баннерами (01/02/03/04/05/09 и gap-1/2/5) — **читай баннер прежде содержимого**.
|
||||
|
|
|
|||
|
|
@ -817,7 +817,7 @@ API-529-долг закрыт: 8-осевой refute-by-default воркфлоу
|
|||
**Верификация приёмки (пропорциональная, инлайн-исполнением — всё пере-выведено мной, ни один клейм не принят с чужих слов):**
|
||||
- **Денежный кейстоун M1 ре-деривирован независимо** (питон-канон по `book.go:214-228` против `testdata/golden/capture.golden:6`): все пять дайджестов совпали посимвольно — сегодня `c2021b1b…cab0df` · поле убрано `58883ff5…b39822` · `content_labels:null` `29a3031d…8c87b` · **omitempty-хвост при пустых лейблах = байт-в-байт `c2021b1b…`** · с `["adult"]` `0e2f3111…c9d2c`. Заморозка `"adult":false` на 7-й позиции канона — единственный путь без пере-оплаты стенда (Ф7: замер остатка пака-16 поедет на этих же книгах).
|
||||
- **Фантом-гард D-ссылок (норма 9): ни одной фантомной** — существуют и говорят заявленное D2 · D3 · D4 п.1 · D6.2 · D12 · D13.6 · D14 п.1 · D15 п.2 (+спека `backend/docs/D15.2-*.md`) · D19 п.1 · D19.1 · D20.2-Q1/Q2 (`:245`) · D20.4 (`:247` — read-only аудит без ключей действительно в фикс-листе) · D22.5/D22.6/D22.7 (`:276`) · D25 п.4 (`:310`) · D30.1 · D39.20/22/24/25.
|
||||
- **Спот-чеки несущих фактов (мои исполнения):** единственный `Complete` в проде `stagerun.go:442` + единственный `r.client(` `:410`, failover без вызывающих · `repair.go:384` синтетическая стадия теряет `Channel` (⇒ ассерт обязан ключеваться на данных книги) · `Stage.Channel` = НОЛЬ рантайм-читателей (только `pipeline.go:341,549,569`) · `Escal.Chains` = валидация `pipeline.go:578` + `CheckKeys` `models.go:508` · `BriefHash` в ОБЩЕМ билдере обеих волн при пер-стадийном `stageSnap` с волновым фильтром `waveStages` ⇒ **§14.1 верна** · `reachableModels` = сырое `st.Model ∪ st.EscalateTo ∪ repair(ТОЛЬКО при `Gates.Repair.Enabled`)` ⇒ **§14.2 верна** · `escMu` через `defer` + пин `waverun_test.go` «перерасход ≤ 1 хоп» (бюджет 0.001 < хоп ≈0.00182, `workers:4`), `Waves.Workers` дефолт 1 ⇒ **§14.3-отмена лока-на-итерацию верна** · `chains.default[0]=deepseek-v4-pro` = `escalate_to` драфта (`pipeline-c1.yaml:100` vs `:51`) ⇒ неограниченный дедуп упал бы на шиппинге · golden пинит `esc_model="fake-fallback"` на ОТКАЗАВШЕМ хопе (`capture.golden:24`) ⇒ **§14.6.1-вынос верен** · `style_check_version` фолдится БЕЗУСЛОВНО (payload `capture.golden:3`) ⇒ **§14.6.2-условие верно** · ровно 13 файлов вне git несут `adult:` + `example/book.yaml:9` ⇒ терпимость отставки обязательна · порядок `runAttempt`: `GetCheckpoint:337` → `Reserve:379` → `client:410` → `Complete:442` ⇒ **§14.5.6 верна** (реплей ничего не отправляет; ассерт до резерва).
|
||||
- **Спот-чеки несущих фактов (мои исполнения):** единственный `Complete` в проде `stagerun.go:442` + единственный `r.client(` `:410`, failover без вызывающих · `repair.go:384` синтетическая стадия теряет `Channel` (⇒ ассерт обязан ключеваться на данных книги) · `Stage.Channel` = НОЛЬ рантайм-читателей (только `pipeline.go:341,549,569`) · `Escal.Chains` = валидация `pipeline.go:578` + `CheckKeys` `models.go:508` · `BriefHash` в ОБЩЕМ билдере обеих волн при пер-стадийном `stageSnap` с волновым фильтром `waveStages` ⇒ **§14.1 верна** · `reachableModels` = сырое `st.Model ∪ st.EscalateTo ∪ repair(ТОЛЬКО при `Gates.Repair.Enabled`)` ⇒ **§14.2 верна** · `escMu` через `defer` + пин `waverun_test.go` «перерасход ≤ 1 хоп» (бюджет 0.001 < хоп ≈0.00182, `workers:4`), `Waves.Workers` дефолт 1 ⇒ **§14.3-отмена лока-на-итерацию верна** · `chains.default[0]=deepseek-v4-pro` = `escalate_to` драфта (`pipeline-c1.yaml:109` vs `:51`) ⇒ неограниченный дедуп упал бы на шиппинге · golden пинит `esc_model="fake-fallback"` на ОТКАЗАВШЕМ хопе (`capture.golden:24`) ⇒ **§14.6.1-вынос верен** · `style_check_version` фолдится БЕЗУСЛОВНО (payload `capture.golden:3`) ⇒ **§14.6.2-условие верно** · ровно 13 файлов вне git несут `adult:` + `example/book.yaml:9` ⇒ терпимость отставки обязательна · порядок `runAttempt`: `GetCheckpoint:337` → `Reserve:379` → `client:410` → `Complete:442` ⇒ **§14.5.6 верна** (реплей ничего не отправляет; ассерт до резерва).
|
||||
- **Неточности отчёта, выводов не меняющие:** манифест «`accept-rebill` грепом пусто» — 9 попаданий, ВСЕ в `backend/docs/D15.2-*.md` (в коде/CLI действительно нет, клейм в силе); «23 сайта `LoadPipeline`» включает строку определения (1 прод + 21 тест).
|
||||
|
||||
**РАТИФИЦИРОВАНО (моё решение, редакция §14 целиком):**
|
||||
|
|
@ -882,3 +882,36 @@ API-529-долг закрыт: 8-осевой refute-by-default воркфлоу
|
|||
**Две объявленные правки фикстур принимаю** как отражение новой корректной семантики: кейс `terminal` больше не несёт `label_models` (они стали громкой ошибкой при не-route действии — само по себе покрыто тестом), и подстрока сообщения о неизвестном действии стала `route|allow|terminal`.
|
||||
|
||||
**ПАК-17 ЗАКРЫТ ЦЕЛИКОМ** (D39.26 дизайн · D39.27 стройка · D39.28 дельта). Остаток — не код: ToS-факты под `accepts_labels` (петля полигона) · Q2 редактор и D22.7 (перед первой explicit-книгой) · хвосты общности (отложено-с-записью) · `--accept-rebill` (D20.2-Q2, вне пака). **До заполнения фактов ни одна лейблованная книга не запускается — это не дефект, а спроектированное fail-closed поведение.**
|
||||
|
||||
## D39.29 — Пакет-5 полигона ПРИНЯТ: право по ToS/AUP добыто первоисточниками (8 вендоров × 2 лейбла); две строки данных ждут ПОДПИСИ владельца; по `violence` права нет ни у кого — развилка владельцу; errata к ссылке D14 п.1 (25.07, оркестратор №8). ✅
|
||||
|
||||
**Отчёт:** `docs/archive/reports/POLYGON_TOS_LABELS_REPORT_2026-07-25.md` (с ревью-шапкой); факты — секция «Право по ToS/AUP: провайдер × content-label» в `docs/experiments/00-provider-quirks.md` (источник истины по цитатам). Метод сессии: три контура (добыча → независимая перечитка с мандатом сломать → собственный третий проход), 15 цитат с `grep -c -F` = 1 по своим копиям.
|
||||
|
||||
**Моя приёмка — не чтением, а СВОИМИ копиями первоисточников** (три клетки с наибольшей ставкой, все подтвердились):
|
||||
- **mistral / sexually-explicit = ALLOWED — ПОДТВЕРЖДЕНО.** `legal.mistral.ai/terms/usage-policy` HTTP 200, объявленная ревизия *Effective: June 11, 2026* совпадает; в сексуальной семье названы CSAM, NCII («intimate images … without the explicit consent»), sexual services/trafficking — **взрослая художественная эротика не названа**; насилие — `promotes, incites, threatens, or glorifies violence` (глагол-пропаганда, не изображение) ⇒ `violence` UNCLEAR верно; **широкого контентного катч-олла в документе нет** (совпадения `otherwise` — про права третьих лиц и безопасность) ⇒ доктрина `contrastive-absence` применена законно.
|
||||
- **xai / sexually-explicit = ALLOWED и xai / violence = UNCLEAR — ПОДТВЕРЖДЕНО, включая самоопровержение сессии.** Прямой `x.ai` даёт **HTTP 403** (Cloudflare воспроизвёлся у меня буквально), снимок Wayback `id_` — 200, *Effective: June 26, 2026* совпадает; **`grep -c -i violen` = 0 по МОЕЙ копии** — то есть перевёрнутая сессией клетка (ALLOWED→UNCLEAR) перевёрнута правильно; в сексуальной семье названы только реальные лица (undressing/nudifying, порнографические изображения подобий) и дети ⇒ узкие соседи есть, наш класс не назван. Остаточная оговорка (моя, не опровержение): стем перечня — «don't use our Service or Outputs to promote or engage in illegal, harmful, or abusive activities, **including**:» — при желании читается как самостоятельный широкий стандарт; он привязан к законности и вводит перечень, поэтому доктрину не ломает, но это единственное место, где встречное чтение существует.
|
||||
- **zai = FORBIDDEN по обоим — ПОДТВЕРЖДЕНО.** `docs.z.ai/legal-agreement/terms-of-use` HTTP 200, *Last Update: April 14, 2026*; п. f) «Creating or disseminating obscene, pornographic, **violent**, murderous, terroristic, or criminal incitement content» — «violent **content**» ПЛОСКО, без глагола-пропаганды; п. g) «content that is sexually explicit, suggestive…». **Этим закрыт открытый вопрос D39.27 п.7:** сверка ToS Z.AI по первоисточнику сделана, glm-5 под любым из двух лейблов недоступен (для НЕпомеченных книг остаётся).
|
||||
|
||||
**РАТИФИЦИРОВАНО:**
|
||||
1. **Вердикты приняты как ФАКТЫ** (8 вендоров × 2 лейбла; таблица — в отчёте §2 и в quirks-секции). Доктрина сессии принимается целиком, включая два несущих правила: «молчание документа НЕ даёт ALLOWED» и «широкий катч-олл в применимом документе убивает `contrastive-absence`». Второе она применила ПРОТИВ своего же независимого контура (openai/violence: контур дал ALLOWED, она поставила UNCLEAR, потому что иначе доктрина стала бы подгонкой) — **это правильный выбор**: последовательность правила дороже одной выигранной клетки, а цена низка (OpenAI вне боевой цепочки, клетка переворачивается одной правкой данных).
|
||||
2. **Две строки данных — `xai: accepts_labels: [sexually-explicit]` и `mistral: accepts_labels: [sexually-explicit]` — ГОТОВЫ, но НЕ применяются без подписи владельца** (18+/юридическая ось). До подписи механизм fail-closed — верное состояние.
|
||||
3. **Errata к D14 п.1 (дисциплина D23.3: тело исторического блока НЕ переписываю, поправка живёт здесь).** Номер пункта верен дословно — `§3.4(5)`: «is pornographic, obscene, or sexually explicit (e.g., sexual chatbots)», — но живёт он в **DeepSeek Terms of Use** (*Last Update: March 27, 2026*), а не в «Open Platform Terms of Service», где §3.4 про оргтехмеры. На вывод не влияет (Open Platform ToS §3.1 втягивает ToU по ссылке), на воспроизводимость влияет: по названию документа пункт не находится. Класс дефекта — ровно целевой для пакета (верная цитата у не того документа).
|
||||
4. **Судья 18+: договорное подтверждение поведенческого решения.** Gemini PUP запрещает sexually-explicit ⇒ grok-фолбэк D22.6 теперь обоснован не только `PROHIBITED_CONTENT`-поведением, но и текстом договора. Записано.
|
||||
5. **Пинг-1 закрыт живым фактом:** катовер `deepseek-chat`/`-reasoner` ИСПОЛНЕН — 404 не только в листинге, но и на пер-слаговом retrieve (сильнее прежнего алиас-урока «нет в /models ≠ не работает»); цены не изменились ⇒ `prices_checked` в `models.yaml` можно продлить БЕЗ правки чисел (предложение бэкенду, не полигону — чужая зона). Все 8 пингов блока B закрыты.
|
||||
|
||||
**НА ВЛАДЕЛЬЦЕ (§6 отчёта — семь вопросов; блокирующий один):**
|
||||
- **`violence`: права нет ни у одного вендора, и причина структурная** — все AUP регулируют ПРОПАГАНДУ насилия («promotes/incites/glorifies/facilitates»), нейтральное художественное изображение не называет ни один документ; два исключения в «неудобную» сторону (zai — плоский запрет; xai — полное молчание). **Экономическая посылка D14 п.1 первоисточниками НЕ подтверждается.** Три варианта отчёта §5.1 в силе; **моя рекомендация — синтез варианта 2 с аудит-следом:** механически лейбл `violence` НЕ заводить (это ровно сегодняшний статус-кво, под которым уже прошли exp10 и rerun2 — нового риска не появляется, а книга едет), а интерпретацию «нейтральное изображение ≠ пропаганда» зафиксировать письменно за подписью владельца ЗДЕСЬ, в контракте, не в данных: она даёт аудит-след «решение принято осознанно», ничего не блокируя. Вариант 1 (выдать `violence` вендорам с глаголами-пропагандами) остаётся доступен одной правкой данных в любой момент.
|
||||
- **НОВОЕ, вскрыто фактами и не зависит от лейблов (мой добор; формулировку уточнил ПОСЛЕ проверки — первая была мягче правды):** `zai` запрещает «violent content» ПЛОСКО, а **экспозиция уже СОСТОЯЛАСЬ**: glm-арм (`configs/pipeline-arm-glm.yaml`, `role: editor / model: glm-5`) гонялся живьём на 蛊真人 в пере-прогоне rerun2 (D39.20: судейские 0.589 по 56 играм на арм) — то есть насильственная проза уже отправлялась на Z.AI, и вопрос про `violence` касается не будущих помеченных книг, а совершённого. Уточнение в другую сторону: `glm-5.1` в `chains.default` (`configs/pipeline-c1.yaml:109`) сегодня НЕдостижим (раннер исполняет single-hop через `stage.escalate_to` = `deepseek-v4-pro`, плюс `budget_usd: 0` гасит эскалацию целиком) — вектор именно арм-конфиг, не цепочка. Решение владельца: снять glm с насильственных книг либо сознательно принять риск с записью; лейбл-механизм тут ни при чём.
|
||||
- Остальные шесть вопросов §6: чтение Gemini-оговорки «for example, … pornography or sexual gratification» (сужение или иллюстрация) · связывает ли нас OpenAI Sharing & publication policy 2022 (единственное, что держит обе клетки OpenAI в UNCLEAR) · применимость Ollama ToS §4 к локальному инференсу · различать ли в конфиге ПРИЧИНУ пустоты (FORBIDDEN vs UNCLEAR) · дата заведения аккаунта OpenAI (§17 привязывает редакцию политик к дате договора) · нужен ли ре-чек политик по хешу перед платными прогонами (триггеры известны: головной Google ToS 30.07.2026, квартал 25.10.2026).
|
||||
|
||||
**Продуктовое, вне движка (в трекер):** Gemini API Additional ToS запрещает клиентов, «directed towards or … likely to be accessed by individuals under the age of 18» — обязательство на КОНЕЧНЫЙ продукт (ридер-IDE, публикация), действует независимо от лейблов; юрисдикционные annex'ы (австралийский у xAI) вводят депикт-запреты поверх общего AUP — при выходе на новые рынки перепроверять annex'ы, а не только AUP.
|
||||
|
||||
## D39.30 — Решения владельца по итогам пакета-5: лейбл `violence` НЕ заводится (интерпретация зафиксирована письменно), риск Z.AI принят сознательно, две строки `accepts_labels` ПОДПИСАНЫ и применены (25.07, оркестратор №8). ✅
|
||||
|
||||
Три решения приняты владельцем 25.07 по фактам D39.29. Записаны здесь, потому что это ровно тот класс, который обязан иметь аудит-след: юридическая ось, 18+, принятый риск.
|
||||
|
||||
1. **`violence` — лейбл механически НЕ заводится; интерпретация фиксируется письменно (вариант 2 + аудит-след).** Подписанное чтение владельца: **нейтральное художественное изображение насилия в вымысле не является «promoting / inciting / glorifying / facilitating violence»** — то есть под глаголы-пропаганды, которыми оперируют все проверенные AUP, наши тексты не подпадают. Практика: лейбл `violence` в вокабуляре остаётся (механизм его держит), но книгам не назначается и `accepts_labels` им не заполняется — это ровно статус-кво, под которым уже прошли exp10 и rerun2, поэтому нового риска решение не создаёт, а приёмочная 蛊真人 едет как ехала. **Обратимость:** вариант «выдать `violence` вендорам с глаголами-пропагандами» остаётся доступен одной правкой данных в любой момент; `zai` под ним не подпадает в любом случае (плоский запрет), `xai` — тоже (чистое молчание). **Граница честности:** это интерпретация, а не право, выданное текстом; она защищает решение как обдуманное, но не заменяет разъяснения вендора.
|
||||
2. **Риск Z.AI ПРИНЯТ сознательно, с записью.** Факт: Z.ai Terms of Use (Last Update 2026-04-14) п. f) запрещает «obscene, pornographic, **violent**, murderous, terroristic, or criminal incitement content» — «violent content» плоско, без глагола-пропаганды, то есть в отличие от п.1 здесь интерпретация не спасает. Экспозиция УЖЕ состоялась: glm-арм (`configs/pipeline-arm-glm.yaml`, `role: editor / model: glm-5`) гонялся живьём на 蛊真人 в rerun2 (D39.20). **Решение владельца: риск принять** — прогон исследовательский, на собственной книге, без публикации; glm-5 остаётся резервным армом редактора. **Условия, при которых решение пересматривается (записываю как часть принятия):** переход к публикации/клиентским книгам · использование glm на не-своём контенте · смена политики Z.AI (пере-проверка 2026-10-25). `glm-5.1` в `chains.default` (`configs/pipeline-c1.yaml:109`) остаётся недостижимым по построению (single-hop через `escalate_to`, `budget_usd: 0`), так что дополнительного вектора цепочка не даёт.
|
||||
3. **Две строки `accepts_labels` ПОДПИСАНЫ и ПРИМЕНЕНЫ мной в `backend/configs/models.yaml`:** `xai: accepts_labels: [sexually-explicit]` (xAI AUP Effective 2026-06-26 + Enterprise ToS Last Updated 2026-05-12) и `mistral: accepts_labels: [sexually-explicit]` (Mistral Usage Policy Effective 2026-06-11, хост `legal.mistral.ai`). Обоснование — в комментариях у строк, цитаты — в `experiments/00-provider-quirks.md`. **Ни одна книга лейблов не несёт, поэтому применение строк НИЧЕГО не запускает и ничего не двигает** (проверено: `go test ./internal/config/` зелёный; строки — данные провайдера, вне хешей и вне снапшотов). Механизм перестал быть пустым и готов к первой explicit-книге; для неё по-прежнему обязательны предусловие D22.7 (L3-скрин) и Q2 (выбор редактора под лейблом).
|
||||
|
||||
**Остались открытыми (не блокируют, у владельца):** чтение Gemini-оговорки «for example … pornography or sexual gratification» (сужение vs иллюстрация) · связывает ли нас OpenAI Sharing & publication policy 2022 (единственное, что держит обе клетки OpenAI в UNCLEAR) · применимость Ollama ToS §4 к локальному инференсу · различать ли в конфиге причину пустоты (`FORBIDDEN` vs `UNCLEAR`) · дата заведения аккаунта OpenAI (§17 привязывает редакцию политик к дате договора) · ре-чек политик по хешу перед платными прогонами (триггеры: головной Google ToS 30.07.2026, квартал 25.10.2026). **Продуктовое (Ф3, вне движка):** Gemini API Additional ToS запрещает клиентов, «likely to be accessed by individuals under 18» — обязательство на конечный продукт (ридер/публикация).
|
||||
|
|
|
|||
260
docs/archive/reports/POLYGON_TOS_LABELS_REPORT_2026-07-25.md
Normal file
260
docs/archive/reports/POLYGON_TOS_LABELS_REPORT_2026-07-25.md
Normal file
|
|
@ -0,0 +1,260 @@
|
|||
# Отчёт полигона: ПАКЕТ 5 — факты ToS/AUP под `accepts_labels` + семь док-синк пингов
|
||||
|
||||
> **Ревью-шапка оркестратора №8 (25.07; ПРИНЯТ — `D39.29`). 0 блокеров.** Приёмка — не чтением: поднял **свои** копии первоисточников по трём клеткам с наибольшей ставкой, все три подтвердились. **mistral/sexually-explicit ALLOWED** — `legal.mistral.ai` HTTP 200, *Effective: June 11, 2026* совпадает, названы CSAM/NCII/sexual services, взрослая художественная эротика НЕ названа, широкого контентного катч-олла в документе нет ⇒ `contrastive-absence` законна; насилие — глагол-пропаганда ⇒ UNCLEAR верно. **xai** — прямой `x.ai` дал **403 у меня тоже**, Wayback `id_` 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`, editor `glm-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` (непонятно, какой документ применим).
|
||||
|
||||
Три решения, которые я принял и на которых стоит вся таблица:
|
||||
|
||||
1. **Молчание документа само по себе НЕ даёт ALLOWED.** Мы маршрутизируем по праву, fail-closed безопасен, гадать запрещено. `contrastive-absence` требует именно **контраста**, а не тишины: должен быть назван более узкий сосед. Это стоило нам одного «красивого» ALLOWED (см. §5.2) — и правильно стоило.
|
||||
2. **Широкий катч-олл в том же документе убивает contrastive-absence.** Если вендор отдельным пунктом запрещает что-то неопределённо-широкое («вредно для духовного здоровья», «иные применения, способные причинить социальный вред»), то отсутствие нашего класса в перечне уже ничего не доказывает. Именно это, а не «неисчерпаемость перечня» как таковая, разводит Kimi/OpenAI (UNCLEAR) и xAI/Mistral (ALLOWED по эротике).
|
||||
3. **Различаю глагол-пропаганду и глагол-изображение.** «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 Добыча: команды (норма «заявление = команда», приёмка ре-ранит)
|
||||
|
||||
```bash
|
||||
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):
|
||||
|
||||
1. **Контур добычи:** по одному агенту на вендора — поиск цепочки документов, дословные цитаты, вердикты пер-лейблу.
|
||||
2. **Контур перечитки:** по одному НЕЗАВИСИМОМУ агенту на вендора, с задачей **сломать** результат: пере-фетчить источник САМОСТОЯТЕЛЬНО, найти цитату своим `grep -F`, проверить (а) вендора, (б) документ и его дату, (в) что цитата поддерживает ИМЕННО этот вердикт ИМЕННО для этого лейбла, (г) что вердикт не шире улики.
|
||||
3. **Мой собственный третий проход:** я поднял **свои** копии всех первоисточников по всем семи вендорам и **сам перечитал каждую цитату на месте**. Итоговая батарея — 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, и это верное состояние.
|
||||
|
||||
```yaml
|
||||
# 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` будет заполнен из текстов.
|
||||
|
||||
**Три варианта, между которыми выбирает владелец** (я не выбираю — это юридическая ось):
|
||||
|
||||
1. **Интерпретационное решение владельца:** постановить, что нейтральное художественное изображение насилия не является «promoting / inciting / glorifying violence», и на этом основании выдать `violence` тем вендорам, у кого стоят только глаголы-пропаганды (`deepseek`, `gemini`, `mistral`, `openai`, `kimi`). Защитимо текстуально; `zai` остаётся FORBIDDEN в любом случае; `xai` — отдельный разговор, там молчание, а не глагол. **Цена: подпись под юридическим чтением.**
|
||||
2. **Не помечать violence вовсе:** решить, что уровень насилия в наших ранобэ не образует лейблуемого класса, и держать `violence` в вокабуляре под действительно экстремальный контент, который мы пока не берём. **Цена: нулевая сегодня, но лейбл лежит незаполненным.**
|
||||
3. **Оставить 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. Вопросы владельцу (нужна подпись/решение)
|
||||
|
||||
1. **`violence` — какой из трёх вариантов §5.1?** Это блокирующий вопрос: без него лейбл `violence` остаётся незаполнимым, а приёмочная 蛊真人 — незапускаемой под пометкой.
|
||||
2. **Gemini / `sexually-explicit`:** считать ли `-- for example, content created for the purpose of pornography or sexual gratification` **сужающим определением** (тогда сюжетная сцена внутри романа под запрет не подпадает) или **иллюстрацией** (тогда запрещён класс целиком)? Я прочитал как иллюстрацию → FORBIDDEN. Альтернативное чтение текстуально возможно и переворачивает вердикт.
|
||||
3. **OpenAI:** признаём ли Sharing & publication policy (2022) действующим ограничением? Она инкорпорирована §17, но ссылается на несуществующую «Content Policy» и запрещает «adult content», которого в действующих Usage Policies больше нет. Это **единственное**, что удерживает обе клетки OpenAI в UNCLEAR.
|
||||
4. **`local`:** ваш вердикт по применимости Ollama ToS §4 к локальному инференсу. «н/п» — легитимный ответ; я не имею оснований решать это за вас.
|
||||
5. **Различать ли в конфиге ПРИЧИНУ пустоты** (`FORBIDDEN` против `UNCLEAR`)? Механизм D39.28 позволяет и то, и другое. Практическая разница: `UNCLEAR`-клетки переоткрываются одной правкой данных после вашего решения, `FORBIDDEN`-клетки не переоткроются никогда без смены вендором политики.
|
||||
6. **Дата заведения/последнего продления аккаунта OpenAI** — нужна, чтобы понять, какая редакция Usage Policies к нам применима (§5.4).
|
||||
7. **Нужен ли периодический ре-чек политик по хешу файла** перед каждым платным прогоном? Триггеры уже известны: 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:**
|
||||
1. **Катовер прошёл.** Слаги сняты не только из листинга, но и из пер-слагового реестра — это сильнее, чем прежний алиас-урок («нет в /models ≠ не работает»), и исчерпывает его для этих двух слагов.
|
||||
2. **Честная граница:** `chat/completions` этими слагами я НЕ дёргал — платные вызовы в пакете не санкционированы. Реестр-404 — сильная, но формально не тождественная улика. Если владельцу нужна стопроцентная точка — это один вызов на сотые доли цента, скажите.
|
||||
3. **Цены не изменились** (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/` не лезу.
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
| Провайдер | base_url | Модель (на 2026-07-04) | env-ключ |
|
||||
|---|---|---|---|
|
||||
| DeepSeek | `https://api.deepseek.com/v1` | **`deepseek-v4-flash`** (`deepseek-chat` не в /models, но работает как алиас до депрекации 24.07.2026; эхает zh — см. ниже, брать v4-flash с thinking) | `DEEPSEEK_API_KEY` |
|
||||
| DeepSeek | `https://api.deepseek.com/v1` | **`deepseek-v4-flash`** + `deepseek-v4-pro` — и это **ВЕСЬ** листинг (live 25.07.2026). **Катовер ИСПОЛНЕН:** `deepseek-chat`/`deepseek-reasoner` сняты не только из листинга, но и из реестра — `GET /v1/models/deepseek-chat` → **404 `Model Not Found`**, алиас-оговорка календаря на них больше НЕ распространяется. Цены пост-катовера НЕ изменились (25.07: flash $0.14/$0.28 cache-hit $0.0028 · pro $0.435/$0.87 cache-hit $0.003625) — `models.yaml` актуален. Эхает zh — см. ниже, брать v4-flash с thinking | `DEEPSEEK_API_KEY` |
|
||||
| xAI Grok | `https://api.x.ai/v1` | **`grok-4.3`** *(→ D30.1: из роли РЕДАКТОРА reasoning-off СНЯТ — no-op, exp12; grok — эскалация канала B reasoning-ON и судья 18+, не дефолт-редактор)* (для thinking-OFF слать явный `reasoning_effort:"none"` — см. thinking-таблицу ниже; слаг НЕ меняем на non-reasoning вариант — он = grok-4.3+`none` под капотом, ретайр 15.05.2026). `grok-4-fast` не в /v1/models, но работает как алиас (HTTP 200). | `XAI_API_KEY` |
|
||||
| GLM (Z.ai) | `https://api.z.ai/api/paas/v4` | `glm-4.5-air` (дёшево) / `glm-4.6`; в /models: glm-4.7, glm-5, glm-5.1, glm-5.2 | `ZAI_API_KEY` |
|
||||
| Gemini | `https://generativelanguage.googleapis.com/v1beta/openai` | `gemini-2.5-flash`, `gemini-2.5-pro`, `gemini-3.1-pro-preview` | `GEMINI_API_KEY` |
|
||||
|
|
@ -60,17 +60,66 @@
|
|||
- **Qwen Model Studio**: внешний фильтр `data_inspection_failed` на вход/выход, неотключаем (риск молчаливых вырезаний) — не тестировано (нет ключа).
|
||||
- Детект отказов/вырезаний — см. `eval/refusal_bench.py` (паттерны soft-отказа + coverage-гейт по len_ratio/sent_cov, пороги в эксп. 02).
|
||||
|
||||
## Транспорт / инфраструктура
|
||||
## Право по ToS/AUP: провайдер × content-label (ось ПРАВА — НЕ ось поведения)
|
||||
|
||||
> **Внесено полигоном, пакет-5, дата проверки 2026-07-25. Пере-проверка: 2026-10-25 (квартально) И безусловно перед заводкой первой лейблованной книги.** Питает `accepts_labels` в `backend/configs/models.yaml` (D39.25–D39.28). **Строки данных применяет оркестратор ТОЛЬКО после подписи владельца** — здесь зафиксированы ФАКТЫ, не юридическое заключение.
|
||||
|
||||
**⚠ Эта секция — про ДРУГУЮ ось, чем секция «Контент-фильтры / safety» выше. Не смешивать:**
|
||||
|
||||
| | Что меряет | Чем меряется | Что делает движок |
|
||||
|---|---|---|---|
|
||||
| **Право** (эта секция) | вправе ли мы по договору ОТПРАВИТЬ такой контент на эндпойнт | чтение ToS/AUP первоисточника | проактивный роутинг по лейблу до вызова (`accepts_labels`) |
|
||||
| **Поведение** (секция выше) | ответит ли модель или откажет | живой вызов | обработка отказа причино-агностично (D12/D39.25) |
|
||||
|
||||
Оси эмпирически расходятся **в обе стороны**, и у нас есть по случаю на каждую: Gemini fail-closed `PROHIBITED_CONTENT` на графичной эротике (D22.6, wire-verified) — это фильтр, а не запрет в договоре; DeepSeek в exp11 переводил explicit-фрагменты **против собственного ToS** — готовность модели не даёт права. Маршрутизируем по ПРАВУ.
|
||||
|
||||
**Флаг `permissive` как значение конфига НЕ СУЩЕСТВУЕТ** (отставлен D39.26/D39.27; загрузка падает громко). Способность объявляется пер-лейблу через `accepts_labels`. Слово «пермиссивный тир» в тексте ниже/выше — характеристика ПОВЕДЕНИЯ по эмпирике, не флаг и не право.
|
||||
|
||||
### Вердикты (вокабуляр владельца D39.27 п.5)
|
||||
|
||||
`ALLOWED` = право есть · `FORBIDDEN` = прямой запрет · `UNCLEAR` = однозначного пункта нет (**честный результат; оставляет fail-closed, что безопасно**). Основание: `explicit-prohibition` · `contrastive-absence` (грант + перечень, где СОСЕДНИЙ более узкий класс назван, а наш — нет) · `ambiguous-term` (пункт есть, но термин/глагол не даёт прочитать однозначно) · `no-clause` (класс не упомянут вовсе) · `scope` (непонятно, какой документ применим).
|
||||
|
||||
| Провайдер | `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*; 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*) |
|
||||
| **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» |
|
||||
|
||||
> **ГЛАВНЫЙ ВЫВОД, который надо прочитать целиком: по `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 по сохранённой копии)
|
||||
|
||||
- **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`.
|
||||
- **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/<ts>id_/<url>` (суффикс `id_` = оригинальные байты) **плюс** живой `https://r.jina.ai/<url>`; цитата засчитана только при совпадении обоих путей. **Timestamp снимка ≠ дата ревизии документа** — не путать.
|
||||
- `ai.google.dev` редиректит в OAuth (`curl` умирает на 50 редиректах) → Wayback/reader.
|
||||
- ⚠ **`mistral.ai/terms/usage-policy` отдаёт HTTP 404** (и снимков в Wayback нет) — рабочий хост **`legal.mistral.ai/terms/usage-policy`**. Наш egress — прокси, так что 404 может быть edge-специфичным; при пере-проверке начинать с `legal.` .
|
||||
- ⚠ **WebFetch для цитат НЕ годится** — режет цитату ~125 символами и переходит на пересказ. Только `curl` + `grep -F`.
|
||||
|
||||
- **Прокси на localhost**: в env стенда webshare-прокси, `NO_PROXY=<local>` — WinINET-нотация, которую curl/urllib/Go **не понимают** → запрос к 127.0.0.1 уходит на прокси и получает **403**. Лечение: явный `NO_PROXY="localhost,127.0.0.1,0.0.0.0,::1"` + в коде обходить прокси для loopback/172.x (бэкенд: local-адаптер с no-proxy транспортом — уже сделано).
|
||||
- **DeepSeek cache-поля**: в `usage` два варианта именования (бэкенд обрабатывает оба).
|
||||
- **«Эхо» черновика (тихий отказ)**: deepseek-chat на плотной CJK-прозе **воспроизводимо** (3 из 3 ретраев на zh-фрагменте Лу Синя «祝福») возвращает **оригинал вместо перевода** (82% CJK в «переводе»). Не ошибка API — валидный ответ с неправильным содержимым; ретраи не помогают (детерминировано для фрагмента). Митигация в `eval/editor_bench.py`: детектор доли CJK (порог 15%) → фолбэк на другого провайдера (GLM перевёл тот же текст чисто). **Бэкенд/гейт: детектор CJK-артефактов в русском выходе обязателен** (смыкается с anti-omission coverage-гейтом Р7 и уже запланированным «детектором CJK-артефактов» — 7 из 18 моделей грешат); эскалация на другого провайдера, а не ретрай. NB: проверено на deepseek-chat; актуальную роль-модель `deepseek-v4-flash` перепроверить.
|
||||
- **Таймауты**: книжные чанки на локали занимают **63–278 с** (не 45 с как в чат-vojo). Нужен per-роль лег-таймаут ~300–600 с + стриминг как keep-alive. Донорский транспорт vojo имел скрытый per-attempt потолок 60 с.
|
||||
- **`mistral-large-latest` — агрессивный rate-limiter (тир-зависим, пере-замерить на прод-тире).** Судейский eval-риг exp15 §7.6 REV.2 (N-параллельные вызовы): **~48% retry-fails @1.3s интервала**, max latency **64.7s**; `grok-*` в том же риге — 0%. Расширение интервала 1.3→2.6s эффекта НЕ дало (49.5→48.2%) → лимитер похож на **токен-бакет/конкуренц-кап**, не per-request-пейсинг. Пер-вызовный 429/`Retry-After` в адаптере есть (`httpllm.go`, кап `maxRetryAfterWait`); гэп — N-параллельность волнового раннера → **пер-модельный семафор конкуренции конфигом `models.yaml` (план 11 WS1(б)); mistral-editor-арм не идёт через прод-путь до этого guard** (D39.12, гейтнутый арм №4). Правило двух направлений: цифры из eval-рига, НЕ офиц. доки — при прод-тир-замере запинить вендор-страницу rate-limits. *(Внесено оркестратором при лендинге D39.12; черновик — план 11 §12.)*
|
||||
- **`mistral-large-latest` — агрессивный rate-limiter (тир-зависим, пере-замерить на прод-тире).** Судейский eval-риг exp15 §7.6 REV.2 (N-параллельные вызовы): **~48% retry-fails @1.3s интервала**, max latency **64.7s**; `grok-*` в том же риге — 0%. Расширение интервала 1.3→2.6s эффекта НЕ дало (49.5→48.2%) → лимитер похож на **токен-бакет/конкуренц-кап**, не per-request-пейсинг. Пер-вызовный 429/`Retry-After` в адаптере есть (`httpllm.go`, кап `maxRetryAfterWait`); гэп — N-параллельность волнового раннера → **пер-модельный семафор конкуренции конфигом `models.yaml`** (план 11 WS1(б); заведён — `rate_limit: {max_concurrency: 2, min_interval_ms: 0}` у `mistral-large-2512`). ⚠ **Оговорка «mistral-editor-арм не идёт через прод-путь до этого guard» (D39.12, гейтнутый арм №4) СНЯТА — superseded D39.20:** mistral исключён как несущий РЕДАКТОР (анти-корреляция гладкость↔верность, воспроизведена ×3), гейтнутого арма больше не существует. **Цифры rate-limit ОСТАЮТСЯ в силе и продолжают гейтить прод-путь:** mistral жив как **переводчик под лейблом** (D19.1), а семафор охраняет именно этот путь. Правило двух направлений: цифры из eval-рига, НЕ офиц. доки — при прод-тир-замере запинить вендор-страницу rate-limits. *(Внесено оркестратором при лендинге D39.12; оговорка снята полигоном, пакет-5 25.07.2026; черновик — план 11 §12.)*
|
||||
|
||||
## Календарь деприкаций / цен (мониторить ежеквартально)
|
||||
|
||||
- `deepseek-chat` → `deepseek-v4-flash` к **24.07.2026**.
|
||||
- ~~`deepseek-chat` → `deepseek-v4-flash` к **24.07.2026**~~ → **КАТОВЕР ПРОШЁЛ, пункт закрыт (полигон, пакет-5, 25.07.2026).** Вендор-дока (`api-docs.deepseek.com/quick_start/pricing`, сноска (1); тот же текст в Change Log): *«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»* (⚠ сноска осталась в будущем времени — это несвежесть доки, не отсрочка). Live-проба $0 25.07.2026: `GET /v1/models` → ровно `deepseek-v4-flash` + `deepseek-v4-pro`; `GET /v1/models/deepseek-chat` и `/deepseek-reasoner` → **HTTP 404 `{"message":"Model Not Found","type":"not_found_error"}`**. Это сильнее «нет в /models»: слаг отсутствует и в пер-слаговом реестре, т.е. алиас-урок календаря («нет в /models ≠ не работает») здесь **исчерпан**. ⚠ Честная граница: `chat/completions` этими слагами НЕ дёргался — платные вызовы в пакете-5 не санкционированы; реестр-404 — сильная, но формально не тождественная улика. **Цены пост-катовера не изменились** (flash $0.14/$0.28, cache-hit $0.0028; pro $0.435/$0.87, cache-hit $0.003625) → `prices_checked` в `models.yaml` можно продлить до 25.07.2026 без правки чисел. Заодно с той же страницы: контекст **1M**, max output **384K**, конкуренц-кап **2500** (flash) / **500** (pro).
|
||||
- **Gemini 2.5-серия (pro/flash/flash-lite) — shutdown 16.10.2026** («earliest possible date», офиц. deprecations-страница; live-фактчек оркестратора 09.07). Замены по вендору: 3.1-pro-preview / 3.5-flash / 3.1-flash-lite. ⚠ До даты на 2.5-flash уже наблюдён **интермиттентный 404 «model no longer available» при наличии слага в /models** (research/15, сырьё) — вендором не документирован; судья fidelity `memory_eval` сидит на 2.5-flash → мигрировать (D21.9). Отдельно: `finish_reason=PROHIBITED_CONTENT` на Gemini 3.x — **НЕконфигурируемый фильтр-класс** (safety_settings не влияют, в отличие от `SAFETY`); наблюдён на violence-сцене → вывод exp07 «content_filter мёртв» на Gemini 3.x не переносится. *(Добавлено оркестратором по research/15 + фактчеку.)*
|
||||
- **Grok 4.1 Fast retired 15.05.2026** → слаги молча редиректят на `grok-4.3` (цена ×9). Ретайрнулся дешёвый тир, НЕ сам xAI: grok-4.3 остаётся основным пермиссивным тиром канала B.
|
||||
- **Аудит /models 04.07.2026 (воркфлоу) — с поправкой на перепроверку:** и `deepseek-chat`, и `grok-4-fast` НЕ в списках /models (там v4-flash/v4-pro у DeepSeek; версионные слаги у xAI), НО **оба работают как алиасы** (перепроверено вживую: HTTP 200, переводят). Агент-аудитор написал «сняты» — это была неточность: «нет в /models» ≠ «не работает». deepseek-chat депрекируется 24.07.2026. У xAI есть мигрированные слаги-обёртки (`grok-4.20-0309-non-reasoning` / `-reasoning` / `-multi-agent`, ретайр 15.05.2026), но **для перевода/редактуры берём `grok-4.3` + явный `reasoning_effort:"none"`** (слаг не меняем; non-reasoning вариант = grok-4.3+`none` под капотом — см. thinking-таблицу). xAI `usage` отдаёт нестандартные `cost_in_usd_ticks`/`num_sources_used` — игнорировать. **Урок: имя модели проверять не только `/models`, но и пробным вызовом — алиас может работать, даже если его нет в списке; и наоборот.** Реальная причина сменить deepseek на v4-flash — не «chat умер», а ЭХО на zh (лечится thinking-on), см. раздел thinking.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
# Эксперимент 09. Протокол пилота Фазы 2.5 — выбор ядра, memory-bet, судья, think-режим (v2, D13)
|
||||
|
||||
> **⚠ Указатель ревизии D31 (12.07).** Протокол жив (решающая точка проекта). НЕ внесены пост-D13 амендменты — при подготовке решающего прогона добавить: **D30.1** (арм «моно vs билингв» из решающего → ПОДТВЕРЖДАЮЩИЙ — флип D1 принят досрочно exp12; редактор-стек: билингв, кандидат glm-5-билингв, grok reasoning-off снят; draft под вопросом exp13 — D30.6); **D21.4** (тиринг армов voice-A/B/C/D + судейские армы формата/сэндвича с echo-охранной метрикой + minimal-diff-редактор); **D25.3** (prefix-анализ судьи 1/3/5 vs full-11 из ТЕХ ЖЕ данных — sequential-stopping как замена протокола отклонён); **D25.6** (инструментировка minutes/flag + typed resolutions + аудит unflagged); **D30.10** (span-цитирующие судьи reasoning-ON, раздельные вызовы стиль/верность — урок exp12: скаляры без спанов нечувствительны). Блокеры (D27.1): корпус вне претрейна, аннотаторы ≥3, билингв-якорь (D25.9-Q1), проба судьи-дублёра 18+ (D22.6).
|
||||
>
|
||||
> **⚠ Продление указателя до пост-D39.22 (полигон, пакет-5, 25.07.2026).** Указатель выше застрял на D31/glm-5 — с тех пор прошёл пере-прогон rerun2, и решающему прогону дополнительно предшествуют: **(1) редактор-кандидат сменился** — боевой редактор = **deepseek-v4-pro ИНТЕРИМ** (D39.22; glm-5 в резерве, `mistral` ИСКЛЮЧЁН как несущий редактор — D39.20), поэтому «кандидат glm-5-билингв» в списке D31 читать как исторический; **(2) планка «≤2 претензии» НЕ пройдена на rerun2** (D39.20/D39.8: слепое чтение владельца, дефекты распределены, floor-null подтверждён) — пилот **не открыт**, и до него стоит механизация дефект-классов, а не новый бейк-офф; **(3) авто-QA полигона ключуется СЛЕПЫМИ метками** (директива D39.20) — переносится в §5-панель как обязательное свойство рига, наравне с риг-стандартом D39.7 (per-vote, полно-evidence, floor-гейт, только `finish=stop`); **(4) стайл-каноны D39.21 суть часть эталона** для любой оценки верности/стиля: 时辰 = 2 часа (меры — в единицах языка читателя), generic-«гу» СРЕДНИЙ род (именные — по-термово из банка), стихи передаются СМЫСЛОМ, 资质 = «талант». **Тело протокола не тронуто** — это указатель, а не ревизия.
|
||||
|
||||
**Дата:** 2026-07-05 · **v2:** 2026-07-09 (поправки D13, починка харнесса, Pearmut-вердикт) · **Зона:** полигон (флагман) · **Статус:** протокол + харнесс (memory_eval починен и валидирован индикативом); решающий прогон ждёт корпус владельца + человеческих аннотаторов.
|
||||
**Закрывает решения:** выбор ядра C0–C3 (Р2), go/no-go на банк памяти (research/13 §Вердикт), валидность LLM-судьи (research/11-gap-3), think-ON/OFF (D6), ценность пре-пасса Annotator (04-unhappy).
|
||||
|
|
|
|||
|
|
@ -4,8 +4,14 @@
|
|||
> Дизайн-оф-рекорд: `docs/research/19-chunking-cohesion.md` §D (Q0–Q5). Зона: `eval/` + `docs/experiments/`.
|
||||
> Скрипты — семья `eval/exp15/`. Выходы/сырьё — ВНЕ git (`/home/ubuntu/books/gu-zhenren/exp15/`).
|
||||
>
|
||||
> **СТАТУС: §1 ПРЕ-РЕГ ФРИЗ — ЗАПОЛНЕН, ждёт (а) подписи владельца на 3 гейтах §1.13 и (б) коммита
|
||||
> ДО первого платного вызова.** §2–§6 заполняются по ходу прогона. НИ ОДНОГО платного вызова ещё НЕ было.
|
||||
> **СТАТУС (перевёрнут полигоном, пакет-5, 25.07.2026): ЭКСПЕРИМЕНТ ИСПОЛНЕН И ЗАЛЕНДЁН в редакции REV.2
|
||||
> (D39.7).** Прежний статус-блок («пре-рег фриз ждёт подписи и коммита, ни одного платного вызова не было»)
|
||||
> описывал состояние ДО прогона и завис — снят. Факт: прогон состоялся, потрачено **$12.79 из капа $15**,
|
||||
> §2–§6 заполнены. Вердикты REV.2: клейм «граница вредит» **ОТОЗВАН** (артефакт окна судьи); все
|
||||
> когезия-эффекты **под floor 0.126**; «sequential нигде не лучше» — LOO-stable (это НЕ ратифицированный
|
||||
> зелёный свет, а отсутствие сигнала); фертильность 1.20/0.39. Гейт эксперимента — слепое чтение владельца —
|
||||
> **отработал** и дал D39.8: планку «≤2 претензии» не прошёл никто, дефекты распределены, floor-null
|
||||
> подтверждён читателем. Тело §1–§6 — историческое, НЕ редактируется (D23.3).
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,14 @@
|
|||
# Эксперимент 16. Банк-майнинг W1.5 (полигон-стадия research/20 §D)
|
||||
|
||||
> **Статус:** полигон-сессия exp16 (2026-07-18), исполняет пре-рег дизайн **research/20 §D** (дизайн-оф-рекорд,
|
||||
> D39.6). Зона: `eval/exp16/` + этот файл. Артефакты — ВНЕ git (`/home/ubuntu/books/gu-zhenren/exp16/`).
|
||||
> **Статус: ИСПОЛНЕН И ЗАЛЕНДЁН (D39.10).** Полигон-сессия exp16 (2026-07-18), исполняет пре-рег дизайн
|
||||
> **research/20 §D** (дизайн-оф-рекорд, D39.6). Зона: `eval/exp16/` + этот файл. Артефакты — ВНЕ git
|
||||
> (`/home/ubuntu/books/gu-zhenren/exp16/`).
|
||||
> **Финал (дописано полигоном, пакет-5, 25.07.2026):** вердикты ратифицированы D39.10 — WHICH подтверждена
|
||||
> (V-C recall 0.97, $0), WHAT уходит в банкноту+Палладий (canon-recovery <70%), 9B-споттер не нужен, Z1 → облако,
|
||||
> ре-аудит exp14b чист (errata не потребовалась); этим исследовательская программа полигона **ЗАВЕРШЕНА**.
|
||||
> **Gender-тачпойнт §7 ЗАКРЫТ (D39.19)** — gender-signoff подписан, пол вошёл в memory-хеш, ре-снапшот сделан.
|
||||
> **Продолжение — Go-майнер в бэкенде, парити с этим ригом EXACT** (D39.14/D39.16: майнер-данные вынесены в
|
||||
> `internal/lang`+`configs/langpacks/`, паритет закреплён тестом). Тело §0–§7 — историческое, НЕ редактируется (D23.3).
|
||||
> **Коммичу ТОЛЬКО пре-рег фриз** (единственный коммит, ДО первого платного вызова — D30.10/D37); результаты
|
||||
> сдаются этим отчётом, лендит оркестратор. Бюджет платных армов: жёсткий кап **$10** (решение владельца 17–18.07).
|
||||
>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Эксперименты полигона — карта
|
||||
|
||||
Один эксперимент = один отчёт `NN-*.md` (методика + цифры + честные ограничения). Здесь — **индекс**: что установил → чем ратифицирован → статус. Каждая строка сверена по шапке самого дока + D-логу (12.07, D38.2). Карта **скриптов** (какой `.py` какому эксперименту) — в [`eval/README.md`](../../eval/README.md) §Карта; здесь — про **выводы**.
|
||||
Один эксперимент = один отчёт `NN-*.md` (методика + цифры + честные ограничения). Здесь — **индекс**: что установил → чем ратифицирован → статус. Каждая строка сверена по шапке самого дока + D-логу (**досведено 25.07, голова D39.28**: добавлены exp15/exp16, прежний срез стоял на 12.07/D38.2). Карта **скриптов** (какой `.py` какому эксперименту) — в [`eval/README.md`](../../eval/README.md) §Карта; здесь — про **выводы**.
|
||||
|
||||
**Легенда статуса:** ⭐ЖИВОЙ-reference (читать при работе) · ЖИВОЙ (открытый инструмент/протокол) · закрыт (есть review-header/⚠-баннер; вывод ратифицирован, тело не редактируем — D23.3) · settled (одноразовый бенч, вопрос закрыт).
|
||||
|
||||
|
|
@ -30,9 +30,15 @@
|
|||
| [`13-translator-bakeoff`](13-translator-bakeoff.md) | Бейк-офф ПЕРЕВОДЧИКОВ: flash **сохранён**, pro **отклонён** (ложная сходимость + pro-катастрофа 蛊→«гусеницы»); сид v2 **принят**. | → D32 (review-header) | закрыт |
|
||||
| [`14-quality-empirics`](14-quality-empirics.md) | Претензия-1 (абзацы) = дешёвый **промпт**-рычаг, не модель; A-2pass отклонён (fidelity-катастрофа); gpt-5.4-эскалация held под-мощной. | → D37 (review-header) | закрыт |
|
||||
| [`14b-meaning-battery`](14b-meaning-battery.md) | «Только gpt-5.4 чинит смысл» **ОПРОВЕРГНУТО** (mistral/deepseek-pro чинят инверсии, glm/grok валят); фронтир-в-дефолт не нужен; корень терм-дрейфа = **status:draft** сида. | → D38/D38.1 (review-header) | закрыт |
|
||||
| [`15-segmentation-empirics`](15-segmentation-empirics.md) | Сегментация/когезия/контракт t-e (пре-рег `research/19` §D). REV.2: клейм «граница вредит» **ОТОЗВАН** (артефакт окна судьи); все когезия-эффекты **под floor 0.126**; «sequential нигде не лучше» LOO-stable (отсутствие сигнала, НЕ зелёный свет); фертильность 1.20/0.39; $12.79/$15. Побочно — **риг-стандарт D39.7** (per-vote, полно-evidence, floor-гейт). | → D39.7; гейт = слепое чтение владельца → **D39.8** (планку не прошёл никто, floor-null подтверждён) | закрыт |
|
||||
| [`16-bank-mining`](16-bank-mining.md) | Банк-майнинг W1.5 (пре-рег `research/20` §D): **WHICH подтверждена** (детектор V-C, recall 0.97, $0), **WHAT** уходит в банкноту+Палладий (canon-recovery <70%), 9B-споттер не нужен, Z1 → облако; $0-ре-аудит exp14b **чист** (errata не потребовалась). Этим исследовательская программа полигона ЗАВЕРШЕНА. | → D39.10; gender-тачпойнт §7 закрыт **D39.19**; продолжение — Go-майнер, парити **EXACT** (D39.14/D39.16) | закрыт |
|
||||
|
||||
*Пропуски нумерации:* `05` снят до прогона (вопрос закрыт литературой — урок «тест только если исход переворачивает решение», eval/README §Правила-3).
|
||||
|
||||
## Дуга качества 12 → 13 → 14 → 14b
|
||||
|
||||
Четыре эксперимента — один трек «мерить, потом строить»: диагноз (12) → переводчик (13) → рычаги нарезка×промпт + фронтир-диагностика (14) → батарея смысл-трапов + ранг (14b). Все — **интерим пре-скрины на PD-классике/книге со стенда (D35), НЕ пилот.** Сошлись к D38: near-term потолок — в нашей **нарезке/промпте/глоссарии-инфре**, не в дешёвых моделях; строим инфра-пак, редакторов больше не мерим. **Настоящий вердикт качества = пилот Ф2.5** ([`09`](09-pilot-protocol.md)) на корпусе вне претрейна.
|
||||
|
||||
## Что было после дуги: 15 → 16 → пере-прогон (дописано 25.07)
|
||||
|
||||
Дуга 12→14b проверяла **модели**; следующая пара проверяла **инфру**, на которую дуга указала. [`15`](15-segmentation-empirics.md) закрыл нарезку/когезию (все эффекты под floor — оптимизировать там нечего, зато родился риг-стандарт D39.7), [`16`](16-bank-mining.md) закрыл банк-майнинг (WHICH работает, WHAT уходит в банкноту) — и на этом **исследовательская программа полигона завершена** (D39.10). Дальше был не эксперимент, а **пере-прогон прод-путём** (rerun2, D39.20/D39.22): планка «≤2 претензии» **не пройдена**, пилот не открыт, `mistral` исключён как несущий редактор (анти-корреляция гладкость↔верность ×3), редактор = **deepseek-v4-pro ИНТЕРИМ**, dspro-vs-glm не ратифицирован (зазор ≈ шум) → **итерация №2 отложена** довеском к следующему платному прогону. Отчёта `17-*.md` нет и не будет: пере-прогон — не эксперимент полигона, его запись живёт в D-логе и `PROGRESS.md`.
|
||||
|
|
|
|||
|
|
@ -2,7 +2,11 @@
|
|||
|
||||
Зона сессии «Полигон»: эмпирическая валидация допущений архитектуры (мерить, а не верить). Отчёты — `docs/experiments/NN-*.md` (методика + цифры + честные ограничения). `backend/` только читать; расхождения с architecture/research — пингом оркестратору в `docs/PROGRESS.md`. **`.env` не читать; `data/refusal_corpus/*` не открывать без прямой задачи владельца.**
|
||||
|
||||
> **Очередь полигона (пост-D39.16, 19.07):** исследовательская программа ЗАВЕРШЕНА — exp15 (сегментация/когезия, D39.7–9, `eval/exp15/`), Q4a (слабое звено=редактор), exp16 (банк-майнинг W1.5, D39.10, `eval/exp16/`) залендены. Следующая полигон-задача — **пере-прогон 3–10 глав через прод-путь** (армы редактора glm/mistral/deepseek-pro, планка 2 претензии) ПОСЛЕ бэкенд-стройки (R1 драйвер-свитч → resnapshot); риг-стандарт D39.7 (per-vote, полно-evidence, floor-гейт) обязателен; генерации — только finish=stop; ⚠ ре-чек прайса DeepSeek 24.07. Тачпойнты владельца — сайдкары `books/gu-zhenren/exp16/`. Residual-трекер пилота/18+/echo — `docs/POLYGON_PACKAGE4_SESSION_PROMPT.md` (отложен). Экстракция — ТОЛЬКО `tmctl export` (инвариант №8).
|
||||
> **Очередь полигона (пост-D39.22, освежено пакетом-5 25.07.2026):** исследовательская программа ЗАВЕРШЕНА — exp15 (сегментация/когезия, D39.7–9, `eval/exp15/`), Q4a (слабое звено = редактор), exp16 (банк-майнинг W1.5, D39.10, `eval/exp16/`) залендены. **Пере-прогон rerun2 тоже ИСПОЛНЕН, прочитан (D39.20) и ЗАКРЫТ решением владельца (D39.22)** — прежняя строка «следующая задача = пере-прогон» была ДО него и снята. Итог: операционка отработала живьём ($0-резюм черновика ×3 арма, **$6.63 из $15**, echo 0, майнинг-стоп → подпись), но **планка «≤2 претензии» НЕ пройдена — пилот Ф2.5 не открыт**; `mistral` **ИСКЛЮЧЁН** как несущий редактор (анти-корреляция гладкость↔верность, воспроизведена ×3); редактор = **deepseek-v4-pro ИНТЕРИМ** (glm-5 резерв); dspro-vs-glm НЕ ратифицирован (зазор ≈ шум) → **итерация №2 ОТЛОЖЕНА** довеском к следующему платному прогону. **Курс проекта — разработка бэкенда; своих прогонов полигон сейчас не заказывает.**
|
||||
>
|
||||
> **Инварианты полигона (соблюдать всегда):** судейский **риг-стандарт D39.7** (per-vote, полно-evidence, floor-гейт) · генерации — только `finish=stop` · **авто-QA ключуется СЛЕПЫМИ метками** (директива D39.20) · экстракция прод-выходов — **ТОЛЬКО `tmctl export`** (D39.5, инвариант №8, см. правило 7 ниже) · стайл-каноны **D39.21** как эталон верности (时辰 = 2 часа · generic-«гу» средний род · стихи смыслом · 资质 = «талант»).
|
||||
>
|
||||
> **Закрыто пакетом-5 (25.07):** ⚠ ре-чек прайса DeepSeek 24.07 — **сделан**: катовер прошёл, `deepseek-chat`/`deepseek-reasoner` → 404 в реестре, цены не изменились (детали и команды — `docs/experiments/00-provider-quirks.md`, строка DeepSeek + календарь). **В работе:** факты ToS/AUP под `accepts_labels` (блок A пакета-5) — вердикты пер-лейблу, применение строк требует подписи владельца. Тачпойнты владельца — сайдкары `books/gu-zhenren/exp16/`. Residual-трекер пилота/18+/echo — `docs/POLYGON_PACKAGE4_SESSION_PROMPT.md` (отложен).
|
||||
|
||||
## Карта
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue