textmachine/docs/BACKEND_DISCOURSE_PROMPT_SESSION_PROMPT.md

7.6 KiB
Raw Blame History

Промт: бэкенд-сессия — дискурс-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.mddocs/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 (промпт + сид + код инфра-пака).