Skip to content

[test] runner cleanup の終了順序と孫プロセス消滅を直接確認する #630

Closed

Description

@Kewton

親 Issue:#541(分割案 H、2026-10-09 起票。#626 で runner のテストの余裕を作った後)

背景

1 body が起動から probe・cleanup まで全体を 5 秒で測り、続いて process group 消滅を 2 秒で測る。起動待ちが cleanup の遅さとして扱われる。

元 Issue 541 の第 2 群を扱う。調査基準は fetch 済み develop の f8ce541。失敗を再現済みという意味ではない。

対象ファイル

  • src/planner/runner/tests/acceptance_boundary_tests.rs
  • src/planner/runner/tests/support/process.rs

直し方

  • 既存の cleanup_fn 注入点を使い、child と grandchild の ready を確認してから cleanup の区間を測る。ready は PID だけでなく孫の起動完了を意味する合図にする。
  • cleanup 完了、pipe の EOF、process group の ESRCH を別々に確認する。全工程の 5 秒 assertion を単に削除せず、cleanup 自体の既存上限と deadlock 検出を残す。
  • helper は既存の重複を整理して収める。baseline を増やさず、ポート修正 M の後に差分を作る。

受け入れ条件

  • start・wait・probe・cleanup の順序、cleanup ok、readiness evidence とログが保持される。
  • 実 child と grandchild が消滅し、pipe が閉じる。cleanup を呼ばない変更や孫を残す変更を検出できる。
  • 対象 test と 2 checkout 同時 3 回が通り、runner の個別・総量の行数上限を満たす。

検証

  • cargo test --lib dev_server_cleanup_kills_grandchild_process_group_without_pipe_deadlock
  • cargo test --test generality_guardrails
  • cargo fmt --all -- --check
  • cargo clippy --all-targets -- -D warnings
  • cargo test

依存と規模

先行条件: M の後。M と同じ 2 ファイルを変更する。

test 1、child helper 1、wait helper 1〜2、変更 60〜120 行、純増は acceptance 側 5 行以内・process 側 11 行以内に整理。

共通制約

  • 製品の timeout 既定値、イベント名と schema、判定理由、検証・受入・証跡ゲートを緩めない。timeout 許容、成功までの再実行、未実行を pass とする扱いは禁止する。
  • 無期限 wait を作らず、失敗時も子・thread・pipe を回収する。ready は対象実行の合図に拘束する。
  • 既存の corpus 契約、recovery 契約、歴史的証跡、live runtime namespace は変更しない。本案は transport または test timing の修正であり、契約を変える必要が生じたら別途 scope を見直す。
  • 同時実行の確認は将来の検証計画である。現時点の「build は 1 本ずつ」に従い、実行可能ファイルを逐次準備する。2 checkout の同時 test、ポート占有、実 PTY の実験はその枠を leader と調整してから行う。

根拠

  • src/planner/runner/tests/acceptance_boundary_tests.rs:104
  • src/planner/runner/tests/acceptance_boundary_tests.rs:126
  • src/planner/runner/tests/acceptance_boundary_tests.rs:156
  • src/planner/runner/tests/acceptance_boundary_tests.rs:210
  • src/planner/runner/tests/support/process.rs:71
  • src/planner/runner/acceptance.rs:422
  • src/planner/runner/acceptance.rs:1254

参照

  • docs/dev/dev-guardrails.md
  • tests/generality_guardrails.rs
  • workspace/tmp/0928/parallel-537/results/H-01/report.md

関連(参考)

補足(2026-10-09 PM)

Activity

  1. added a commit that references this issue on Oct 9, 2026
  2. Kewton commented on Oct 9, 2026

    @Kewton
    OwnerAuthor

    PR #639 で develop に merge しました(merge commit ddcb802、CI・acceptance・Next.js domain oracles success)。runner の cleanup の区間を孫の起動完了から測り、cleanup・process group の消滅・pipe の EOF を別々に確かめるようにしました(#541 の分割案 H)。cleanup の区間の上限は元と同じ 5 秒で、TERM で終わらず KILL に頼る形も検出します。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions