- Зачем:
- Профили на пути установки Codex ломались после переустановки, а прежние проверки могли давать ложный успех.
- Что:
- Штатный профиль системного bwrap выбран основным способом настройки; исторические обходы ограничены подтверждёнными случаями.
- Уточнены диагностика, переход со старых профилей и проверки режимов и границ записи.
- Обновлены связанные инструкции и записан результат применения на Ubuntu 24.04.4 с Codex 0.154.0.
- Проверка:
- Пройдены quick_validate, проверка ссылок, синтаксиса Bash и git diff --check.
- Штатный профиль применён; старые профили выгружены. Оба режима и запреты записи проверены из процесса unconfined; подтверждены метки AppArmor у bwrap и дочерней команды.
- Зачем:
- продолжение треда не должно получать неподходящие модель и effort из конфига.
- Что:
- добавлено предупреждение явно указывать модель и effort при resume.
- Проверка:
- git diff --cached --check.
- Зачем:
- уточнены границы ответственности координатора и правила работы с effort.
- Что:
- добавлено принятие результата как обязанность координатора.
- уточнена рекомендация по смене effort внутри треда.
- сохранены выводы из прогона t2-ml-forecast.
- Проверка:
- git diff --check.
- Зачем:
- после правки симптом `No prompt provided via stdin` висел только на
сломанной среде; читатель в нормальной среде, закрывший вход по правилу
фонового запуска, прогонит самотест, увидит «непусто» и останется без
диагноза — этот отказ уже был, запись 2026-08-02 (#39).
- Что:
- в хвост правила `< /dev/null` вернулась сцепка с сообщением:
«закроешь — получишь то же сообщение».
- Проверка:
- `grep -n 'No prompt provided' references/codex-exec.md` — симптом назван
один раз, обе причины стоят рядом в одном пункте.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Зачем:
- под предполётом стоял пункт «stdout/stderr — редиректами» без оговорки,
и при беглом чтении побеждала ближайшая инструкция; вход ломается той же
поломкой дескриптора, а правило звало подавать промпт редиректом из файла.
- Что:
- пункт про промпт ведёт каналом (`cat prompt.md | codex exec … -`) —
форма работает в любой среде; редирект из файла назван как симптом.
- хвост про stdout/stderr отсылает к предполёту вместо голого редиректа.
- самотест читается как «пусто/непусто», а не «18 байт»: номер версии
подрастёт на знак, проверка от этого не зависит.
- Проверка:
- `grep -n 'stdin\|редиректами' references/codex-exec.md` — противоречащих
указаний в «Сквозных правилах» не осталось.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Зачем:
- среда сама отвечает за пять секунд, теряет она унаследованный файловый
дескриптор или нет, поэтому документ несёт проверку, а не ответ; форма
сбора вывода за вечер менялась дважды и не должна жить в двух местах.
- Что:
- в «Сквозные правила» codex-exec.md добавлен предполёт: самотест
`codex --version > f; wc -c f`, ветка «ноль байт» с раздельными каналами
и `set -o pipefail`, оговорка про `wait`.
- предполётная проверка песочницы переехала туда же из пункта про AppArmor,
три рецепта не тронуты — их POSIX-форма и код возврата остались честными.
- урок 2026-08-06 отдал самотест и форму предполёту, оставил находки:
дефект `2>&1 | cat`, съеденный каналом код возврата, ненужный `script`.
- Проверка:
- `false | cat > f; echo $?` — 0, с `set -o pipefail` — 1.
- `bash -c 'echo "{}"; echo err >&2' 2> >(cat > e) | cat > o` — потоки
в разных файлах, `jq` по логу проходит.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Зачем:
- в буллете про эффорт одна и та же ситуация предписывалась дважды:
`high` за нетривиальную реализацию и тут же `medium` за неё же по
отревьюированному тикету. При вчерашнем сжатии разрешение 07-21
превратилось в правило равного ранга.
- архив уроков оставался связан ссылкой прямо из живого этапа 3, хотя
его шапка объявляет файл вне пути прогона: 549 строк устаревших
правил в одном клике от исполняющего агента.
- после разреза уроков в записи 07-31 осталось «запись выше» про
вкусовую линзу — сама запись уехала в архив.
- Что:
- разрешение 07-21 помечено исключением и вернуло слово «допустима».
- ссылка на архив в SKILL.md заменена ссылкой-цитатой (запись
2026-07-06); живых markdown-ссылок на архив вне уроков не осталось.
- висячий указатель в lessons.md получил адрес: запись 2026-07-31 в
архиве.
- Проверка:
- grep по markdown-ссылкам архива: остались только шапка lessons.md и
библиография codex-sandbox-apparmor.md; все ссылки скилла резолвятся.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Зачем:
- запрет «read-only ревьюеру не режь» стоял в двух местах и всё равно
был нарушен при сборке команды для холодного ревью этой же сессии:
отступление обосновали тем, что у ревью документа руки не нужны.
Третья копия запрета делу не помогла бы — нужен не запрет, а
отсутствие выбора.
- Что:
- правило переписано значением: песочница ревьюера — workspace-write,
как у исполнителя; линии различает свежесть треда и мандат, а не
привилегия. Оговорка про руки ушла внутрь обоснования, и там же
сказано, что ревью документа не исключение.
- добавлена строка, что ветка та же для любого слепого ревью — кода,
постановки, документа, самого скилла: рецепт копируют целиком, линзу
задают файлом линии. Повод собирать команду руками снят.
- Проверка:
- рецепт ветки ревьюера содержит -s workspace-write и штатную связку
approval_policy/approvals_reviewer; прочитан целиком после правки.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Зачем:
- сторож был зашит на task-result.md и task-stdout.jsonl, то есть на
артефакты этапа 3. На ревью и на починке отчёт исполнителя уже лежит
рядом, цикл не делал ни одного тика и выходил молча — страховка
отсутствовала ровно там, где прогон длиннее всего.
- отсутствующий лог был неотличим от неростущего: `|| echo 0` выдавал
ноль два тика подряд, и неверный путь читался как застой.
- Что:
- пара файлов вынесена в переменные REPORT и LOG первой строкой, с
указанием подставлять их от страхуемой ветки.
- отсутствие лога стало отдельным сигналом NOLOG (редирект создаёт лог
сразу, так что через тик его не быть не может).
- дописано, что выход из цикла снимает страховку: после STALLED сторож
перезапускают руками.
- поправлено описание ловушки bfs: он ругается в stderr, а пустым
отдаёт только stdout — «молча» было неверно.
- Проверка:
- симуляция четырёх исходов: штатное завершение, зависание, неверный
путь к логу (NOLOG) и ветка ревью при лежащем рядом отчёте этапа 3 —
последняя как раз и не работала до правки.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Зачем:
- вчерашнее переименование `review-<task|code>-*` встало на неверную
ось: `task` и `code` — это две линии этапа 4 (уместность и дефекты),
а не этапы. Межэтапная коллизия, ради которой всё делалось, осталась
открытой: у ревью постановки имени вердикта не было вовсе.
- сборка триажа при этом называла оба вердикта «линия code», хотя один
из них — вердикт линии уместности.
- Что:
- вердикты и параметрический блок этапа 4 — `review-impl-*`, этапа 2 —
`review-spec-*`; общий блок снова один на обе линии этапа.
- логи ревьюера тоже несут этап (`review-impl-stdout.jsonl`) — раньше
этап 4 молча затирал лог этапа 2, единственное доказательство для
проверки «вердикт без находок: работа или отписка».
- в prompt-templates.md названы имена файлов этапа 2 и добавлено
предупреждение, что `task` — линия уместности, а не постановка.
- SKILL.md этапа 5 показывал `вердикт-A.md вердикт-B.md`; заменено на
реальные имена, комментарий в рецепте ревьюера исправлен.
- Проверка:
- grep по обменным именам: старых не осталось вне уроков, новые
согласованы между SKILL.md, prompt-templates.md и codex-exec.md.
- все markdown-ссылки скилла резолвятся.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Зачем:
- рецепт Кодекса читают в момент сборки команды; пересказы, хеджи и
копии уроков внутри него дают место для импровизации — прогон
2026-07-30 взял `danger-full-access` «на всякий случай» при верном
рецепте.
- вердикты звались по семейству (`review-codex.md`), а Codex ревьюирует
и постановку, и код в одном `$D` — упавший этап 4 оставлял файл этапа
2, и триаж молча чинил по чужому вердикту.
- Что:
- codex-exec.md: удалены копия урока про эффорт (экономика xray, казус
`.dgst`), причинная механика bwrap, повтор про companion и битая
ссылка «в уроках ниже»; три пересказа эскалации сведены в один;
ветка ревьюера стала полноценным рецептом; правила одной ветки
переехали в свои ветки.
- codex-exec.md: сторож зависшего треда — признак жизни это рост
stdout.jsonl, а не статус (урок 2026-07-07 в рецепт не доезжал).
- prompt-templates.md: имена вердиктов и параметров несут этап —
`review-<task|code>-<codex|claude>.md`, `review-<этап>-params.md`.
- model-matrix.md: критерий «цена тихой ошибки этапа» стал единым
источником, claude-agents.md и codex-exec.md на него ссылаются.
- lessons-archive.md: датированное уточнение — ключи `resume` сверены
на 0.145.0, `-m`/`-o`/`--json` доступны вопреки записи 2026-07-21.
- Проверка:
- сверка 51 клаузы по инвентарю (scratchpad), 24 ключевые — grep'ом;
все markdown-ссылки скилла резолвятся.
- сторож прогнан на симуляции трёх исходов: штатное завершение,
зависание на середине, смерть без отчёта.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Зачем:
- lessons.md вырос до 830 строк, и записи до рефакторинга 31 июля
описывают другую редакцию скилла — прежнюю эффорт-карту, другой
состав ролей, заготовку adversarial-reviewer, которой больше нет.
- Что:
- записи с 2026-07-06 по «казусы координации» 2026-07-31 перенесены в
references/lessons-archive.md без изменений; живой файл сократился с
830 до 300 строк.
- шапка lessons.md объясняет разрез и как двигать границу дальше;
архив вне пути чтения прогона, ссылка на него только из lessons.md.
- три указателя на переехавшие записи переведены на архив: казус
форвардера в SKILL.md и codex-exec.md, sandbox-инцидент в
codex-sandbox-apparmor.md.
- Проверка:
- все markdown-ссылки скилла разрешаются в существующие файлы.
- Зачем:
- два отказа вызова из прогона #39 повторялись оттого, что правило
лежало не там, где собирают команду: -s дописывали в resume по
образцу exec, а < /dev/null закрывал вход у вызова, который сам
получает промпт через stdin.
- Что:
- в codex-exec рецепт resume снабжён строкой о том, что среда треда
задана при создании, а перечень ручек хода уточнён по проверке на
codex-cli 0.145.0.
- к правилу «промпт через stdin» добавлено, что вход этого вызова
должен оставаться открытым.
- в SKILL.md этап 6 правило < /dev/null сужено условием «фоновой
команде, которой нечего читать со входа».
- в lessons исправлен неверный хвост записи #39 про смену песочницы
ключом -c sandbox_mode.
- Проверка:
- codex exec resume <любой-id> -s workspace-write → exit 2.
- echo "say hi" | codex exec - < /dev/null → No prompt provided via stdin.
- Зачем:
- боевой прогон 2026-07-30 (тикет #12 v2) закрыл открытый вопрос: расширенный доступ Codex не нужен, штатной связки достаточно.
- Что:
- codex-exec.md: пункт про блок классификатора начинается с проверки песочницы; в рецепт исполнителя добавлено «шире не бери»; снят кавеат «боем не обкатано» — сеть и docker-сокет работают при штатной связке on-request + auto_review.
- lessons.md: датированный урок 2026-07-30 с дополнением по итогам прогона.
- Проверка:
- чтение обновлённых разделов; факты — из JSONL-логов прогона тикета #12 (docker manifest inspect и make up завершились completed под workspace-write).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- зафиксировать решения пользователя 2026-07-21 и эмпирику effort/кэша после двух боевых прогонов.
- Что:
- явная карта effort для Claude-субагентов: xhigh — постановки/планы, high — слепое ревью, medium — перепроверки (SKILL.md);
- уточнение критерия выбора effort по цене тихой ошибки этапа и эмпирика смены effort при resume (codex-exec.md);
- сводка прогонов 03–04 с казусами: гонки конкурентности, выдумка формата .dgst, экономика конвейера (lessons.md).
- Проверка:
- git diff HEAD~1 --stat.
- Зачем:
- решение пользователя 2026-07-19: sol на medium закрывает обычные
задачи, прежнее правило дефолтило high почти всюду.
- Что:
- в codex-exec.md переписано сквозное правило эффорта: medium — обычные
задачи, high — нетривиальная реализация, ревью кода, диагноз.
- к примеру запуска исполнителя добавлена пометка о выборе эффорта.
- Проверка:
- вычитка references/codex-exec.md.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- ретро прогона 2026-07-12 (задача 20, clickstream-demo): контекст
оркестратора съедали инлайн-диагнозы, переписывание boilerplate и
кириллица в обменных файлах.
- Что:
- SKILL.md: принцип «мастер решает — субагенты выясняют» со стоп-краном
«сам — максимум один заход», обменные файлы на английском, сквозная
проверка до ревьюеров, будильник одной строкой.
- references/prompts/: готовые английские boilerplate-файлы (мандат
ревью, триаж, перепроверка) — подшиваются cat'ом, контекст мастера
не проходят; prompt-templates перестроен под сборку.
- codex-exec: модель gpt-5.6-sol, лестница эффорта, ловушка «&»;
sandbox-справочник переименован в codex-sandbox-apparmor.md;
lessons дистиллирован, добавлена запись прогона 2026-07-12.
- закрыты 14 находок слепого Fable-ревью скилла (согласованность,
единый источник $SCRATCH, скелет ревью постановки).
- Проверка:
- все внутренние ссылки резолвятся; слепое ревью: APPROVED_WITH_MINORS,
восстановление структуры подтверждено без потерь.
- Зачем:
- ретро трёх циклов конвейера показало: находки ревью проходили через
контекст оркестратора до шести раз, 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>
- Зачем:
- рецепт AppArmor-фикса требует sudo, а инициатива агента (диагностика
до прогона, передача команд пользователю) держалась на здравом смысле,
не на тексте скилла.
- Что:
- в правило про линукс-ловушку codex-exec.md дописано: фикс сам не
применяй — дай пользователю готовые команды с `!`-префиксом; после
профиля напомни убрать use_legacy_landlock; перед первым прогоном на
новой Linux-машине прогони диагностику превентивно.
- Проверка:
- чтение правила в references/codex-exec.md.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- другая сессия на Ubuntu 24.04 задиагностировала молчаливую поломку
песочницы Codex CLI 0.144.1 (bwrap+userns против AppArmor); знание
нужно основной линии скилла — Linux-прогон конвейера впереди.
- Что:
- перенесён references/codex-sandbox-fix-handover-2026-07-10.md
(диагностика, обход use_legacy_landlock, AppArmor-профиль);
раздел «Связанные записи» перенацелен с удалённого codex-companion.md
на codex-exec.md.
- в codex-exec.md добавлено сквозное правило про линукс-ловушку
(сигнатура «гуглит, но не может ls»), в lessons.md — датированная
запись, в handoff — кавеат к пункту про Linux-прогон.
- Проверка:
- git show origin/codex-sandbox-fix-20260710 — содержимое перенесено
полностью; перекрёстные ссылки codex-exec.md ↔ handover резолвятся.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- read-only-конфайн обеднял ревью Codex (без тестов, поиска,
первоисточников), а плотность SKILL.md и дефолты модели/усилия
из config.toml накопили риски по итогам трёх прогонов.
- Что:
- ветка «ревьюер» в codex-exec.md переведена на запись + авто-аппрув,
защита — мандат промптом; в рецепты добавлены --strict-config и
явные -m / model_reasoning_effort.
- SKILL.md: правило «мандат промптом» для обоих ревьюеров, правило
моделей субагентов (Опус/Sonnet, не Fable), /tdd и /research +
Context7 в этапе 1, таймер-подстраховка ScheduleWakeup; уборка
плотности и инлайн-дат.
- handoffs 07-06/07-07/07-09 поглощены запиской 2026-07-10; в lessons.md
добавлены правило дистилляции и блок 2026-07-10; правки прошли слепое
ревью Опусом, все находки закрыты.
- Проверка:
- оверрайды -m/-c проверены живым codex exec --strict-config;
перекрёстные ссылки и команды сверены ревьюером с codex --help.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>