guard-main: цепочка «git worktree add … && cd … && openspec archive …» блокируется по ветке основного checkout (O-4) #63
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Маркер: O-4 (наблюдение контроллера вне ревью). Источник: сессия #42, шаг 1 чеклиста закрытия (архив change отдельным PR от main).
Что случилось
Команда создания worktree и архива в одной цепочке, запущенная из основного checkout на main:
Ответ хука:
Блокировка ложная по смыслу:
git worktree addсоздаёт отдельный worktree на веткеchore/archive-dsh-openspec, иopenspec archiveвыполнился бы уже в нём. Обход, которыйсработал: разнести на отдельные вызовы (worktree add, затем archive). Из
/tmpс абсолютнымпутём та же цепочка проходила — это и сбило диагностику.
Минимальное воспроизведение (парсер, без исполнения)
git worktree add …сам по себе целей не даёт (спец-случай в_git), но следующий за нимopenspec archiveв той же цепочке даёт цель в каталоге, которого на момент разбора ещё нет;resolve()поднимается до объемлющего репозитория и берёт его ветку — main.Ожидаемое поведение
Цель под
<path>изgit worktree add <path> -b <branch>в пределах той же команды MUSTоцениваться по
<branch>, а не по ветке объемлющего репозитория.Предложение
В
parse()запоминать пары «путь → ветка» дляgit worktree add <path> -b|-B <branch>иприменять их в
decide_guardк последующим целям в этом же вызове. Регрессия: случай вtests/test-hook-parse.sh(пути, как в воспроизведении выше) и кейс в корпус хуков.Цена
Один провальный вызов и лишняя диагностика при каждом закрытии фичи; сообщение указывает на
путь worktree, а не на настоящую причину. Обходной рецепт (разнести вызовы) стоит записать в
docs/HARNESS.md, если код хука не будет меняться.aep referenced this issue2026-10-24 22:06:17 +03:00
Закрыто: PR #71 (коммиты
8d8dd89,e064de7). O-4 fixed; T1.1-T1.4, T1.6, T1.7 fixed e064de7; T1.5, T1.8, T2.1 — deferred, занесены в #70 (отдельный follow-up issue не нужен). Merge — по команде владельца 24.10.2026.