## 何を見つけたか 設計 PR を持たない課題の実装のプランは、触るファイルを宣言していない。このため、同時に流す別の実装のプランとファイルが重なっても、キューの重なりの判定(`supervise.py queue`)が直列にしない。代わりに、別のプランが触るファイルを「変えない」と worker への指示に載せる。その課題の変更先がそのファイルだったので、worker は止まって判断を求めた。 - スプリント m2087 の実装のキュー(2026-10-25): `/work/ai-plugins/.ndf/tmp/sprint-m2087/5-impl-2087.json`・`5-impl-2104.json`・`5-impl-2142.json` を `--max 3` で同時に流した - #2142 は設計 PR を持たない(本文の受け入れ条件だけで実装する)。変更先は `plugins/ndf/scripts/merged-steps.py` の help と docstring である - 同時に流れた #2104 の設計は `merged-steps.py` を触るファイルに挙げていた。キューは #2142 の impl へ `concurrent` の記録(`/work/ai-plugins/.ndf/tmp/sprint-m2087/5-impl-2142-state.run1/progress.jsonl` の 2 行目)でこのファイルを含む一覧を渡し、指示は「並行する別のプランが触るので変えない」になった - worker は 23 秒で「判断が要る」を返し、プランは止まった(同ディレクトリの `01-impl.out`)。conductor は #2104 のマージの後に、merged-steps.py を変えてよいと指示して流し直した(`done-5b.json`) ## どこで見つけたか スプリント m2087 の振り返り(リリース PR #2160)。 ## なぜこの変更の範囲外なのか #2087・#2104・#2142 の受け入れ条件は、スプリントのキューの重なりの判定を扱わない。根拠: Vision(人が手を止めるのは承認の 2 回に寄る)(MVV 版 3) ## 直さないと何が起きるか 設計 PR を持たない課題を、ファイルの重なる課題と同じスプリントで流すたびに、実装のプランが止まり conductor の手当てが要る。止まらずに「変えない」に従って別の場所を直した場合は、受け入れ条件を満たさない実装になるおそれがある。 ## 起票者の推定 - 設計を持たない実装のプランは、触るファイルが分からないのだから、重なりがあり得るものとして直列に流すのがよい(推した出所: 今回の経緯) - 関連: #2037(重なりの判定がファイル単位)・#1811(テストのディレクトリが重なりに当たる)は逆の向き(直列にしすぎる)の課題である(推した出所: `issue-file.py dup` の結果) ## 由来 PR #2160
Activity