{"record":{"id":"dd000e96e6595963","repo":"Hmbown/CodeWhale","slug":"turn-interrupted","errorCode":null,"errorMessage":"turn interrupted","messagePattern":"turn interrupted","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/app-server/src/lib.rs","lineNumber":1248,"sourceCode":"        match status {\n            TurnTerminalStatus::Completed => Ok(json!({\n                \"thread_id\": thread_id,\n                \"status\": \"accepted\",\n                \"thread\": Value::Null,\n                \"threads\": [],\n                \"model\": Value::Null,\n                \"model_provider\": Value::Null,\n                \"cwd\": Value::Null,\n                \"approval_policy\": Value::Null,\n                \"sandbox\": Value::Null,\n                \"events\": [],\n                \"data\": { \"turn_id\": turn_id },\n            })),\n            TurnTerminalStatus::Failed => Err(anyhow!(\n                \"{}\",\n                error.unwrap_or_else(|| \"turn failed\".to_string())\n            )),\n            TurnTerminalStatus::Interrupted => Err(anyhow!(\n                \"{}\",\n                error.unwrap_or_else(|| \"turn interrupted\".to_string())\n            )),\n            TurnTerminalStatus::Canceled => Err(anyhow!(\n                \"{}\",\n                error.unwrap_or_else(|| \"turn canceled\".to_string())\n            )),\n        }\n    }\n\n    async fn stream_turn_events<W: AsyncWrite + Unpin>(\n        &self,\n        thread_id: &str,\n        turn_id: &str,\n        response_id: &str,\n        writer: &mut W,\n        since_seq: u64,\n    ) -> Result<(u64, TurnTerminalStatus, Option<String>)> {","sourceCodeStart":1230,"sourceCodeEnd":1266,"githubUrl":"https://github.com/Hmbown/CodeWhale/blob/0c42157ee52f9d55af2b506d71b46249910f77d3/crates/app-server/src/lib.rs#L1230-L1266","documentation":"Sentinel default for a turn that terminated with TurnTerminalStatus::Interrupted before completion but whose terminal event carried no explanatory error string. The turn was cut short mid-execution (e.g. by an interrupt signal) rather than failing a step, and the runtime supplied no further detail.","triggerScenarios":"Thrown at crates/app-server/src/lib.rs:1248 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Re-issue the turn if the interruption was unintended","Check whether a client or supervisor issued a cancel/interrupt for the session","Review runtime logs to identify what interrupted the turn","Retry after the interrupt source is removed"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0c42157ee52f9d55af2b506d71b46249910f77d3","analyzedAt":"2026-08-20T21:50:45.477Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}