a12aead3e5
Run phase2-5-qwen25-prompt-mut-001 fallito perché qwen-2.5-72b ha emesso empty completion ripetutamente; le 3 retry tenacity in LLMClient.complete si sono esaurite e l'exception è bollata fino a run_phase1, marcando l'intero run come failed (perso ~$0.017 di tier C). Fix: HypothesisAgent.propose() ora cattura EmptyCompletionError nel loop max_attempts trattandola come parse-fail "empty_completion" e ritentando con max_retries+1 tentativi (cumulativo: max_retries tenacity × max_attempts loop esterno, default 3×3 = 9 retry effettive). Se TUTTI i tentativi falliscono con empty, ritorna proposal con strategy=None e parse_error="empty_completion: ...", lasciando l'orchestrator continuare con quel genome marcato come "fitness=0" senza crash totale del run. +2 test: success dopo 1 empty + retry; failure totale dopo 3 empty consecutive. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>