Reframe pack-17 per owner directive: generic content-label times provider-capability routing with cause-agnostic refusal policy, adult as a data value only

This commit is contained in:
Claude (backend session) 2026-07-25 05:41:57 +03:00
parent 7a1c21b9c4
commit 87514d7e2a

View file

@ -4,10 +4,11 @@
## Инварианты — «РОВНО ТАК» (ратифицировано; конфликт с кодом/доками → пинг оркестратору через владельца, НЕ интерпретация)
- **18+ уровень 3 — жёсткая линия:** НЕ обрабатывать, НЕ анализировать, классификатор L3 в этом паке НЕ строить (спека D22.7 ждёт решений владельца по валидации). `eval/data/refusal_corpus/*` НЕ открывать.
- **В ДВИЖКЕ НЕТ ПОНЯТИЯ «18+» (директива владельца 25.07 — архитектурная).** Движок несёт только GENERIC-механизм: **content-label** книги/глав (данные книги) × **capability провайдера** (данные models.yaml) × выбор цепочки (конфиг). «adult» — ЗНАЧЕНИЕ данных; ни один Go-идентификатор/ветка не именуется adult/18+/каналом B. Тот же механизм обязан нести будущие лейблы без правки Go — мысленный тест: archaic-register (D19.1-эхо grok на архаичном zh — та же фигура «свойство контента × способность модели»). Проактивный роутинг по лейблу — не оптимизация, а **ToS-гигиена**: провайдер без способности не должен ПОЛУЧИТЬ такой контент, независимо от того, откажет ли.
- **Refusal-обработка — GENERIC и причино-агностичная:** D12-таксономия детектит ФАКТ отказа (hard/soft), не причину; отказ по эротике/политике/чему угодно идёт ОДНИМ путём (регенерация → эскалация по цепочке лейбла → flag+skip, D2 — мусор не течёт в TM/экспорт). Причина отказа — только операторская диагностика. Параметризуется ПОЛИТИКА ЦЕПОЧКИ (конфиг), не код. Существующая таксономия не переписывается.
- **18+ уровень 3 — жёсткая линия:** НЕ обрабатывать, НЕ анализировать, классификатор L3 в этом паке НЕ строить (спека D22.7 ждёт решений владельца по валидации). `eval/data/refusal_corpus/*` НЕ открывать. L3 — политика ВХОДА (человеческий уровень), не механизм движка.
- **Live-вызовы с 18+ контентом — ТОЛЬКО по явной санкции владельца с его корпусом.** Пак строится и тестируется на mock-провайдере + СИНТЕТИЧЕСКИХ безобидных фикстурах (маркер-прокси, не реальная эротика); книга и производные вне git.
- **Провайдер-исключения — ДАННЫМИ, механически:** permissive/non-permissive — флаг провайдера в models.yaml (данные), не Go-литералы имён; **DeepSeek ВНЕ канала B (ToS, стратревью 09.07)**; Anthropic вне 18+; гарантия «adult-контент никогда не уходит non-permissive провайдеру» — компилируемая/тестируемая, fail-loud.
- **D2:** refusal/отказ = диспозиция+эскалация по правилам, мусор не течёт в TM/экспорт; существующая D12-таксономия отказов не переписывается.
- **Capability-исключения — ДАННЫМИ:** **DeepSeek без adult-capability (ToS, стратревью 09.07)**, Anthropic без 18+ — строки в models.yaml, не Go-литералы имён; гарантия «label ⊄ capabilities → провайдер не получает контент» — компилируемая/тестируемая, fail-loud.
- **Байт-точность no-adult пути:** канал A (обычные книги) байт-идентичен — golden без пере-капчера; парити EXACT; adult-механика активируется только явной маркировкой.
- **Ключи:** xAI единый data-sharing, off перед продом (D27) — операционная петля владельца, в пак не тащить.
@ -17,10 +18,10 @@
## ФАЗА 1 — ДИЗАЙН (кода не трогать; отчёт → СТОП → ратификация). Каждый пункт «реши сам и аргументируй»; советы = приоры, опровергаются аргументом/замером
- **B1. Гранулярность маркировки adult.** Книга / глава / чанк; кто маркирует в v1. *Приор: v1 = ручная маркировка владельцем на уровне книги или глав (book.yaml/brief — данные книги); авто-детекция = НЕ этот пак (упирается в L3-спеку).*
- **B2. Маршрутизация ролей канала B.** Переводчик = Mistral (D19 — ровно так). **Редактор канала B — открытый вопрос:** dspro НЕЛЬЗЯ (DeepSeek вне 18+), кандидаты — mistral-large/glm/grok; предложи с аргументами (глоссарий/проза/цена; эмпирики нет — честно скажи, что выбор интерим до замера). Эскалация — adult-цепочка. Судья — eval-сторона, НЕ в паке (D22.6 проба-гейт у полигона).
- **B3. Refusal-каскад adult-чанка.** Сегодняшний refusal → flag+skip; для adult-канала отказ permissive-модели — эскалировать в следующий permissive-хоп до flag+skip? Потолки/бюджет? Как это ложится в существующую лестницу regenerate→escalate (семантику не менять молча).
- **B4. Механическая гарантия маршрутизации.** Где enforcement «adult → только permissive»: загрузка конфига (fail-loud на non-permissive модели в adult-цепи) + рантайм-ассерт перед вызовом? Тест обязателен обоим.
- **B1. Схема content-labels и гранулярность.** Формат лейблов (данные книги: book.yaml/brief) и capabilities (models.yaml); книга / глава / чанк; кто маркирует в v1. *Приор: v1 = ручная маркировка владельцем на уровне книги или глав; значение v1 — одно («adult»), но СХЕМА generic (множество лейблов); авто-детекция = НЕ этот пак (упирается в L3-спеку). Дизайн проверь мысленным тестом archaic-register: второй лейбл добавляется данными?*
- **B2. Маршрутизация ролей под лейблом.** Переводчик adult-контента = Mistral (D19 — ровно так). **Редактор — открытый вопрос:** dspro НЕЛЬЗЯ (без capability), кандидаты — mistral-large/glm/grok; предложи с аргументами (глоссарий/проза/цена; эмпирики нет — честно скажи, что выбор интерим до замера). Эскалация — цепочка лейбла (`chains.adult` уже в конфиге). Судья — eval-сторона, НЕ в паке (D22.6 проба-гейт у полигона).
- **B3. Refusal-политика цепочки (GENERIC).** Сегодня refusal → flag+skip; спроектируй per-chain политику: отказ ЛЮБОЙ причины → следующий хоп цепочки лейбла до потолка → flag+skip; потолки/бюджет; как ложится в существующую лестницу regenerate→escalate (семантику не менять молча). Никаких «18+ отказов» как отдельного класса.
- **B4. Механическая гарантия маршрутизации.** Enforcement «label ⊄ capability → не отправлять»: загрузка конфига (fail-loud на модели без способности в цепочке лейбла) + рантайм-ассерт перед вызовом. Тест обязателен обоим.
- **B5. Wire/снапшот/резюм.** Channel-маркировка фолдится в снапшот (какую волну двигает)? Чекпойнты/RequestHash adult-вызовов — штатно; no-adult путь байт-идентичен; фикстуры синтетические.
- **B6. Отчётность.** Канал в паспорте главы/quality-report/леджере (CostSource-атрибуция adult-вызовов) — что дёшево сейчас, что в очередь.