getPullRequest($owner, $repo, $prNumber); if (($pr['state'] ?? '') !== 'open') { return ['merged' => false, 'reason' => 'not_open']; } if (empty($pr['mergeable'])) { return ['merged' => false, 'reason' => 'conflicts']; } $headSha = $pr['head']['sha'] ?? ''; $status = $forge->getCombinedStatus($owner, $repo, $headSha); if (($status['state'] ?? '') !== 'success') { return ['merged' => false, 'reason' => 'checks_pending']; } $forge->mergePullRequest($owner, $repo, $prNumber); return ['merged' => true, 'pr_number' => $prNumber]; } }