fix(core): keep truncated forks materialized

This commit is contained in:
Friel
2026-04-02 01:11:19 +00:00
parent 54e51e3577
commit 5dbd418beb
2 changed files with 14 additions and 9 deletions

View File

@@ -322,15 +322,19 @@ impl AgentControl {
)
.await;
}
if let SpawnAgentForkMode::LastNTurns(last_n_turns) = fork_mode {
forked_rollout_items =
truncate_rollout_to_last_n_fork_turns(&forked_rollout_items, *last_n_turns);
match fork_mode {
SpawnAgentForkMode::FullHistory => {
let fork_boundary = fork_reference_user_message_boundary(&forked_rollout_items);
forked_rollout_items.push(RolloutItem::ForkReference(ForkReferenceItem {
rollout_path: rollout_path.clone(),
nth_user_message: fork_boundary,
}));
}
SpawnAgentForkMode::LastNTurns(last_n_turns) => {
forked_rollout_items =
truncate_rollout_to_last_n_fork_turns(&forked_rollout_items, *last_n_turns);
}
}
let fork_boundary = fork_reference_user_message_boundary(&forked_rollout_items);
forked_rollout_items.push(RolloutItem::ForkReference(ForkReferenceItem {
rollout_path: rollout_path.clone(),
nth_user_message: fork_boundary,
}));
let mut output =
FunctionCallOutputPayload::from_text(FORKED_SPAWN_AGENT_OUTPUT_MESSAGE.to_string());

View File

@@ -35,7 +35,8 @@ fn test_config(codex_home: &Path) -> RolloutConfig {
fn write_session_file(root: &Path, ts: &str, uuid: Uuid) -> std::io::Result<PathBuf> {
let day_dir = root.join("sessions/2025/01/03");
fs::create_dir_all(&day_dir)?;
let path = day_dir.join(format!("rollout-{ts}-{uuid}.jsonl"));
let file_ts = ts.replace(':', "-");
let path = day_dir.join(format!("rollout-{file_ts}-{uuid}.jsonl"));
let mut file = File::create(&path)?;
let meta = serde_json::json!({
"timestamp": ts,