# Template: merge a PR (eligible reviewer only) Copy, fill the `<...>` fields, and paste as the task prompt. ```text Task: merge PR # for issue # if it is eligible and checks pass. Rules (llm-project-workflow): - Only an eligible, NON-author reviewer merges. If authenticated user == PR author → STOP. - Do not merge unless the PR is open, mergeable, and its checks/review pass. - No force-merge, no bypassing branch protections. - If the PR is closed but `merged=false`, STOP and run reconciliation. Do not clean up. Steps: 1. Identity Checklist: Before claiming/working on merge, verify and state: - Required identity/profile for this task: merger (allowed to merge PRs) - Current authenticated identity (from whoami): - Target task role: merger identity (must NOT be the PR author) *If the current identity does not match the required role (or is the PR author), STOP. Relaunch/switch to the correct profile first.* 2. Verify authenticated identity + active profile. 3. Confirm PR #: author (not you), state open, mergeable, review approved. Check if PR body uses `Closes #N` or `Fixes #N`; if it uses `Implements #N` or `Refs #N`, manual closing will be needed in step 29. 4. Capability evidence (#179): cite the exact gitea_resolve_task_capability output (or runtime context) proving merge_pr is allowed — a bare "capability checks passed" claim is downgraded. 5. Final live-state recheck (#179), immediately before the merge mutation — re-read the live PR and prove: - PR still open - live head SHA still equals the pinned/reviewed head SHA - base branch unchanged - no undismissed REQUEST_CHANGES / blocking review state remains If any recheck fails → STOP, re-pin, re-validate. 6. If any gate fails → STOP and report. 7. Merge with explicit confirmation (e.g. confirmation="MERGE PR "), pinning the reviewed head SHA (expected_head_sha) and, where supported, the changed-file set. 8. Confirm remote master now contains the merge commit (or the expected changes if squash merged). *Note: Gitea PR "closed" state is NOT equivalent to "merged". Do not assume a closed PR succeeded without verifying the actual landed changes.* Then run the cleanup template (worktree-cleanup.md): - Verify expected file/commit presence on master (post-merge file-presence verification): - Run: git fetch --prune; git checkout master; git pull master --ff-only - Verify that the expected files added/modified in the PR are present on master (or absent if deleted). - Alternatively, verify with: git log --oneline -- or git merge-base --is-ancestor master - close/release issue #, remove status:in-progress (if it cannot be removed, report why) - delete remote branch, remove local branch + worktree folder - fetch/prune; confirm main checkout is clean and current (0 0). Handoff: end with a section titled exactly `Controller Handoff` per SKILL.md §K (long form — a merge is always high-risk), including the review/merge role fields (Selected PR, Reviewer eligibility, Pinned reviewed head, Review decision, Merge result, Linked issue status, Cleanup status) plus: merge commit, PR metadata state/merged flag/hash, remote master hash, and the post-merge verification method used & verification results. Reports missing the handoff are downgraded (review_proofs.assess_controller_handoff). ```