[pytest] testpaths = tests_2.0 python_files = test_*.py python_classes = Test* python_functions = test_* addopts = -m "not live" markers = spec: JSON API contract tests (current spec only) live: Umbrella marker for ALL tests requiring real models/network (excluded from default run) wet: Umbrella for Portfolio Discovery compatible tests (see TESTING-DETAILS.md) live_push: Alias for wet; push live tests (require env) live_list: Alias for wet; list human live tests (require env) live_pull: Isolated Cache WRITE - pull tests (separate run required) live_clone: Isolated Cache WRITE - clone tests (separate run required, ADR-007 Phase 1 + ADR-018 Phase 0b) live_run: Opt-in run command tests with real models (require user cache model) live_stop_tokens: Opt-in stop token tests with real models (Issue #32, ADR-009) live_e2e: E2E tests with real models and server (require HF_HOME, ADR-011) live_vision_pipe: Vision→Geo pipe integration smoke tests (Sessions 72-75, require vision+text models) show_model_portfolio: Display E2E test portfolio (convenience, no testing) issue27: Real-model health policy tests (opt-in; read-only user cache) slow: Tests that take >1 minute to run filterwarnings = ignore::urllib3.exceptions.NotOpenSSLWarning