Hold a group's batch open for its last member and keep both kinds of member in one batch and one plan (issue 977, part C, ADR 0418)

This commit is contained in:
2026-10-17 21:06:33 +02:00
parent e43d52c1ea
commit 8b3a9163d0
10 changed files with 406 additions and 127 deletions
+6
View File
@@ -139,6 +139,12 @@ type PlanBatch struct {
// Waits says why a batch made for one merge waits for the window: its delivery group has a member still to
// merge, or mesh-delivery could not say whether it has (novox/hq ADR 0306 decision 2).
Waits string `json:"waits,omitempty"`
// Holds are the groups whose last member is still to merge, by head branch name, each with why in words
// (novox/hq ADR 0418 clause 3): the batch does not close by the merge window while one is held, however long the
// member takes. Cleared when every member is merged or closed; the window then runs again from that moment.
Holds map[string]string `json:"holds,omitempty"`
// HeldAt is when the last hold was cleared: the maximum is counted from it, not from the batch's making.
HeldAt time.Time `json:"held_at,omitempty"`
}
// OwnPath says the record is a batch of merges on the controller's own path.