pytest-collection-untracked-scratch-module-network
I diagnosed the issue and verified the fix mechanism against a live reproduction. The solution is written to:
~/SOLUTION-pytest-collection-untracked-scratch-module-network.md
Root cause: pytest imports every collected module before running. dogfood-output/retry_test.py matches *_test.py and performs page.goto() at module scope. While the dogfood stack was up, import succeeded silently; when the host went down, the import raised during collection, and pytest aborted the whole run (1 error during collection). Because the file is gitignored, it was invisible to review — a latent environpatient-dependent time bomb that could block the entire tracked suite.
Fix (two layers):
1. Immediate gate: pytest --ignore=dogfood-output
2. Durable: root conftest.py collect_ignore_glob for scratch dirs, so new stray files can never be collected:
collect_ignore_glob = [
"dogfood-output/*",
"dogfood-output/**/*",
"scratch/*",
"scratch/**/*",
"*.scratch/*",
]
norecursedirs is documented as an alternative (with the caveat that it overrides pytest defaults).
Verification (actually executed): reproduced the baseline abort with a scratch module raising at import; confirmed the conftest fix yields 1 passed, survives nested scratch modules, works via --ignore alone, works via norecursedirs, and leaves tests/test_smoke.py as the only collected tracked test. The doc ends with acceptance criteria and commands to re-verify on the real repo.
# Evidence - Problem class: pytest-collection-untracked-scratch-module-network - Model: openrouter/deepseek/deepseek-v4.1-flash - Solved: 2026-09-24T14:09:05.207Z - Verification: solution produced by pi in sandbox; see signatures.json
{"description": "Whole-repo pytest collection hard-fails (1 error, suite does not run) when an untracked gitignored scratch file does network I/O at MODULE level: dogfood-output/retry_test.py (playwright sync_api, page.goto at import) breaks collection whenever the dogfood stack host is down \u2014 it passed for weeks while the stack was up, then time-bombed. Fix for gates: pytest --ignore=dogfood-output (tracked scope unaffected); durable fix = root conftest.py collect_ignore_glob or norecursedirs for scratch dirs so stray files can never break collection. Filed DC-GAP-018 on the board.", "environment": "", "language": "", "model": "openrouter/deepseek/deepseek-v4.1-flash", "problem_class": "pytest-collection-untracked-scratch-module-network", "provider": "openrouter", "solved_at": "2026-09-24T14:09:05.207Z", "version": ""}I diagnosed the issue and verified the fix mechanism against a live reproduction. The solution is written to:
~/SOLUTION-pytest-collection-untracked-scratch-module-network.md
Root cause: pytest imports every collected module before running. dogfood-output/retry_test.py matches *_test.py and performs page.goto() at module scope. While the dogfood stack was up, import succeeded silently; when the host went down, the import raised during collection, and pytest aborted the whole run (1 error during collection). Because the file is gitignored, it was invisible to review — a latent environpatient-dependent time bomb that could block the entire tracked suite.
Fix (two layers):
1. Immediate gate: pytest --ignore=dogfood-output
2. Durable: root conftest.py collect_ignore_glob for scratch dirs, so new stray files can never be collected:
collect_ignore_glob = [
"dogfood-output/*",
"dogfood-output/**/*",
"scratch/*",
"scratch/**/*",
"*.scratch/*",
]
norecursedirs is documented as an alternative (with the caveat that it overrides pytest defaults).
Verification (actually executed): reproduced the baseline abort with a scratch module raising at import; confirmed the conftest fix yields 1 passed, survives nested scratch modules, works via --ignore alone, works via norecursedirs, and leaves tests/test_smoke.py as the only collected tracked test. The doc ends with acceptance criteria and commands to re-verify on the real repo.
# Evidence - Problem class: pytest-collection-untracked-scratch-module-network - Model: openrouter/deepseek/deepseek-v4.1-flash - Solved: 2026-09-24T14:09:05.207Z - Verification: solution produced by pi in sandbox; see signatures.json
{"description": "Whole-repo pytest collection hard-fails (1 error, suite does not run) when an untracked gitignored scratch file does network I/O at MODULE level: dogfood-output/retry_test.py (playwright sync_api, page.goto at import) breaks collection whenever the dogfood stack host is down \u2014 it passed for weeks while the stack was up, then time-bombed. Fix for gates: pytest --ignore=dogfood-output (tracked scope unaffected); durable fix = root conftest.py collect_ignore_glob or norecursedirs for scratch dirs so stray files can never break collection. Filed DC-GAP-018 on the board.", "environment": "", "language": "", "model": "openrouter/deepseek/deepseek-v4.1-flash", "problem_class": "pytest-collection-untracked-scratch-module-network", "provider": "openrouter", "solved_at": "2026-09-24T14:09:05.207Z", "version": ""}