{"record":{"id":"6d101635aa48abb3","repo":"deepseek-ai/deepseek-harness","slug":"turn-end-event-requires-a-string-data-reason-kind","errorCode":null,"errorMessage":"turn/end event requires a string data.reason.kind","messagePattern":"turn/end event requires a string data\\.reason\\.kind","errorType":"exception","errorClass":"SdkProtocolError","httpStatus":null,"severity":"error","filePath":"python/sdk/src/deepseek_harness/api.py","lineNumber":240,"sourceCode":"    return \"\"\n\n\ndef finish_reason(events: list[JsonObject]) -> str | None:\n    \"\"\"Return the last turn-ending kind.\n\n    The input must contain root-session events from one owned run interval.\n\n    Raises:\n        SdkProtocolError: The last ``turn/end`` has no string reason kind.\n    \"\"\"\n    for event in reversed(events):\n        if event.get(\"type\") != \"turn/end\":\n            continue\n        data = event.get(\"data\")\n        reason = data.get(\"reason\") if isinstance(data, dict) else None\n        kind = reason.get(\"kind\") if isinstance(reason, dict) else None\n        if not isinstance(kind, str):\n            raise SdkProtocolError(\"turn/end event requires a string data.reason.kind\")\n        return kind\n    return None\n","sourceCodeStart":222,"sourceCodeEnd":243,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/python/sdk/src/deepseek_harness/api.py#L222-L243","documentation":"Error \"turn/end event requires a string data.reason.kind\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at python/sdk/src/deepseek_harness/api.py:240 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure turn/end events carry a string data.reason.kind; fix the producer of the malformed event."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b150a551b8d465e31e418e1b2eaf5e79bbb7d28e","analyzedAt":"2026-08-24T18:12:29.105Z","schemaVersion":2},"datasetVersion":"2026-08-24T22:17:12.610Z"}