Repository navigation
Description
何を見つけたか
NDF の手順が ${TMPDIR:-/tmp} に置く一時のものが、手順の後に消されずに溜まる。中でも一時の worktree(<tmpdir>/ndf-worktrees)は 1 回分で数百 MB あり、ディスクを圧迫する。devbase の開発コンテナでは /tmp が書き込み層にあり、再起動しても消えない。2026-10-23 には、ホストのディスクが埋まって Docker Desktop が落ちた(devbasex/devbase#499)。
2026-10-23 の手元の devbase のコンテナで測った値:
| 置き場 | 件数・大きさ | 作るところ |
|---|---|---|
/tmp/ndf-worktrees/devbasex--ai-plugins/rf<n>/ |
20 余回分で 10.6GB | cross-refactoring(外れない件は #1680) |
/tmp/ndf-worktrees/<slug>/pr<n>/ |
ほかのリポジトリで 9 件残っていた(どれも変更・未 push 無し) | cross-review。merged を通らずに閉じた、またはマージされた Pull Request の分と見られる |
/tmp/ndf-worktree-<session>.json |
681 件 | hook_lib/worktree.py:140・worktree-session.sh:82 |
/tmp/ndf-deps.XXXXXX |
440 件(1.8MB) | worktree-deps.sh:138。trap で消すが、プロセスが止められると残る |
/tmp/fix-pr<n>-* |
121 件(1.7MB) | fix の結果・文脈のファイル |
/tmp/ndf-tests-usage-*・ndf-tests-metrics-* |
十数件 | テスト(plugins/ndf/conftest.py:32 ほか) |
大きさのほとんどは一時の worktree で、ほかは件数だけが多い。
一時の worktree には、作業中のものが残る場合がある。rf1732/work には、push していないコミットが 23 件あった。消す処理は、変更と未 push のコミットを確かめてから外す必要がある。
直さないと何が起きるか
/tmpが自動で片付かない環境(devbase のコンテナ、再起動の少ない端末)では、cross-review・cross-refactoring を回すたびにディスクが減る- 小さなファイルの件数が増え、
/tmpの一覧が読めなくなる
決めること
- 一時の worktree を外す時点。cross-refactoring の一時の worktree(rf<PR番号>)が merged の後片付けで外されず溜まる #1680(
mergedでの rf の取り外し)に加えて、mergedを通らない Pull Request の分を、どこで外すか - 古いものを一括で片付ける手段を持つかどうか。持つなら、変更と未 push のコミットを確かめてから外す
- セッションの状態のファイル(
ndf-worktree-*.json)を、セッションの終わりに消すかどうか
関連
- cross-refactoring の一時の worktree(rf<PR番号>)が merged の後片付けで外されず溜まる #1680 cross-refactoring の一時の worktree(rf<PR番号>)が merged の後片付けで外されず溜まる
- コンテナの /tmp が書き込み層に溜まり続け、macOS ではホストのディスクを埋めて Docker Desktop ごと落ちる devbase#499 コンテナの
/tmpが書き込み層に溜まり続け、ホストのディスクを埋める
由来
利用者からの依頼(2026-10-23、Mac のディスクの空きが頻繁に無くなる件の調査)
受け入れ条件
- マージ済みの Pull Request
nについてmerged-steps.py cleanupを実行したとき、<NDF_WORKTREE_BASE>/<slug>/rf<n>(中のworkなどを含む)が変更も未 push のコミットも持たない →pr<n>と同じく外れ、git worktree listから消え、ディレクトリも残らない。結果のitemsにremovedで出る - 一時の worktree(
pr<n>・rf<n>)に未コミットの変更か、未 push のコミットがある → 外さず、keptと理由を返す(rf1732/workの 23 件のような作業を消さない) mergedを通らずに閉じた、またはマージされた Pull Request の一時の worktree → 「決めること」で決めた時点(または一括の片付けの手段)を実行した後、変更も未 push も無いものは残らない。open の Pull Request と、実行中の手順が使っている一時の worktree は外さないndf-worktree-<session>.jsonとndf-deps.*のうち、持ち主のセッション・プロセスが終わったもの → 決めた片付けの時点(セッションの終わりに消すかは「決めること」で決める)の後に残らない。実行中のセッション・プロセスのものは消さない
修正レイヤー
親 #2229(実行をまたいで残る状態の寿命と持ち主)。一時の置き場の掃除を lib/worktree_base.py に寄せ、merged-steps.py の _cleanup_pr から呼ぶ(今は pr{n} だけを外し rf{n} を外さない)。#1680 は open。
| 2026-10-31 の残り | 件数 |
|---|---|
/tmp/ndf-worktrees/devbasex--ai-plugins/ の rf*(rf2152・rf2178・rf2192・rf2209。4 本とも PR はマージ済み) |
4(2.0G) |
git worktree list の ndf-worktrees |
16 |
ndf-worktree-*.json |
79 |
ndf-deps.* |
26 |
ndf-tests-* |
24 |
進行
モード: — / 進め方: auto
- 要求と受け入れ条件
- 作業場所の用意 — 2026-10-31 03:59
- 設計
- 素材の収集と出典の確定
- ドキュメント再構成
- ドキュメントレビュー
- 計画 — 2026-10-31 03:59
- 実装 — 2026-10-31 05:36
- 構造改善 — 2026-10-31 07:38
- 実装レビュー — 2026-10-31 09:12
- 完了判定 — 2026-10-31 06:18
- Pull Request — 2026-10-31 06:41
- 確定仕様化 — 2026-10-31 11:00
- 後片付け — 2026-10-31 10:57
- 配布 — 2026-10-31 10:33
- 体裁レビュー
- リリース後テスト — 2026-10-31 10:56
- 振り返り — 2026-10-31 11:00
- 棚卸し — 2026-10-31 11:21
振り返り: #2282 (comment)
リリース後テスト(v10.27.2)で残ったこと
条件 1・2・4 と条件 3 のテストは合格。条件 3 の手動確認(手元の残骸が片付けの後に減ること)は保留(記録: #2281 (comment) )。理由と確かめ直す時点は #2229 の「リリース後テスト(v10.27.2)で残ったこと」と同じ。
Activity
takemi-ohama commentedon Nov 1, 2026
スプリントの終わりの工程を通りました