@@ -3862,8 +3862,6 @@ async def _post_task(self, task: Task, assignee_id: str) -> None:
38623862 # Record the start time when a task is posted
38633863 self ._task_start_times [task .id ] = time .time ()
38643864
3865- # Ensure assignee mapping exists for retries and follow-up handling.
3866- self ._assignees [task .id ] = assignee_id
38673865 task .assigned_worker_id = assignee_id
38683866
38693867 task_started_event = TaskStartedEvent (
@@ -4544,29 +4542,15 @@ async def _handle_failed_task(self, task: Task) -> bool:
45444542 task , for_failure = True , error_message = detailed_error
45454543 )
45464544
4547- # Validate and fallback recovery strategy based on enabled_strategies
4548- config_strategies = self .failure_handling_config .enabled_strategies
4545+ # Fallback to first enabled strategy if no strategy recommended
45494546 if recovery_decision .recovery_strategy is None :
4550- # No strategy recommended - use fallback
4547+ config_strategies = self . failure_handling_config . enabled_strategies
45514548 # config_strategies is None means all enabled, use RETRY as default
45524549 # otherwise use the first enabled strategy from user's config
45534550 if config_strategies is None :
45544551 recovery_decision .recovery_strategy = RecoveryStrategy .RETRY
45554552 else :
45564553 recovery_decision .recovery_strategy = config_strategies [0 ]
4557- elif config_strategies is not None :
4558- # Strategy recommended - validate it's in enabled list
4559- if recovery_decision .recovery_strategy not in config_strategies :
4560- # LLM recommended a disabled strategy, use first enabled
4561- recommended = recovery_decision .recovery_strategy .value
4562- enabled_list = [s .value for s in config_strategies ]
4563- fallback = config_strategies [0 ].value
4564- logger .warning (
4565- f"Task { task .id } : LLM recommended '{ recommended } ' "
4566- f"but it's not in enabled_strategies { enabled_list } . "
4567- f"Using '{ fallback } ' instead."
4568- )
4569- recovery_decision .recovery_strategy = config_strategies [0 ]
45704554
45714555 strategy_str = recovery_decision .recovery_strategy .value
45724556 logger .info (
@@ -5324,12 +5308,11 @@ async def _listen_to_channel(self) -> None:
53245308 f"Issues: { ', ' .join (quality_eval .issues )} "
53255309 )
53265310
5327- # Validate and fallback recovery strategy based on
5328- # enabled_strategies
5329- config = self .failure_handling_config
5330- config_strategies = config .enabled_strategies
5311+ # Fallback to first enabled strategy if none
5312+ # recommended
53315313 if quality_eval .recovery_strategy is None :
5332- # No strategy recommended - use fallback
5314+ config = self .failure_handling_config
5315+ config_strategies = config .enabled_strategies
53335316 if config_strategies is None :
53345317 quality_eval .recovery_strategy = (
53355318 RecoveryStrategy .RETRY
@@ -5338,27 +5321,6 @@ async def _listen_to_channel(self) -> None:
53385321 quality_eval .recovery_strategy = (
53395322 config_strategies [0 ]
53405323 )
5341- elif config_strategies is not None :
5342- # Strategy recommended - validate it's enabled
5343- if (
5344- quality_eval .recovery_strategy
5345- not in config_strategies
5346- ):
5347- # LLM recommended a disabled strategy
5348- rec = quality_eval .recovery_strategy .value
5349- enabled = [
5350- s .value for s in config_strategies
5351- ]
5352- fallback = config_strategies [0 ].value
5353- logger .warning (
5354- f"Task { returned_task .id } : LLM "
5355- f"recommended '{ rec } ' but it's not in "
5356- f"enabled_strategies { enabled } . "
5357- f"Using '{ fallback } ' instead."
5358- )
5359- quality_eval .recovery_strategy = (
5360- config_strategies [0 ]
5361- )
53625324
53635325 # Preserve assignee before cleanup - in normal
53645326 # flow, a task must be assigned before it can fail
0 commit comments