fix(prompts): correct the list-handler wait cap and wait through WaitingForChildren
The execute prompt told the handler to wait with timeoutSeconds up to 170 -- a leftover from the retired MCP_TOOL_TIMEOUT=200000ms era. The real server-side clamp is TaskWaitMcpTools.MaxTimeoutSeconds = 900 and every launcher sets 930000ms, so the handler was making ~5x the wait_for_task_change calls it needed and burning turns on re-waiting. It also never passed treatWaitingForChildrenAsBusy, and only waited on ids that were Queued or Running. A task with children reports "changed" the moment it reaches WaitingForChildren, so such a task both dropped out of the wait set and signalled completion early -- the handler could reach review/merge while children were still running.
This commit is contained in:
@@ -143,6 +143,27 @@ public class PromptFilesTests
|
||||
Assert.DoesNotContain("run_task_now(", d); // single override slot — must not batch-start
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DefaultFor_merge_helper_execute_waits_with_the_real_server_side_cap()
|
||||
{
|
||||
// TaskWaitMcpTools.MaxTimeoutSeconds is 900 and every ClaudeDo launcher sets
|
||||
// MCP_TOOL_TIMEOUT=930000ms. The prompt used to say 170 -- a leftover from the retired
|
||||
// 200000ms era -- which burned ~5x the turns on re-waiting.
|
||||
var d = PromptFiles.DefaultFor(PromptKind.MergeHelperExecute);
|
||||
Assert.Contains("timeoutSeconds 900", d);
|
||||
Assert.DoesNotContain("170", d);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DefaultFor_merge_helper_execute_waits_through_waiting_for_children()
|
||||
{
|
||||
// Without the flag, a parent with children reports "changed" as soon as it reaches
|
||||
// WaitingForChildren, so the handler would advance to review/merge while children run.
|
||||
var d = PromptFiles.DefaultFor(PromptKind.MergeHelperExecute);
|
||||
Assert.Contains("treatWaitingForChildrenAsBusy=true", d);
|
||||
Assert.Contains("WaitingForChildren", d);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DefaultFor_merge_helper_execute_keeps_the_shared_checkout_git_guard()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user