← ClaudeAtlas

merge-gatelisted

由 `engineering-delivery` 調用:判定這個 PR 可不可以合併。gate 清單以目標 repo 的 CLAUDE.md 為準,未宣告時採本 Skill 的預設值。
jurislm/jurislm-tools · ★ 0 · AI & Automation · score 56
Install: claude install-skill jurislm/jurislm-tools
## 回答的問題 這個 PR 可不可以合併? ## 副作用 無。本 Skill 只做判定;合併動作由 `engineering-delivery` 執行。 ## gate 清單 **以目標 repo 的 `CLAUDE.md` 為準**——它若寫了 PR review 與 merge 契約(例如額外的 review gate),那份為���。它沒寫時,本 Skill 的預設值是: - `mergeable` 為 `MERGEABLE`。`UNKNOWN` 表示 GitHub 尚在背景計算,push 後很常見, **不是失敗**:依 `using-jt-workflow` 紀律 2 的來源優先序重查,預設**上限 3 次**; 逾上限仍為 `UNKNOWN` → `halted/access_config`,`recoverableByCode: false`, `needed` 寫明「GitHub 未能算出 mergeable 狀態」。 - `mergeStateStatus` 為 `CLEAN`、`UNSTABLE` **或** `HAS_HOOKS`,不可為 `BLOCKED`/ `DIRTY`/`BEHIND`。 ⚠️ 別要求一定是 `CLEAN`——`UNSTABLE` 的定義就是「只有非必要的 check 沒過」,外部 審查額度耗盡留下的正是這種;要求 `CLEAN` 會跟「額度耗盡不擋合併」互相矛盾,永遠 過不了。`BLOCKED` 才是「required check 失敗或尚未回報」,兩者出口不同,見下方出口表。 `HAS_HOOKS` 是「可合併,但該 repo 裝了 pre-receive hook」,屬可合併狀態。用這幾個值判斷,不必去讀 branch protection API——它對沒有 admin 權限的人回 403。 - 所有 review thread 已 resolve,外部 reviewer 沒有未處理的 finding。 - `external-review-gate` 已回 `ok` 或 `not_applicable`。 ## 出口 `halted` 時必須附 `recoverableByCode`: | 情況 | 終態 | |---|---| | 全部成立 | `ok`,`payload` 附 `mergeable`、`mergeStateStatus` | | `BLOCKED` 且 required check **尚未回報完畢** | 依 `using-jt-workflow` 紀律 2 的來源優先序重查,預設**上限 3 次**;逾上限 → `halted/access_config`,`recoverableByCode: false` | | `BLOCKED` 且 required check **已失敗**,且失敗屬**程式碼缺陷**(測試紅、lint、型別、build) | `halted`,`recoverableByCode: true` | | `BLOCKED` 且 required check **已失敗**,且失敗屬**基礎設施或設定**(runner 中斷、憑證過期、CI 設定錯誤、相依服務不可用) | `halted/access_config`,`recoverableByCode: false`,`needed` 寫明實際錯誤 | | `DIRTY`/`BEHIND`,或有未處理 finding | `halt