use super::*;
#[test]
fn responses_honors_the_configured_window_as_a_local_safety_limit() {
let ceiling = super::initial_context_input_budget(
BackendKind::Openai,
OpenAiApi::Responses,
Some(32_768),
80,
Some(Cognition::Meticulous),
None,
ChatCompletionsCapability {
cognition: Some(true),
..Default::default()
},
ReasoningReplayScope::CurrentUserTurn,
None,
None,
);
assert_eq!(
ceiling,
Some(16_768),
"the Responses seam projects the RESERVED ceiling the loop enforces (#1528)"
);
assert_eq!(
super::initial_context_input_budget(
BackendKind::Openai,
OpenAiApi::Responses,
None,
80,
Some(Cognition::Meticulous),
None,
ChatCompletionsCapability {
cognition: Some(true),
..Default::default()
},
ReasoningReplayScope::CurrentUserTurn,
None,
None,
),
None,
"an UNset num_ctx (cloud Responses) still has no local ceiling",
);
}
#[test]
fn seam_projects_the_responses_budget_state_for_every_cognition() {
use super::ResponsesBudgetState;
let capability = ChatCompletionsCapability {
cognition: Some(true),
..Default::default()
};
let cognitions = [
None,
Some(Cognition::Zen),
Some(Cognition::Rational),
Some(Cognition::Thoughtful),
Some(Cognition::Meticulous),
];
let combos = [
(Some(32_768u32), None, None),
(Some(65_536), Some(40_000), None),
(Some(32_768), None, Some(8_000)),
(Some(32_768), Some(6_068), Some(26_214)),
(None, Some(12_000), Some(20_000)),
(None, None, None),
];
for cognition in cognitions {
for (num_ctx, max_ok_input, safe_context) in combos {
let seam = super::initial_context_input_budget(
BackendKind::Openai,
OpenAiApi::Responses,
num_ctx,
80,
cognition,
None,
capability,
ReasoningReplayScope::CurrentUserTurn,
max_ok_input,
safe_context,
);
let state = ResponsesBudgetState::new(
num_ctx,
80,
resolve_output_allowance(None, cognition),
max_ok_input,
safe_context,
None,
);
assert_eq!(
seam,
state
.soft_send_budget()
.map(|budget| u32::try_from(budget).unwrap()),
"the seam must project the state's authoritative input budget \
(num_ctx={num_ctx:?}, max_ok={max_ok_input:?}, safe={safe_context:?}, \
cognition={cognition:?})",
);
}
}
let meticulous = super::initial_context_input_budget(
BackendKind::Openai,
OpenAiApi::Responses,
Some(32_768),
80,
Some(Cognition::Meticulous),
None,
capability,
ReasoningReplayScope::CurrentUserTurn,
None,
None,
);
assert_eq!(meticulous, Some(16_768));
assert_ne!(meticulous, Some(26_214), "no un-reserved over-report");
}