From b93c3aca2d4e0876d1f183fc48e222b7a272ab27 Mon Sep 17 00:00:00 2001 From: Natalie Date: Sun, 12 Apr 2026 23:13:08 -0700 Subject: [PATCH] =?UTF-8?q?feat(error-handling):=20=E2=9C=A8=20add=20claud?= =?UTF-8?q?esync=20recovery=20logic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- src/auto_commit_service/scheduler/daemon.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/auto_commit_service/scheduler/daemon.py b/src/auto_commit_service/scheduler/daemon.py index 93e952f..3df58f8 100644 --- a/src/auto_commit_service/scheduler/daemon.py +++ b/src/auto_commit_service/scheduler/daemon.py @@ -677,10 +677,27 @@ class CommitDaemon: f"commit(s) from remote" ) elif sync_result["error"]: + error = sync_result["error"] logger.warning( - f"[{cycle_id}] {repo.name}: Pre-cycle sync issue: " - f"{sync_result['error']} (continuing anyway)" + f"[{cycle_id}] {repo.name}: Pre-cycle sync issue: {error}" ) + # Let Claude handle sync failures (conflicts, pull issues) + if self.error_handler and error != "fetch_failed": + logger.info( + f"[{cycle_id}] {repo.name}: Invoking Claude to resolve sync issue" + ) + recovery = await self.error_handler.handle( + repo, f"Pre-cycle sync failed: {error}" + ) + if recovery.success: + logger.info( + f"[{cycle_id}] {repo.name}: Claude resolved sync issue" + ) + else: + logger.warning( + f"[{cycle_id}] {repo.name}: Claude could not resolve sync: " + f"{recovery.error} (continuing anyway)" + ) except Exception as e: logger.warning( f"[{cycle_id}] {repo.name}: Pre-cycle sync failed: {e} "