fix(worker): translate max_turns failure text to English
TaskRunner.BuildFailureMarkdown returned a hardcoded German string for TerminalReason == "max_turns", the only worker-generated string not in English. Surfaced as the outcome/roadblock card for one of the most likely first failures, looking broken to non-German users.
This commit is contained in:
@@ -791,10 +791,10 @@ public sealed class TaskRunner
|
|||||||
switch (result.TerminalReason)
|
switch (result.TerminalReason)
|
||||||
{
|
{
|
||||||
case "max_turns":
|
case "max_turns":
|
||||||
var ofConfigured = configuredMaxTurns is int m ? $" von {m}" : "";
|
var ofConfigured = configuredMaxTurns is int m ? $" of {m}" : "";
|
||||||
return $"Turn-Budget erschöpft ({result.TurnCount}{ofConfigured} Turns). "
|
return $"Turn budget exhausted ({result.TurnCount}{ofConfigured} turns). "
|
||||||
+ "Erhöhe `maxTurns` am Task (`set_task_config`) und stelle den Task erneut in die Queue "
|
+ "Raise `maxTurns` on the task (`set_task_config`) and re-queue it "
|
||||||
+ "– der Worktree bleibt erhalten.";
|
+ "- the worktree is kept.";
|
||||||
|
|
||||||
case "api_error":
|
case "api_error":
|
||||||
if (!string.IsNullOrWhiteSpace(result.ResultMarkdown)) return result.ResultMarkdown;
|
if (!string.IsNullOrWhiteSpace(result.ResultMarkdown)) return result.ResultMarkdown;
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public class FailureDiagnosisTests
|
|||||||
Assert.Contains("55", message);
|
Assert.Contains("55", message);
|
||||||
Assert.Contains("60", message);
|
Assert.Contains("60", message);
|
||||||
Assert.Contains("maxTurns", message);
|
Assert.Contains("maxTurns", message);
|
||||||
Assert.Contains("Queue", message);
|
Assert.Contains("re-queue", message);
|
||||||
Assert.DoesNotContain(ClaudeProcess.NoResultPrefix, message);
|
Assert.DoesNotContain(ClaudeProcess.NoResultPrefix, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,12 +174,12 @@ public sealed class FailureDiagnosisEndToEndTests : IDisposable
|
|||||||
using var verify = _db.CreateContext();
|
using var verify = _db.CreateContext();
|
||||||
var task = await new TaskRepository(verify).GetByIdAsync("t1");
|
var task = await new TaskRepository(verify).GetByIdAsync("t1");
|
||||||
Assert.Equal(TaskStatus.Failed, task!.Status);
|
Assert.Equal(TaskStatus.Failed, task!.Status);
|
||||||
Assert.Contains("Turn-Budget", task.Result);
|
Assert.Contains("Turn budget", task.Result);
|
||||||
Assert.Contains("60", task.Result);
|
Assert.Contains("60", task.Result);
|
||||||
Assert.DoesNotContain(ClaudeProcess.NoResultPrefix, task.Result);
|
Assert.DoesNotContain(ClaudeProcess.NoResultPrefix, task.Result);
|
||||||
|
|
||||||
var run = await new TaskRunRepository(verify).GetLatestByTaskIdAsync("t1");
|
var run = await new TaskRunRepository(verify).GetLatestByTaskIdAsync("t1");
|
||||||
Assert.Contains("Turn-Budget", run!.ErrorMarkdown);
|
Assert.Contains("Turn budget", run!.ErrorMarkdown);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|||||||
Reference in New Issue
Block a user