docs(xray-proxy): обновлён handoff конвейера после задачи 03
- Зачем:
- прежняя записка описывала состояние до задачи 03 и не содержала
решения пользователя по эксперименту с эффортом для задачи 04.
- Что:
- создан handoff after-03: статус тикетов, решение «04 на medium»,
уроки resume-синтаксиса codex exec и потери usage при убитом ходе.
- прежний handoff after-06 удалён как одноразовый по правилам AGENTS.md.
- Проверка:
- git show --stat HEAD.
This commit is contained in:
1 parent
5ace0cfae0
commit
90cc8456cd
2 files changed
+80
-72
No files matched your search
@@ -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 <id>` без потерь.
|
|
||||||
- Перед реализацией 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** — эксперимент) → саморевью → слепые ревью →
|
|
||||||
триаж → приёмка → коммит; леджер вести построчно.
|
|
||||||
@@ -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 <id>` без потерь.
|
||||||
|
- **Синтаксис resume отличается**: `codex exec resume <id>` принимает
|
||||||
|
ТОЛЬКО `-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 с ручной приёмкой пользователя на целевых системах.
|
||||||
Reference in new issue
Block a user