# Скелет ядра 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 # Эхо-регенерация ДО эскалации — довод, замер и ОБА режима (budget_usd>0 против =0) в # pipeline-c1.yaml. Кратко: эхо flash стохастично по вызову (D39.61), поэтому ре-ген на той же # модели либо заменяет хоп (дороже в 5.40 раза по леджеру coldrun-v16), либо, когда эскалация # выключена, выкупает дыру за один дешёвый вызов. regenerate_echo_before_escalate: 1 stages: - name: draft role: translator model: deepseek-v4-flash prompt_version: v2-reflow-nogenre # D30.2 reflow (тот же translator.md, что в C1) — label-SHA дисциплина temperature: 0.8 # C2: кандидаты сэмплируются горячее (Р2: T=0.6–1.0) # D39.92 / row 112: "off" on deepseek-v4-flash is an ABSENT key ⇒ vendor default `high` ⇒ empty # content, finish=length. Rationale in pipeline-c1.yaml. reasoning: "low" # Judge-селектор (пара судей, шкала Комиссарова) — Фаза 2; стадия объявлена, # чтобы схема конфига не менялась: селектор получает N кандидатов от draft. # Судья Р4 — Gemini (нативный адаптер, Фаза 2); провизорно glm-5, чтобы скелет # валидировался (Anthropic убран из стека). C2 в Фазе 0 не исполняется. - name: select role: judge model: glm-5 # Роль judge держит промпт judge-selector.md — имя файла НЕ совпадает с ролью, поэтому здесь # осознанный prompt_override вместо конвенции prompts/<пара>/<роль>.md (пак-15). prompt_override: ../prompts/zh-ru/judge-selector.md prompt_version: v0-skeleton temperature: 0 # ⚠ DO NOT FLIP. Row 112 and the standards prompt both address this line as "the draft stage"; it is # stage `select` (judge, glm-5). On glm-5 control=extra_body_disable, so "off" is a LIVE thinking # disable, and low|medium|high emits nothing (no on_extra_body) ⇒ thinking back ON ⇒ ×3 timeouts. reasoning: "off" - name: edit role: editor # C2 — неисполняемый скелет Фазы 0/1 (fan-out/select — механика Ф2). Модель/бамп следуют # за C1: дефолт-редактор по D39.22 — deepseek-v4-pro ИНТЕРИМ (glm-5 — резерв, pipeline-arm-glm.yaml). # reasoning:off = NO-OP на dspro (ReasoningNone) → thinking ON; floor 8000 из models.yaml. (Стадию # select выше — judge/glm-5, Gemini-слот Ф2 — НЕ трогаем: это судья, не редактор.) model: deepseek-v4-pro # Бамп v2-bilingual-reflow→v3-discourse-reflow (label-SHA дисциплина: тот же editor.md, что в C1 — # вшито P1a-ядро ДИСКУРС-ПЕРЕВЁРСТКИ, D37 §2а; лейбл обязан следовать за новым SHA файла). prompt_version: v4-discourse-reflow-nogenre temperature: 0.4 reasoning: "off" # NO-OP на deepseek-v4-pro (ReasoningNone) → thinking ON; НЕ вооружает эхо-мину few_shot: false # deepseek-thinking CoT сбивается ручными примерами (exp14 §2а) — как в C1/dspro-арме gates: coverage: enabled: false sent_cov_min: 0.75 min_chunk_chars: 500 regression_guard: # D38.4 п.5 (обязательство, не исполненное к rerun2 — D39.34). C2 несёт стадию edit, значит переход # черновик→финал у него есть и гард не вырожден. Никогда не вердикт; флип не двигает снапшот. enabled: true 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 — конфиг)