import pytest from src.services import knowledge_service as knowledge_service_module from src.services.knowledge_service import KnowledgeService class _BrokenDbContext: async def __aenter__(self): raise RuntimeError("db pool exhausted") async def __aexit__(self, exc_type, exc, tb): return False @pytest.mark.asyncio async def test_knowledge_list_entries_fails_soft_when_readback_breaks(monkeypatch) -> None: monkeypatch.setattr( knowledge_service_module, "get_db_context", lambda: _BrokenDbContext(), ) service = KnowledgeService.__new__(KnowledgeService) response = await service.list_entries(limit=50) assert response.items == [] assert response.total == 0 assert response.categories == [] assert response.readback_status == "degraded" assert response.operator_stage == "knowledge_readback_degraded_ai_controlled_repair" assert response.next_step == "queue_ai_controlled_km_readback_retry_tagging_and_connector_verifier" assert response.writes_on_read is False assert response.manual_review_required is False