From 63759ee7dc860a56bca96ebf09bf5a9d7003232c Mon Sep 17 00:00:00 2001 From: mika kuns Date: Fri, 24 Apr 2026 15:22:52 +0200 Subject: [PATCH] fix(worker): tighten ContinueMergeAsync guards and commit error handling --- src/ClaudeDo.Worker/Services/TaskMergeService.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ClaudeDo.Worker/Services/TaskMergeService.cs b/src/ClaudeDo.Worker/Services/TaskMergeService.cs index 005cf68..4884095 100644 --- a/src/ClaudeDo.Worker/Services/TaskMergeService.cs +++ b/src/ClaudeDo.Worker/Services/TaskMergeService.cs @@ -171,6 +171,7 @@ public sealed class TaskMergeService } if (wt is null) return Blocked("task has no worktree"); + if (wt.State != WorktreeState.Active) return Blocked($"worktree state is {wt.State}"); if (string.IsNullOrWhiteSpace(list.WorkingDir)) return Blocked("list has no working directory"); if (!await _git.IsMidMergeAsync(list.WorkingDir, ct)) return Blocked("repo is not mid-merge"); @@ -181,7 +182,8 @@ public sealed class TaskMergeService if (remaining.Count > 0) return new MergeResult(StatusConflict, remaining, "conflicts not fully resolved"); - await _git.CommitAsync(list.WorkingDir, $"Merge branch '{wt.BranchName}'", ct); + try { await _git.CommitAsync(list.WorkingDir, $"Merge branch '{wt.BranchName}'", ct); } + catch (Exception ex) { return Blocked($"commit failed: {ex.Message}"); } using (var ctx = _dbFactory.CreateDbContext()) {