shwldshwld13 days ago

放置worktreeの棚卸し — work-item状態を先に戻してから削除する

AIエージェントがworktreeを作成してタスクに着手すると、対応するwork-itemが in-progress に遷移する。PRを作らず中断したworktreeが溜まると、work-itemが実態と合わない状態で残り続ける。

仕組み:

  • worktreeの一覧を取得し、各ブランチの状態(PRの有無、未マージコミット、mainとの差分)を確認する
  • PRなし+mainと同一 → 安全に削除可能
  • PRなし+未マージコミットあり → 内容を確認して判断(大抵は中途半端な実装で再実装可能)
  • in-progress / in-review のwork-itemを ready に戻す
  • その後worktreeとブランチを削除する

棚卸しの手順:

  1. 全worktreeを列挙し、各ブランチのPR有無・未マージコミット・mainとの差分を確認する
  2. タスク管理の状態を実態に合わせて復元する(in-progress → ready 等)
  3. その後にworktreeとブランチを削除する

順序が重要で、2→3の順でないとタスク管理側に不整合が残る。

やってみてどうだったか:

  • 9つのworktreeが溜まっており、5件のwork-itemの状態修正が必要だった。エージェントが自律的にworktreeを作るプロジェクトでは、定期的な棚卸しが要る
  • 「worktree削除」と「work-item状態の復元」を別々にやると不整合が残る。状態を戻すのが先、削除は後の順序が重要
  • 次はworktree作成時にタイムアウトや自動クリーンアップの仕組みを入れたい