Restrict guardian assessment parsing and circuit breaker visibility (#45680)

## What changed

Make `parse_guardian_assessment`, the rejection circuit breaker types and methods, and `AUTO_REVIEW_DENIAL_WINDOW_SIZE` crate-visible with `pub(crate)`. Update their re-exports in `guardian-reviewer` to match.

GitOrigin-RevId: 39521c7859936ebc9af570d7f1ad7b2348f3673d
This commit is contained in:
felixxia-oai
2026-09-15 11:28:51 +00:00
committed by copyberry
parent 1fd392f6b2
commit 954fa9057b
3 changed files with 13 additions and 13 deletions

View File

@@ -21,7 +21,7 @@ pub struct GuardianAssessment {
/// wrapper so transient formatting drift fails less noisily during dogfooding.
/// Non-JSON output is still a review failure; this is only a thin recovery path
/// for cases where the model wrapped the JSON in extra prose.
pub fn parse_guardian_assessment(text: Option<&str>) -> anyhow::Result<GuardianAssessment> {
pub(crate) fn parse_guardian_assessment(text: Option<&str>) -> anyhow::Result<GuardianAssessment> {
let Some(text) = text else {
anyhow::bail!("guardian review completed without an assessment payload");
};

View File

@@ -4,10 +4,10 @@ const MAX_CONSECUTIVE_CYBER_GUARDIAN_DENIALS_PER_TURN: u32 = 1;
const MAX_CONSECUTIVE_GUARDIAN_DENIALS_PER_TURN: u32 = 3;
const MAX_RECENT_CYBER_AUTO_REVIEW_DENIALS_PER_TURN: u32 = 1;
const MAX_RECENT_AUTO_REVIEW_DENIALS_PER_TURN: u32 = 10;
pub const AUTO_REVIEW_DENIAL_WINDOW_SIZE: usize = 50;
pub(crate) const AUTO_REVIEW_DENIAL_WINDOW_SIZE: usize = 50;
#[derive(Debug, Default)]
pub struct GuardianRejectionCircuitBreaker {
pub(crate) struct GuardianRejectionCircuitBreaker {
turns: std::collections::HashMap<String, GuardianRejectionCircuitBreakerTurn>,
}
@@ -19,7 +19,7 @@ struct GuardianRejectionCircuitBreakerTurn {
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum GuardianRejectionCircuitBreakerPolicy {
pub(crate) enum GuardianRejectionCircuitBreakerPolicy {
Standard,
CyberModel,
}
@@ -37,7 +37,7 @@ impl From<&codex_protocol::openai_models::ModelInfo> for GuardianRejectionCircui
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum GuardianRejectionCircuitBreakerAction {
pub(crate) enum GuardianRejectionCircuitBreakerAction {
Continue,
InterruptTurn {
consecutive_denials: u32,
@@ -46,11 +46,11 @@ pub enum GuardianRejectionCircuitBreakerAction {
}
impl GuardianRejectionCircuitBreaker {
pub fn clear_turn(&mut self, turn_id: &str) {
pub(crate) fn clear_turn(&mut self, turn_id: &str) {
self.turns.remove(turn_id);
}
pub fn record_denial(
pub(crate) fn record_denial(
&mut self,
turn_id: &str,
policy: GuardianRejectionCircuitBreakerPolicy,
@@ -83,7 +83,7 @@ impl GuardianRejectionCircuitBreaker {
}
}
pub fn record_non_denial(&mut self, turn_id: &str) {
pub(crate) fn record_non_denial(&mut self, turn_id: &str) {
let turn = self.turns.entry(turn_id.to_string()).or_default();
turn.consecutive_denials = 0;
Self::record_recent_review(turn, /*denied*/ false);

View File

@@ -23,11 +23,11 @@ mod settings;
pub use assessment::GuardianAssessment;
pub use assessment::guardian_output_contract_prompt;
pub use assessment::guardian_output_schema;
pub use assessment::parse_guardian_assessment;
pub use circuit_breaker::AUTO_REVIEW_DENIAL_WINDOW_SIZE;
pub use circuit_breaker::GuardianRejectionCircuitBreaker;
pub use circuit_breaker::GuardianRejectionCircuitBreakerAction;
pub use circuit_breaker::GuardianRejectionCircuitBreakerPolicy;
pub(crate) use assessment::parse_guardian_assessment;
pub(crate) use circuit_breaker::AUTO_REVIEW_DENIAL_WINDOW_SIZE;
pub(crate) use circuit_breaker::GuardianRejectionCircuitBreaker;
pub(crate) use circuit_breaker::GuardianRejectionCircuitBreakerAction;
pub(crate) use circuit_breaker::GuardianRejectionCircuitBreakerPolicy;
pub use model::ReviewModel;
pub use model::select_review_model;
pub use outcome::GuardianReviewError;