Skip to content

supervise queue の重なりの判定がファイル単位のため、設計が関数単位で分けた実装のプランも直列になる(スプリント a1 で 58 分が 2 時間 47 分) #2037

Open

Description

@takemi-ohama

何が起きたか

スプリント 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:

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 はテストのディレクトリの包含による偽の重なりで、これとは別の形である(こちらは同じファイルを実際に触る)。

依頼

次のどちらかにする(選ぶのは設計で)。

受け入れ条件(案)

  • 同じファイルの交わらない関数だけを触る実装のプラン 2 本が、queue --max 2 で同時に流れること
  • 交わる関数を触る組は今と同じく直列になること

起点: #2008(スプリント a1 の振り返り)

再発(スプリント a2): 実装 3 本が重なりの判定で直列になり、15:29〜19:09 JST の 3 時間 40 分を使った(最長は 99 分)。#2008 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions