diff --git a/src/ClaudeDo.Worker/Runner/TaskRunner.cs b/src/ClaudeDo.Worker/Runner/TaskRunner.cs index ce6dd541..0033485a 100644 --- a/src/ClaudeDo.Worker/Runner/TaskRunner.cs +++ b/src/ClaudeDo.Worker/Runner/TaskRunner.cs @@ -791,10 +791,10 @@ public sealed class TaskRunner switch (result.TerminalReason) { case "max_turns": - var ofConfigured = configuredMaxTurns is int m ? $" von {m}" : ""; - return $"Turn-Budget erschöpft ({result.TurnCount}{ofConfigured} Turns). " - + "Erhöhe `maxTurns` am Task (`set_task_config`) und stelle den Task erneut in die Queue " - + "– der Worktree bleibt erhalten."; + var ofConfigured = configuredMaxTurns is int m ? $" of {m}" : ""; + return $"Turn budget exhausted ({result.TurnCount}{ofConfigured} turns). " + + "Raise `maxTurns` on the task (`set_task_config`) and re-queue it " + + "- the worktree is kept."; case "api_error": if (!string.IsNullOrWhiteSpace(result.ResultMarkdown)) return result.ResultMarkdown; diff --git a/tests/ClaudeDo.Worker.Tests/Runner/FailureDiagnosisTests.cs b/tests/ClaudeDo.Worker.Tests/Runner/FailureDiagnosisTests.cs index 20ee3913..39835e78 100644 --- a/tests/ClaudeDo.Worker.Tests/Runner/FailureDiagnosisTests.cs +++ b/tests/ClaudeDo.Worker.Tests/Runner/FailureDiagnosisTests.cs @@ -23,7 +23,7 @@ public class FailureDiagnosisTests Assert.Contains("55", message); Assert.Contains("60", message); Assert.Contains("maxTurns", message); - Assert.Contains("Queue", message); + Assert.Contains("re-queue", message); Assert.DoesNotContain(ClaudeProcess.NoResultPrefix, message); } @@ -174,12 +174,12 @@ public sealed class FailureDiagnosisEndToEndTests : IDisposable using var verify = _db.CreateContext(); var task = await new TaskRepository(verify).GetByIdAsync("t1"); Assert.Equal(TaskStatus.Failed, task!.Status); - Assert.Contains("Turn-Budget", task.Result); + Assert.Contains("Turn budget", task.Result); Assert.Contains("60", task.Result); Assert.DoesNotContain(ClaudeProcess.NoResultPrefix, task.Result); var run = await new TaskRunRepository(verify).GetLatestByTaskIdAsync("t1"); - Assert.Contains("Turn-Budget", run!.ErrorMarkdown); + Assert.Contains("Turn budget", run!.ErrorMarkdown); } [Fact]