from __future__ import annotations from dataclasses import dataclass from typing import Protocol from repo_registry.acceptance.gates import QualityGateOutcome from repo_registry.core.models import CandidateGraph, Repository @dataclass(frozen=True) class AgenticReviewRequest: repository: Repository candidate_graph: CandidateGraph criteria_version: str quality_gate_outcomes: list[QualityGateOutcome] context: str class AgenticReviewer(Protocol): reviewer_id: str policy_version: str def review(self, request: AgenticReviewRequest) -> None: """Review a candidate graph and record decisions through the caller."""