feat: discover merged cleanup worktree aliases (Closes #532) #571

Merged
sysadmin merged 2 commits from feat/issue-532-merged-cleanup-worktree-aliases into master 2026-07-09 08:05:33 -05:00
Owner

Summary

Closes #532.

Teach merged cleanup reconciliation to find safe local issue-worktree aliases such as branches/issue-510-* when the derived branch path would be branches/feat-issue-510-*.

Changes

  • Parse git worktree list --porcelain for structured local worktree discovery.
  • Match cleanup candidates by exact branch or issue marker, limited to the repository branches/ directory.
  • Require discovered aliases to point at the merged PR head or a commit proven to be on the target branch.
  • Fail closed on ambiguous or unsafe alias matches.
  • Report expected path, discovered path, match type, and candidate paths in dry-run output.
  • Pass the dry-run assessed worktree path into execution so removal does not recompute a different target.

Validation

python3 -m py_compile merged_cleanup_reconcile.py gitea_mcp_server.py tests/test_merged_cleanup_reconcile.py
# passed

git diff --check
# passed

python3 -m pytest tests/test_merged_cleanup_reconcile.py -q
# 12 passed

python3 -m pytest tests/test_mcp_server.py::TestReconcileMergedCleanups tests/test_mcp_native_cleanup_proof.py tests/test_audit_reconciliation_mode.py -q
# 48 passed

Worktree

/Users/jasonwalker/Development/Gitea-Tools/branches/feat-issue-532-merged-cleanup-worktree-aliases @ 8d9f1f2

Self-review: no.

## Summary Closes #532. Teach merged cleanup reconciliation to find safe local issue-worktree aliases such as `branches/issue-510-*` when the derived branch path would be `branches/feat-issue-510-*`. ## Changes - Parse `git worktree list --porcelain` for structured local worktree discovery. - Match cleanup candidates by exact branch or issue marker, limited to the repository `branches/` directory. - Require discovered aliases to point at the merged PR head or a commit proven to be on the target branch. - Fail closed on ambiguous or unsafe alias matches. - Report expected path, discovered path, match type, and candidate paths in dry-run output. - Pass the dry-run assessed worktree path into execution so removal does not recompute a different target. ## Validation ```bash python3 -m py_compile merged_cleanup_reconcile.py gitea_mcp_server.py tests/test_merged_cleanup_reconcile.py # passed git diff --check # passed python3 -m pytest tests/test_merged_cleanup_reconcile.py -q # 12 passed python3 -m pytest tests/test_mcp_server.py::TestReconcileMergedCleanups tests/test_mcp_native_cleanup_proof.py tests/test_audit_reconciliation_mode.py -q # 48 passed ``` ## Worktree `/Users/jasonwalker/Development/Gitea-Tools/branches/feat-issue-532-merged-cleanup-worktree-aliases` @ `8d9f1f2` Self-review: no.
jcwalker3 added 1 commit 2026-07-08 22:09:15 -05:00
jcwalker3 force-pushed feat/issue-532-merged-cleanup-worktree-aliases from 8d9f1f2940 to 0a202970fd 2026-07-08 22:09:15 -05:00 Compare
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #571
issue: #532
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 54023-0f77f54e8870
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-571-merged-cleanup-aliases
phase: claimed
candidate_head: 0a202970fd
target_branch: master
target_branch_sha: 066eec8477
last_activity: 2026-07-09T03:31:02Z
expires_at: 2026-07-09T05:31:02Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #571 issue: #532 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 54023-0f77f54e8870 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-571-merged-cleanup-aliases phase: claimed candidate_head: 0a202970fdf6da16b319f79a2051888798a7a4e1 target_branch: master target_branch_sha: 066eec84771a3811fa6e890e1a3241c3441921ae last_activity: 2026-07-09T03:31:02Z expires_at: 2026-07-09T05:31:02Z blocker: none
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #571
issue: #532
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 54023-0f77f54e8870
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-571-merged-cleanup-aliases
phase: released
candidate_head: 0a202970fd
target_branch: master
target_branch_sha: 066eec8477
last_activity: 2026-07-09T03:32:50Z
expires_at: 2026-07-09T05:32:50Z
blocker: manual-release

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #571 issue: #532 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 54023-0f77f54e8870 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-571-merged-cleanup-aliases phase: released candidate_head: 0a202970fdf6da16b319f79a2051888798a7a4e1 target_branch: master target_branch_sha: 066eec84771a3811fa6e890e1a3241c3441921ae last_activity: 2026-07-09T03:32:50Z expires_at: 2026-07-09T05:32:50Z blocker: manual-release
jcwalker3 added 1 commit 2026-07-09 07:22:14 -05:00
# Conflicts:
#	gitea_mcp_server.py
#	merged_cleanup_reconcile.py
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #571
issue: #532
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 2908-9a17a98842c4
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-571-merged-cleanup-aliases
phase: claimed
candidate_head: a2e8bf17ec
target_branch: master
target_branch_sha: none
last_activity: 2026-07-09T12:52:29Z
expires_at: 2026-07-09T14:52:29Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #571 issue: #532 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 2908-9a17a98842c4 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-571-merged-cleanup-aliases phase: claimed candidate_head: a2e8bf17ecf9c3ca8520203ca9f42b822d2cc42d target_branch: master target_branch_sha: none last_activity: 2026-07-09T12:52:29Z expires_at: 2026-07-09T14:52:29Z blocker: none
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #571
issue: #532
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 2908-9a17a98842c4
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-571-merged-cleanup-aliases
phase: claimed
candidate_head: a2e8bf17ec
target_branch: master
target_branch_sha: none
last_activity: 2026-07-09T12:54:22Z
expires_at: 2026-07-09T14:54:22Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #571 issue: #532 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 2908-9a17a98842c4 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-571-merged-cleanup-aliases phase: claimed candidate_head: a2e8bf17ecf9c3ca8520203ca9f42b822d2cc42d target_branch: master target_branch_sha: none last_activity: 2026-07-09T12:54:22Z expires_at: 2026-07-09T14:54:22Z blocker: none
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #571
issue: #532
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 2908-9a17a98842c4
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-571-merged-cleanup-aliases
phase: claimed
candidate_head: a2e8bf17ec
target_branch: master
target_branch_sha: none
last_activity: 2026-07-09T12:55:02Z
expires_at: 2026-07-09T14:55:02Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #571 issue: #532 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 2908-9a17a98842c4 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-571-merged-cleanup-aliases phase: claimed candidate_head: a2e8bf17ecf9c3ca8520203ca9f42b822d2cc42d target_branch: master target_branch_sha: none last_activity: 2026-07-09T12:55:02Z expires_at: 2026-07-09T14:55:02Z blocker: none
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #571
issue: #532
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 2908-9a17a98842c4
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-571-merged-cleanup-aliases
phase: claimed
candidate_head: a2e8bf17ec
target_branch: master
target_branch_sha: 8e7a69800a
last_activity: 2026-07-09T13:04:17Z
expires_at: 2026-07-09T15:04:17Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #571 issue: #532 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 2908-9a17a98842c4 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-571-merged-cleanup-aliases phase: claimed candidate_head: a2e8bf17ecf9c3ca8520203ca9f42b822d2cc42d target_branch: master target_branch_sha: 8e7a69800a298c4123f0e13cafd7d72844840241 last_activity: 2026-07-09T13:04:17Z expires_at: 2026-07-09T15:04:17Z blocker: none
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #571
issue: #532
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 2908-9a17a98842c4
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-571-merged-cleanup-aliases
phase: claimed
candidate_head: a2e8bf17ec
target_branch: master
target_branch_sha: 8e7a69800a
last_activity: 2026-07-09T13:04:48Z
expires_at: 2026-07-09T15:04:48Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #571 issue: #532 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 2908-9a17a98842c4 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-571-merged-cleanup-aliases phase: claimed candidate_head: a2e8bf17ecf9c3ca8520203ca9f42b822d2cc42d target_branch: master target_branch_sha: 8e7a69800a298c4123f0e13cafd7d72844840241 last_activity: 2026-07-09T13:04:48Z expires_at: 2026-07-09T15:04:48Z blocker: none
sysadmin approved these changes 2026-07-09 08:05:03 -05:00
sysadmin left a comment
Owner

Review: APPROVE PR #571

Closes #532 — discover safe local worktree aliases during merged cleanup.

Scope (3 files)

  • merged_cleanup_reconcile.py — porcelain discovery; branch/issue alias under branches/; PR-head or ancestry required; fail closed on ambiguity; dry-run path reused on execute
  • gitea_mcp_server.py — wire assessed path
  • tests/test_merged_cleanup_reconcile.py

Validation

  • py_compile + git diff --check clean
  • Focused suite: 67 passed
  • Merge onto prgs/master (8e7a698): no conflicts; post-sim 21 passed

Identity

  • Reviewer: sysadmin / prgs-reviewer
  • Author: jcwalker3 (not self-review)

Canonical PR State

STATE: approved ready-to-merge
WHO_IS_NEXT: merger
NEXT_ACTION: merge PR #571 at the pinned head with expected_changed_files, then run post-merge cleanup if needed
NEXT_PROMPT:

Merge PR #571 (confirmation MERGE PR 571) at head a2e8bf17ecf9c3ca8520203ca9f42b822d2cc42d using prgs-merger after approval at current head. Files: gitea_mcp_server.py, merged_cleanup_reconcile.py, tests/test_merged_cleanup_reconcile.py. Then continue open PR queue (#565, #566, #486, web UI stack).

WHAT_HAPPENED: Completed formal review of PR #571 against issue #532 acceptance criteria; validation green; merge-sim clean on current master.
WHY: Scope matches #532, tests pass, no blocking findings; non-blocking nits only.
ISSUE: #532
HEAD_SHA: a2e8bf17ec
REVIEW_STATUS: approved
MERGE_READY: yes
BLOCKERS: none
VALIDATION: py_compile+diff-check clean; 67 focused tests passed; merge onto 8e7a698 clean with 21 post-sim tests passed
LAST_UPDATED_BY: sysadmin / prgs-reviewer

## Review: APPROVE PR #571 **Closes #532** — discover safe local worktree aliases during merged cleanup. ### Scope (3 files) - `merged_cleanup_reconcile.py` — porcelain discovery; branch/issue alias under `branches/`; PR-head or ancestry required; fail closed on ambiguity; dry-run path reused on execute - `gitea_mcp_server.py` — wire assessed path - `tests/test_merged_cleanup_reconcile.py` ### Validation - py_compile + git diff --check clean - Focused suite: 67 passed - Merge onto prgs/master (8e7a698): no conflicts; post-sim 21 passed ### Identity - Reviewer: sysadmin / prgs-reviewer - Author: jcwalker3 (not self-review) ## Canonical PR State STATE: approved ready-to-merge WHO_IS_NEXT: merger NEXT_ACTION: merge PR #571 at the pinned head with expected_changed_files, then run post-merge cleanup if needed NEXT_PROMPT: ```text Merge PR #571 (confirmation MERGE PR 571) at head a2e8bf17ecf9c3ca8520203ca9f42b822d2cc42d using prgs-merger after approval at current head. Files: gitea_mcp_server.py, merged_cleanup_reconcile.py, tests/test_merged_cleanup_reconcile.py. Then continue open PR queue (#565, #566, #486, web UI stack). ``` WHAT_HAPPENED: Completed formal review of PR #571 against issue #532 acceptance criteria; validation green; merge-sim clean on current master. WHY: Scope matches #532, tests pass, no blocking findings; non-blocking nits only. ISSUE: #532 HEAD_SHA: a2e8bf17ecf9c3ca8520203ca9f42b822d2cc42d REVIEW_STATUS: approved MERGE_READY: yes BLOCKERS: none VALIDATION: py_compile+diff-check clean; 67 focused tests passed; merge onto 8e7a698 clean with 21 post-sim tests passed LAST_UPDATED_BY: sysadmin / prgs-reviewer
Owner

adopted_at: 2026-07-09T13:05:25Z
adopted_by_identity: sysadmin
adopted_by_profile: prgs-merger
adopted_from_session_id: 2908-9a17a98842c4
adopted_from_profile: prgs-reviewer
adopted_from_reviewer_identity: sysadmin
adopted_from_comment_id: 7933
adoption_reason: merger-handoff-approved-head

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #571
issue: #532
reviewer_identity: sysadmin
profile: prgs-merger
session_id: 21215-6f9a631dd80e
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-571-merged-cleanup-aliases
phase: adopted
candidate_head: a2e8bf17ec
target_branch: master
target_branch_sha: 8e7a69800a
last_activity: 2026-07-09T13:05:25Z
expires_at: 2026-07-09T15:05:25Z
blocker: none

<!-- mcp-review-lease-adoption:v1 --> adopted_at: 2026-07-09T13:05:25Z adopted_by_identity: sysadmin adopted_by_profile: prgs-merger adopted_from_session_id: 2908-9a17a98842c4 adopted_from_profile: prgs-reviewer adopted_from_reviewer_identity: sysadmin adopted_from_comment_id: 7933 adoption_reason: merger-handoff-approved-head <!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #571 issue: #532 reviewer_identity: sysadmin profile: prgs-merger session_id: 21215-6f9a631dd80e worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-571-merged-cleanup-aliases phase: adopted candidate_head: a2e8bf17ecf9c3ca8520203ca9f42b822d2cc42d target_branch: master target_branch_sha: 8e7a69800a298c4123f0e13cafd7d72844840241 last_activity: 2026-07-09T13:05:25Z expires_at: 2026-07-09T15:05:25Z blocker: none
sysadmin merged commit 9340dc7009 into master 2026-07-09 08:05:33 -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#571