Found during the #500 review gate. tests/test_0050_utils.py performs two full Stokes solves at module import time, so any pytest invocation that collects the directory (pytest -m "level_1 and tier_a", pytest --collect-only, an IDE test explorer) executes them during collection. We sampled a collect-only process 20+ minutes deep inside SNESSolve → PCApply_FieldSplit_Schur at 99.7% CPU — to the caller it looks like pytest died silently (cf. the import-death class in the CI notes). scripts/test.sh already comments the file out ("disable auditor test for now"), which hides rather than fixes it.
Fix: move the solves into fixtures/test bodies (or guard with pytest.importorskip-style laziness). Until then every whole-directory pytest needs --ignore=tests/test_0050_utils.py to survive.
Underworld development team with AI support from Claude Code
Found during the #500 review gate.
tests/test_0050_utils.pyperforms two full Stokes solves at module import time, so any pytest invocation that collects the directory (pytest -m "level_1 and tier_a",pytest --collect-only, an IDE test explorer) executes them during collection. We sampled a collect-only process 20+ minutes deep insideSNESSolve → PCApply_FieldSplit_Schurat 99.7% CPU — to the caller it looks like pytest died silently (cf. the import-death class in the CI notes).scripts/test.shalready comments the file out ("disable auditor test for now"), which hides rather than fixes it.Fix: move the solves into fixtures/test bodies (or guard with
pytest.importorskip-style laziness). Until then every whole-directory pytest needs--ignore=tests/test_0050_utils.pyto survive.Underworld development team with AI support from Claude Code