何を見つけたか
監視の環境変数(MONITOR_STALL_AGY など)を export したシェルから全体のテストを起動すると、cross-review の既存テスト 2 件が落ちる。
$ MONITOR_STALL_AGY=1800 uv run --with pytest pytest scripts/tests plugins/ndf -q
FAILED plugins/ndf/skills/cross-review/tests/test_monitor_agy.py::test_the_new_name_has_a_stall_default
FAILED plugins/ndf/skills/cross-review/tests/test_monitor_import_safety.py::test_import_succeeds_with_non_numeric_monitor_stall
2 failed, 3645 passed
2 件とも、担当ごとの無進捗の許容の既定値(agy=480)を、MONITOR_STALL_<担当> が無い前提で確かめている。監視の解決順は MONITOR_STALL_<担当> → MONITOR_STALL → 既定なので、担当ごとの環境変数が残っていると既定値ではなくその値が返る。
どこで見つけたか
PR #677 の cross-refactoring の init。着手前のテスト(--baseline-test)が落ちて中断した。進行スクリプトで MONITOR_STALL_AGY=1800 を export していた(agy の無進捗の許容を延ばすため。マイルストーン 21 の運用上の回避)。
なぜこの変更の範囲外なのか
PR #677(#662 の P1)の受け入れ条件は監視の結果ファイルと実行の要約で、無進捗の許容の解決やテストの環境の隔離を含まない。2 件のテストは変更前から同じ前提を持つ。
直さないと何が起きるか
$ MONITOR_TIMEOUT_AGY=1800 MONITOR_STALL_AGY=1800 uv run --with pytest pytest \
plugins/ndf/skills/cross-review/tests plugins/ndf/scripts/tests -q
FAILED plugins/ndf/skills/cross-review/tests/test_launch_agy.py::test_the_print_timeout_defaults_to_the_longest_phase
FAILED plugins/ndf/skills/cross-review/tests/test_monitor_agy.py::test_the_new_name_has_a_stall_default
FAILED plugins/ndf/skills/cross-review/tests/test_monitor_import_safety.py::test_import_succeeds_with_non_numeric_monitor_stall
3 failed, 1043 passed in 36.76s
既定値を前提にするテストは、監視の環境変数をテストごとに外している。 外していないテストが上の 3 件である。
| 外し方 |
箇所 |
monkeypatch.delenv("MONITOR_...") を 1 変数ずつ |
20 箇所(cross-review/tests/test_monitor_stall_default.py 17、test_monitor_generic_stem.py 3) |
MONITOR_ で始まる変数をまとめて外す(startswith("MONITOR_")) |
6 箇所(plugins/ndf/scripts/tests/test_limits.py 2、cross-review/tests/test_launch_print_timeout.py・test_monitor_phase.py・test_monitor_outcome_file.py、cross-refactoring/tests/test_launch_agy_phases.py 各 1) |
リポジトリ直下の conftest.py は、テストの実行中だけ git の全体設定と実行の要約の置き場所(NDF_METRICS_DIR)を差し替えている(冒頭の説明の 3・4)が、MONITOR_ で始まる変数は扱わない。
修正レイヤー
リポジトリ直下の conftest.py(テストの実行中だけ利用者の環境を切り離す共通の前提)。MONITOR_ で始まる環境変数を、git の全体設定・NDF_METRICS_DIR と同じ形で外す。落ちている 3 件へ個別に除去を足すと、既定値を前提にするテストを足すたびに同じ抜けが起きる。共通の前提で外せば、監視の上限を export したシェルからでも全テストが同じ結果になり、テストごとに散った 26 箇所の除去も要らなくなる。
採る手
統合(consolidate_duplication)。テストごとに散った監視の環境変数の除去を、リポジトリ直下の conftest.py の共通の前提へ寄せる。
由来
PR #677
進行
モード: light / 作業ツリー: .worktrees/fix/issue-678-monitor-env-isolation
閉じた理由
PR #797 で直り、ndf 10.16.0(2026-09-22、main / タグ ndf--v10.16.0、PR #810)で配布した。リリース後テスト(#810 (comment) )でこの課題の受け入れ条件はすべて合格した。
振り返り: #810 (comment)
何を見つけたか
監視の環境変数(
MONITOR_STALL_AGYなど)を export したシェルから全体のテストを起動すると、cross-review の既存テスト 2 件が落ちる。2 件とも、担当ごとの無進捗の許容の既定値(agy=480)を、
MONITOR_STALL_<担当>が無い前提で確かめている。監視の解決順はMONITOR_STALL_<担当>→MONITOR_STALL→ 既定なので、担当ごとの環境変数が残っていると既定値ではなくその値が返る。どこで見つけたか
PR #677 の cross-refactoring の
init。着手前のテスト(--baseline-test)が落ちて中断した。進行スクリプトでMONITOR_STALL_AGY=1800を export していた(agy の無進捗の許容を延ばすため。マイルストーン 21 の運用上の回避)。なぜこの変更の範囲外なのか
PR #677(#662 の P1)の受け入れ条件は監視の結果ファイルと実行の要約で、無進捗の許容の解決やテストの環境の隔離を含まない。2 件のテストは変更前から同じ前提を持つ。
直さないと何が起きるか
MONITOR_STALL_AGY/MONITOR_TIMEOUTなど)をしたシェルから cross-refactoring を起動すると、着手前のテストが落ちてinitが中断する。原因がテストの環境にあると気づきにくいMONITOR_TIMEOUT_<担当>が解決の順に加わったため、上限の表の既定値を前提にするテストが同じ形で落ちる
既定値を前提にするテストは、監視の環境変数をテストごとに外している。 外していないテストが上の 3 件である。
monkeypatch.delenv("MONITOR_...")を 1 変数ずつcross-review/tests/test_monitor_stall_default.py17、test_monitor_generic_stem.py3)MONITOR_で始まる変数をまとめて外す(startswith("MONITOR_"))plugins/ndf/scripts/tests/test_limits.py2、cross-review/tests/test_launch_print_timeout.py・test_monitor_phase.py・test_monitor_outcome_file.py、cross-refactoring/tests/test_launch_agy_phases.py各 1)リポジトリ直下の
conftest.pyは、テストの実行中だけ git の全体設定と実行の要約の置き場所(NDF_METRICS_DIR)を差し替えている(冒頭の説明の 3・4)が、MONITOR_で始まる変数は扱わない。修正レイヤー
リポジトリ直下の
conftest.py(テストの実行中だけ利用者の環境を切り離す共通の前提)。MONITOR_で始まる環境変数を、git の全体設定・NDF_METRICS_DIRと同じ形で外す。落ちている 3 件へ個別に除去を足すと、既定値を前提にするテストを足すたびに同じ抜けが起きる。共通の前提で外せば、監視の上限を export したシェルからでも全テストが同じ結果になり、テストごとに散った 26 箇所の除去も要らなくなる。採る手
統合(
consolidate_duplication)。テストごとに散った監視の環境変数の除去を、リポジトリ直下のconftest.pyの共通の前提へ寄せる。由来
PR #677
進行
モード: light / 作業ツリー:
.worktrees/fix/issue-678-monitor-env-isolation閉じた理由
PR #797 で直り、ndf 10.16.0(2026-09-22、
main/ タグndf--v10.16.0、PR #810)で配布した。リリース後テスト(#810 (comment) )でこの課題の受け入れ条件はすべて合格した。振り返り: #810 (comment)