feat: reconciler supersession close path for PRs/issues (Closes #525) #583

Merged
sysadmin merged 1 commits from feat/issue-525-reconciler-supersession-close into master 2026-07-09 11:58:07 -05:00
Owner

Summary

Lets the reconciler close open PRs/issues as superseded/satisfied by a landed PR without switching to author.

Changes

  • assess_reconciler_supersession_close_gate — proof gate: superseding PR merged + head on target; fail-closed when target still independently required / not proven
  • gitea_reconcile_superseded_by_merged_pr — MCP tool for supersession close of PR and optional linked issue, with canonical comments
  • Capability map + role router: reconcile_close_superseded_pr / reconcile_close_satisfied_issue → reconciler (gitea.pr.close / gitea.issue.close)
  • Tests: role routing + gate proofs
  • Runbook guidance for supersession reconciliation

Validation

pytest tests/test_reconciler_supersession_close.py tests/test_reconciler_close_gate.py tests/test_role_session_router.py -q
# 44 passed

Acceptance mapping

  1. Reconciler tools for superseded PR / satisfied issue — yes
  2. Superseding PR merged + on master proof — gate enforces
  3. Canonical close comment required — comment gate
  4. Fail closed if target still required / not landed for supersession — gate outcomes
    5–6. Tests for reconciler route + author blocked + close proofs
  5. Runbook section updated

Worktree

branches/feat-issue-525-reconciler-supersession-close
Branch: feat/issue-525-reconciler-supersession-close
Head: b0ae160

Closes #525

## Summary Lets the **reconciler** close open PRs/issues as **superseded/satisfied** by a landed PR without switching to author. ## Changes - `assess_reconciler_supersession_close_gate` — proof gate: superseding PR merged + head on target; fail-closed when target still independently required / not proven - `gitea_reconcile_superseded_by_merged_pr` — MCP tool for supersession close of PR and optional linked issue, with canonical comments - Capability map + role router: `reconcile_close_superseded_pr` / `reconcile_close_satisfied_issue` → reconciler (`gitea.pr.close` / `gitea.issue.close`) - Tests: role routing + gate proofs - Runbook guidance for supersession reconciliation ## Validation ```text pytest tests/test_reconciler_supersession_close.py tests/test_reconciler_close_gate.py tests/test_role_session_router.py -q # 44 passed ``` ## Acceptance mapping 1. Reconciler tools for superseded PR / satisfied issue — yes 2. Superseding PR merged + on master proof — gate enforces 3. Canonical close comment required — comment gate 4. Fail closed if target still required / not landed for supersession — gate outcomes 5–6. Tests for reconciler route + author blocked + close proofs 7. Runbook section updated ## Worktree `branches/feat-issue-525-reconciler-supersession-close` Branch: `feat/issue-525-reconciler-supersession-close` Head: `b0ae160` Closes #525
jcwalker3 added 1 commit 2026-07-09 11:41:03 -05:00
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #583
issue: #525
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 22284-2098829b1ffc
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-583-issue-525
phase: claimed
candidate_head: b0ae1605c3
target_branch: master
target_branch_sha: c738e5b10d
last_activity: 2026-07-09T16:47:20Z
expires_at: 2026-07-09T18:47:20Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #583 issue: #525 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 22284-2098829b1ffc worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-583-issue-525 phase: claimed candidate_head: b0ae1605c323d00373e69f33b16a71969d63ed7b target_branch: master target_branch_sha: c738e5b10d8da933e6a74d692381684d9653d79d last_activity: 2026-07-09T16:47:20Z expires_at: 2026-07-09T18:47:20Z blocker: none
sysadmin approved these changes 2026-07-09 11:48:39 -05:00
sysadmin left a comment
Owner

Canonical PR State

STATE:
approved

WHO_IS_NEXT:
merger

NEXT_ACTION:
Merge PR #583 at head b0ae1605c3 after explicit operator authorization.

NEXT_PROMPT:

Use prgs-merger. Merge PR #583 with confirmation='MERGE PR 583' and expected_head_sha=b0ae1605c323d00373e69f33b16a71969d63ed7b. Do not force-push.

WHAT_HAPPENED:
Reviewer approved PR #583 (reconciler supersession close path for Issue #525).

WHY:
Scope matches #525. Gate requires merged superseding PR on target, fail-closed independent-work proof, canonical comment citing superseding PR + merge commit; role map keeps close tasks on reconciler; author wrong_role_stop covered. Tests pass; not self-review.

ISSUE:
#525

BASE:
master

HEAD:
feat/issue-525-reconciler-supersession-close

HEAD_SHA:
b0ae1605c3

REVIEW_STATUS:
approved

VALIDATION:
git diff --check prgs/master...HEAD clean; pytest test_reconciler_supersession_close + test_reconciler_close_gate + test_role_session_router → 44 passed; test_reconcile_already_landed_pr_tool + test_reconciler_cleanup_integration → 8 passed; mergeable=true

BLOCKERS:
none

SUPERSEDES:
none

SUPERSEDED_BY:
none

MERGE_READY:
yes — approved at current head; awaiting explicit merge authorization

LAST_UPDATED_BY:
sysadmin / prgs-reviewer / 2026-07-09

Review notes

Identity: reviewer sysadmin (prgs-reviewer); author jcwalker3 — not self-review.

Scope (6 files): gitea_mcp_server.py (tool), review_proofs.py (gate), capability/router maps, tests, runbook — no unrelated churn.

Guard safety: assess_reconciler_supersession_close_gate fails closed on open mergeable target, missing independent-work proof, unmerged superseder, bad SHAs, missing ancestry, and weak canonical comments. Mutations gated by profile ops + preflight purity. Never grants review/approve/merge.

Non-blocking: reconcile_create_followup_issue is mapped to reconciler but has no dedicated MCP tool beyond existing gitea_create_issue (deployment must grant gitea.issue.create on reconciler). Explicit reviewer/merger route tests optional; author wrong_role_stop already proves non-reconciler stop.

Workflow-load helper result: workflow_hash=ac87ed11efe5; final_report_schema_hash=a7634e7b8689; boundary_status=clean.

## Canonical PR State STATE: approved WHO_IS_NEXT: merger NEXT_ACTION: Merge PR #583 at head b0ae1605c323d00373e69f33b16a71969d63ed7b after explicit operator authorization. NEXT_PROMPT: ```text Use prgs-merger. Merge PR #583 with confirmation='MERGE PR 583' and expected_head_sha=b0ae1605c323d00373e69f33b16a71969d63ed7b. Do not force-push. ``` WHAT_HAPPENED: Reviewer approved PR #583 (reconciler supersession close path for Issue #525). WHY: Scope matches #525. Gate requires merged superseding PR on target, fail-closed independent-work proof, canonical comment citing superseding PR + merge commit; role map keeps close tasks on reconciler; author wrong_role_stop covered. Tests pass; not self-review. ISSUE: #525 BASE: master HEAD: feat/issue-525-reconciler-supersession-close HEAD_SHA: b0ae1605c323d00373e69f33b16a71969d63ed7b REVIEW_STATUS: approved VALIDATION: git diff --check prgs/master...HEAD clean; pytest test_reconciler_supersession_close + test_reconciler_close_gate + test_role_session_router → 44 passed; test_reconcile_already_landed_pr_tool + test_reconciler_cleanup_integration → 8 passed; mergeable=true BLOCKERS: none SUPERSEDES: none SUPERSEDED_BY: none MERGE_READY: yes — approved at current head; awaiting explicit merge authorization LAST_UPDATED_BY: sysadmin / prgs-reviewer / 2026-07-09 ## Review notes **Identity:** reviewer `sysadmin` (prgs-reviewer); author `jcwalker3` — not self-review. **Scope (6 files):** `gitea_mcp_server.py` (tool), `review_proofs.py` (gate), capability/router maps, tests, runbook — no unrelated churn. **Guard safety:** `assess_reconciler_supersession_close_gate` fails closed on open mergeable target, missing independent-work proof, unmerged superseder, bad SHAs, missing ancestry, and weak canonical comments. Mutations gated by profile ops + preflight purity. Never grants review/approve/merge. **Non-blocking:** `reconcile_create_followup_issue` is mapped to reconciler but has no dedicated MCP tool beyond existing `gitea_create_issue` (deployment must grant `gitea.issue.create` on reconciler). Explicit reviewer/merger route tests optional; author wrong_role_stop already proves non-reconciler stop. **Workflow-load helper result:** workflow_hash=`ac87ed11efe5`; final_report_schema_hash=`a7634e7b8689`; boundary_status=clean.
Owner

adopted_at: 2026-07-09T16:57:06Z
adopted_by_identity: sysadmin
adopted_by_profile: prgs-merger
adopted_from_session_id: 22284-2098829b1ffc
adopted_from_profile: prgs-reviewer
adopted_from_reviewer_identity: sysadmin
adopted_from_comment_id: 8317
adoption_reason: merger-handoff-approved-head

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #583
issue: #525
reviewer_identity: sysadmin
profile: prgs-merger
session_id: 22279-02f79f840d08
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/merge-pr-583
phase: adopted
candidate_head: b0ae1605c3
target_branch: master
target_branch_sha: c738e5b10d
last_activity: 2026-07-09T16:57:06Z
expires_at: 2026-07-09T18:57:06Z
blocker: none

<!-- mcp-review-lease-adoption:v1 --> adopted_at: 2026-07-09T16:57:06Z adopted_by_identity: sysadmin adopted_by_profile: prgs-merger adopted_from_session_id: 22284-2098829b1ffc adopted_from_profile: prgs-reviewer adopted_from_reviewer_identity: sysadmin adopted_from_comment_id: 8317 adoption_reason: merger-handoff-approved-head <!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #583 issue: #525 reviewer_identity: sysadmin profile: prgs-merger session_id: 22279-02f79f840d08 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/merge-pr-583 phase: adopted candidate_head: b0ae1605c323d00373e69f33b16a71969d63ed7b target_branch: master target_branch_sha: c738e5b10d8da933e6a74d692381684d9653d79d last_activity: 2026-07-09T16:57:06Z expires_at: 2026-07-09T18:57:06Z blocker: none
sysadmin merged commit 27d75facd4 into master 2026-07-09 11:58:07 -05:00
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #583
issue: #525
reviewer_identity: sysadmin
profile: prgs-merger
session_id: 22279-02f79f840d08
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/merge-pr-583
phase: released
candidate_head: b0ae1605c3
target_branch: master
target_branch_sha: c738e5b10d
last_activity: 2026-07-09T17:06:48Z
expires_at: 2026-07-09T19:06:48Z
blocker: post-merge-moot

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #583 issue: #525 reviewer_identity: sysadmin profile: prgs-merger session_id: 22279-02f79f840d08 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/merge-pr-583 phase: released candidate_head: b0ae1605c323d00373e69f33b16a71969d63ed7b target_branch: master target_branch_sha: c738e5b10d8da933e6a74d692381684d9653d79d last_activity: 2026-07-09T17:06:48Z expires_at: 2026-07-09T19:06:48Z blocker: post-merge-moot
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#583