25 lines
660 B
Python
25 lines
660 B
Python
|
|
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."""
|