{"record":{"id":"7d34426ae56dea4f","repo":"agentscope-ai/agentscope","slug":"team-team-id-r-has-no-resolvable-leader-worker","errorCode":null,"errorMessage":"Team {team.id!r} has no resolvable leader; worker session {session_id!r} cannot run.","messagePattern":"Team (.+?) has no resolvable leader; worker session (.+?) cannot run\\.","errorType":"http","errorClass":"HTTPException","httpStatus":409,"severity":"error","filePath":"src/agentscope/app/_service/_chat.py","lineNumber":735,"sourceCode":"                        # nothing to be a member of, so run teamless.\n                        logger.warning(\n                            \"Session %r points at team %r which no longer \"\n                            \"exists; running teamless.\",\n                            session_id,\n                            session_record.team_id,\n                        )\n                    elif team.session_id == session_record.id:\n                        team_ctx = _LeaderContext()\n                    else:\n                        leader = await _resolve_team_leader(\n                            self._storage,\n                            user_id,\n                            team,\n                        )\n                        if leader is None:\n                            # Unreachable while the data is consistent:\n                            # deleting a leader dissolves the team.\n                            raise HTTPException(\n                                status_code=409,\n                                detail=(\n                                    f\"Team {team.id!r} has no resolvable \"\n                                    f\"leader; worker session \"\n                                    f\"{session_id!r} cannot run.\"\n                                ),\n                            )\n                        team_ctx = _WorkerContext(\n                            leader_session_id=leader.session_id,\n                            leader_agent_id=leader.agent.id,\n                            leader_name=leader.name,\n                        )\n\n                workspace = await self._workspace_manager.get_workspace(\n                    user_id,\n                    agent_id,\n                    session_id,\n                    session_record.config.workspace_id,","sourceCodeStart":717,"sourceCodeEnd":753,"githubUrl":"https://github.com/agentscope-ai/agentscope/blob/e90f1c7592896cc95f6e5ee506194f533378247d/src/agentscope/app/_service/_chat.py#L717-L753","documentation":"A defensive 409 raised in _run_impl when resolving the leader of a team returns None for a worker session. Normally impossible: deleting a leader dissolves the team, so a team without a resolvable leader indicates inconsistent persisted data (e.g. partial deletion, manual DB edits, or a migration bug). The worker session cannot run because leader routing is required.","triggerScenarios":"Running a worker-agent session whose team record's leader member is missing or unresolvable in storage. Essentially only occurs with data inconsistency rather than a normal API mistake.","commonSituations":"Concurrent leader deletion and run start racing past the dissolve step; out-of-band database modifications; bugs in older versions' team-dissolution logic; restoring a partial DB backup.","solutions":["Recreate or repair the team: re-register the leader agent so the team has a resolvable leader","Dissolve and re-create the team to restore consistency, then start a new worker session","Audit team/member records in storage for dangling leader references","If it recurs, check for concurrent deletion races or manual DB edits and upgrade to the latest version"],"exampleFix":"# before\nawait chat_service.run(user_id, worker_agent_id, session_id, ...)  # 409\n# after: repair team leadership first\nteam = await team_service.recreate_with_leader(team_id, leader_agent_id)\nawait chat_service.run(user_id, worker_agent_id, session_id, ...)","handlingStrategy":"fallback","validationCode":"team = await team_client.get_team(agent_id=worker_agent_id)\nif team is None or not await team_client.has_resolvable_leader(team.id):\n    team = await team_client.recreate_with_leader(...)\nawait chat_client.run(user_id, worker_agent_id, session_id, ...)","typeGuard":null,"tryCatchPattern":"try:\n    await chat_service.run(user_id, agent_id, session_id, ...)\nexcept HTTPStatusError as e:\n    if e.response.status_code == 409 and \"no resolvable leader\" in e.response.text:\n        await repair_team_leadership(agent_id)\n        await chat_service.run(user_id, agent_id, session_id, ...)\n    else:\n        raise","preventionTips":["Avoid manual edits to team/member tables; use the API","Monitor for dangling leader references after deletions or migrations","Upgrade to the latest version to pick up team-dissolution fixes"],"tags":["team","conflict-409","leader","data-consistency"],"backgroundTag":"invalid-state-conflict","analyzedSha":"e90f1c7592896cc95f6e5ee506194f533378247d","analyzedAt":"2026-08-28T18:24:12.087Z","schemaVersion":2},"datasetVersion":"2026-08-28T21:17:43.275Z"}