feat: require approval at current PR head for merge (#471) #480

Merged
sysadmin merged 1 commits from feat/issue-471-merge-head-approval into master 2026-07-08 00:29:17 -05:00
Owner

Summary

Closes #471. gitea_merge_pr now fails closed when a visible APPROVED review does not apply to the current live PR head SHA — preventing merges under stale approvals after rebase/push.

Changes

  • merge_approval_gate.py — pure assessment for approval_at_current_head and actionable stale-approval errors
  • gitea_mcp_server.py — expose new feedback fields; merge gate 7b blocks stale approvals
  • review-merge-pr.md — document re-review requirement after head movement
  • Tests: test_merge_approval_gate.py, merge/feedback/audit regressions

Verification

pytest tests/test_merge_approval_gate.py tests/test_review_feedback.py tests/test_mcp_server.py::TestMergePR -q
# 49 passed

pytest -q
# 1707 passed, 6 skipped

Worktree

branches/mcp-author-worktree @ 89582a0

## Summary Closes #471. `gitea_merge_pr` now fails closed when a visible APPROVED review does not apply to the **current live PR head SHA** — preventing merges under stale approvals after rebase/push. ## Changes - `merge_approval_gate.py` — pure assessment for `approval_at_current_head` and actionable stale-approval errors - `gitea_mcp_server.py` — expose new feedback fields; merge gate 7b blocks stale approvals - `review-merge-pr.md` — document re-review requirement after head movement - Tests: `test_merge_approval_gate.py`, merge/feedback/audit regressions ## Verification ```bash pytest tests/test_merge_approval_gate.py tests/test_review_feedback.py tests/test_mcp_server.py::TestMergePR -q # 49 passed pytest -q # 1707 passed, 6 skipped ``` ## Worktree `branches/mcp-author-worktree` @ `89582a0`
jcwalker3 added 1 commit 2026-07-07 23:38:04 -05:00
Add merge_approval_gate assessment so gitea_merge_pr fails closed when
visible APPROVED reviews do not pin the live head SHA. Expose
approval_at_current_head and stale_approval_block_reason in review
feedback. Document re-review requirement in canonical merge workflow.

Closes #471.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #480
issue: #471
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 95695-927a9f9cc8a4
worktree: branches/review-feat-issue-471-merge-head-approval
phase: claimed
candidate_head: 89582a0f2a
target_branch: master
target_branch_sha: none
last_activity: 2026-07-08T05:26:47Z
expires_at: 2026-07-08T07:26:47Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #480 issue: #471 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 95695-927a9f9cc8a4 worktree: branches/review-feat-issue-471-merge-head-approval phase: claimed candidate_head: 89582a0f2aade2f8ff8b5ead1f61153b1147df90 target_branch: master target_branch_sha: none last_activity: 2026-07-08T05:26:47Z expires_at: 2026-07-08T07:26:47Z blocker: none
sysadmin approved these changes 2026-07-08 00:27:00 -05:00
sysadmin left a comment
Owner

APPROVE — pinned head 89582a0

Formal approval for PR #480 / issue #471. Reuses prior isolated review conclusion; live head unchanged.

Pinned head: 89582a0f2aade2f8ff8b5ead1f61153b1147df90

Scope verified (prior session)

  • merge_approval_gate enforces APPROVED review at current live head
  • Stale approvals fail closed with approved SHA + current SHA + re-review action
  • Full pytest: 1707 passed, 6 skipped

Merge not performed in this session.

## APPROVE — pinned head `89582a0` Formal approval for PR #480 / issue #471. Reuses prior isolated review conclusion; live head unchanged. **Pinned head:** `89582a0f2aade2f8ff8b5ead1f61153b1147df90` ### Scope verified (prior session) - `merge_approval_gate` enforces APPROVED review at current live head - Stale approvals fail closed with approved SHA + current SHA + re-review action - Full pytest: 1707 passed, 6 skipped Merge not performed in this session.
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #480
issue: #471
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 95695-927a9f9cc8a4
worktree: branches/review-feat-issue-471-merge-head-approval
phase: claimed
candidate_head: 89582a0f2a
target_branch: master
target_branch_sha: 96ee5e89ab46d4b4ae08a6cd2554c480e0bba55d
last_activity: 2026-07-08T05:29:10Z
expires_at: 2026-07-08T07:29:10Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #480 issue: #471 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 95695-927a9f9cc8a4 worktree: branches/review-feat-issue-471-merge-head-approval phase: claimed candidate_head: 89582a0f2aade2f8ff8b5ead1f61153b1147df90 target_branch: master target_branch_sha: 96ee5e89ab46d4b4ae08a6cd2554c480e0bba55d last_activity: 2026-07-08T05:29:10Z expires_at: 2026-07-08T07:29:10Z blocker: none
sysadmin merged commit cc5686b896 into master 2026-07-08 00:29:17 -05:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Scaled-Tech-Consulting/Gitea-Tools#480