# Ядро C1: draft → editor (Р2). Обязательное приложение Фазы 0 — фиксирует # границу «конфиг vs код раннера»: # КОНФИГ: состав/порядок стадий, роль→модель, версии промптов, сэмплинг, # пороги гейтов, режим инъекции глоссария, токен-бюджеты сборки контекста, # именованные эскалационные цепочки, fan-out N, cache TTL. # РАННЕР (код): циклы по главам/чанкам, ветвление по гейтам, механика # эскалации/ретраев, правило «эскалация → re-gate → флаг», channel-aware # фильтр цепочек (Anthropic вне 18+), resume по чекпоинтам. core: C1 version: 1 defaults: # max_tokens ≈ ratio × входные токены; калибровка полигона (эксп. 01): # русский выход zh→ru ≈1.9× входа в токенах — 2.2 с запасом на ja/en. max_output_ratio: 2.2 min_max_tokens: 2048 context: # Р5: обе схемы инъекции глоссария обязаны поддерживаться конфигом. # selective — ключи/алиасы/леммы в волатильном хвосте (~100–800 ток.); # full_prefix — весь глоссарий в стабильном префиксе (выгодно при cache-hit # DeepSeek $0.0028/M — решается расчётом на прототипе). glossary_injection: selective glossary_token_budget: 800 stm_depth: 2 # глубина STM в чанках (Фаза 1) overlap_tokens: 200 # перекрытие чанков = read-only контекст (Фаза 1) cache_ttl: "5m" retries: # Содержательные регенерации после провала гейта ДО эскалации (транспортные # ретраи — отдельно, в timeouts models.yaml). regenerate_before_escalate: 1 stages: - name: draft role: translator model: deepseek-v4-flash # интерим — переводчик по exp13 (draft качеством не мерен, D30.6); флип при развязке бейк-оффа prompt: ../prompts/translator.md # D30.2 reflow: из translator.md убрано «Сохраняй разбивку на абзацы» (построчная # вёрстка исходника деструктивна для ru — корень нечитаемости exp12 §2.5-S). Bump # v0-draft→v1-reflow: сменил SHA промпта, осознанный --resnapshot. prompt_version: v1-reflow temperature: 0.3 reasoning: "off" # single-hop echo-эскалация (D18: deepseek-эхо 25% на 蛊真人 → фолбэк выстрелит). deepseek-v4-pro — # хоп 1 цепочки A (D3); стреляет ТОЛЬКО при escalation.budget_usd>0 (см. ниже). Escalate_to разрешён # лишь на translator-роли (editor pinned — D12); результат ре-гейтится. escalate_to: deepseek-v4-pro - name: edit role: editor # Дефолт-редактор — glm-5 БИЛИНГВ (флип D1→D30.1, supersede D17.в): моно-редактор # пассивен и структурно слеп к искажениям черновика (exp12 §2.2/2.5); билингв видит # исходник (editor.md получил {{text}}). glm-5 — кандидат value по exp12 §3 (судейский #1, # верность 5.0, 0 утечек преамбул; grok reasoning-off из редакторских ролей СНЯТ — no-op). # gemini-3.1-pro — премиум-эскалация редактора ТОЛЬКО за санитайзером (утечка преамбул 6/6). model: glm-5 prompt: ../prompts/editor.md # Bump v2-bilingual-reflow→v3-discourse-reflow: в editor.md вшито валидированное P1a-ядро # ДИСКУРС-ПЕРЕВЁРСТКИ + few-shot (exp14/D37 §2а — претензия-1 «рубленые абзацы» = рычаг ПРОМПТА, # не модель; P1a реверстает дефект у всех семей). Меняет SHA промпта → осознанный --resnapshot. # Билингв-каркас (D30.1) и omission-осторожность (D34.3) сохранены. Моно-вариант — prompts/editor-mono.md. prompt_version: v3-discourse-reflow temperature: 0.4 reasoning: "off" gates: coverage: # Фаза 1. Пороги полигона (эксп. 02, символы БЕЗ пробелов): нижняя граница # — подозрение на вырезание, верхняя — аномалия/галлюцинация. enabled: false len_ratio_bounds: zh-ru: [2.2, 4.2] ja-ru: [1.4, 2.6] en-ru: [0.70, 1.4] sent_cov_min: 0.75 min_chunk_chars: 500 # калибровка порогов — на фрагментах 500–2500 симв. sanitizer: # Output-санитайзер (D30.3): детерминированный вердикт-гейт «мгновенной # нечитаемости» на ФИНАЛЬНОМ выходе — ведущие служебные преамбулы («Вот # отредактированный перевод…»), хвостовые блоки заметок/правок, markdown-###, # латиница-врезки в ru-выходе (порог), битые словоформы («Первок предок»). Ни # один существующий гейт этот класс не ловит (exp12/флагманы §5). Дисциплина D2 # (flag+skip): дефект → чанк flagged, мусор не течёт в TM/экспорт. precision>recall. # ВКЛЮЧЁН для пере-прогона 25 глав (gemini течёт преамбулой 6/6 — премиум-редактор # за санитайзером). Версия — вердикт-ось (переедет в verdictSnapshotID с D15.2). enabled: true escalation: chains: # D3-цепочка ЗАВЕДЕНА (пакет №3; все слаги live-фактчекнуты 2026-07-10 — /models + пробный вызов): # канал A: deepseek-v4-pro → glm-5.1 → gemini-3.1-pro-preview (кросс-семейно; апекс — mandatory-thinking Gemini). # канал B (18+): grok-4.3 reasoning-ON (D19.1; переводчик канала B = Mistral, задаётся channel:adult-стадией — Ф2). # ⚠️ Именованные цепочки — валидируемый конфиг для мульти-хопа (шаг 7); раннер Ф1 исполняет # SINGLE-HOP через stage.escalate_to (draft → deepseek-v4-pro выше). Слаг ИМЕННО gemini-3.1-pro-preview # (gemini-3.1-pro → HTTP 404, live 2026-07-10). adult-цепочка — permissive-провайдеры (D4.1). default: [deepseek-v4-pro, glm-5.1, gemini-3.1-pro-preview] adult: [grok-4.3] # Адресный премиум-бюджет книги, $. Формула «≤2×» из Р5 неоднозначна — [НУЖНО РЕШЕНИЕ] п.1. # ⚠️ budget_usd=0 ⇒ эскалация НЕ исполняется (НИ chains, НИ stage.escalate_to — escalationBudgetRemains=false; # CheckKeys не требует её ключей). Приёмочная сессия 蛊真人 ОБЯЗАНА выставить budget_usd>0, иначе echo-эскалация # черновика (D18) не выстрелит. Дефолт 0 держит CI/Ф0 зелёными без gemini/mistral-ключей. budget_usd: 0 fanout: candidates: 1 # C1: один черновик