Skip to content

supervise: 設計の置き場所のテストのディレクトリが重なりの判定に当たり、スプリントの実装のプランがすべて直列になる #1811

Open

Description

@takemi-ohama

何が起きたか

スプリント m1290 の実装のプラン 3 本(5-impl-1290.json・5-impl-780.json・5-impl-1739.json)を supervise.py queue --max 3 で流したが、3 本とも直列になった。

キューの記録 ~/.local/state/ndf/sv/sprint-m1290/queue-5.log:

supervise-queue: 重なる組 .../5-impl-1290.json と .../5-impl-780.json(plugins/ndf/scripts/tests/ ⊃ plugins/ndf/scripts/tests/test_parallel_measure.py)を同時には流さない
supervise-queue: 重なる組 .../5-impl-1290.json と .../5-impl-1739.json(plugins/ndf/scripts/tests/)を同時には流さない
supervise-queue: 重なる組 .../5-impl-780.json と .../5-impl-1739.json(plugins/ndf/scripts/tests/ ⊃ plugins/ndf/scripts/tests/test_parallel_measure.py)を同時には流さない

所要は 2,945 秒・2,739 秒・2,197 秒で、開始 10:59 から終了 13:10(UTC)までの 2 時間 11 分はその合計に一致する。並行に流せていれば最長の 49 分で済んだ。

原因の見当

重なりの判定に使う「触るファイル」は、ステージ「設計の結果」(supervise.py design-results)が設計文書の置き場所から取る(~/.local/state/ndf/sv/sprint-m1290/design-results.json)。#1290 と #1739 の設計は置き場所にテストのディレクトリ plugins/ndf/scripts/tests/ を丸ごと書いていた。実際に足した・変えたテストのファイルは課題ごとに別だったが、ディレクトリの包含(#1248 で入れた判定)がすべての組を重なりにした。

テストのディレクトリは、ほぼすべての実装が触る。ディレクトリのまま書くと、そのスプリントの実装は常に直列になる。

依頼

次のどちらか(または両方)にする。

  • 設計の置き場所にテストを書くときは、ファイル単位で書く(design の手順と、design-results がディレクトリを見つけたときの扱い)
  • 重なりの判定で、テストのディレクトリのような共有の置き場の包含だけでは重なりとしない。ファイルの単位で同じものを触るときだけ直列にする

受け入れ条件(案)

  • 別々のテストのファイルを足す実装のプラン 2 本が、queue --max 2 で並行に流れる
  • 同じファイルを触る 2 本は、これまでどおり直列になる

どこで見つけたか

スプリント m1290 の振り返り(検査 PR #1799)。

関連: #1248(ディレクトリの包含で重なりを知らせる)、#1674(直列でも他のプランのファイルを「変えない」と渡す)

再発(2026-10-12、スプリント m1910)

#1916 の設計の置き場所が plugins/ndf/scripts/tests/ をディレクトリのまま持ち、同時に流れた #1915・#1908 の実装の担当へ「変えない」として渡って作業前に止まった。詳細は #1674 の「再発(2026-10-12)」。直列の判定だけでなく、実装の担当へ渡る除外の行もディレクトリの包含で広がる。

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority: medium保守性・設計一貫性など、計画的に対応する

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions