{"record":{"id":"2fa8c6219c3c2610","repo":"openai/codex","slug":"inference-request-payload-had-non-array-input","errorCode":null,"errorMessage":"inference request payload {} had non-array input","messagePattern":"inference request payload (.+?) had non-array input","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"codex-rs/rollout-trace/src/reducer/conversation.rs","lineNumber":50,"sourceCode":"    /// snapshot for the thread so repeated history reuses ids while newly inserted\n    /// items remain distinct.\n    pub(super) fn reduce_inference_request(\n        &mut self,\n        wall_time_unix_ms: i64,\n        inference_call_id: &InferenceCallId,\n        thread_id: &str,\n        codex_turn_id: &str,\n        request_payload: &RawPayloadRef,\n    ) -> Result<Vec<String>> {\n        let payload = self.read_payload_json(request_payload)?;\n        let Some(input) = payload.get(\"input\") else {\n            bail!(\n                \"inference request payload {} did not contain input\",\n                request_payload.raw_payload_id\n            );\n        };\n        let Some(request_items) = input.as_array() else {\n            bail!(\n                \"inference request payload {} had non-array input\",\n                request_payload.raw_payload_id\n            );\n        };\n\n        let items = normalize::normalize_model_items(request_items, request_payload)?;\n\n        let previous_response_id = payload.get(\"previous_response_id\").and_then(Value::as_str);\n        // After compaction, the next full request is compared against the installed replacement\n        // history, not the pre-compaction prompt. Any repeated developer/context prefix that Codex\n        // reinjects must therefore become a fresh post-compaction conversation item.\n        let post_compaction_snapshot = if previous_response_id.is_none() {\n            self.pending_compaction_replacement_item_ids\n                .get(thread_id)\n                .cloned()\n        } else {\n            None\n        };","sourceCodeStart":32,"sourceCodeEnd":68,"githubUrl":"https://github.com/openai/codex/blob/339751715c64496cb86246bfb3935f40e309dd3d/codex-rs/rollout-trace/src/reducer/conversation.rs#L32-L68","documentation":"Error \"inference request payload {} had non-array input\" thrown in openai/codex.","triggerScenarios":"Thrown at codex-rs/rollout-trace/src/reducer/conversation.rs:50 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"}