10 KiB
Промт бэкенд-сессии: ПАК-17 «канал B (18+) вживую» (ДВУХФАЗНЫЙ: дизайн → ратификация → стройка)
Статус: ВЫДАН 25.07.2026, оркестратор №7. Цель: 18+ контент (уровни 1–2) идёт через волновой стек по adult-каналу — permissive-провайдеры, refusal-обработка, механические гарантии маршрутизации. Ратифицированная база: D14 (состав канала B) · D19 (Mistral = переводчик канала B; register-оговорка эха D19.1; судьи 18+ п.6: Gemini fail-closed на эротике, Grok первичный) · D22 (развязки 18+/эха; L3-спека D22.7) · D4 (adult-цепочка = permissive-провайдеры; уже в конфигах: escalation.chains.adult: [grok-4.3]). Эмпирика полигона: experiments/10-explicit-benchmark (violence) · 11-erotica-benchmark.
Инварианты — «РОВНО ТАК» (ратифицировано; конфликт с кодом/доками → пинг оркестратору через владельца, НЕ интерпретация)
- В ДВИЖКЕ НЕТ ПОНЯТИЯ «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.
- 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) — операционная петля владельца, в пак не тащить.
Отправные точки в код (сверь САМ — код первичен, это entry-points)
escalation.chains.adult в шиппинг-конфигах и его валидация · channel-aware фильтр цепочек заявлен зоной раннера в комменте pipeline-c1.yaml (НЕ построен) · refusal-классы internal/pipeline/disposition.go + internal/lang/data/refusal.txt · провайдер-модель internal/config/models.yaml+models.go (есть ли слот под permissive-флаг — инвентаризуй) · волновой драйвер waverun/stagerun (где стадия выбирает модель/цепочку).
ФАЗА 1 — ДИЗАЙН (кода не трогать; отчёт → СТОП → ратификация). Каждый пункт «реши сам и аргументируй»; советы = приоры, опровергаются аргументом/замером
- 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-вызовов) — что дёшево сейчас, что в очередь.
Приёмка фазы 1: отчёт docs/archive/reports/PACK17_DESIGN_<дата>.md — НАЧИНАЕТСЯ эхо-блоком (≤10 строк: скоуп/инварианты/не-делать); по каждому B: варианты, рекомендация, риски; адверсариальный селф-ревью (линзы: L3-линия/гардрейлы · маршрутизация-fail-loud · байт-точность канала A · деньги/резюм · общность §0). СТОП — ратификация.
ФАЗА 2 — СТРОЙКА (после ратификации; список станет размеченным «ровно так»)
Инварианты фазы: golden байт-идентичен · парити EXACT · -race · сэндбокс-репродукции через драйвер (правило 11: mock-провайдер, сквозные сценарии — refusal-каскад, non-permissive-реджект, маршрутизация) · дифф ^func Test исполнением · заявление=команда. Хвосты из петель: ниты общности (Detail-строки чекеров → из данных · множитель ×2 lintTimeUnits → ключ данных).
НЕ делать
L3-классификатор · live 18+ вызовы без санкции · реальный 18+ текст в репо/фикстурах · копирование GPL/AGPL · пар/книго-литералы и провайдер-литералы в Go · расширение скоупа без пинга.
Приёмка (мандат 12.07 + нормы 7–11)
Фаза 1 — СТОП после отчёта. Фаза 2 — отчёт docs/archive/reports/PACK17_CHANNEL_B_REPORT_<дата>.md; сессия НЕ коммитит; git mv декларировать.