From 90cc8456cd2194bd4d7c31533d0c53048e2294db Mon Sep 17 00:00:00 2001 From: Dmitry Dementev Date: Mon, 20 Jul 2026 08:35:47 -0400 Subject: [PATCH] =?UTF-8?q?docs(xray-proxy):=20=D0=BE=D0=B1=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D0=BB=D1=91=D0=BD=20handoff=20=D0=BA=D0=BE=D0=BD=D0=B2?= =?UTF-8?q?=D0=B5=D0=B9=D0=B5=D1=80=D0=B0=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B8=2003?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - прежняя записка описывала состояние до задачи 03 и не содержала решения пользователя по эксперименту с эффортом для задачи 04. - Что: - создан handoff after-03: статус тикетов, решение «04 на medium», уроки resume-синтаксиса codex exec и потери usage при убитом ходе. - прежний handoff after-06 удалён как одноразовый по правилам AGENTS.md. - Проверка: - git show --stat HEAD. --- .../20260720-0425-xray-proxy-after-06.md | 72 ----------------- .../20260720-0835-xray-proxy-after-03.md | 80 +++++++++++++++++++ 2 files changed, 80 insertions(+), 72 deletions(-) delete mode 100644 .scratch/handoffs/20260720-0425-xray-proxy-after-06.md create mode 100644 .scratch/handoffs/20260720-0835-xray-proxy-after-03.md diff --git a/.scratch/handoffs/20260720-0425-xray-proxy-after-06.md b/.scratch/handoffs/20260720-0425-xray-proxy-after-06.md deleted file mode 100644 index c302802..0000000 --- a/.scratch/handoffs/20260720-0425-xray-proxy-after-06.md +++ /dev/null @@ -1,72 +0,0 @@ -# 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** — эксперимент) → саморевью → слепые ревью → -триаж → приёмка → коммит; леджер вести построчно. diff --git a/.scratch/handoffs/20260720-0835-xray-proxy-after-03.md b/.scratch/handoffs/20260720-0835-xray-proxy-after-03.md new file mode 100644 index 0000000..bcb2bba --- /dev/null +++ b/.scratch/handoffs/20260720-0835-xray-proxy-after-03.md @@ -0,0 +1,80 @@ +# Handoff: конвейер xray-proxy после задачи 03 + +Дата: 2026-07-20. Для свежего агента, продолжающего работу в этом +репозитории с пользователем Дмитрием. Заменяет handoff «after-06». + +## Состояние проекта + +- Спека: `docs/specs/2026-07-15-headless-xray-proxy-design.md` (обновлена + задачей 03: модель идентичности процессов, lifetime-flock, три исхода + проверки state). +- Тикеты: `.scratch/headless-xray-proxy/issues/01..06`. 01, 02, 03, 06 — + done; 04 — ready-for-agent (следующая); 05 — замыкающая (blocked by + 03+04, включает ручную приёмку пользователем на целевых системах). +- Последний коммит работ: `5ace0cf` (feat 03, +890/−100). +- Тесты сейчас: `python3 -m unittest discover -s tests` → **49 OK** (~60 с); + `bash tests/test_proxy_launchers.sh` → **8 PASS**. +- Резолюции конвейера по 03 — в шапке тикета 03; расход токенов по этапам — + `.scratch/headless-xray-proxy/token-ledger.md`. + +## Решение пользователя по эксперименту (2026-07-20) + +Реализацию 04 гнать на `model_reasoning_effort="medium"` — добираем +статистику эксперимента (память `codex-effort-calibration`). Контекст +решения: 03 на medium дала 4 MAJOR от слепого CODE-ревью против 1 MAJOR у +06 на high (все — гонки конкурентности/восстановления; конвейер выловил и +починил, обе перепроверки FIXES_CONFIRMED). Оговорка: 03 богаче на гонки, +чем 06, чистым A/B не считать. Ревью постановок и кода, диагнозы — high. + +## Как вести работу (проверено прогонами 06 и 03) + +Скилл `claude-subagent-playbook`: постановка → spec-ревью (Codex, high; +для 03 это дало NEEDS_REWORK с 7 MAJOR и спасло реализацию — не +пропускать) → реализация Codex (medium) → саморевью (resume, medium) → +два слепых ревью (Claude TASK-субагент + Codex CODE свежий тред, high) → +триаж тредом исполнителя (resume, medium) → узкие перепроверки теми же +ревьюерами → приёмка оркестратором (обе сьюты локально) → коммит по +`conventional-commits`. + +Критично: + +- **thread_id Codex забирать сразу** из первой строки stdout-JSONL. + Рестарты сессии дважды убивали фоновые процессы/сторожа; тред + реанимируется `codex exec resume ` без потерь. +- **Синтаксис resume отличается**: `codex exec resume ` принимает + ТОЛЬКО `-c`-оверрайды (`-c 'sandbox_mode="workspace-write"'`, + `-c 'model="gpt-5.6-sol"'`, `-c 'model_reasoning_effort="…"'`), флаги + `-s`/`-m`/`-o` дают exit 2. Отчёты просить писать в файл через промпт. +- **Usage при убитом ходе теряется** (нет `turn.completed`); цифры + resume-хода покрывают тред по масштабу — фиксировать с оговоркой. +- Токен-леджер дополнять строкой на каждый этап; методика — в шапке + леджера. +- Один писатель в дереве; ревьюеров ограничивать read-only мандатом, после + ревью сверять `git status`. +- Чужие untracked-артефакты (`zed/.config/*`, `agents/.agents/skills/*`, + `scripts/setup-xray-proxy.sh`) не трогать и не коммитить. + +## Решения пользователя (не пересматривать без него) + +Память: `prefers-kiss`, `consultant-multi-distro`, +`codex-effort-calibration`. KISS с различением essential/accidental; +целевые системы: Ubuntu, РЕД ОС, возможно Astra/Alt (Python 3.8+ +stdlib-only, переносимость); строгий отказ парсера и безопасный kill не +упрощать; секреты (VLESS/UUID/ключи) — никогда в stdout/stderr/argv/ +state/репозиторий. + +## Suggested skills + +- `claude-subagent-playbook` — конвейер задач 04/05. +- `conventional-commits` — обязателен для каждого коммита. +- `resolving-merge-conflicts` — если merge с origin принесёт конфликты. + +## Ближайший шаг + +Задача 04: свежий обменный каталог (`mktemp -d`), spec-ревью постановки +`.scratch/headless-xray-proxy/issues/04-*.md` (Codex, high) → правка +постановки по находкам → реализация (**medium**) → далее по конвейеру. +После 04 — итоговое сравнение эксперимента и, при решении пользователя, +запись выводов в +`~/.claude/skills/claude-subagent-playbook/references/codex-exec.md`. +Затем 05 с ручной приёмкой пользователя на целевых системах.