# Промпт-архитектура: состояние, решения, открытое (консолидированная заметка) > **⚠ СТАТУС: несущая часть ПОСТРОЕНА.** Pair-keyed промпты резолвятся КОНВЕНЦИЕЙ пути `prompts/<пара>/<роль>.md` + конфиг-слой пары `configs/pairs/` (пак-15, D39.23), repair-промпты — `prompts/<пара>/repair/<класс>.md` (пак-16, D39.24). Паком-20 добавились роль `terminologist` (пар-пак, интерим-текст) и вариантный `translator-banknote.md`; редакторская инъекция стала двухсекционной (D39.45), а жанровый словарь ОТМЕНЁН как класс (D39.47). ⚠ **ВНЕСЕНО (испр. 05.09):** D39.104 п.2 — инъекция схлопнута в ЕДИНЫЙ закон-блок, маркер `⟨проверить⟩` с провода СНЯТ, право «перевести иначе» упразднено. Отработано вайр-батчем, пак принят **D39.199** (`74ffe4f`); строка бэклога 134 закрыта и снята. Прежняя редакция держала это как «ждёт внесения» и посылала строить построенное. > > «Структурированный пакет конвенций пары» (§3) остаётся дальним планом. **Заметка собрана оркестратором 2026-07-16 по запросу владельца** («где заметка про промтинг?») — одно место по теме промптинга и реестр открытого; **при конфликте побеждает D-лог**, обновлять при каждом лендинге, трогающем промты или слой 2. ## 1. Четыре вопроса владельца → где ответ и что с ним | Вопрос владельца | Статус | Где живёт | |---|---|---| | **Язык самого промпта** (сейчас всё по-русски; для zh→en русский не должен участвовать) | ОТКРЫТ, спроектирован: язык промпта = **свойство пакета пары**, не хардкод. Первый замер ИСПОЛНЕН: Р6/D39.61 — ru/en-срез ОТРИЦАТЕЛЕН (эхо-ось), «не закрыт окончательно» оговоркой; остаток — язык промпта как свойство пакета для не-ru таргетов, вернётся с ja→ru | START_PROMT V4-п5 · аудит `L4-prompt-language-always-russian` (CONFIRMED/HIGH) · `09` §2-слой-2 · D39 п.7 | | **Вырезать правила языка из промтов в отдельный слой** (Палладий/Поливанов, дискурс-нормы, few-shot) | СЕАМ ПОСТРОЕН (пак-1, D39.2; форма резолва — конвенция пути `prompts/<пара>/<роль>.md`, прежний конфиг-ключ `prompts: {<пара>: файл}` ОТВЕРГАЕТСЯ загрузкой — `12-go-style-notes.md` §0.4) + `Book.LangPair()` + fail-loud на чужую пару. **Контент ещё НЕ извлечён** — правила по-прежнему в теле zh-ru-файлов; извлечение в структурированный пакет гейтится research/18 §D-3 («форма пакета не разрешена») | research/18 §B2.2/§C#15 · `09` §2-слой-2 · D39-решение владельца «сеам сейчас, контент zh→ru» · пак-1 T3.3 | | **Почему структура абзацев и расширенный язык-промпт — только у РЕДАКТОРА?** | ОСОЗНАННОЕ решение D30.2 (дешёвый буквальный черновик + вся реструктуризация у умного билингв-редактора; exp12: построчность = корень нечитаемости). Альтернатива «переводчик отдаёт структуру» измерена: Q4a — верность на translate-стадии не покупается (D39.9); Q4b прогнан и ПРИНЯТ (эксп-19, `docs/experiments/19-editor-contract-q4b.md`, D39.108 — диффы ОТЛОЖЕНЫ); топологию решил эксп-21 (D39.117: full-regen подтверждён, точечная починка как ЗАМЕНА редактора отклонена, принята формой «механический пре-гейт ПЕРЕД редактором», строка 142). Асимметрия сохранена ПО ДАННЫМ; не гонялся только Q4c; diff-контракт редактора — строка 106 | D-лог D30.2 · аудит `L1-*`/`H3` · research/19 §C | | **Все промты zh→ru-центричны — неправильно для мультиязычного бэкенда** | Ратифицирован **инвариант общности** (`09` §0.1, поправка владельца 13.07): пара = ось данных, не кода. Латентный баг закрыт паком-1 (ja-книга теперь fail-loud, не едет тихо через «китайский паратаксис»). Новая пара = новый пакет-данные, не переделка кода | `09` §0.1 · D39 п.7 · пак-1 T3.2/T3.3 · аудит `H2` | ## 2. Инвентарь промтов (после пака-1/1.5, HEAD) Промпты живут ПАР-каталогами: `backend/prompts/<пара>/<файл>` (+ `<пара>/repair/<класс>.md` пака-16, + `classifier.md` — D39.69). Ниже — состав для боевой пары `zh-ru`. | Файл | Роль | Что внутри | Пара | |---|---|---|---| | `zh-ru/translator.md` | черновик (flash) | брифинг-переменные `{{source_lang/target_lang/audience/honorifics/transcription/venuti/footnotes}}` плюс `{{title}}`/`{{text}}` (снято ИСПОЛНЕНИЕМ: `grep -o '{{[^}]*}}' backend/prompts/zh-ru/translator.md`; ⚠ `{{genre}}` в списке БОЛЬШЕ НЕТ — жанр выкинут словом владельца 16.08, строка бэклога 184, а `{{lang}}` разошёлся на пару) + слабая вёрстка-однострочка (D30.2) | zh→ru | | `zh-ru/editor.md` | редактор (deepseek-v4-pro БИЛИНГВ ИНТЕРИМ, D39.22; glm-5 резерв) — ⚠ **версию брать ФАЙЛОМ: `backend/configs/pipeline-c1.yaml`, ключ `prompt_version` стадии редактора** (испр. 05.09: здесь стояло `v3` при боевом `v4-discourse-reflow-nogenre`, а с D39.182 метка НЕСУЩАЯ — `TestPromptLabelsPinTheirBytes`; поверивший таблице бампнул бы уже-бампнутое и получил красный гейт) | 4 мандата + ДИСКУРС-ПЕРЕВЁРСТКА (Ван Цуй) + чэнъюй-атом + структурные few-shot (`---FEWSHOT---`, тумблер per-stage) | zh→ru | | `zh-ru/editor-mono.md` | референс-вариант D13.1 (не боевой) | узкий моно-мандат | — | | `zh-ru/judge-selector.md` | Ф2 (не исполняется) | — | — | - `analyst.md` снесён паком-1 как сирота. **`terminologist.md` — живая роль пар-пака** (D39.42/45, интерим-текст; финальный — по замерам); рядом `translator-banknote.md` — вариантный шиппинг-файл банкноты (D39.45/53). Правила, сидящие В ТЕЛЕ промтов (кандидаты на извлечение в пакет пары): русское тире-оформление диалога; «пиши живым русским»; паратаксис→гипотаксис-блок; чэнъюй-политика; few-shot-примеры (структурные, по-русски). Переменные брифа (`{{transcription}}` и пр.) — уже данные книги, НЕ пакета. ## 3. Целевая форма (слой 2, `09` §2) — куда движемся Версионируемый **пакет конвенций пары** `src→tgt[×genre]`, снапшот-folded: дискурс-правила пары + few-shot (в языке пары) + **язык промпта** + нормы транскрипции (Палладий для zh→ru, Поливанов для ja→ru — как выбираемые политики) + лимитеры полноты. Стадия резолвит промпт из пакета по `Book.LangPair()` (сеам уже работает). Гейт на стройку остался один — research/18 §D-3 (форма пакета не разрешена): exp15 отработан (§4 п.2). ## 4. Открытое по теме (маршрутизировано) 1. **Язык промпта** — первый замер Р6/D39.61 отрицателен (см. §1); добор — с реальной не-ru книгой (ja→ru). 2. **Извлечение правил в пакет** — exp15 ЗАВЕРШЁН; **данные-часть майнера ИЗВЛЕЧЕНА (D39.16:** zh/Палладий-инвентари → `internal/lang`+`configs/langpacks/`, тот же pair-keyed идиом, что промпты, снапшот-фолд langpack-байтов ПОСТРОЕН (`LangpackVersion`, D39.15/16)**)**; извлечение правил из ТЕЛА zh-ru-промтов (дискурс/few-shot) — ещё открыто, форсинг = ja→ru-реплика. `x/text/language.Tag` ОТВЕРГНУТ для гейт-предикатов (CLDR-инстабильность в вердиктах — D39.16). 3. **Транскрипция per-book** (Палладий/Поливанов vs фандомные формы) — research/19 §E.3, решение владельца НЕ горит (дефолт: политика в пакете пары, слой 2); `{{transcription}}`-переменная уже есть. 4. **Q4c** — где жить структуре (переводчик / редактор / отдельный пасс): единственное неизмеренное плечо; измеренные соседи Q4a/Q4b и топология — в §1, строка «Почему структура абзацев…». Границы Q4c — `docs/experiments/19-editor-contract-q4b.md` §«Границы».