from repo_registry.core.service import RegistryService from repo_registry.repo_ingestion.git import GitIngestionService from repo_registry.storage.sqlite import RegistryStore class RecordingAgenticReviewer: reviewer_id = "test-agent" policy_version = "agentic-review-policy/test" def __init__(self): self.requests = [] def review(self, request): self.requests.append(request) def test_configured_agentic_reviewer_receives_graph_gates_and_criteria(tmp_path): source = tmp_path / "repo" source.mkdir() (source / "README.md").write_text("# Agentic Review\nReports health.\n", encoding="utf-8") (source / "app.py").write_text('@app.get("/health")\ndef health():\n return {}\n', encoding="utf-8") store = RegistryStore(tmp_path / "registry.sqlite3") store.initialize() reviewer = RecordingAgenticReviewer() service = RegistryService( store, ingestion=GitIngestionService(tmp_path / "checkouts"), agentic_reviewer=reviewer, ) repository = service.register_repository(name="Agentic Review", url=str(source)) summary = service.analyze_repository( repository.id, use_llm_assistance=False, agentic_review=True, ) graph = service.candidate_graph(repository.id, summary.analysis_run.id) decisions = service.list_review_decisions(repository.id, summary.analysis_run.id) assert len(reviewer.requests) == 1 request = reviewer.requests[0] assert request.repository.id == repository.id assert request.candidate_graph.analysis_run.id == summary.analysis_run.id assert request.criteria_version == "repo-scoping-quality-criteria/v1" assert request.quality_gate_outcomes == [] assert graph.abilities[0].capabilities[0].status == "candidate" assert decisions[0].action == "agentic_review_completed" assert "reviewer=test-agent" in decisions[0].notes