{"record":{"id":"f00598b78a845350","repo":"openai/codex","slug":"interaction-edge-was-observed-with-conflicting","errorCode":null,"errorMessage":"interaction edge {} was observed with conflicting endpoints","messagePattern":"interaction edge (.+?) was observed with conflicting endpoints","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"codex-rs/rollout-trace/src/reducer/tool/agents.rs","lineNumber":655,"sourceCode":"            kind: pending.kind,\n            source: pending.source,\n            target: TraceAnchor::ConversationItem {\n                item_id: target_item_id.clone(),\n            },\n            started_at_unix_ms: pending.started_at_unix_ms,\n            ended_at_unix_ms: pending.ended_at_unix_ms,\n            carried_item_ids: vec![target_item_id],\n            carried_raw_payload_ids: pending.carried_raw_payload_ids,\n        })\n    }\n\n    fn upsert_interaction_edge(&mut self, edge: InteractionEdge) -> Result<()> {\n        if let Some(existing) = self.rollout.interaction_edges.get_mut(&edge.edge_id) {\n            if existing.kind != edge.kind\n                || existing.source != edge.source\n                || existing.target != edge.target\n            {\n                bail!(\n                    \"interaction edge {} was observed with conflicting endpoints\",\n                    edge.edge_id\n                );\n            }\n            existing.started_at_unix_ms = existing.started_at_unix_ms.min(edge.started_at_unix_ms);\n            existing.ended_at_unix_ms = match (existing.ended_at_unix_ms, edge.ended_at_unix_ms) {\n                (Some(existing_ended), Some(edge_ended)) => Some(existing_ended.max(edge_ended)),\n                (None, ended) | (ended, None) => ended,\n            };\n            extend_unique(&mut existing.carried_item_ids, edge.carried_item_ids);\n            extend_unique(\n                &mut existing.carried_raw_payload_ids,\n                edge.carried_raw_payload_ids,\n            );\n            return Ok(());\n        }\n\n        self.rollout","sourceCodeStart":637,"sourceCodeEnd":673,"githubUrl":"https://github.com/openai/codex/blob/339751715c64496cb86246bfb3935f40e309dd3d/codex-rs/rollout-trace/src/reducer/tool/agents.rs#L637-L673","documentation":"Error \"interaction edge {} was observed with conflicting endpoints\" thrown in openai/codex.","triggerScenarios":"Thrown at codex-rs/rollout-trace/src/reducer/tool/agents.rs:655 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"}