Commit graph

2 commits

Author SHA1 Message Date
b03a12204a fix(devops): cleanup-merged-worktrees.sh — 3 bugs found live-diagnosing 60+ stale worktrees
All checks were successful
CI / changes (pull_request) Successful in 8s
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
1. remote-alias хардкод 'forgejo' — этот чекаут использует 'origin', скрипт
   падал на первой же команде. Автодетект вместо хардкода.
2. merge-check через 'git merge-base --is-ancestor branch main' структурно
   несовместим со squash-merge конвенцией репо (git-pr.md): squash создаёт
   НОВЫЙ коммит в main, оригинальный коммит ветки никогда не становится
   предком — ancestor-check ложно-отрицателен на КАЖДОЙ смерженной ветке.
   Заменено на надёжный прокси: ветка отсутствует на remote (конвенция репо
   — всегда delete_branch:true при мерже).
3. 'git worktree remove --force' (одинарный) недостаточен для worktree,
   залоченного супервизором Claude Code — нужен двойной '-f -f' (force
   применяется дважды: снятие lock + подтверждение удаления).

Плюс dirty-gate: worktree с незакоммиченными TRACKED-изменениями (не просто
untracked-мусором вроде node_modules) теперь пропускается с явным SKIP —
не удаляется вслепую, если там могла остаться нерасхваченная работа.

Найдено вживую при диагностике: 69 worktree накопилось, 21 безопасны
(branch снят с remote + чистое дерево), 30 dirty (требуют разбора вручную),
13 всё ещё в работе (branch жив на remote). Само удаление НЕ проведено этим
коммитом — попытка force-remove из текущей сессии не сработала (см. комментарий
в скрипте про harness-managed worktree).
2026-07-04 17:58:38 +05:00
998c8a17a8 chore(claude): agents view readiness — cleanup, .worktreeinclude, workflow (#497) 2026-05-24 09:20:26 +00:00