Snapshot resolved settings for each model step (#40651)

## Why

Thread settings can change while a turn is running, and delegated review or
compaction steps can select a different model. Each request needs a consistent
set of settings resolved against the model that will execute it.

## What changed

- Capture immutable resolved settings for each model step, including model
  metadata, reasoning options, service tier, approvals, and personality.
- Keep in-flight steps on their captured settings while applying thread updates
  to subsequent work.
- Resolve inherited reasoning summaries and filter service tiers against the
  selected model and feature configuration for review and compaction steps.

## Testing

Added coverage for settings updates during paused turns, model changes,
previous-model compaction, review-model defaults, and service-tier filtering.

GitOrigin-RevId: fca4b3b305379f1bf26a5cac75ee0dd1747ac1f6
This commit is contained in:
joeflorencio-openai
2026-08-25 17:41:22 +00:00
committed by copyberry
parent ba6cf9c692
commit 68301fa45f
68 changed files with 1393 additions and 516 deletions
+1 -1
View File
@@ -193,7 +193,7 @@ async fn exec_command_with_tty(
chunk_id: generate_chunk_id(),
wall_time,
raw_output: collected,
truncation_policy: turn.model_info.truncation_policy.into(),
truncation_policy: turn.model_info().truncation_policy.into(),
max_output_tokens: None,
process_id: response_process_id,
exit_code,
@@ -741,7 +741,7 @@ impl UnifiedExecProcessManager {
truncation_policy: context
.step_context
.turn
.model_info
.model_info()
.truncation_policy
.into(),
max_output_tokens: request.max_output_tokens,