finish: refuse or steer when the base requires signed commits and default_merge_style would mint an unsigned server-side merge commit #478

Open
opened 2026-09-09 22:24:58 +00:00 by hexajon · 0 comments
Owner

Follow-up to #425 item 3. finish honors the target repo's default_merge_style. A fast-forward-only or rebase style mints no merge commit, so on such a repo the "unsigned merge commit" problem cannot occur, and that is the state on this repo (every merge today landed with the default branch at the work commit's own sha). A repo whose base requires signed commits but whose default_merge_style is merge or rebase-merge still gets a server-side merge commit the forge signs with its own key or leaves unsigned.

Ask: at finish time, when the base's branch protection sets require_signed_commits and the resolved merge style is one that mints a merge commit, either refuse with a one-line remedy (set default_merge_style to fast-forward-only or rebase, or pass a style) or steer to a style that mints none. No madtea-held key, per ADR 0013.

Acceptance

  • On a signing-required base with default_merge_style=merge, finish does not silently produce a server-side merge commit; it refuses or steers, naming the setting.
  • On fast-forward-only and rebase the behaviour is unchanged.
  • Unit tests over the merge-style resolver cover both cases.

Refs #425, #424, ADR 0013.

Follow-up to #425 item 3. `finish` honors the target repo's `default_merge_style`. A fast-forward-only or rebase style mints no merge commit, so on such a repo the "unsigned merge commit" problem cannot occur, and that is the state on this repo (every merge today landed with the default branch at the work commit's own sha). A repo whose base requires signed commits but whose `default_merge_style` is `merge` or `rebase-merge` still gets a server-side merge commit the forge signs with its own key or leaves unsigned. Ask: at finish time, when the base's branch protection sets `require_signed_commits` and the resolved merge style is one that mints a merge commit, either refuse with a one-line remedy (set `default_merge_style` to `fast-forward-only` or `rebase`, or pass a style) or steer to a style that mints none. No madtea-held key, per ADR 0013. ## Acceptance - On a signing-required base with `default_merge_style=merge`, `finish` does not silently produce a server-side merge commit; it refuses or steers, naming the setting. - On `fast-forward-only` and `rebase` the behaviour is unchanged. - Unit tests over the merge-style resolver cover both cases. Refs #425, #424, ADR 0013.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sixfold-space/madtea#478
No description provided.