textmachine/docs/BACKEND_DISCOURSE_PROMPT_SESSION_PROMPT.md

31 lines
7.6 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.

# Промт: бэкенд-сессия — дискурс-reflow-промпт P1a в боевой editor (рычаг №1 читаемости: абзацы) (2026-07-12, выдан — рычаг №1, feeds resnapshot; амендмент D38.4)
---
## Кто ты и зачем
Ты — **бэкенд-сессия** TextMachine. Эмпирика exp14 (**D37 §2а**, span-верифицировано) установила: **претензия владельца №1 (рубленые абзацы / конвенции РЯ) = рычаг ПРОМПТА, НЕ модель** — фронтир со старым промптом (F-base) рубит абзацы ХУЖЕ P0, а дискурс-reflow-промпт (**P1a**) реверстает дефект у ВСЕХ семей редакторов. Боевой editor-промпт сейчас **P0-образный** (то, что exp14 признал хуже P1a). Задача — **перенести валидированный P1a в боевой editor-промпт**, чтобы пере-прогон реально закрыл абзацы. **Это рычаг №1; без него единый resnapshot бессмыслен** (код инфра-пака уже залендён D38.3, reseed идёт параллельно).
Зона: **только `backend/`** (+ READ-ONLY чтение `eval/exp14/exp14_prompts.py` как источника формулировки P1a — НЕ править, зона полигона). Сид НЕ трогать. `.env` не читать. **Ничего не коммитить — лендит оркестратор.** Мандат самопроверки (CLAUDE.md, владелец 12.07): **после кода — явный бэкенд-ревью своего изменения + адверсариальное ревью (author≠reviewer, find→refute)**.
## Онбординг
1. `CLAUDE.md` (гардрейлы + мандат самопроверки) → CURRENT-STATE в `docs/PROGRESS.md`**`docs/architecture/05-decisions-log.md` D37 §2а + D38 §7 + D38.1 + D38.3** (что такое P1a, почему рычаг №1, как он ложится в resnapshot).
2. **`eval/exp14/exp14_prompts.py` (READ-ONLY)** — точный текст P1a-дискурс-промпта + few-shot (narrative N:1, dialogue 1:N, focal-shift boundary, target-side ru-якорь ≤3), sha256-фиксация. **Это источник истины по формулировке** — то, что реально победило в exp14.
3. Боевой editor-промпт `editor.md` (сверь по `backend/configs/pipeline-c1.yaml` — editor получает `{{text}}` = исходник, билингв D30.1) + механизм инъекции CONFIRMED dst-констрейнтов (`renderEditorConstraintBlock`, `memory.go`). `docs/research/18-quality-levers.md` (Ван Цуй parataxis→hypotaxis, DocRepair-фон) — если нужен контекст дискурс-reflow.
## Задача
1. **Извлечь P1a** из `eval/exp14/exp14_prompts.py` (READ-ONLY): дискурс-reflow-инструкции (Ван Цуй — паратаксис исходника → гипотаксис РЯ; **репараграфизация 1:N** — дробить китайскую «простыню» на русские абзацы по смысловым единицам; **ОДИНАРНЫЙ пасс**, НЕ 2-pass — D37 §2б, второй пасс дрейфует) + few-shot.
2. **Перенести в боевой `editor.md`** faithfully: заменить P0-era инструкции валидированным P1a-дискурсом, **СОХРАНИВ билингв-каркас** (вход = черновик + `{{text}}`-исходник + CONFIRMED dst-констрейнты, D30.1) и omission/inversion-осторожность (не терять/не инвертировать смысл — класс D34.3 реален, ~56 порч в exp14). Точность формулировки = как в exp14 (менять смысл промпта нельзя — это то, что победило). **+ ОДНО валидированное дополнение к атом-листу (D38 §2г / аудит полноты D38.4):** добавь класс **идиом/чэнъюй** — «передавай ОБА смысловых компонента чэнъюй (`物是人非` = „вещи те же, люди не те“ — не сворачивай в общий смысл „всё изменилось“); при нужде — краткий образ + смысл». Причина: exp14b (SOFT e1) — сплющивание чэнъюй УНИВЕРСАЛЬНО у всех моделей (не модель-специфика), D38 §2г классифицировал как рычаг ПРОМПТА. Это ЕДИНСТВЕННОЕ смысловое дополнение к P1a; всё прочее — дословный порт. Пере-прогон измерит эффект (`物是人非` — вход fidelity re-gate).
3. **Бампнуть `prompt_version`** editor-роли (телеметрия: новый промпт = новый SHA; НЕ повторить баг «один лейбл `v0-draft` на два SHA» — D-лог 07-strategic §194). Это триггерит resnapshot — ок, оркестратор собирает единый.
4. **Golden re-capture** если editor-промпт в golden (санкц., loud, `promptVersion` bump; маскир. дифф = РОВНО смена промпта, тела других стадий без дрейфа).
5. **CAVEAT — флаг, НЕ реализовывать здесь:** few-shot МОДЕЛЬ-СПЕЦИФИЧЕН (research/15). Дефолт-editor = glm-5 → few-shot P1a как есть. Но для СВАП-арма пере-прогона (mistral/**deepseek-pro**): deepseek-thinking может требовать **zero-shot** (exp14 §2а: «для DeepSeek-thinking сначала zero-shot против few-shot; ручной verbose CoT reasoning-модели НЕ добавлять»). Отметь в отчёте как вопрос конфига пере-прогона — не строй сейчас.
## Само-проверка (обязательна, мандат)
После кода: **(а)** свой ревью — ported-промпт ФАКТИЧЕСКИ соответствует P1a (сверь дословно по `exp14_prompts.py`; ничего не потерял/не переформулировал случайно), `prompt_version` бампнут, golden-дифф = ровно смена промпта; **(б)** адверсариальное ревью (find→refute, author≠reviewer). `go build && go vet && go test -race ./...` зелёные.
## Оговорки/вопросы — в конец отчёта
- **Крупная edit-единица** (D37 §2а «крупнее чанк = лучше абзацы») — НАПРАВЛЕННЫЙ сигнал (2 главы/0 ретраев), НЕ ратифицирован. Это ОТДЕЛЬНАЯ ручка нарезки, НЕ часть этого промпт-порта. Хочешь — предложи в отчёте (не реализуй).
- **Deliverable:** боевой `editor.md` = P1a-дискурс, `prompt_version` бампнут, golden зелёный, отчёт + само-проверка + список «перенёс дословно vs адаптировал» + deepseek-zero-shot-флаг. Оркестратор собирает единый resnapshot (промпт + сид + код инфра-пака).