Skip to content

マージ後の片付けで,メインが cleanup_worktrees.py を実行して worktree とブランチをまとめて消す #299

Closed

Description

@furedea-agent

マージ後の片付けで,メインが herdr worktree remove を手で使うと,worktree だけが消えてブランチが残る.worktree が消えたリポジトリは cleanup_worktrees.py(セッション起動時の hook)の対象からも外れるので,ブランチはそのまま取り残される.片付けの手順を「メインが cleanup_worktrees.py を実行する」に変え,sandbox の外で動かせるようにする.

flowchart LR
  M[ユーザー: マージ] --> C[メイン: cleanup_worktrees.py]
  C --> W[herdr のワークスペースと worktree を削除]
  C --> B[ローカルブランチを削除]
  C --> F[main を fast-forward]
Loading
変更前 変更後
マージ後の片付け メインが herdr worktree remove で手で消す.ブランチは残る メインが ~/.claude/hooks/cleanup_worktrees.py を実行し,worktree,ブランチ,main の更新がまとめて済む
実行場所 — sandbox の外(ほかのリポジトリの .git に書くため).excludedCommands にこのスクリプトだけを足す
許可 — guard の hook でも,引数なしと --dry-run だけを許可する

受け入れ条件

  • agents/claude/settings.json の sandbox.excludedCommands に cleanup_worktrees.py の実行が入っている.引数なしと --dry-run 以外は対象にならない
  • guard の hook がこのスクリプトの実行を確認なしで許可する(引数なしと --dry-run だけ)
  • README の「Development Cycle」の手順表の片付けと,agents/skills/git-workflow/references/branches.md の片付けの記述が,「マージ後にメインが cleanup_worktrees.py を実行する.herdr worktree remove を手で使わない」になっている
  • switch のあと,メインのセッションから実行すると,別のリポジトリのマージ済みの worktree とブランチが消える
  • 既存のテストと lefthook が通る
前提
  • スクリプトは nix が生成し,エージェントは書き換えられない.消すのは,マージ済みの PR の最後のコミットとブランチの先頭が一致し,未保存の変更がないものだけ.
  • 2026-10-23 の片付けで,vitest の 3 リポジトリなどにブランチが残ったのがきっかけ.

Activity

  1. furedea-agent commented on Oct 22, 2026

    @furedea-agent
    ContributorAuthor

    計画

    レーン 1 本:cleanup-after-merge(ブランチ feat/cleanup-after-merge)

    1. Codex が先にテストを書く.guard が cleanup_worktrees.py の引数なしと --dry-run を許可し,それ以外の引数は許可しないこと.excludedCommands の項目があること.
    2. Codex が agents/claude/settings.json の excludedCommands と guard の許可ルールを足す.excludedCommands で ~ や $HOME が展開されるかは,レーンが Claude Code の仕様で確かめる.
    3. Codex が README の手順表の片付けと branches.md を書き換える.
    4. レーンが lefthook とテストを通し,コミット,-u なしの push,PR.
    5. レーンが Opus の subagent でレビューし,指摘は Codex に直させる.CI が通ったら LANE-READY.
    6. マージと switch のあと,メインがこのスクリプトを実行し,このレーン自身の worktree とブランチが消えることを確かめる.
  2. furedea-agent commented on Oct 22, 2026

    @furedea-agent
    ContributorAuthor

    計画の更新

    ユーザーの要望で 2 点を足す.

    1. 絶対パスを直接書かない:設定,guard,文書は ~/.claude/hooks/cleanup_worktrees.py に統一する.excludedCommands の ~/ は agent-harness が書き出すときにホームディレクトリへ置き換える(設定を書き出すとき,sandbox.excludedCommands の先頭の ~/ をホームディレクトリに置き換える agent-harness#174).Codex プラグインの行も ~/ にする.
    2. 本体のワークスペースも閉じる:スクリプトは,レーンの worktree がもう残っておらず,中でエージェントが動いておらず,エージェントのセッションが作ったと hook の記録にある本体のワークスペースを閉じる.ユーザーが開いたものは閉じない.
    レーン リポジトリ 内容
    cleanup-after-merge(#300) dotfiles 上の 1 と 2.テスト先行
    excluded-tilde agent-harness #174

    順番:agent-harness#174 をマージ → dotfiles の flake で取り込む(#300 のレーンが行う) → switch 前に書き出された設定を確認 → #300 をマージ.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions