- Зачем:
- README смешивал пакетный и корневой установщики и оставлял неполные шаги для отдельных сценариев.
- Что:
- выстроен цельный путь установки и настройки для standalone и полного dotfiles.
- дополнена подсказка --no-shell-setup и добавлена регрессионная проверка.
- закрыты критерии приёмки тикета и указана дата завершения.
- Проверка:
- bash tests/test_proxy_client_install.sh.
- bash tests/test_install.sh.
- Зачем:
- пакет должен устанавливаться отдельно от dotfiles без ручной раскладки и опасных замен.
- Что:
- добавлен безопасный установщик со Stow и прямыми симлинками.
- добавлены идемпотентная настройка Bash и защита машинных файлов.
- обновлены инструкция и полный набор интеграционных проверок.
- Проверка:
- env XDG_STATE_HOME=<временный каталог> bash tests/test_proxy_client_full.sh.
- Зачем:
- отдельный пакет должен устанавливаться без общего dotfiles и обязательного stow.
- Что:
- зафиксирована единая раскладка симлинков через stow или ln.
- отделены файлы пакета от машинного конфига и закрытого профиля.
- добавлены правила конфликтов, настройки Bash и проверки установки.
- Проверка:
- git diff --cached --check.
- Зачем:
- рабочие задачи и handoff не должны попадать в итоговое состояние master.
- Что:
- удалены временные материалы разработки proxy-client.
- добавлен .scratch/.gitkeep для сохранения пустого рабочего каталога.
- Проверка:
- git diff --cached --check.
- find .scratch -mindepth 1 -print.
- Зачем:
- свежая установка могла превратить ~/.local в ссылку на пакет и записать Xray в репозиторий.
- Что:
- перед Stow теперь гарантируются настоящие ~/.local/bin и ~/.config/proxy-client без раскрытия посторонних ссылок.
- добавлены регрессионные проверки свежего HOME и посторонней ссылки ~/.local.
- README перестроены вокруг установки, выбора режима и ежедневного использования.
- Проверка:
- bash tests/test_install.sh.
- bash tests/test_proxy_launchers.sh.
- bash -n install.sh tests/test_install.sh.
- git diff --cached --check.
- Зачем:
- нужны фактические результаты ручной приёмки на рабочем профиле.
- Что:
- подтверждены HTTP CONNECT и SOCKS5h на Ubuntu 26.04 с Xray 26.3.27.
- записаны результаты проверки H3 под повторной нагрузкой и после простоя.
- сохранён открытым вопрос проверки на других семействах Linux.
- Проверка:
- 240 последовательных запросов без ошибок, две загрузки по 10 МБ и повторные запросы после 45 секунд простоя.
- git diff --cached --check.
- Зачем:
- прежнее имя выпячивало Xray, хотя клиент поддерживает также внешний прокси, а два каталога конфигурации были неочевидны.
- Что:
- пакет, CLI, конфигурация, состояние, тесты и документация переименованы в proxy-client.
- машинный конфиг, профиль и два явных примера собраны в одном пользовательском каталоге.
- свежая установка защищена от сворачивания каталога конфигурации внутрь репозитория.
- Проверка:
- bash tests/test_proxy_client_full.sh.
- bash tests/test_install.sh.
- ручные start, status и xray run -test; незавершённая сетевая приёмка записана в handoff.
- Зачем:
- в origin/master опубликованы правила разбиения задач и ревью постановки.
- Что:
- объединены правила /to-tickets и шкала ревью с локальной картой effort.
- сохранены уроки headless-xray-proxy и yantar-dags.
- Проверка:
- выполнены трёхсторонняя сверка SKILL.md и git diff --cached --check.
- Зачем:
- прогон предразметки показал два сбоя: тикеты созданы мимо критериев /to-tickets, а текст тикета трижды проходил через контекст оркестратора.
- Что:
- этап 1: разбиение по критериям /to-tickets, мерка «тикет берётся в отдельной сессии без общего контекста».
- этап 2: правило «одно ревью на версию артефакта» и шкала риска вместо безусловного ревью постановки.
- согласованы шапка скилла, роли, критерии закрытия этапов и список соседних скиллов; урок записан в references/lessons.md.
- Проверка:
- вычитка SKILL.md: новые правила не противоречат этапам 3-6.
- Зачем:
- зафиксировать решения пользователя 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.
- Зачем:
- следующая сессия должна стартовать задачу 05 без восстановления
контекста из транскриптов.
- Что:
- создан handoff после 04: состояние конвейера, решения по эффорту от
2026-07-21, план задачи 05 с ручными приёмками, грабли механики;
- удалён отработанный handoff после 03.
- Проверка:
- cat .scratch/handoffs/20260721-0343-xray-proxy-after-04.md.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- решения по калибровке эффорта (2026-07-21) должны быть видны в самом
проекте, а не только в плейбуке оркестратора.
- Что:
- в «Наблюдения» леджера добавлен итог: реализация на medium допустима,
экономику считать по конвейеру; эффорт-карта Claude-субагентов;
пределы эффорта и эмпирика кэша Codex при resume.
- Проверка:
- git diff предыдущей версии .scratch/headless-xray-proxy/token-ledger.md.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- пользователь без root должен получать проверенный бинарник Xray 26.3.27
одной явной командой, без риска для живого managed-экземпляра.
- Что:
- команда install [--replace]: пин 26.3.27, маппинг x86_64/aarch64,
скачивание urllib + проверка SHA2-256 из официального четырёхзаписного
.dgst, staging внутри ~/.local/bin и один атомарный os.replace;
- границы размеров (64 MiB архив/бинарник, 4 KiB .dgst, счёт limit+1,
сверка Content-Length) и guard managed-режима через start-lock;
- типизированная StartLockBusyError, offline-тесты реального загрузчика
через подмену urlopen, снапшоты дерева ФС в отказных путях;
- README/спека обновлены, включая справку о последней версии с
allowInsecure (25.12.8, удалена в 26.2.6); тикет 04 закрыт, леджер
дополнен итогами эксперимента.
- Проверка:
- PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s tests — 79 OK.
- bash tests/test_proxy_launchers.sh — 8 PASS.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- прежняя записка описывала состояние до задачи 03 и не содержала
решения пользователя по эксперименту с эффортом для задачи 04.
- Что:
- создан handoff after-03: статус тикетов, решение «04 на medium»,
уроки resume-синтаксиса codex exec и потери usage при убитом ходе.
- прежний handoff after-06 удалён как одноразовый по правилам AGENTS.md.
- Проверка:
- git show --stat HEAD.
- Зачем:
- stop/status опирались на обход argv и могли счесть чужой или
переиспользованный PID управляемым процессом, а параллельный start
и аварийная гибель супервизора не имели определённого поведения.
- Что:
- введена модель идентичности: PID + starttime (поле 22 /proc/PID/stat),
/proc/PID/exe для ребёнка, канонический путь скрипта для супервизора,
boot_id как граница загрузки; перечитка перед каждым сигналом.
- добавлены lifetime-flock супервизора, три исхода проверки состояния
(здоровая пара / подтверждённый сирота / непроверяемое), отказ при
занятом порте пробным bind и очистка stale только под lock.
- тесты расширены до 49 (blank flock, подмена starttime, чужой exe,
boot_id, SIGKILL супервизора, занятый порт, парсер stat); спека
приведена к модели идентичности; тикет 03 закрыт, леджер дополнен.
- Проверка:
- python3 -m unittest discover -s tests — 49 OK.
- bash tests/test_proxy_launchers.sh — 8 PASS.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- зафиксировать правила работы с .scratch/ (рабочая зона) и делегирования субагентов.
- Что:
- описано, что .scratch/ коммитится, но не попадает в master.
- добавлена процедура слияния фиче-ветки (git rm .scratch + --no-ff).
- описаны принципы делегирования объёмной и механической работы субагентам.
- Проверка:
- cat AGENTS.md
- Зачем:
- пользователь сжимает контекст сессии; состояние конвейера и решения
должны переживать сжатие в файле проекта, а не в разговоре.
- Что:
- создан .scratch/handoffs/20260720-0425-xray-proxy-after-06.md: состояние
после задачи 06, порядок 03→04→05, правила прогона
(medium-эксперимент, леджер, thread_id) и решения пользователя.
- в AGENTS.md закреплено правило размещения handoff-записок в
.scratch/handoffs/ (одноразовые, коммитятся, уборка best-effort).
- Проверка:
- git show --stat HEAD.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- CLI и спека были переусложнены относительно принятой модели угроз
(один пользователь, доверенная машина): лишняя ось версий Xray и
защита от входов, которые не возникают при ручном редактировании.
- Что:
- убрана поддержка Xray 25.12.8 — поддерживается только 26.3.27;
allowInsecure валидируется, но никогда не эмитится в JSON.
- удалена проверка владения сокетом через /proc/net/tcp; идентичность
процесса и сверка адрес/порт со state сохранены.
- валидация INI/профиля/адреса/query сведена к отказам на реальные
опечатки; scoped IPv6 отклоняется одинаково на Python 3.8 и 3.9+.
- удалены fsync/O_EXCL-церемония, SIGALRM-таймер, zombie-инспекция,
мёртвый отпечаток профиля и двойной разбор extra/alpn.
- shell.bash принимает вывод env без ре-валидации, сохранив атомарность;
спека и issue 01–05 приведены к новому объёму (тикет 06, леджер).
- Проверка:
- python3 -m unittest discover -s tests — 34 теста OK.
- bash tests/test_proxy_launchers.sh — 8 проверок PASS.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- инженерным навыкам нужны единые правила хранения задач и документов предметной области.
- Что:
- настроено локальное хранилище задач с веточным жизненным циклом.
- добавлены стандартные состояния triage и схема single-context.
- добавлены ссылки на настройки в AGENTS.md.
- Проверка:
- git diff --cached --check.
- Зачем:
- зеркальный codex-subagent-playbook ушёл вперёд по договорам ревью и
экономии контекста координатора; согласованный с пользователем список
находок перенесён в этот скилл.
- Что:
- SKILL.md: установка «оптика, не конвейер», гейт и ручки эскалации для
субагентов, саморевью исполнителя, шкала риска ревью с линзами
TASK/CODE, статусы триажа с предохранителем кругов, постепенная
приёмка с саморефлексией, раздел «Сбои координации».
- prompts/: устойчивые ID находок, четыре статуса триажа, резолюции — в
файл отчёта вместо тикета (лечит эхо файла задачи); новые
result-contract.md и runtime-language.md.
- prompt-templates.md: файлы линий ревью, сборка промптов с хвостом
языка, вердикт перепроверки из task-notification; lessons.md — гейт
на дистилляцию и датированная отмена урока про доводы в файле задачи.
- Проверка:
- проверка относительных ссылок и git diff --check — чисто.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- решение пользователя 2026-07-19: sol на medium закрывает обычные
задачи, прежнее правило дефолтило high почти всюду.
- Что:
- в codex-exec.md переписано сквозное правило эффорта: medium — обычные
задачи, high — нетривиальная реализация, ревью кода, диагноз.
- к примеру запуска исполнителя добавлена пометка о выборе эффорта.
- Проверка:
- вычитка references/codex-exec.md.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- origin/master обновился во время отправки локальных коммитов.
- Что:
- добавлена удалённая эмпирика Claude-плейбука.
- сохранены локальные изменения Codex-плейбука и handoff.
- Проверка:
- отсутствие конфликтов и последующая проверка состояния ветки.
- Зачем:
- ревью высокоуровневых документов могло требовать преждевременных деталей и постоянно блокировать одобрение.
- Что:
- находки ограничены дефектами на уровне самого документа.
- существенные отложенные риски отделены от блокирующих замечаний.
- уточнено, что APPROVED допускает открытые вопросы будущей реализации.
- Проверка:
- quick_validate.py, git diff --check и проверка локальных Markdown-путей.
- Зачем:
- нужно сохранить контекст координатора и устранить расхождения с зеркальным playbook.
- Что:
- закреплены делегирование, маршрутизация моделей и ограничение кругов ревью.
- добавлены файловый договор ревью и согласованная эмпирика прогонов.
- исправлены сборка слепых линий и компактные статусы находок.
- Проверка:
- quick_validate.py, git diff --check и проверка локальных Markdown-ссылок.
- Зачем:
- зафиксировать уроки прогона тикета 06 (t2-presale) до их поглощения
в SKILL.md.
- Что:
- главный урок: карта прогресса для пользователя на границах этапов.
- блок «Модели»: переоценка Sol, боевое подтверждение medium,
роли Опус/Codex, наводка gpt-5.6-terra с пометкой «не обкатано».
- Проверка:
- чтение references/lessons.md, запись «Прогон 2026-07-13».
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- третий боевой прогон подтвердил рефакторинг «тонкого мастера»;
новые пожиратели контекста и слабое место Клод-ревьюера должны
остаться в эмпирике скилла.
- Что:
- lessons.md: запись прогона 2026-07-12/13 (находки этапов, три новых
пожирателя, цифры конвейера).
- prompt-templates.md: обёртка Клод-ревьюера требует однострочность
индекса (Клод-родословная держит формат хуже Codex).
- handoffs/: handoff разработки с открытыми вопросами (эхо файла
задачи, приём вердикта из уведомления, эксперимент medium).
- Проверка:
- вычитка; факты сверены с транскриптом прогона задачи 13.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- субагенты должны сохранять внимание мастера и помогать результату, а не обслуживать обязательный конвейер.
- Что:
- семиступенчатый процесс заменён эвристиками выбора исполнителя, проверяющего и независимого ревьюера.
- права агентов отделены от канала результата, а полная полезная нагрузка выведена из контекста мастера.
- добавлены авторитетные договоры промптов, полевые заметки и handoff следующей сессии.
- Проверка:
- git diff --cached --check.
- свежий обзор через writing-great-skills, все принятые находки закрыты.
- Зачем:
- ретро прогона 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>
- Зачем:
- прогон 2026-07-10 (mws-data-test-t2-presale) дал новую эмпирику
этапов 1–2, не отражённую в скилле.
- Что:
- этап 2: для крупной постановки — второе слепое ревью Кодексом с
рамкой «постановку, не реализацию»; классы находок родословных;
- этап 1: постановка через /to-tickets, когда репозиторий настроен
под скиллы Мэтта Покока;
- lessons.md: запись прогона с цифрами и ретро-оговоркой про
companion-канал (issue #158).
- Проверка:
- вычитка диффа свежим взглядом; ссылки ведут на существующие
файлы references/.
- Зачем:
- рецепт 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>
- Зачем:
- зафиксировать уроки боевого прогона для сессии доработки скилла.
- Что:
- handoff с шестью уроками: таймер-подстраховка и её экономика, прямой
codex exec вместо плагина (с номерами issues), поправки пользователя
к флагам CLI, идея читающего форвардера, вердикт из логов умершего
агента, паттерн ожидания через отслеживаемый фоновый Bash.
- Проверка:
- чтение handoff; коммит только одного файла, чужие untracked не задеты.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- первый полный боевой прогон конвейера (наглядность витрины t2-ml-forecast)
дал систематические уроки по ожиданию фоновых job и resume Codex-тредов.
- Что:
- в references/lessons.md добавлен разбор прогона: idle-уведомление ≠ отчёт,
bash-поллер умирает на смене хода (нужен persistent Monitor), зомби-job
со статусом «running» у мёртвого воркера и его диагностика.
- урок про resume уточнён по опыту пользователя из /adversarial-review:
resume — только по явному id треда; безадресный resumeLast подхватывает
чужой тред; запасной путь — свежий write-тред с контекстом из файла задачи.
- зафиксировано: ранжировать правила постановки (что главнее) и требовать
вписывать доводы отклонений в файл задачи; цифры прогона (18 мин
реализация, тесты 147 → 154, ноль пересечений находок двух ревью).
- Проверка:
- вычитка references/lessons.md.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>