# Handoff: конвейер xray-proxy после задачи 06 (перед compact) Дата: 2026-07-20. Для свежего агента, продолжающего работу в этом репозитории с пользователем Дмитрием. ## Состояние проекта - Спека: `docs/specs/2026-07-15-headless-xray-proxy-design.md` (уже упрощена задачей 06 — только Xray 26.3.27, срезаны лишние защиты). - Тикеты: `.scratch/headless-xray-proxy/issues/01..06`. 01, 02, 06 — done; 03, 04 — ready-for-agent; 05 — замыкающая (blocked by 03+04). - Порядок: **03 → 04 → 05** (03 и 04 независимы; 03 предпочтительнее первой — работает по зоне, только что упрощённой в 06). - Последний коммит работ: `98bfd63` (refactor 06) + следом этот handoff. - Тесты сейчас: `python3 -m unittest discover -s tests` → 34 OK (~60 с); `bash tests/test_proxy_launchers.sh` → 8 PASS. ## Как вести работу (проверено прогоном 06) Работа идёт по скиллу `claude-subagent-playbook` (оркестратор — Claude, исполнитель и часть ревью — Codex через `codex exec`; рецепты — в references скилла). Прогон 06 прошёл полный цикл: постановка → spec-ревью → реализация → саморевью → два слепых ревью (Claude TASK + Codex CODE) → триаж → узкая перепроверка → коммит. Итог ревью: 1 MAJOR (починен), 1 NIT (отклонён аргументированно) — детали в резолюции тикета 06. Критично для продолжения: - **Эксперимент по эффорту** (см. память `codex-effort-calibration`): реализацию 03 и 04 гнать на `model_reasoning_effort="medium"`; ревью кода и постановок, диагнозы — high. Метрика: число/тяжесть находок слепых ревью против baseline 06 (реализация на high дала 1 MAJOR + 1 NIT после саморевью). - **Токен-леджер**: `.scratch/headless-xray-proxy/token-ledger.md` — дополнять строкой на каждый этап (Codex usage — из `turn.completed` в stdout-JSONL, Claude — из `subagent_tokens` уведомления). Итог 06 там же — база сравнения. - **thread_id Codex забирать сразу** после старта из первой строки stdout-JSONL: в прогоне 06 перезапуск сессии убил фоновый процесс перепроверки, тред реанимирован `codex exec resume ` без потерь. - Перед реализацией 03 постановку прогнать через spec-ревью (Codex, high): тикет 03 редактировался в 06 (добавлен мандат идентичности «PID + время старта + exe»), свежих глаз после правки не было. - Один писатель в дереве; ревьюеров ограничивать мандатом в промпте, после ревью сверять `git status` с baseline. - В дереве есть чужие untracked-артефакты (`zed/.config/*`, `agents/.agents/skills/*`, `scripts/setup-xray-proxy.sh`) — не трогать и не коммитить. ## Решения пользователя (не пересматривать без него) Зафиксированы в памяти (`prefers-kiss`, `consultant-multi-distro`, `codex-effort-calibration`) и в тикете 06: KISS-линза с различением essential/accidental; целевые системы шире Ubuntu (РЕД ОС, возможно Astra/Alt — пункты приёмки в 05 сохранены намеренно); Python 3.8+ stdlib-only — требование переносимости; строгий отказ парсера и безопасный kill не упрощать. ## Suggested skills - `claude-subagent-playbook` — основной конвейер задач 03/04/05. - `conventional-commits` — обязателен для каждого коммита. - `resolving-merge-conflicts` — если merge с origin принесёт конфликты. - `/compact` пользователь делает сам; после него продолжать отсюда. ## Ближайший шаг Пользователь даёт «го» на 03 → развернуть конвейер плейбука: свежий обменный каталог (`mktemp -d`), spec-ревью постановки 03 (high) → реализация Codex (**medium** — эксперимент) → саморевью → слепые ревью → триаж → приёмка → коммит; леджер вести построчно.