ADR 0012 defers coordinated merge, but merge time is where the value proposition either pays off or quietly breaks: a Change's PRs can merge at different times, or one never merges, and the Pin's reproducibility claim degrades silently. Four cross-linked PRs are still four merge buttons and four CI pipelines.
Proposal: `gnit pr merge` — merge all of the current Change's PRs only when every one is green/approved/mergeable, in roster order (members first, root metadata last, matching push semantics); otherwise merge none and report exactly which PR is blocking. Respect per-repo branch protection by treating "not mergeable" as a hard stop, never bypassing.
This converts the PR fan-out from a visibility feature into the atomicity feature this niche has historically lacked (even Gerrit's submitWholeTopic admits non-atomicity; client-side best-effort with a hold-back is the honest equivalent of what gnit push already does).
Open questions: merge-queue interaction (queue all, then watch?), partial-failure reporting (mirror the push report format), `--ready` promotion of drafts as a prerequisite step.
ADR 0012 defers coordinated merge, but merge time is where the value proposition either pays off or quietly breaks: a Change's PRs can merge at different times, or one never merges, and the Pin's reproducibility claim degrades silently. Four cross-linked PRs are still four merge buttons and four CI pipelines.
Proposal: `gnit pr merge` — merge all of the current Change's PRs only when every one is green/approved/mergeable, in roster order (members first, root metadata last, matching push semantics); otherwise merge none and report exactly which PR is blocking. Respect per-repo branch protection by treating "not mergeable" as a hard stop, never bypassing.
This converts the PR fan-out from a visibility feature into the atomicity feature this niche has historically lacked (even Gerrit's submitWholeTopic admits non-atomicity; client-side best-effort with a hold-back is the honest equivalent of what gnit push already does).
Open questions: merge-queue interaction (queue all, then watch?), partial-failure reporting (mirror the push report format), `--ready` promotion of drafts as a prerequisite step.