{"record":{"id":"0a4d82c76a1addaf","repo":"zed-industries/zed","slug":"chatgpt-subscription-compaction-returned-multiple","errorCode":null,"errorMessage":"ChatGPT subscription compaction returned multiple replacement contexts","messagePattern":"ChatGPT subscription compaction returned multiple replacement contexts","errorType":"exception","errorClass":"LanguageModelCompletionError","httpStatus":null,"severity":"error","filePath":"crates/openai_subscribed/src/openai_subscribed.rs","lineNumber":842,"sourceCode":"                        responses_request,\n                        &extra_headers,\n                    )\n                    .await\n                    .map_err(LanguageModelCompletionError::from)\n                })\n                .await?;\n            let mapper = OpenAiResponseEventMapper::new(PROVIDER_ID);\n            let mut event_stream = language_model::stream_in_background(\n                mapper.map_stream(response_stream.boxed()).boxed(),\n                cx.background_executor().clone(),\n            );\n            let mut compacted_context = None;\n            let mut usage = language_model::TokenUsage::default();\n\n            while let Some(event) = event_stream.next().await {\n                match event? {\n                    LanguageModelCompletionEvent::Compaction(\n                        language_model::CompactionUpdate::Finished(context),\n                    ) => {\n                        if compacted_context.replace(context).is_some() {\n                            return Err(LanguageModelCompletionError::Other(anyhow!(\n                                \"ChatGPT subscription compaction returned multiple replacement contexts\"\n                            )));\n                        }\n                    }\n                    LanguageModelCompletionEvent::UsageUpdate(updated_usage) => {\n                        usage = updated_usage;\n                    }\n                    _ => {}\n                }\n            }\n\n            let context = compacted_context.ok_or_else(|| {\n                LanguageModelCompletionError::Other(anyhow!(\n                    \"ChatGPT subscription compaction returned no replacement context\"\n                ))","sourceCodeStart":824,"sourceCodeEnd":860,"githubUrl":"https://github.com/zed-industries/zed/blob/5a9b9558db01a6b906cec2fb70a797affdc58cdd/crates/openai_subscribed/src/openai_subscribed.rs#L824-L860","documentation":"While consuming the compaction event stream, more than one CompactionUpdate::Finished event arrived. The protocol allows exactly one replacement context per compaction, so a second one indicates the upstream response stream is malformed or duplicated.","triggerScenarios":"Thrown at crates/openai_subscribed/src/openai_subscribed.rs:810 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry the compaction request; a duplicated finished event is usually a transient stream glitch","If it reproduces consistently, capture the raw event stream and report it — the model/endpoint is emitting multiple compaction completions"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5a9b9558db01a6b906cec2fb70a797affdc58cdd","analyzedAt":"2026-08-20T19:29:52.058Z","contentChangedAt":"2026-08-20T19:29:52.058Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}