mirror of
https://github.com/openai/codex.git
synced 2026-11-15 06:51:36 +00:00
## Why Guardian authorization reviews need host-verified `request_user_input` answers to remain aligned with thread history across compaction, resume, and rollback. ## What changed - Record verified question-and-answer pairs in retained thread context when `GuardianThreadContext` is enabled, and source both local and delegated Guardian review evidence from that context. - Preserve complete answer records within the evidence budget. Mark authorization context incomplete when records are unavailable or oversized, and defer cached fast approvals in that case. - Keep the existing runtime-only answer path for threads that do not enable the thread-owned context. ## Testing - Cover answer retention through compaction and resume, removal after rollback, source-call eviction, oversized answers, delegated review evidence, and legacy behavior. GitOrigin-RevId: 01f6f4541515434a0d00fdde318ff59f2f8bd2eb
27 lines
866 B
Rust
27 lines
866 B
Rust
//! Records host-verified facts at the same persistence boundary as context checkpoints.
|
|
|
|
use codex_history::RetainedContextEvent;
|
|
use codex_history::RolloutItem;
|
|
|
|
use super::Session;
|
|
use super::thread_settings;
|
|
|
|
impl Session {
|
|
pub(crate) async fn record_retained_context(&self, mut event: RetainedContextEvent) {
|
|
event.bound();
|
|
// Share the checkpoint persistence lock so a fact cannot land on the wrong side
|
|
// of the checkpoint/suffix boundary. Ephemeral threads use the same live state.
|
|
let _guard = thread_settings::acquire_persistence_lock(self).await;
|
|
if self
|
|
.state
|
|
.lock()
|
|
.await
|
|
.history
|
|
.record_retained_context(&event)
|
|
{
|
|
self.persist_rollout_items(&[RolloutItem::RetainedContext(event)])
|
|
.await;
|
|
}
|
|
}
|
|
}
|