跳至主要内容

Auto-merge 與 Approve 語義

決定日期:2026-04-26 Discussionhttps://github.com/nurockplayer/tachigo/discussions/359

決策摘要

開啟 GitHub auto-merge,設定 required 1 approving review。Approve = 授權 merge。

問題背景

Scope Police 強制分拆 PR,分拆後的 PR merge 回 develop 會造成其他 open PR 需要 rebase(merge cascade)。根本原因是 PR 在 approved 狀態停留太久——沒有人負責去按 merge。

設定

項目
allow_auto_mergetrue
required_approving_review_count1

Approve 的意義

按 approve = 「這個 PR 現在可以進 develop」。不存在「approve 但還不 merge」的中間狀態。

Approve 前應確認:CI 全過、scope 正確、無 blocker。

PR Risk Class

Auto-merge 只會在 PR body 剛好勾選一個 PR Risk Class 且該 class 不是 R4 時被 workflow arm。

Classauto-merge
R0 docs / template / metadata only可用
R1 tests / CI / tooling only可用
R2 frontend behavior可用,但仍需 branch protection 要求的 review
R3 backend / API behavior可用,但仍需 branch protection 要求的 review
R4 auth / permissions / security / schema / migration / secrets / payments / wallet / workflow / release不可用

R4 PR 必須由 human reviewer 明確 review / approve,且不得使用 auto-ready 或 native auto-merge path。若 PR 未勾選 risk class、勾選多個 class,或勾選 R4,auto-merge workflow 會 skip,PR Scope Police 會在 sticky comment 顯示原因。

Review 動作對應

嚴重程度動作
blockerRequest changes
majorApprove + Comment 說明風險
minor / nitApprove + Comment(可選)

minor / nit 不用 Request changes——在 auto-merge 下這會卡住整個 pipeline,成本不相稱。改用 Comment,作者自行決定是否修或開 follow-up。

詳細討論

完整的方案比較、取捨分析、以及未來改回的條件,見 Discussion: https://github.com/nurockplayer/tachigo/discussions/359