diff --git a/.scratch/handoffs/20260720-0835-xray-proxy-after-03.md b/.scratch/handoffs/20260720-0835-xray-proxy-after-03.md deleted file mode 100644 index bcb2bba..0000000 --- a/.scratch/handoffs/20260720-0835-xray-proxy-after-03.md +++ /dev/null @@ -1,80 +0,0 @@ -# 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 с ручной приёмкой пользователя на целевых системах. diff --git a/.scratch/handoffs/20260721-0343-xray-proxy-after-04.md b/.scratch/handoffs/20260721-0343-xray-proxy-after-04.md new file mode 100644 index 0000000..d0781e3 --- /dev/null +++ b/.scratch/handoffs/20260721-0343-xray-proxy-after-04.md @@ -0,0 +1,74 @@ +# Handoff: headless-xray-proxy — после задачи 04, перед 05 + +Дата: 2026-07-21. Одноразовый документ (правило AGENTS.md): следующая +сессия читает, продолжает, по завершении вехи удаляет и пишет новый. + +## Состояние конвейера + +- Порядок прогона: 06 (done, baseline high) → 03 (done) → 04 (done) → + **следующая — 05**. +- 04 закрыта полным конвейером и закоммичена: + `0432c4a feat(xray-proxy): добавлена проверяемая установка Xray командой install`. + Резолюция и детали — в + `.scratch/headless-xray-proxy/issues/04-verified-xray-installation.md` + (Status: done). Тесты после 04: **79 OK + 8 PASS** + (`PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s tests`, + `bash tests/test_proxy_launchers.sh`). +- Эксперимент «реализация на medium» завершён и зафиксирован (см. ниже); + затраты по этапам — `.scratch/headless-xray-proxy/token-ledger.md` + (итоги 03/04, сводка 06/03/04, наблюдения). + +## Решения пользователя 2026-07-21 (обязательны для 05) + +Зафиксированы в `~/.claude/skills/claude-subagent-playbook/` +(SKILL.md — эффорт-карта Claude-субагентов; references/codex-exec.md — +уточнение к правилу эффорта 2026-07-19; references/lessons.md — эмпирика +прогонов 03/04) и в памяти `codex-effort-calibration.md`. Кратко: + +- Codex: реализация по отревьюированному тикету → medium допустима; + экономию эффорта считать по конвейеру целиком. +- Claude-субагентам effort задавать ЯВНО при спавне: xhigh — ревью + постановок/планов; high — слепое TASK-ревью (ниже не опускать); + medium/default — узкие перепроверки. Внутри одного агента effort между + резюмами не менять. +- Высокий effort не страхует от выдумки внешних фактов (казус `.dgst` в + 04) — форматы артефактов/версии проверять первоисточником или фикстурой. + +## Следующий шаг: задача 05 + +`.scratch/headless-xray-proxy/issues/05-package-delivery-and-acceptance.md` +— доставка пакета и приёмка. Особенность: включает РУЧНЫЕ приёмочные +прогоны пользователя на Ubuntu / РЕД ОС / Astra / Alt (по доступности) — +планируй конвейер с точками ожидания пользователя. Старт — по команде +пользователя («поехали по 5»): постановка → Codex spec-review (high) → +переписывание тикета оркестратором → реализация (medium, если типовая) → +саморевью (resume, medium) → два слепых ревью (Opus TASK high + Codex +CODE high свежим тредом) → триаж (resume) → узкие перепроверки (medium) → +приёмка → conventional commit (русский, Зачем/Что/Проверка). + +## Механика и грабли (проверено в 03/04) + +- Codex-вызовы, шаблоны промптов, правила resume — playbook + references/codex-exec.md. Критично: `codex exec resume ` принимает + ТОЛЬКО `-c`-оверрайды; thread_id забирать из первой строки stdout-JSONL + сразу после старта; usage убитого хода теряется (нет `turn.completed`). +- Смена `model_reasoning_effort` при resume кэш Codex-треда не сбрасывает. +- Леджер: Codex — `grep '"usage"' stdout*.jsonl` (последняя строка хода), + Claude-субагенты — `subagent_tokens` из task-notification; сравнивать по + «свежий input + output». +- Scratch прогонов 03/04: `/tmp/xray-lifecycle-OZHc`, `/tmp/xray-04-H156` + (архив, для 05 создать свой каталог). +- Секреты: реальные VLESS/UUID/ключи — никогда в репо/выводы; чужие + untracked-артефакты (`zed/.config/*`, `agents/.agents/skills/*`, + `scripts/setup-xray-proxy.sh`) не трогать и не коммитить; git add — только + адресно или `-u`. + +## Suggested skills + +- `codex-subagent-playbook` — оптика делегирования; конвейер и механика + Codex — в `~/.claude/skills/claude-subagent-playbook/` (SKILL.md + + references), читать перед стартом 05. +- `conventional-commits` — для коммитов (русский, совершенный вид, + Зачем/Что/Проверка). +- `handoff` — по завершении 05 обновить этот документ (удалить, создать + новый по той же схеме).