С Claude Code 2.1.206 вход в worktree вне .claude/worktrees/ спрашивает подтверждение при любых allow-правилах. EnterWorktree с именем создаёт worktree в <repo>/.claude/worktrees/<slug> на ветке worktree-<slug> от origin/main и входит без вопроса; ветка переименовывается в feat/<id>-<slug>. - roles/dev.md: «Исполнение» — EnterWorktree с именем; п. 1 закрытия — archive-<id>; п. 4 — ExitWorktree (keep) снимает блокировку сессии, затем git worktree remove и branch -D. - .claude/worktrees/ в .gitignore: adopt-project.sh, project-template, этот репозиторий; doctor.sh — WARN, если не игнорируется. - Спека hook-guards: сценарии «worktree внутри репозитория» для guard-main и require-plan; тесты закрепляют уже верное поведение. - HARNESS.md (шаг 4, п. 4, подтверждения), SKILL.md, CHANGELOG 0.5.1, CLAUDE.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
12 KiB
12 KiB
Changelog
0.5.1 — 2026-10-24
- Worktree живут в
<repo>/.claude/worktrees/<slug>, а не в соседнем каталоге: их создаётEnterWorktreeс именем, веткаworktree-<slug>переименовывается вfeat/<id>-<slug>(#25). Вход в worktree вне.claude/worktrees/спрашивает подтверждение при любых allow-правилах (Claude Code ≥ 2.1.206). Описано вroles/dev.mdиHARNESS.md. .claude/worktrees/— в.gitignoreпроектов:adopt-project.sh,project-template/gitignore, этот репозиторий.doctor.sh:WARN .claude/worktrees/ не в .gitignore.- Спека
hook-guards: сценарии «worktree внутри репозитория» для guard-main и require-plan — корень и ветка берутся из worktree. Тесты закрепляют уже существующее поведение, код хуков не менялся. - Многорепозиторный workspace (awp-ca,
.wt/<задача>/) не затронут — вопрос в части 2 #2.
0.5.0 — 2026-10-23
install.shставит allow-правила цикла фичи (#24; пересмотр решения владельца 2). Список —global/permissions.json:git worktree,git branch -m/-D,git push -u origin feat/…/chore/…,git push origin --delete,tea issues,tea pulls create/list/edit,tea comments. Merge и push в main в список не входят. Правила только дописываются вpermissions.allowфайла~/.claude/settings.json, чужие не трогаются; копия списка —~/.claude/harness/permissions.json.--no-permissionsпропускает шаг.--checkиdoctor.shпоказываютpermissions обвязки: N/Mи недостающие правила.adopt-project.shиnew-project.shпечатают строкуpush --deleteдля установки с--no-permissions. WARN проверки вdoctor.shподсказываетbash install.sh.EnterWorktreeв список не входит. Вход в worktree вне<repo>/.claude/worktrees/спрашивает подтверждение при любых allow-правилах (Claude Code ≥ 2.1.206); перенос worktree — #25.- harness-doctor: агент чинит
install.sh --no-permissions, права ставит владелец.
0.4.2 — 2026-10-23
- Удаление ветки фичи на сервере (чеклист закрытия, п. 4; B3, RT-3, решение владельца 2):
doctor.shв разделе «Проект» ищет allow-правило дляgit push origin --deleteв.claude/settings.json,settings.local.jsonпроекта и в глобальномsettings.json—okс файлом илиWARNс готовой строкой"Bash(git push origin --delete:*)". Строку печатаютadopt-project.shиnew-project.shво всех режимах (раньше — толькоadopt --workspace); файл настроек они не пишут, правило добавляет владелец (#22). HARNESS.md: шаг 10 — чеклист из 8 пунктов вroles/dev.mdи рецепт п. 4.roles/dev.md, п. 4:git worktree removeраньшеgit branch -D(ветку, выведенную в worktree, git не удаляет).
0.4.1 — 2026-10-23
- harness-doctor и README: codegraph ставится
npm i -g @colbymchenry/codegraph(формулы в brew нет) и подключается к Claude Code черезclaude mcp add-json -s user, не черезcodegraph install— тот дописывает секцию в~/.claude/CLAUDE.md, которую сотрётinstall.sh(#19, O-8).
0.4.0 — 2026-10-16
- guard-main решает по цели записи, а не по cwd и тексту команды (#6, B1; RT-1, RT-2, RT-7). Цели — файл Edit/Write, в Bash — редиректы (кроме
/dev/nullиN>&M), команды записи с учётомcd,git -C,sh -c, git-мутации. Цель вне репозитория или в worktree на ветке — пропуск; неразрешимый путь — пропуск, git-мутация с неопределённым репозиторием — блок.git pushблокируется, только если пушит в main;git switch -cв той же команде переводит последующие коммиты на новую ветку.pip installбольше не блокируется. Спека —openspec/specs/hook-guards/spec.md, change в архиве —openspec/changes/archive/2026-10-16-hooks-write-target/. - Несовместимо: исключение для openspec-only коммитов и
openspec archiveна main удалено — архив всегда отдельным PR (решение владельца 1, 11.10.2026). - require-plan берёт корень, ветку,
.claude/code-paths,.boundedи планы из репозитория правимого файла. - Общее ядро
hooks/harness_target.py(python3 stdlib);guard-main.shиrequire-plan.sh— обёртки, регистрация вsettings.jsonпрежняя. Режимtargetsпоказывает, какие цели видит хук. - Сообщения блокировки:
BLOCKED [guard-main]:/BLOCKED [require-plan]:, цель, корень репозитория, выход. - Регрессионный корпус хуков (B2, RT-6): 126 записей из транскриптов пилота + 3 живых случая, размечены по спеке (
docs/retro/scripts/hook_cases_build.py), прогон в песочнице —tests/test-hook-corpus.shпо источникам и строка «корпус хуков» вdoctor.shпо установленным копиям. В песочнице старые хуки дают на корпусе 41 блок (37 ложных), новые — 4 (архивные коммиты в main). hook_blocks_export.pyиretro_blocks.pyсчитают только ошибки хуков: из 126 выгруженных записей 49 оказались выводом команд со словом BLOCKED (O-1), счёт RT-1 в ретро завышен.- Тесты:
test-hook-parse,test-hook-guard-main,test-hook-require-plan,test-hook-corpus,test-hook-export.
0.3.0 — 2026-10-11
- Роли сессии
dev|admin|analyst|qa: общий слойroles/<r>.md(~/.claude/roles/), проектный слой<workspace>/.claude/roles/<r>.md; формат из четырёх разделов (спекаdocs/superpowers/specs/2026-10-11-roles-and-memory-design.md). - Skill
/role <r>: читает оба слоя, раздел памяти роли, «Читать на старте»; строкиbrief:— фоновому агентуbriefing(sonnet, только чтение). - SessionStart-хук
role-hint.sh: подсказка роли по заголовку сессии (claude -n "admin …"), регистр и префиксcc-не важны; ничего не блокирует. link-roles.sh: симлинки ролей и агентов из workspace в репозитории направлений по таблице| Каталог | Репозиторий | Роль |. Память агентов через симлинк не работает (проверено, спека, раздел 11) — для неё запасной вариант 6.5 (notes/agent-memory.md).- Шаблоны
project-template/workspace/иproject-template/role-repo/; режим--workspaceвadopt-project.shиnew-project.sh. - Глобальный CLAUDE.md сжат до ≤ 3 КБ (роль, хуки, память, маркировка, стиль); процесс разработки переехал в
roles/dev.md— таблица адресовdocs/retro/2026-10-11-claude-md-addresses.md. Изменения правил: архив OpenSpec всегда отдельным PR; п. 4 чеклиста закрытия — из worktree по allow-правилу; bounded обновляет спеку при смене API; новый п. 7 — память задачи при закрытии. - Политика памяти: состояние задачи в трекере, уроки в
notes/направления и памяти агентов, в auto-memory — только ловушки машины и индекс. doctor.sh: файлы ролей, самотестrole-hint, режим workspace (симлинки, размеры CLAUDE.md и индекса памяти).- Тесты пакета
tests/run.sh(bash, без зависимостей): хук, роли, размеры, skill/agent, link-roles, workspace, doctor, install. - Ретроспектива
docs/retro/2026-10-11.mdи скриптыdocs/retro/scripts/.
0.2.0 — 2026-09-27
- Skill
harness-doctor(doctor.sh+ чеклист прочтения): машина, самотест хуков, проект; ставится в~/.claude/skills/. - require-plan: защищает любой
src/на любой глубине (было — только от корня), переопределение списком в.claude/code-paths. - SessionStart-хук
harness-check.sh: при старте сессии в неподключённом проекте агент предлагает (или сHARNESS_AUTO_ADOPT=1— сразу выполняет)adopt-project.sh; скрипты бутстрапа ставятся в~/.claude/harness/. adopt-project.sh— подключение обвязки к существующему репозиторию (ветка → бутстрап → ff-merge);project-template/CLAUDE.harness-section.md.- codegraph:
codegraph initв worktree иprojectPathв вызовахcodegraph_explore— MCP-сервер видит только индекс папки запуска. - Порядок старта фичи: worktree на временной ветке → issue → переименование ветки (хук guard-main блокирует запись на main).
- Маркировка находок и решений:
T<n>.<k>,C/I/M-n,R-n,O-n,H-n; обязательный статус fixed / deferred / rejected. - Чеклист закрытия: issue закрывается только при выполнении всех её пунктов, иначе комментарий с закрытыми маркерами; неприменимые к bounded пункты пропускаются с пометкой.
- Чеклист закрытия: п. 6 — отложенные находки собираются в issue Gitea
Follow-ups from #N.
0.1.0 — 2026-09-27
- Первая версия после пилота на obsidian-voice-note (10 задач, 125 тестов, PR #2).
- Хуки: guard-main (main + detached HEAD, Bash-запись, исключение для openspec/), require-plan (.bounded).
- Глобальный CLAUDE.md: маршрутизация superpowers/OpenSpec/Gitea/codegraph, контроллер SDD на sonnet, чеклист закрытия из 6 пунктов, раздел «Decisions made without discussion».
- new-project.sh и шаблон проекта.