fix(worker): emit PlanningMergeAborted (not Conflict) on non-conflict merge failures
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -96,11 +96,23 @@ public sealed class PlanningMergeOrchestrator
|
|||||||
|
|
||||||
var current = state.CurrentSubtaskId;
|
var current = state.CurrentSubtaskId;
|
||||||
var result = await _merge.ContinueMergeAsync(current, ct);
|
var result = await _merge.ContinueMergeAsync(current, ct);
|
||||||
if (result.Status != TaskMergeService.StatusMerged)
|
|
||||||
|
if (result.Status == TaskMergeService.StatusConflict)
|
||||||
{
|
{
|
||||||
await _broadcaster.PlanningMergeConflict(planningTaskId, current, result.ConflictFiles);
|
await _broadcaster.PlanningMergeConflict(planningTaskId, current, result.ConflictFiles);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (result.Status != TaskMergeService.StatusMerged)
|
||||||
|
{
|
||||||
|
_logger.LogWarning(
|
||||||
|
"Planning continue blocked on subtask {Subtask}: {Msg}",
|
||||||
|
current, result.ErrorMessage);
|
||||||
|
_states.TryRemove(planningTaskId, out _);
|
||||||
|
await _broadcaster.PlanningMergeAborted(planningTaskId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
await _broadcaster.PlanningSubtaskMerged(planningTaskId, current);
|
await _broadcaster.PlanningSubtaskMerged(planningTaskId, current);
|
||||||
|
|
||||||
state.CurrentSubtaskId = null;
|
state.CurrentSubtaskId = null;
|
||||||
@@ -144,11 +156,11 @@ public sealed class PlanningMergeOrchestrator
|
|||||||
|
|
||||||
if (result.Status != TaskMergeService.StatusMerged)
|
if (result.Status != TaskMergeService.StatusMerged)
|
||||||
{
|
{
|
||||||
await _broadcaster.PlanningMergeConflict(
|
_logger.LogWarning(
|
||||||
planningTaskId, subtaskId,
|
"Planning merge blocked on subtask {Subtask}: {Msg}",
|
||||||
new[] { result.ErrorMessage ?? "merge blocked" });
|
subtaskId, result.ErrorMessage);
|
||||||
keepState = true;
|
await _broadcaster.PlanningMergeAborted(planningTaskId);
|
||||||
return;
|
return; // keepState stays false → finally removes the state entry
|
||||||
}
|
}
|
||||||
|
|
||||||
await _broadcaster.PlanningSubtaskMerged(planningTaskId, subtaskId);
|
await _broadcaster.PlanningSubtaskMerged(planningTaskId, subtaskId);
|
||||||
|
|||||||
Reference in New Issue
Block a user