{"record":{"id":"0c273ed857802ade","repo":"openai/codex","slug":"turn-completed-event-not-received","errorCode":null,"errorMessage":"turn completed event not received","messagePattern":"turn completed event not received","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"sdk/python/src/openai_codex/_run.py","lineNumber":85,"sourceCode":"\ndef _collect_turn_result(stream: Iterator[Notification], *, turn_id: str) -> TurnResult:\n    completed: TurnCompletedNotification | None = None\n    items: list[ThreadItem] = []\n    usage: ThreadTokenUsage | None = None\n\n    for event in stream:\n        payload = event.payload\n        if isinstance(payload, ItemCompletedNotification) and payload.turn_id == turn_id:\n            items.append(payload.item)\n            continue\n        if isinstance(payload, ThreadTokenUsageUpdatedNotification) and payload.turn_id == turn_id:\n            usage = payload.token_usage\n            continue\n        if isinstance(payload, TurnCompletedNotification) and payload.turn.id == turn_id:\n            completed = payload\n\n    if completed is None:\n        raise RuntimeError(\"turn completed event not received\")\n\n    _raise_for_failed_turn(completed.turn)\n    turn = completed.turn\n    return TurnResult(\n        id=turn.id,\n        status=turn.status,\n        error=turn.error,\n        started_at=turn.started_at,\n        completed_at=turn.completed_at,\n        duration_ms=turn.duration_ms,\n        final_response=_final_assistant_response_from_items(items),\n        items=items,\n        usage=usage,\n    )\n\n\nasync def _collect_async_turn_result(\n    stream: AsyncIterator[Notification], *, turn_id: str","sourceCodeStart":67,"sourceCodeEnd":103,"githubUrl":"https://github.com/openai/codex/blob/339751715c64496cb86246bfb3935f40e309dd3d/sdk/python/src/openai_codex/_run.py#L67-L103","documentation":"Error \"turn completed event not received\" thrown in openai/codex.","triggerScenarios":"Thrown at sdk/python/src/openai_codex/_run.py:85 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the connection to the Codex runtime and retry the turn; the completed event was never delivered."],"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"}