- Зачем:
- ретро трёх циклов конвейера показало: находки ревью проходили через
контекст оркестратора до шести раз, review-промпт дублировался, ~7
пустых ходов на idle-пингах teammate-ревьюера.
- Что:
- SKILL.md: механика «индекс у оркестратора, нагрузка файлами» — вердикты
в файлы обменного temp-каталога, fix-промпт конкатенацией, один
канонический review-промпт на обоих ревьюеров, idle-пинги как шум;
- новый references/prompt-templates.md — скелеты четырёх промптов;
- codex-exec.md: сборка промптов cat'ом, боевая модель gpt-5.5 явно
(фронтир из конфига не наследовать);
- codex-sandbox-fix-handover: рабочий AppArmor-фикс (ловушка memfd,
профиль на бинарь codex), проверен на обоих режимах;
- lessons.md: датированные записи ретро, казуса Sol и memfd.
- Проверка:
- чтение SKILL.md и references/, следующий прогон конвейера.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
137 lines
9.0 KiB
Markdown
137 lines
9.0 KiB
Markdown
# Скелеты промптов конвейера
|
|
|
|
Отработали боевой прогон 2026-07-10 (3 цикла, тикеты FTP/CSV DQ). Правило
|
|
использования: заполни скелет в `$SCRATCH` **один раз за прогон** и дальше
|
|
не переписывай — на каждую следующую задачу пиши только параметрический
|
|
блок и собирай финальный промпт конкатенацией. Плейсхолдеры `{{...}}`
|
|
заполняются значениями задачи; секции, помеченные «адаптируй», меняются
|
|
по смыслу задачи, остальное — стабильный boilerplate.
|
|
|
|
`$SCRATCH` здесь — общий обменный каталог прогона во **временном каталоге
|
|
ОС с полуслучайным префиксом**: скретчпад сессии из системного промпта
|
|
(он уже такой) или `mktemp -d` на прогон. Это безопасный вариант
|
|
(решение пользователя 2026-07-10): не мусорит в репо, не сталкивается с
|
|
параллельными прогонами и не переживает ребут машины — устаревшие обменные
|
|
файлы не накапливаются. Windows-кавеат из codex-exec.md в силе: путь —
|
|
forward-slash, не голый `/tmp` Git Bash.
|
|
|
|
## 1. Задача исполнителю (`codex exec`, workspace-write)
|
|
|
|
```markdown
|
|
# Задача: {{тикет/цель одной строкой}}
|
|
|
|
Рабочий каталог — корень репозитория {{repo}}. Ветка {{branch}} — работай
|
|
в ней, ветку не менять.
|
|
|
|
## Что делать
|
|
Реализуй {{тикет NN}} из {{путь к задаче-файлу}}. Задача самодостаточна:
|
|
постановка — в тикете, следуй ей буквально; чекбоксы — критерии приёмки.
|
|
Кажется неправильным — реализуй как написано и отметь сомнение в отчёте.
|
|
|
|
## Сначала прочитать (обязательно, до кода)
|
|
{{нумерованный список: задача-файл, спека, образцы кода, конвенции}}
|
|
|
|
## Порядок и дисциплина
|
|
{{адаптируй: TDD, порядок слоёв, команда тестов}}
|
|
|
|
## Границы (что трогать нельзя)
|
|
- **Коммитов не делать.** Никаких `git commit`/`git add`.
|
|
{{адаптируй: стабы, чужой код, существующие тесты, файлы вне репо}}
|
|
|
|
## Финальный отчёт (что вернуть)
|
|
1. Файлы с одной строкой «зачем» на каждый.
|
|
2. Команда тестов и итог прогона (счётчик, все зелёные).
|
|
3. Чекбоксы: какие закрыты, какие нет и почему.
|
|
4. Сомнения, если были.
|
|
```
|
|
|
|
## 2. Слепое ревью (один файл на ОБОИХ ревьюеров)
|
|
|
|
Канонический файл не знает, кто его читает — куда класть вердикт, задаёт
|
|
обёртка вызова, и пути у ревьюеров разные (иначе коллизия):
|
|
|
|
- **Codex**: файл через stdin; отдельный файл вердикта не нужен — вердикт
|
|
и есть его `-o`-отчёт (`$SCRATCH/NN-review-codex.md`).
|
|
- **Клод-субагент**: в prompt — только обёртка: «прочитай {{путь к
|
|
каноническому файлу}} и выполни, рабочий каталог {{корень репо}};
|
|
полный индекс запиши в {{$SCRATCH/NN-review-claude.md}} — это вне репо,
|
|
мандату не противоречит (Write у тебя нет — Bash heredoc'ом); финальным
|
|
сообщением пришли только строку VERDICT, счётчики по severity и путь
|
|
к файлу».
|
|
|
|
```markdown
|
|
# Ревью кода: {{тикет NN — суть}}
|
|
|
|
Ты — независимый адверсарный ревьюер. Рабочий каталог — корень
|
|
репозитория {{repo}}, ветка {{branch}}.
|
|
|
|
## Мандат (жёсткий)
|
|
- Исходники и окружение НЕ менять. Правок не вносить — только находки.
|
|
- Запускать тесты, проверять гипотезы, читать документацию — можно и
|
|
нужно; безопасные эмпирические проверки во временных каталогах вне
|
|
репо поощряются: вердикт с проверкой твёрже вердикта по прочтению.
|
|
- Никаких `git add`/`git commit`/`git checkout`.
|
|
- Итог — только индекс находок и строка VERDICT, без пересказа кода и
|
|
нарратива; куда его положить — сказано в вызове.
|
|
|
|
## Что ревьюишь
|
|
{{задача-файл + спека; что уже закоммичено и не ревьюится}}
|
|
Изменения (незакоммичены, смотри рабочее дерево): {{список файлов}}
|
|
Команда тестов (ожидается {{N}} passed): {{команда}}
|
|
|
|
## Фокус
|
|
{{адаптируй: 3–4 пункта под задачу — математика/краевые, соответствие
|
|
критериям, честность тестов, общий код/регрессии}}
|
|
|
|
## Формат файла находок — только индекс
|
|
SEVERITY(BLOCKER|MAJOR|MINOR|NIT) | файл:строка | суть одной фразой | как проверить/воспроизвести
|
|
В конце — отдельная строка: VERDICT: APPROVED | APPROVED_WITH_MINORS | CHANGES_REQUIRED
|
|
```
|
|
|
|
## 3. Триаж исполнителю (`codex exec resume <thread-id>`)
|
|
|
|
Собирается конкатенацией — находки НЕ переписывать:
|
|
`cat шапка.md review-A.md review-B.md замечания.md > fix-prompt.md`
|
|
|
|
Шапка (стабильная):
|
|
|
|
```markdown
|
|
# Триаж находок двух независимых ревью твоей реализации
|
|
|
|
Ниже — находки двух слепых ревью **дословно**. Закрой перечисленное,
|
|
больше ничего не меняй. По каждой — починка по TDD (сначала тест,
|
|
воспроизводящий находку) или аргументированное отклонение через
|
|
контракт/спеку и тест — голословное «не важно» не принимается.
|
|
Коммитов не делать.
|
|
|
|
Финальный отчёт: по каждой находке одной строкой — починено (чем) /
|
|
отклонено (довод + где зафиксировано); команда тестов, счётчик прогона,
|
|
список изменённых файлов.
|
|
```
|
|
|
|
Замечания оркестратора (опционально, коротко): фактура, которой нет у
|
|
исполнителя (проверенные тобой данные), решения уровня задачи
|
|
(вне скоупа / принять риск), приоритеты.
|
|
|
|
## 4. Узкая перепроверка (тем же ревьюером)
|
|
|
|
```markdown
|
|
# Узкая повторная проверка: закрывают ли правки твои находки
|
|
|
|
Исполнитель обработал находки. Проверь ТОЛЬКО свои — полный повторный
|
|
обход не нужен. Мандат прежний: ничего не менять, только чтение и прогон
|
|
тестов.
|
|
|
|
Отчёт исполнителя с резолюциями: прочитай {{$SCRATCH/NN-fix-result.md}}.
|
|
Команда тестов (ожидается {{N}} passed): {{команда}}
|
|
|
|
Ответ — по каждой твоей находке одной строкой: CLOSED / NOT_CLOSED
|
|
(почему) / REJECTION_VALID / REJECTION_INVALID (почему). Финальная
|
|
строка: RECHECK: ALL_CLOSED | ISSUES_REMAIN
|
|
```
|
|
|
|
Кавеат: проверь, что Codex-ревьюер может читать `$SCRATCH` из своей
|
|
песочницы (temp-каталоги обычно читаемы в workspace-write; в этом прогоне
|
|
`-o`-файлы под `/tmp` работали). Если нет — резолюции по его находкам
|
|
передай текстом (только его находки, не весь отчёт).
|