From c508867e0ea090930b86e2508b736ca4ee544037 Mon Sep 17 00:00:00 2001 From: Natalie Date: Tue, 14 Apr 2026 18:00:29 -0700 Subject: [PATCH] =?UTF-8?q?fix(auto-commit):=20=F0=9F=90=9B=20handle=20cla?= =?UTF-8?q?ude=20recovery=20failure=20cases?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- src/auto_commit_service/tray/local_agent.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/auto_commit_service/tray/local_agent.py b/src/auto_commit_service/tray/local_agent.py index 2fbca69..436a1ca 100644 --- a/src/auto_commit_service/tray/local_agent.py +++ b/src/auto_commit_service/tray/local_agent.py @@ -345,7 +345,8 @@ class LocalCommitAgent: f"Diverged {repo_name}: {ahead}↑ {behind}↓ — invoking claude-code for recovery" ) - if _invoke_claude_recovery(repo_path, repo_name, upstream, ahead, behind): + claude_ok = _invoke_claude_recovery(repo_path, repo_name, upstream, ahead, behind) + if claude_ok: ahead2, behind2 = _ahead_behind(repo_path, upstream) if ahead2 == 0 and behind2 == 0: logger.info(f"Claude resolved {repo_name} cleanly") @@ -357,7 +358,14 @@ class LocalCommitAgent: return except Exception as e: logger.error(f"Claude rebased {repo_name} but push failed: {e}") + logger.warning( + f"Claude exited clean but {repo_name} still diverged: {ahead2}↑ {behind2}↓ " + f"— marking stalled (likely bailed on semantic conflicts)" + ) stall_entry.update(ahead=ahead2, behind=behind2, reason="claude_partial") + else: + logger.warning(f"Claude could not recover {repo_name} — marking stalled") + stall_entry["reason"] = "claude_failed" result.stalled_repos.append(stall_entry)