Kevin
Daemon Test Harness — collection, gates and process-wide state
pytest.ini testpaths feed one process: every conftest is imported at COLLECTION, before any test runs, so anything one of them mutates globally (the asyncio event loop policy) belongs to the whole session. The two ratchets — tier markers and event loop policy — plus where CI selects by marker.
Provenance
This drawing is generated, not drawn. It is rebuilt from the source files below, so when they change the picture changes — a diagram here cannot quietly describe a system that no longer works this way.
- daemon/conftest.py
- daemon/pytest.ini
- daemon/tests/test_marker_guard.py
- daemon/tests/test_event_loop_policy_guard.py
- daemon/src/license_server/tests/conftest.py
- daemon/scripts/coverage_gate.py
- daemon/config/coverage-gates.yaml
- daemon/scripts/coverage_entry_check.py
- kevin_subprocess.py
- daemon/src/proc_text.py
- daemon/tests/test_child_encoding_guard.py
- daemon/tests/test_kevin_subprocess.py
- .gitea/workflows/daemon-gates.yml