fix: bind reviewer mutations to active branches worktree (Closes #503) #508

Closed
jcwalker3 wants to merge 3 commits from feat/issue-503-reviewer-active-worktree into master
Owner

Summary

Closes #503.

Reviewer mutation tools (gitea_acquire_reviewer_pr_lease, gitea_dry_run_pr_review, gitea_mark_final_review_decision, gitea_submit_pr_review, gitea_heartbeat_reviewer_pr_lease) now bind to the same branches/ worktree that preflight and runtime_context inspect — not only the MCP server process root.

Changes

  • reviewer_mutation_workspace.py — workspace resolution, metadata-only binding detection, canonical stale-MCP error message
  • gitea_mcp_server.py — reviewer mutation workspace verification; worktree_path parameter on review mutation tools; preflight blocks misleading metadata-only worktree_path for reviewer role
  • tests/test_reviewer_mutation_workspace.py — acceptance criteria coverage

Validation

/Users/jasonwalker/Development/Gitea-Tools/venv/bin/python -m pytest tests/test_reviewer_mutation_workspace.py tests/test_workspace_guard_alignment.py tests/test_mcp_server.py::TestPreflightVerification -q
# 28 passed

Worktree

/Users/jasonwalker/Development/Gitea-Tools/branches/issue-503-reviewer-active-worktree @ dad1dc8

LLM Handoff Metadata

  • LLM-Agent-SHA: llm-dad1dc8
  • LLM-Role: implementer
  • Authenticated-Gitea-User: jcwalker3
  • MCP-Profile: prgs-author
  • Branch: feat/issue-503-reviewer-active-worktree
  • Self-review allowed: no
## Summary Closes #503. Reviewer mutation tools (`gitea_acquire_reviewer_pr_lease`, `gitea_dry_run_pr_review`, `gitea_mark_final_review_decision`, `gitea_submit_pr_review`, `gitea_heartbeat_reviewer_pr_lease`) now bind to the same branches/ worktree that preflight and runtime_context inspect — not only the MCP server process root. ## Changes - `reviewer_mutation_workspace.py` — workspace resolution, metadata-only binding detection, canonical stale-MCP error message - `gitea_mcp_server.py` — reviewer mutation workspace verification; `worktree_path` parameter on review mutation tools; preflight blocks misleading metadata-only `worktree_path` for reviewer role - `tests/test_reviewer_mutation_workspace.py` — acceptance criteria coverage ## Validation ```bash /Users/jasonwalker/Development/Gitea-Tools/venv/bin/python -m pytest tests/test_reviewer_mutation_workspace.py tests/test_workspace_guard_alignment.py tests/test_mcp_server.py::TestPreflightVerification -q # 28 passed ``` ## Worktree `/Users/jasonwalker/Development/Gitea-Tools/branches/issue-503-reviewer-active-worktree` @ `dad1dc8` ## LLM Handoff Metadata - LLM-Agent-SHA: llm-dad1dc8 - LLM-Role: implementer - Authenticated-Gitea-User: jcwalker3 - MCP-Profile: prgs-author - Branch: feat/issue-503-reviewer-active-worktree - Self-review allowed: no
jcwalker3 added 1 commit 2026-07-08 02:42:24 -05:00
Reviewer mutation tools now resolve workspace from worktree_path,
GITEA_ACTIVE_WORKTREE, or the session reviewer lease before preflight
and branches-only validation. Preflight rejects metadata-only worktree_path
bindings that would mislead runtime_context while mutations still inspect
the MCP process root.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
jcwalker3 added 1 commit 2026-07-08 03:11:08 -05:00
Merge prgs/master into feat/issue-503-reviewer-active-worktree.
Preserve reviewer mutation workspace binding (#503) and fold in
master's review_pr task preflight checks via _verify_reviewer_mutation_workspace.
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #508
issue: #503
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 97777-cf175257652c
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr508-submit-approval
phase: claimed
candidate_head: 3f3d6cb35d
target_branch: master
target_branch_sha: 4d24c34548
last_activity: 2026-07-08T08:27:08Z
expires_at: 2026-07-08T10:27:08Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #508 issue: #503 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 97777-cf175257652c worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr508-submit-approval phase: claimed candidate_head: 3f3d6cb35d0fe225dcb236247f2a2d0ec193fa35 target_branch: master target_branch_sha: 4d24c3454890203e7558960efc8c9d37f3643558 last_activity: 2026-07-08T08:27:08Z expires_at: 2026-07-08T10:27:08Z blocker: none
sysadmin approved these changes 2026-07-08 03:27:21 -05:00
sysadmin left a comment
Owner

Reviewed PR #508 @ 3f3d6cb in isolated worktree branches/review-pr508-conflict-resolution.

Conflict resolution preserves #503 reviewer mutation workspace binding and correctly integrates master's review_pr task preflight via _verify_reviewer_mutation_workspace.

Validation: py_compile pass; 40 targeted tests pass; full suite 1792 pass with 1 pre-existing master failure, test_merge_blocked_on_stale_approval_head. git diff --check pass; secret scan clean.

Gitea mergeable: true against master @ 4d24c345. Branch is behind master by 4 commits but merges cleanly.

Approved for merge by merger profile.

Reviewed PR #508 @ 3f3d6cb in isolated worktree branches/review-pr508-conflict-resolution. Conflict resolution preserves #503 reviewer mutation workspace binding and correctly integrates master's review_pr task preflight via _verify_reviewer_mutation_workspace. Validation: py_compile pass; 40 targeted tests pass; full suite 1792 pass with 1 pre-existing master failure, test_merge_blocked_on_stale_approval_head. git diff --check pass; secret scan clean. Gitea mergeable: true against master @ 4d24c345. Branch is behind master by 4 commits but merges cleanly. Approved for merge by merger profile.
jcwalker3 added 1 commit 2026-07-08 03:44:06 -05:00
jcwalker3 closed this pull request 2026-07-08 03:51:37 -05:00

Pull request closed

Please reopen this pull request to perform a merge.
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#508