{"record":{"id":"b48a4055e308d599","repo":"openai/codex","slug":"duplicate-codex-turn-start-for-codex-turn-id","errorCode":null,"errorMessage":"duplicate codex turn start for {codex_turn_id}","messagePattern":"duplicate codex turn start for (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"codex-rs/rollout-trace/src/reducer/thread.rs","lineNumber":135,"sourceCode":"        thread.execution.status = match status {\n            RolloutStatus::Running => ExecutionStatus::Running,\n            RolloutStatus::Completed => ExecutionStatus::Completed,\n            RolloutStatus::Failed => ExecutionStatus::Failed,\n            RolloutStatus::Aborted => ExecutionStatus::Aborted,\n        };\n        Ok(())\n    }\n\n    /// Starts a Codex turn inside an existing thread.\n    pub(super) fn start_codex_turn(\n        &mut self,\n        seq: RawEventSeq,\n        wall_time_unix_ms: i64,\n        codex_turn_id: CodexTurnId,\n        thread_id: String,\n    ) -> Result<()> {\n        if self.rollout.codex_turns.contains_key(&codex_turn_id) {\n            bail!(\"duplicate codex turn start for {codex_turn_id}\");\n        }\n\n        self.thread_mut(&thread_id)?;\n\n        self.rollout.codex_turns.insert(\n            codex_turn_id.clone(),\n            CodexTurn {\n                codex_turn_id,\n                thread_id,\n                execution: ExecutionWindow {\n                    started_at_unix_ms: wall_time_unix_ms,\n                    started_seq: seq,\n                    ended_at_unix_ms: None,\n                    ended_seq: None,\n                    status: ExecutionStatus::Running,\n                },\n                input_item_ids: Vec::new(),\n            },","sourceCodeStart":117,"sourceCodeEnd":153,"githubUrl":"https://github.com/openai/codex/blob/339751715c64496cb86246bfb3935f40e309dd3d/codex-rs/rollout-trace/src/reducer/thread.rs#L117-L153","documentation":"Error \"duplicate codex turn start for {codex_turn_id}\" thrown in openai/codex.","triggerScenarios":"Thrown at codex-rs/rollout-trace/src/reducer/thread.rs:135 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"339751715c64496cb86246bfb3935f40e309dd3d","analyzedAt":"2026-08-25T05:35:09.876Z","schemaVersion":2},"datasetVersion":"2026-08-25T06:17:31.827Z"}