Hold a task's merge while another task in the project is merging

This commit is contained in:
Ian Gulliver
2026-10-15 12:11:35 -07:00
parent ff22f33025
commit 606cf4b5c0
16 changed files with 546 additions and 190 deletions
+7 -4
View File
@@ -310,14 +310,16 @@ paths:
Starts the same agent turn as merge-in. When that turn ends normally, byre squashes the task's worktree
into one commit titled with the task's merge_title on the project's default branch, authored by the caller with
a Co-authored-by trailer for each of the task's co-authors, pushes it to origin, fast-forwards the project's
checkout to it, then removes the worktree and branch and marks the task merged. Refused while a turn is running
or queued.
checkout to it, then removes the worktree and branch and marks the task merged. While another task in the
project is merging, the merge is held instead (merge_queued_at is set) and starts when no merge is in progress
in the project and the task's session is idle, oldest first. Refused while a turn is running or queued, or the
merge is already held.
responses:
"202":
description: The merge turn was started or queued.
description: The merge was started or held.
content:
application/json:
schema: { $ref: "#/components/schemas/AgentSession" }
schema: { $ref: "#/components/schemas/Task" }
"400": { $ref: "#/components/responses/Error" }
"404": { $ref: "#/components/responses/Error" }
"409": { $ref: "#/components/responses/Error" }
@@ -864,6 +866,7 @@ components:
todo_item: { type: string, description: "The title of the TODO.md item the task was started from; absent for other tasks." }
forked_from: { type: string, description: "The task this one was forked from; absent for other tasks." }
forked_at: { type: integer, description: "With forked_from: the n of the snapshot it was forked at." }
merge_queued_at: { type: string, format: date-time, description: "When Merge was requested while another task in the project was merging; absent once the merge starts or when none is held." }
Todo:
type: object