# Ядро 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 prompt: ../prompts/translator.md prompt_version: v0-draft temperature: 0.3 reasoning: "off" - name: edit role: editor # Дефолт-редактор — grok-4.3 (D1/D3, bake-off эксп-04; glm-5 был плейсхолдером). # reasoning:"off" → grok шлёт ЯВНЫЙ reasoning_effort:"none" (control:effort/off_effort:none, # models.yaml) — омиссия у grok = low. Прод: только чистый xAI-ключ без data-sharing. model: grok-4.3 prompt: ../prompts/editor.md # D1-уточнение №3: коммит 6a68dfd сделал editor.md монолингвальным (убрал {{text}}) → # сменил SHA, но лейбл остался v0-draft (один лейбл на два SHA). Бамп на v1-monolingual; # осознанно меняет снапшот (боевых прогонов ещё не было). prompt_version: v1-monolingual 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 симв. escalation: chains: # ⚠️ ИНТЕРИМ-ЗАГЛУШКА, НЕ контракт. Ратифицированная D3-цепочка: # канал A: deepseek-v4-pro → glm-5.1 → gemini-3.1-pro; канал B: grok-4.3. # Эти модели и провайдеры gemini/openai ещё НЕ заведены в models.yaml (цены/ключи + # пересчёт cost-model полигоном гейтят заводку) → пока провизорный kimi-k2.6. # Заводка D3-цепочки — отдельный шаг. В Фазе 0 / при gates off эскалация не # исполняется (CheckKeys не требует её ключей, пока budget_usd=0). default: [kimi-k2.6] adult: [kimi-k2.6] # Адресный премиум-бюджет книги, $. Формула «≤2×» из Р5 неоднозначна после # токен-калибровки — [НУЖНО РЕШЕНИЕ] п.1; до решения бюджет задаётся явно. budget_usd: 0 fanout: candidates: 1 # C1: один черновик