
# クリーンアップ

不要になったサンドボックスを削除します。まずプレビューします。

```bash
wp rudel cleanup --dry-run
```

`--dry-run`は削除対象とその理由を一覧表示します。フラグを付けずに実行すると削除します。

```bash
wp rudel cleanup
```

コマンドは確認を求めません。

## ポリシー

保護されていないサンドボックスは、次のいずれかに該当すると削除されます。

| 理由 | 条件 |
|--------|------|
| `expiry reached` | `expires_at`が過去である |
| `age policy matched` | 作成から`max_age_days`を超えている |
| `idle policy matched` | 最終アクティビティから`max_idle_days`を超えている |

`max_age_days`と`max_idle_days`は`rudel_config`から取得されます（どちらも既定値は`0`で、ルールは無効になります）。1回の実行だけ値を上書きできます。

```bash
wp rudel cleanup --max-age-days=30 --dry-run
wp rudel cleanup --max-idle-days=7
```

サンドボックスを選択するリクエストのたびに、またスナップショットの作成時に最終アクティビティが更新されます。

## マージ済みサンドボックス

```bash
wp rudel cleanup --merged --dry-run
```

`--merged`は上記のポリシーとは別に処理を実行します。サンドボックスに記録されたリンク済みGit worktreeがすべて、リポジトリの既定ブランチにマージ済みのブランチを使用している場合、そのサンドボックスを削除し、該当ブランチも削除します。リンク済みworktreeは、テーマディレクトリがGitリポジトリのサンドボックスをクローンすると作成されます（[Git](https://rudel.inline0.dev/ja/docs/features/git)を参照）。`--git`で作成したサンドボックスにはworktreeの記録がないため、常に対象外となります（[issue #8](https://github.com/inline0/rudel/issues/8)）。

## 保護されたサンドボックス

どちらの処理も、保護されたサンドボックスをスキップします。クリーンアップの対象にするには、まず`wp rudel update <id> --unprotected`で保護を解除してください。`wp rudel destroy`は保護設定を無視します。

サンドボックスを削除すると、テーブルが削除され、管理対象のファイルとworktreeが取り除かれ、Rudel環境レコードが削除されます。スケジュールに従ってクリーンアップを実行するには[自動化](https://rudel.inline0.dev/ja/docs/features/automation)を参照してください。
