## 何が起きたか スプリント a1 の実装のプラン 3 本(`5-impl-1909.json`・`5-impl-1917.json`・`5-impl-1651.json`)を `supervise.py queue --max 3` で流したが、3 本とも直列になった。3 本とも `plugins/ndf/scripts/supervise_lib/templates.py` を触ると「設計の結果」に書いたためである。 キューの記録 `~/.local/state/ndf/sv/a1/queue-5.log`: ```text supervise-queue: 重なる組 .../5-impl-1909.json と .../5-impl-1917.json(plugins/ndf/scripts/supervise_lib/templates.py)を同時には流さない supervise-queue: 重なる組 .../5-impl-1909.json と .../5-impl-1651.json(plugins/ndf/scripts/supervise_lib/templates.py)を同時には流さない supervise-queue: 重なる組 .../5-impl-1917.json と .../5-impl-1651.json(plugins/ndf/scripts/supervise_lib/templates.py)を同時には流さない ``` 所要は 3,474 秒・3,235 秒・3,352 秒で、2026-10-16 12:50 から 15:37(JST)までの 2 時間 47 分はその合計に一致する。並行に流せていれば最長の 58 分で済んだ。修正のループは 3 本とも 0 回だった。 ## 原因の見当 3 本の設計は、同じファイルのどの関数を誰が触るかを関数の単位で分けていた(`issues/issue-1917-design.md` の「ほかの主題と重ならないように触る関数」、`issues/issue-1909-design.md` の「設計の結果」の関数の表)。#1909 は `"上限"` の 1 行を消すだけ、#1917 は `plan_to_merge`・`plan_check` の並び、#1651 は `impl_prompt`・`IMPL_RULES`・`pre_test_steps` で、行は重ならない。 重なりの判定(`supervise.py queue`)はファイルの単位だけを見るため、設計が関数の単位で分けた組も直列にする。#1811 はテストのディレクトリの包含による偽の重なりで、これとは別の形である(こちらは同じファイルを実際に触る)。 ## 依頼 次のどちらかにする(選ぶのは設計で)。 - 「設計の結果」の触る範囲に関数(シンボル)を書けるようにし、同じファイルでも触るシンボルが交わらない組は並行に流す。マージの順で衝突したときは #1917 の取り込み(`base-sync`)が戻す - 同じファイルを触る主題をスプリントの実行計画の時点で検出し、実装のプランを 1 本にまとめるか、直列になる見込みの時間を実行計画に書く ## 受け入れ条件(案) - 同じファイルの交わらない関数だけを触る実装のプラン 2 本が、`queue --max 2` で同時に流れること - 交わる関数を触る組は今と同じく直列になること 起点: #2008(スプリント a1 の振り返り) 再発(スプリント a2): 実装 3 本が重なりの判定で直列になり、15:29〜19:09 JST の 3 時間 40 分を使った(最長は 99 分)。https://github.com/devbasex/ai-plugins/issues/2008#issuecomment-6233607975
Activity