# Скелет ядра C2: generate-then-select (Р2). Тот же раннер, что C1 — различия
# только в конфиге: fan-out N кандидатов + стадия select. Фаза 0 фиксирует
# СХЕМУ (парсится и валидируется); исполнение fan-out/селекции — механика
# раннера Фазы 2 (пилот 4 рук решает, войдёт ли C2 в прод).
core: C2
version: 1

defaults:
  max_output_ratio: 2.2
  min_max_tokens: 2048

context:
  glossary_injection: selective
  glossary_token_budget: 800
  cache_ttl: "5m"
  # STMDepth/OverlapTokens сняты (WS2 §2а — carryover не строим).

retries:
  regenerate_before_escalate: 1

stages:
  - name: draft
    role: translator
    model: deepseek-v4-flash
    prompts:
      zh-ru: ../prompts/translator.md
    prompt_version: v1-reflow # D30.2 reflow (тот же translator.md, что в C1) — label-SHA дисциплина
    temperature: 0.8 # C2: кандидаты сэмплируются горячее (Р2: T=0.6–1.0)
    reasoning: "off"
  # Judge-селектор (пара судей, шкала Комиссарова) — Фаза 2; стадия объявлена,
  # чтобы схема конфига не менялась: селектор получает N кандидатов от draft.
  # Судья Р4 — Gemini (нативный адаптер, Фаза 2); провизорно glm-5, чтобы скелет
  # валидировался (Anthropic убран из стека). C2 в Фазе 0 не исполняется.
  - name: select
    role: judge
    model: glm-5
    prompts:
      zh-ru: ../prompts/judge-selector.md
    prompt_version: v0-skeleton
    temperature: 0
    reasoning: "off"
  - name: edit
    role: editor
    # C2 — неисполняемый скелет Фазы 0/1 (fan-out/select — механика Ф2). Модель/бамп следуют
    # за C1: editor.md стал БИЛИНГВ (D30.1) + reflow (D30.2) — тот же общий файл. Дефолт-редактор
    # по D30.1 — glm-5 билингв (grok reasoning-off из редакторов СНЯТ — no-op). (Стадию select
    # выше — judge/glm-5, Gemini-слот Ф2 — НЕ трогаем.)
    model: glm-5
    prompts:
      zh-ru: ../prompts/editor.md
    # Бамп v2-bilingual-reflow→v3-discourse-reflow (label-SHA дисциплина: тот же editor.md, что в C1 —
    # вшито P1a-ядро ДИСКУРС-ПЕРЕВЁРСТКИ, D37 §2а; лейбл обязан следовать за новым SHA файла).
    prompt_version: v3-discourse-reflow
    temperature: 0.4
    reasoning: "off"

gates:
  coverage:
    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

escalation:
  chains:
    # ⚠️ ИНТЕРИМ-ЗАГЛУШКА, НЕ контракт. Ратифицированная D3: канал A deepseek-v4-pro →
    # glm-5.1 → gemini-3.1-pro, канал B grok-4.3 (эти модели/провайдеры gemini/openai в
    # models.yaml не заведены — цены/ключи; заводка — отдельный шаг). Провизорный kimi-k2.6.
    default: [kimi-k2.6]
    adult: [kimi-k2.6]
  budget_usd: 0

fanout:
  candidates: 3 # C2: N кандидатов (fan-out — механика раннера, N — конфиг)
