textmachine/docs/architecture/10-prompt-architecture.md

46 lines
9.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Промпт-архитектура: состояние, решения, открытое (консолидированная заметка)
> **⚠ СТАТУС: несущая часть ПОСТРОЕНА.** 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). ⚠ **Ждёт внесения:** D39.104 — инъекция схлопывается в ЕДИНЫЙ закон-блок, маркер ⟨проверить⟩ снимается с провода, право «перевести иначе» упраздняется; внесение = строка 134 ПОСЛЕ пробы 18.
>
> «Структурированный пакет конвенций пары» (§3) остаётся дальним планом. **Заметка собрана оркестратором 2026-07-16 по запросу владельца** («где заметка про промтинг?») — до неё тема концерна 4 арх-ресета была размазана по `08-sync-audit-ledger` (дорожка L4), `09-target-architecture` (§0.1, §2 слой 2), D-логу (D30.2, D39 п.7, D39.139.2) и research/1819. Док — одно место по теме промптинга и реестр открытого; **при конфликте побеждает 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) | брифинг-переменные `{{lang/genre/honorifics/transcription/venuti/footnotes}}` + слабая вёрстка-однострочка (D30.2) | zh→ru |
| `zh-ru/editor.md` | редактор (deepseek-v4-pro БИЛИНГВ ИНТЕРИМ, D39.22; glm-5 резерв), v3 | 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` §«Границы».