Skip to content
frontmatter
キー値
specdojo.idprj-0001:pjr-17s7-unit-test-double-run-hang
specdojo.typeproject
specdojo.statusready
specdojo.rulebookspecdojo:pjr-rulebook
specdojo.part_ofprj-0001:pjr-index
specdojo.item_typeissue
specdojo.item_statusdone
specdojo.prioritymedium
specdojo.ownerARC
specdojo.registered_at2026-08-23T03:22:01Z
specdojo.due_on2026-08-31
specdojo.completed_at2026-08-23T03:52:17Z
specdojo.conclusionplan へ注入する共通規約へ、executor は npm run test:unit を1回だけ実行し前後に対象限定の実行を行わない旨を明記した。回帰テストで規約が plan に含まれることを固定している。規約の効果は、次に src または tests を変更するタスクを実行したときに確認する。本タスクの実行自体は旧規約の plan で動いたため二度実行が起き、orchestrator が1回だけの実行で全件成功を確認した。

PJR-17S7 executor が unit test を二度実行し、Vitest の終了待ちが収束しない ​

1. 課題内容 ​

executor が対象限定の npm run test:unit を実行した後、続けて全件の npm run test:unit を実行すると、先行実行で残った Vitest プロセスとの競合で終了待ちが収束せず中断する。vitest.unit.config.ts は maxWorkers を 2 に固定しており、残存ワーカーがあると新しい実行がスロットを確保できない。PJR-ZJZD と PJR-AQ9G の2回で再現しており、いずれもアサーション失敗ではなく環境要因である。実装は完了しているのに検証未完として block されるため、実行の締めくくりが人手に依存する。共通規約で二度実行を避けるよう指示を整理する。

2. 影響範囲 ​

観点影響
スコープexecutor が src または tests を変更する全タスク。共通規約が変更対象に応じた test 実行を求めるため、対象限定と全件の二度実行が起きやすい
スケジュール実装が完了していても検証未完として block され、統合と close が人手の引き継ぎ待ちになる
コスト追加の外部コストはなく、影響は再検証と引き継ぎに要する作業時間
品質成果物への影響はない。アサーション失敗ではなく、Vitest の終了待ちが収束しない環境要因である
関係者ARC(規約と設定の整備)。exec を実行する運用者

3. 対応方針 ​

項目内容
原因対象限定の npm run test:unit の直後に全件を実行すると、先行実行の Vitest ワーカーが残存したまま次が起動する。vitest.unit.config.ts は maxWorkers: 2 を固定しており、スロットを確保できず終了待ちが解消しない
対応策共通規約で、変更対象に対応する test を実行する際は対象限定と全件のどちらか一方に絞ると明示する。全件を実行する場合は対象限定の実行を省く。plan へ注入する共通規約の文面を更新する
依存事項なし。設定側(maxWorkers や pool、teardownTimeout)の見直しは、規約の調整で解消しない場合に検討する
完了条件executor が unit test を二度実行しないよう規約で示され、src や tests を変更するタスクで終了待ちの中断が起きないこと

4. 対応結果 ​

  • plan へ注入する共通規約を更新し、同じ test script の対象限定実行と全件実行を同一 executor run 内で連続実行せず、どちらか一方に絞ることを明記した。
  • 下表、plan、またはプロジェクト標準が全件 test を求める場合は全件を1回だけ実行し、対象限定の実行を省く判断基準を追加した。
  • executor / reporter pipeline では npm run test:unit の前後に対象限定実行を追加しないことを明記し、生成 plan に規約が注入される回帰テストを追加した。
  • 検証では対象限定 test を実行せず、全件の npm run test:unit を1回だけ実行したが、約3分30秒経過してもテスト結果が出力されず終了待ちが収束しなかったため中断した。二度実行の防止だけでは sandbox 上の終了待ちは解消しておらず、Vitest プロセスが単独実行でも残存する要因の追加調査が必要である。

再現の記録:

  • PJR-ZJZD: 対象限定の実行は成功し、全件で収束せず中断。reporter は検証未完として block と判定した。
  • PJR-AQ9G: 同じ経緯。executor のログに「先行して残った Vitest プロセスとの競合で終了待ちが収束せず中断」と記録されている。
  • いずれも orchestrator が worktree で全件を1回だけ実行したところ、すべて成功している(PJR-AQ9G では 87 ファイル・1261 件)。

5. 関連ドキュメント ​