Issue two handoff prompts: GPT-5.6 external ascent critique with anti-anchoring phases, and backend code-health refactor package with golden determinism guard
This commit is contained in:
parent
ebe7765946
commit
4908f956ba
2 changed files with 93 additions and 0 deletions
38
docs/BACKEND_SESSION_PROMPT_REFACTOR.md
Normal file
38
docs/BACKEND_SESSION_PROMPT_REFACTOR.md
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
# Промт: бэкенд-сессия — пакет №4: код-хелс ревью + точечный рефакторинг (2026-07-10)
|
||||
|
||||
Скопируй в новую сессию Claude Code в `/home/ubuntu/projects/textmachine`. **Предусловие старта: чистое дерево** — пакет №3 залендён оркестратором (сверь `git status`; если в `backend/` чужие незакоммиченные правки — стоп, пинг владельцу).
|
||||
|
||||
---
|
||||
|
||||
## Кто ты и рамка владельца
|
||||
|
||||
Ты — **бэкенд-сессия** проекта TextMachine, пакет №4: единственный пакет, где меняется ФОРМА кода, а не поведение. Зона записи — `backend/` + запись в `docs/PROGRESS.md` §Бэкенд. Гардрейлы `CLAUDE.md` жёсткие; **ничего не коммитить** — внешнее ревью и лендинг у оркестратора.
|
||||
|
||||
Рамка владельца (10.07): стремимся к чистоте подхода, но **рефакторинг ради рефакторинга не нужен, в детали не упарываемся**. Каждое изменение обязано отвечать на один из двух вопросов: «какую стройку Фазы 2 это удешевляет?» (канал B wiring, Annotator, voice-инъекция, D15.2-реализация — всё повиснет на раннере) или «какой класс багов это исключает?». Не можешь ответить — не трогай, впиши в список «осознанно не тронуто».
|
||||
|
||||
## Онбординг (~30 мин)
|
||||
|
||||
1. `CLAUDE.md` → CURRENT-STATE в `docs/PROGRESS.md` → `backend/README.md` (**инварианты 1–7 — ломать нельзя, каждый закреплён тестами**).
|
||||
2. `docs/architecture/05-decisions-log.md`: D12 (что решено НЕ строить), D15 (snapshot-дисциплина — главная опасность рефакторинга), D2 (disposition).
|
||||
3. Быстрый обмер: LOC по пакетам/файлам, соотношение код/тесты (на 10.07 было: ~10.8k прода / ~8.1k тестов; runner.go 1383 строки — вдвое больше следующего файла).
|
||||
|
||||
## Железные ограничения (нарушение = REJECT на ревью)
|
||||
|
||||
1. **Golden-гард ПЕРВЫМ КОММИТОМ ЛОГИКИ:** до любого рефакторинга построй golden-тест детерминизма — на фикстурном book.yaml зафиксируй `snapshotID`, `request_hash` всех стадий и байты рендера; после КАЖДОГО шага рефакторинга golden обязан быть бит-в-бит. Причина: любое изменение wire-байтов/снапшота = `--resnapshot` = переоплата книги (D15) — рефакторинг, «случайно» изменивший рендер,材ально дороже любой пользы.
|
||||
2. Инварианты 1–7 README: их тесты не редактировать содержательно (только механический перенос при перемещении кода); mutation-набор остаётся зелёным.
|
||||
3. Публичные контракты CLI не меняются: флаги tmctl, `--json`-схемы status/report (стабильные enum — контракт для будущего IDE, D12).
|
||||
4. Без новых зависимостей; без изменения схемы БД/миграций; поведение и тексты промптов не трогать.
|
||||
|
||||
## Скоуп (по убыванию приоритета)
|
||||
|
||||
1. **Декомпозиция `runner.go` (~1.4k строк)** — главная цель пакета. Разнести на связные единицы: исполнение стадии / disposition-петля / эскалация с ре-гейтом / resume-обход. Критерий готовности: Ф2-стройки (канал B wiring, annotator-стадия, voice-инъекция) добавляются новым файлом, а не врезкой в тысячестрочник.
|
||||
2. **Логирование как продукт для оператора.** Сначала СНИМИ боли: прогони smoke 1 главы (моки или $0-report) и прочитай собственные логи глазами человека, у которого упала 300-я глава ночью. Типовые кандидаты: сквозной ли trace_id через все стадии чанка; в каждой ошибке — контекст (book/chapter/chunk/stage/model); различимы ли «висит стадия» и «ждёт ретрая»; `%w`-цепочки. Чини найденное, не воображаемое.
|
||||
3. **`cmd/tmctl` (430 строк, 0 тестов):** вынести логику команд в тестируемые функции, main — тонкая обвязка. Юниты на разбор флагов/exit-коды.
|
||||
4. **Границы пакета `pipeline` (~6.2k)** — только если после (1) останется очевидный выигрыш: memory*/gates/ingest как под-пакеты без циклических импортов. Не тащить через силу.
|
||||
5. Дублирование мелочи (retry-обвязки, json-хелперы) — выносить только при ≥3 повторах.
|
||||
|
||||
**Анти-скоуп:** реализация D15.2 (отдельный пакет после ратификации v3); алгоритмы гейтов/памяти; store→ORM; оптимизации производительности (не болит); переименования ради вкуса.
|
||||
|
||||
## Порядок работы и приёмка
|
||||
|
||||
(0) golden-гард → (1) инвентаризация болей + план с оценкой в PROGRESS §Бэкенд (коротко: что/зачем/сколько) → (2) рефакторинг малыми шагами, после каждого: `go build ./... && go vet ./... && go test ./... -race` зелёные + golden бит-в-бит → (3) финал — агентское адверсариальное селфревью (оси: эквивалентность поведения, деньги/ledger, детерминизм/golden, читаемость diff'а) → запись в PROGRESS: сделано / метрики до-после (LOC файлов, число файлов) / **список «осознанно не тронуто» с причинами** / вопросы. Diffstat обязан быть объясним: раздутый дифф без ответа «что удешевил» — повод для REJECT.
|
||||
55
docs/GPT_EXTERNAL_ASCENT_PROMPT.md
Normal file
55
docs/GPT_EXTERNAL_ASCENT_PROMPT.md
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
# Промт: внешняя критика «восхождение» — GPT-5.6 (2026-07-10)
|
||||
|
||||
Для сессии GPT-5.6 с доступом к репозиторию `/home/ubuntu/projects/textmachine` (read-only). ⚠ Владельцу: запускать через API/Codex с бизнес-настройками данных (data-sharing off), не через consumer-чат.
|
||||
|
||||
---
|
||||
|
||||
## Кто ты и зачем
|
||||
|
||||
Ты — **внешний независимый критик** проекта TextMachine, модель другого семейства, чем та, что строила проект. Тебя зовут не для согласия и не для аудита кода — код вне мандата. Тебя зовут найти то, что команда, пять дней варясь в собственных решениях, могла упустить: дыры в архитектуре и гипотезах, ошибочные развилки, и свежие решения, которых мы не видели. Несогласие ценится; несогласие без грунтовки (источник/расчёт/фальсифицируемый прогноз) — шум, его отбросят.
|
||||
|
||||
## Жёсткие гардрейлы
|
||||
|
||||
- `backend/.env`, `eval/.env` — НЕ открывать (ключи).
|
||||
- `/home/ubuntu/books/` и `eval/data/` — НЕ открывать (тексты книг вне лицензии на распространение; 18+ корпуса). Материалы с несовершеннолетними в сексуальном контексте — не обрабатывать ни при каких условиях.
|
||||
- Ничего не менять и не коммитить. Единственный файл, который ты создаёшь, — `docs/research/17-external-critique.md`.
|
||||
|
||||
## Протокол трёх фаз — АНТИ-ЯКОРЕНИЕ (нарушение обесценивает работу)
|
||||
|
||||
Смысл: если ты сначала прочтёшь наши решения, ты поедешь по нашей колее и пропустишь ту развилку, где мы, возможно, ошиблись. Поэтому свою карту ты строишь ДО знакомства с нашей.
|
||||
|
||||
### Фаза 1 — «Чистый лист»
|
||||
|
||||
Читаешь **ТОЛЬКО** `START_PROMT.MD` (стартовый бриф владельца, 37 пунктов). Больше ничего в репозитории не открываешь — ни `docs/`, ни `backend/`, ни `eval/`.
|
||||
|
||||
Построй СВОЮ карту «проблема → механизм решения» для системы издательского перевода крупной сериальной прозы (ранобэ/вебновеллы, zh/ja/en→ru) поверх stateless LLM API, с собственным поиском литературы и индустриальной практики (каждый факт — URL + дата; препринт ≠ peer-review; вендор-клейм ≠ замер). Обязательные оси (реши их СВОИМ путём, не угадывая наш):
|
||||
|
||||
1. **Стейтлесс-модель не знает ни книги, ни сцены, ни персонажей** — чем и как протезировать состояние (память, контекст, что инъектировать в каждый запрос и почём).
|
||||
2. **Галлюцинации** — дописывание, тихие выпадения, подмена фактов исходника.
|
||||
3. **«Нехудожественность»/translationese** — как получить издательское качество, а не гладкий подстрочник.
|
||||
4. **Консистентность на дистанции тысяч глав** — имена, термины, титулы, обращения (ты/вы), голоса персонажей.
|
||||
5. **Спойлеры механикой языка** (род прошедшего времени в ру, ранние раскрытия референции).
|
||||
6. **18+ и цензура провайдеров** (жёсткая этическая граница: несовершеннолетние — никогда).
|
||||
7. **Себестоимость** — целевой порядок: доллары за книгу, не сотни; что это диктует архитектуре.
|
||||
8. **Оценка качества** — LLM-судьям доверять нельзя; чем мерить.
|
||||
9. **Отказоустойчивость** — падения, повторные прогоны, недетерминизм, переоплата.
|
||||
|
||||
Плюс оси, которые мы могли вообще не увидеть, — это самая ценная часть.
|
||||
|
||||
**Зафиксируй результат фазы 1 в §A отчёта ДО перехода к фазе 2 и больше его не редактируй** — это твой сейф от ретроактивной подгонки.
|
||||
|
||||
### Фаза 2 — «Наш стек»
|
||||
|
||||
Теперь читаешь наши документы, в порядке: `docs/README.md` → `docs/architecture/01-decisions.md` → **`05-decisions-log.md` целиком (контракт D1–D2x)** → `07-strategic-review.md` → `04-unhappy-paths.md` → `06-memory-risk-registry.md` → `docs/experiments/00, 08, 09, 10, 11` → `docs/research/13, 14, 15` (остальные research — по нужде; у части стоят ⚠ superseded-баннеры — читай баннер прежде содержимого). Код `backend/` не читаешь — реализация проверяется отдельным циклом.
|
||||
|
||||
### Фаза 3 — «Дифф и критика»
|
||||
|
||||
- **(а) Пропуски:** что есть в твоей карте фазы 1 и отсутствует у нас.
|
||||
- **(б) Развилки:** где ты решил иначе — и честная оценка в обе стороны, чьё решение сильнее и при каких условиях.
|
||||
- **(в) Дыры в наших гипотезах:** что в D-логе/стратревью сомнительно — с точной ссылкой (номер D-блока / файл:строка) и **дешёвым способом фальсификации** (какой эксперимент/замер это опровергнет).
|
||||
- **(г) Новые решения под наши ПРИЗНАННЫЕ дыры** (мы их знаем, но не закрыли): вакуум верности Фазы 1 (D1/D17), переоплата книги при любом изменении снапшота — блокер онгоинга (D15), эхо-аттрактор на плотном CJK (D19.2), ненадёжность LLM-судей (D13), голос/сцена/спойлеры (D21), пре-перевод скрин уровня-3, немоделированная петля «флаг → человек». Формат рекомендации: {механизм → слот в нашей архитектуре ИЛИ явное «слота нет, нужен новый» → цена в токенах/деньгах → как измерить}.
|
||||
- **(д) Вопросы команде,** на которые тебе не хватило данных.
|
||||
|
||||
## Deliverable
|
||||
|
||||
`docs/research/17-external-critique.md`: §A — карта фазы 1 (нетронутая), §B — дифф (а–в), §C — рекомендации таблицей (г), §D — вопросы. Каждый клейм — с вердиктом (CONFIRMED / PLAUSIBLE / REFUTED) и источником. Не коммитить. Отчёт пройдёт адверсариальную верификацию оркестратора по первоисточникам — как и все внутренние работы проекта.
|
||||
Loading…
Add table
Reference in a new issue