fix(mcp): bind post-merge moot-lease cleanup to the reconciler capability (Closes #745) #746
Merged
sysadmin
merged 3 commits from 2026-07-18 22:04:43 -05:00
fix/issue-745-reconciler-moot-lease-gate into master
Labels
Clear labels
allocator
anti-stomp
architecture
bug
chore
codex
concurrency
contamination
control-plane
dashboard
database
design
documentation
enhancement
gitea
glitchtip
important
incident
incident-bridge
integration
jenkins
labels
leases
mcp
mcp-health
mcp-menu
multi-project
mutating
nice-to-have
observability
portability
preflight
protected-branch
queue
read-only
reconnect
recovery
refactor
release
reliability
resumable-review
reviewer
roadmap
safety
security
self-hosted
sentry
stale-runtime
status:blocked
status:in-progress
status:pr-open
status:ready
terminal-lock
testing
tracker
type:bug
type:feature
type:feature
type:guardrail
visibility
workflow
workflow-hardening
workflow-hardening
Controller-owned work allocator
Prevent concurrent LLM session stomping
Architecture / structural design
OpenAI Codex client / workflow session surface
Concurrent session safety
Workflow or session contamination incident
MCP control-plane coordination and allocation authority
MCP operational dashboard/queue view
Internal coordination storage (SQLite/Postgres)
Design / investigation, no implementation
Docs / runbooks
New feature or improvement
Gitea MCP workflow
GlitchTip integration
Operational or process incident requiring durable audit trail
Sentry-to-Gitea incident bridging
Integration testing
Jenkins integration
Label taxonomy management
Lease adopt/release/expire lifecycle
MCP server / tooling
MCP namespace and runtime health
MCP menu surface
Work spanning multiple monitoring projects or Gitea repos
Mutating action; requires gating
Observability, metrics, traces, error reporting
Cross-platform / portability
Shared preflight gates before mutation
Protected branch / stable-branch policy concern
Work queue visibility and allocation
Read-only, no mutation
MCP client reconnect/reload recovery path
Recovery paths for stale/foreign leases
Code refactor / restructure
Release / versioning
Reliability / failure handling
Persist and resume prepared review verdicts across sessions
Reviewer workflow tooling
Roadmap / umbrella issue
Safety rails and fail-closed mutation guards
Security / trust boundary
Self-hosted infrastructure integration
Sentry error monitoring integration
Stale backend daemon / runtime-vs-master parity failures
Issue is blocked
Issue is being worked on
Issue has an open pull request
Issue is ready for work
Terminal review lock (#332) path
Tests / test coverage
Issue tracker hygiene / meta
Bug or defect
Feature or enhancement
Feature or enhancement
Safety gate or guardrail
Workflow state visibility for LLMs/operators
Cross-tool workflow
LLM workflow coordination hardening
LLM workflow coordination hardening
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: Scaled-Tech-Consulting/Gitea-Tools#746
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #745.
Base:
b05075fd25ea7f3ac2e86d68f18a1a14c803962eHead:
b00e09a7814ddb03072d1e09c1b13ae314779a11Root cause
gitea_cleanup_post_merge_moot_lease(#515) posts a terminalphase: releasedlease marker — a durable mutation of the PR lease ledger — but had no entry in
the canonical task-capability map and no role binding.
gitea.read;gitea.pr.comment, which author, reviewer and mergerprofiles all hold for ordinary PR discussion, so three unintended roles
reached the mutation path;
operator-required
resolve-exact-task -> mutationsequence at all;verify_preflight_purity(remote)with notask=,org=orrepo=, skipping the resolved-task, canonical-root andexplicit-target checks its siblings perform;
org/repoflowed straight into_resolve(...), so a caller couldretarget the mutation at a foreign repository.
Task / tool contract
cleanup_post_merge_moot_leasegitea.pr.commentreconcilergitea_cleanup_post_merge_moot_lease(tool alias)gitea.pr.commentreconcilerBoth names carry an identical contract (the project's established alias
convention). Unknown or misspelled names keep failing closed on the map's
KeyError. Both are also added torole_session_router.RECONCILER_TASKSandTASK_REQUIRED_ROLE, so the map and the router cannot disagree — the #723defect-A class of drift.
Role-bound behavior
The two modes are gated differently, on purpose.
apply=false(assessment) stays reachable undergitea.read, with no rolegate. This follows the established convention:
cleanup_stale_review_decision_lockis documented in the map as "Apply path requires reviewer review permission;
assessment itself uses gitea.read inside the tool", and
gitea_cleanup_obsolete_reviewer_comment_leasegates entry the same way. Keepingassessment read-only means an operator can diagnose a stuck lease from whichever
namespace is attached without switching roles. It performs no mutation and
records append-only dry-run evidence in-session. This choice is documented in
the capability map, the tool docstring and
docs/gitea-execution-profiles.md,and is directly tested for all four roles.
apply=true(mutation) requires, in order:cleanup_post_merge_moot_lease— resolving anyother task, including a sibling reconciler task, does not authorize it;
reconcilerrole, checked independently of the permission gate;gitea.pr.comment;org/repovalidated against the canonical repository identityderived from the session binding (request parameters can never redirect the
mutation), then
worktree_path/task/org/repoforwarded toverify_preflight_purityfor canonical-root, workspace and anti-stompbinding (#733/#739);
lease_mootandcleanup_allowedfor thesame PR, lease session, candidate head and lease marker id, plus any
caller-supplied
expected_session_id/expected_candidate_head/expected_lease_comment_id.Fails closed on live, non-moot, superseded, mismatched, malformed,
foreign-repository and ambiguous leases. The ledger stays append-only (entries
are only appended, lookup is newest-wins,
dry_run_historyhands out copies)and already-terminal cleanup stays idempotent. The tool still only ever appends
a marker — it never edits or deletes another session's comment, and never merges
or adopts a lease.
Files changed
task_capability_map.py— canonical task + tool alias, with the rationaleand the deliberate read-only-assessment carve-out.
role_session_router.py— same two names inRECONCILER_TASKSandTASK_REQUIRED_ROLE.post_merge_moot_lease_gate.py(new) — pure authorization logic plus theappend-only dry-run ledger.
gitea_mcp_server.py— the apply-path gate chain; generalizes_delete_branch_repository_binding_blockinto_repository_binding_block(required_permission=...)(retained as a thindelete-path alias so #733/#739 coverage keeps exercising its permission
label); adds
_bound_repository_slug.tests/test_issue_745_moot_lease_reconciler_gate.py(new) — 39 tests.tests/test_post_merge_moot_lease.py— updated from the permission-only modelto reconciler + dry-run evidence, plus a negative test pinning that a merger
can no longer apply.
docs/gitea-execution-profiles.md— new "Post-merge moot-lease cleanupownership" section.
Tests and results
tests/test_issue_745_moot_lease_reconciler_gate.py+tests/test_post_merge_moot_lease.py— 50 passed, 35 subtests passed.
delete-branch capability, #733 repo forwarding, reconciler cleanup /
close-gate / profile, anti-stomp preflight, canonical root #706 / cross-repo /
#741, obsolete-lease cleanup #691, lease lifecycle, reviewer lease)
— 368 passed, 161 subtests passed.
tests/— 3448 passed, 6 skipped, 2 failed, 400 subtests passed.The 2 failures are pre-existing on master, reproduced against a clean
detached worktree at
b05075fbefore this branch was applied:tests/test_issue_702_review_findings_f1_f6.py::TestF1RecoveryBeforeTerminalProbe::test_removed_worktree_recovers_before_probetests/test_reconciler_supersession_close.py::TestReconcilerSupersessionMcpTool::test_tool_posts_comment_and_closes_superseded_pr_issue(expects
verify_preflight_purity('prgs', task='reconcile_close_superseded_pr')without the
org/reponow forwarded by the #735 change)git diff --check— clean, no whitespace errors.Safety
No production lease was touched. PR #744's lease (session
33673-1d54887a0415,marker
12452) was not used as a test subject and was not cleaned; itexpires naturally.
TestNoProductionLeaseTouchedasserts the fixtures aresynthetic and that those production identifiers appear nowhere else in the test
module. No reconciler cleanup was performed, no review or merge was attempted,
and no client configuration, launcher, profile or credential was modified.
Note for the reviewer
This adds the mapping and the enforcement. Actually exercising the reconciler
path end-to-end additionally needs the running MCP namespaces restarted onto the
merged code, since the capability map is loaded at process start.
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #746
issue: #745
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 98044-6c4cbd692695
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-fix-issue-745-reconciler-moot-lease-gate
phase: claimed
candidate_head:
b00e09a781target_branch: master
target_branch_sha:
b05075fd25last_activity: 2026-07-18T17:04:51Z
expires_at: 2026-07-18T19:04:51Z
blocker: none
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #746
issue: #745
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 94371-23409093ddd1
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-746-independent-20260718T190733
phase: claimed
candidate_head:
b00e09a781target_branch: master
target_branch_sha:
fdab6b6c69last_activity: 2026-07-18T19:09:00Z
expires_at: 2026-07-18T19:19:00Z
blocker: none
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #746
issue: #745
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 94371-23409093ddd1
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-746-independent-20260718T190733
phase: validating
candidate_head:
b00e09a781target_branch: master
target_branch_sha:
fdab6b6c69last_activity: 2026-07-18T19:10:31Z
expires_at: 2026-07-18T19:20:31Z
blocker: none
Canonical PR State
STATE:
approved
WHO_IS_NEXT:
merger
NEXT_ACTION:
Separate merger session adopts or acquires a merger lease and merges PR #746 at the approved head.
NEXT_PROMPT:
WHAT_HAPPENED:
Independent gitea-reviewer session completed code review and validation of PR #746 (Closes #745) and is submitting APPROVE at the pinned head.
WHY:
The change correctly binds post-merge moot-lease cleanup apply to reconciler via exact-task resolve, independent role gate, append-only dry-run evidence, and repository binding. Assessment stays gitea.read for all roles by design. Scope matches #745; author/reviewer/merger cannot apply; merge into current master is clean.
ISSUE:
#745
BASE:
master
HEAD:
fix/issue-745-reconciler-moot-lease-gate
HEAD_SHA:
b00e09a781REVIEW_STATUS:
approved / approval_at_current_head
b00e09a781VALIDATION:
Focused: tests/test_issue_745_moot_lease_reconciler_gate.py + tests/test_post_merge_moot_lease.py — 50 passed, 35 subtests. Targeted related suites — 378 passed, 181 subtests. git diff --check clean. merge simulation of
b00e09ainto prgs/masterfdab6b6automatic merge clean. Self-review check: author jcwalker3 != reviewer sysadmin.MERGE_READY:
true — approved at HEAD_SHA b00e09a7814ddb03072d1e09c1b13ae314779a11; mergeable; no blockers for merger handoff
BLOCKERS:
none
NATIVE_REVIEW_PROOF:
transport=native_mcp; entrypoint=mcp_server; token_fingerprint=session-pid-88553; review_session=94371-23409093ddd1
LAST_UPDATED_BY:
sysadmin / prgs-reviewer / 2026-07-18T19:12Z
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #746
issue: #745
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 94371-23409093ddd1
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-746-independent-20260718T190733
phase: released
candidate_head:
b00e09a781target_branch: master
target_branch_sha:
fdab6b6c69last_activity: 2026-07-18T19:13:27Z
expires_at: 2026-07-18T19:23:27Z
blocker: manual-release
Contaminated formal review quarantine (#695)
Status: QUARANTINED — merge authorization VOID
464#746b00e09a7814ddb03072d1e09c1b13ae314779a11sysadminprgs-reconciler#695b00e09a781.2026-07-18T19:17:11.993459+00:00True05c446d43548c1a9[]This record does not delete Gitea reviews or historical comments. Fresh native-MCP re-review is required before merge.
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #746
issue: #745
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 5266-a43db67d6a0c
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-746-fresh-rereview-20260718T192048
phase: claimed
candidate_head:
b00e09a781target_branch: master
target_branch_sha:
fdab6b6c69last_activity: 2026-07-18T19:21:00Z
expires_at: 2026-07-18T19:31:00Z
blocker: none
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #746
issue: #745
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 5266-a43db67d6a0c
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-746-fresh-rereview-20260718T192048
phase: validating
candidate_head:
b00e09a781target_branch: master
target_branch_sha:
fdab6b6c69last_activity: 2026-07-18T19:23:05Z
expires_at: 2026-07-18T19:33:05Z
blocker: none
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #746
issue: #745
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 5266-a43db67d6a0c
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-746-fresh-rereview-20260718T192048
phase: deciding
candidate_head:
b00e09a781target_branch: master
target_branch_sha:
fdab6b6c69last_activity: 2026-07-18T19:25:35Z
expires_at: 2026-07-18T19:35:35Z
blocker: none
Review correction authorization audit (#693)
Status: AUTHORIZED
sysadminprgs-reviewer2026-07-18T19:26:06.371973+00:00464approve#746b00e09a7814ddb03072d1e09c1b13ae314779a11b00e09a781. Correction authorizes one clean re-mark/submit only; quarantine forensic record retained.same_pr_head_only(cannot unlock a different PR)This is not a generic decision-lock unlock. Cross-PR recovery uses isolation (#693) or moot cleanup (#594), never correction.
Fresh independent re-review (post-quarantine of #464)
STATE:
approved
WHO_IS_NEXT:
merger
NEXT_ACTION:
Separate merger session adopts or acquires a merger lease and merges PR #746 at the approved head. Do not re-review. Do not count quarantined review #464.
NEXT_PROMPT:
WHAT_HAPPENED:
Fresh gitea-reviewer session (sysadmin / prgs-reviewer / reviewer, remote=prgs only; no profile rebind) completed an independent re-review of PR #746 at head
b00e09aafter controller quarantine voided contaminated review #464.WHY:
All acceptance criteria for #745 are met:
cleanup_post_merge_moot_leaseand aliasgitea_cleanup_post_merge_moot_leasemap identically togitea.pr.comment+reconciler(task_capability_map + role_session_router RECONCILER_TASKS/TASK_REQUIRED_ROLE).apply=falseis genuinely read-only undergitea.read, intentional cross-role diagnostic; dry-run ledger append-only with copy isolation.apply=truerequires exact cleanup task resolution, reconciler role,gitea.pr.comment, immutable repository/root/workspace binding via_bound_repository_slug+_repository_binding_block+verify_preflight_purity(task/org/repo/worktree), and matching dry-run evidence.6–7. Only genuinely moot merged/closed leases finalize; non-moot/superseded/malformed/foreign fail closed.
_delete_branch_repository_binding_blockretained as thin safe alias of generalized_repository_binding_block.gitea_mcp_server.pyonly; automatic merge into masterfdab6b6is clean; no TTL conflict.ISSUE: #745
BASE: master @
fdab6b6c69HEAD: fix/issue-745-reconciler-moot-lease-gate
HEAD_SHA:
b00e09a781REVIEW_STATUS:
approved at current head (fresh session; #464 quarantined/void)
VALIDATION:
fdab6b6: automatic merge cleanCONTAMINATED PRIOR:
review #464 quarantined; audit 12557; must not count toward eligibility
MERGE_READY:
true — fresh APPROVE at HEAD_SHA b00e09a…; mergeable; hand off to separate merger
BLOCKERS:
none
NATIVE_REVIEW_PROOF:
transport=native_mcp; entrypoint=mcp_server; token_fingerprint=30e0655c5dd62772; review_session=5266-a43db67d6a0c; remote=prgs; profile=prgs-reviewer; role=reviewer; operator=jasonwalker UID=502
Workflow-load helper result:
LAST_UPDATED_BY:
sysadmin / prgs-reviewer / fresh session 5266-a43db67d6a0c
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #746
issue: #745
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 5266-a43db67d6a0c
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-746-fresh-rereview-20260718T192048
phase: released
candidate_head:
b00e09a781target_branch: master
target_branch_sha:
fdab6b6c69last_activity: 2026-07-18T19:26:40Z
expires_at: 2026-07-18T19:36:40Z
blocker: manual-release
Canonical Issue State
STATE:
open — PR #746 reconciled to the live base; it carries no review verdict at the current exact head.
WHO_IS_NEXT:
reviewer
NEXT_ACTION:
A fresh independent prgs-reviewer session performs a full review of PR #746 pinned to exact head
a517655aade8641afa516016dc5474c2de093a0b.NEXT_PROMPT:
WHAT_HAPPENED:
An author session (prgs-author / jcwalker3) recovered dead-session ownership of issue #745 and reconciled PR #746 onto the live base by merge.
startup_head == current_head == 447595b72ba02037db914797bd9ce8dd91fd4028,in_parity=true, no restart requirement, each bound toScaled-Tech-Consulting/Gitea-Tools(authorjcwalker3 / prgs-author; reviewersysadmin / prgs-reviewer; mergersysadmin / prgs-merger; reconcilersysadmin / prgs-reconciler).gitea_lock_issuereturnedRECOVERY_SANCTIONEDdead-session recovery under the #753/#755 server-derived path, retaining the owning PR #746.gitea_update_pr_branch_by_mergeperformed an update-by-merge of base master447595b…intofix/issue-745-reconciler-moot-lease-gate. merge result: former head03c64a3219946d10ab965bacffbe10b516f2adc4→ new heada517655aade8641afa516016dc5474c2de093a0b. Style merge only; no rebase, no force-push, no conflict.WHY:
PR #746 stood 9 commits behind the live base while branch protection required a current base, so the sanctioned assessor recommended
update_branch_by_merge. The head change invalidates every former-head review verdict by construction, so the exact new head must go to an independent reviewer.RELATED_PRS:
a517655…BLOCKERS:
none
VALIDATION:
tests/test_issue_745_moot_lease_reconciler_gate.py+tests/test_post_merge_moot_lease.py— 50 passed, 35 subtests passed.447595b72ba02037db914797bd9ce8dd91fd4028, so they are pre-existing and not introduced here:tests/test_issue_702_review_findings_f1_f6.py::TestF1RecoveryBeforeTerminalProbe::test_removed_worktree_recovers_before_probeandtests/test_reconciler_supersession_close.py::TestReconcilerSupersessionMcpTool::test_tool_posts_comment_and_closes_superseded_pr_issue.git diff --checkagainst the base — clean, no whitespace errors.py_compileand import checks pass on every PR-changed module; bothcleanup_post_merge_moot_leaseand itsgitea_alias resolve togitea.pr.comment+reconciler.docs/gitea-execution-profiles.md,gitea_mcp_server.py,post_merge_moot_lease_gate.py,role_session_router.py,task_capability_map.py,tests/test_issue_745_moot_lease_reconciler_gate.py,tests/test_post_merge_moot_lease.py). It neither duplicates nor reverts any recently landed fix.LAST_UPDATED_BY:
jcwalker3 / prgs-author / author reconciliation session, pid 88692
[THREAD STATE LEDGER]
What is true now
Server-side decision state: PR #746 is in open state at exact head
a517655aade8641afa516016dc5474c2de093a0b, base master447595b72ba02037db914797bd9ce8dd91fd4028, 0 commits behind,mergeable=true, no conflicts, checks live-derived asnot_required(live branch protection does not require status contexts for the base branch). There is no reviewer lease and no merger lease. The author issue lock for #745 is live. Review verdict 464 is quarantined; review verdict 465 is stale;approval_at_current_head=falseandquarantined_approvals_at_current_head=0, so no review verdict carries merge authority at the current head.Local verdict/state: author reconciliation is complete. The session-owned worktree
branches/fix-issue-745-reconciler-moot-lease-gateis clean and its head equals the remote branch head, which equals the PR head.What changed
Ownership moved from a dead prior session to this one by sanctioned dead-session recovery, and the PR branch advanced from the live base. merge result: former head
03c64a3219946d10ab965bacffbe10b516f2adc4→ new heada517655aade8641afa516016dc5474c2de093a0b. No source file authored by #745 was edited in this session; the only content change is the base merge commit.What is blocked
Blocker classification: no blocker
Nothing prevents the next step. Merge authority is absent purely because the head advanced, which is the expected consequence of reconciliation rather than a fault.
Who/what acts next
Next actor: reviewer — a fresh independent prgs-reviewer session.
Required action: perform a full independent review of PR #746 pinned to exact head
a517655aade8641afa516016dc5474c2de093a0b, then record a formal review verdict through the review API.Do not do: do not reuse review verdicts 464 or 465, and do not count quarantined verdict 464 toward eligibility; do not merge at any former head; do not rebase, reset, amend, squash, cherry-pick or force-push this branch; do not treat this author session as a review.
Server-side mutation ledger:
gitea_lock_issue— recovered the dead-session author lock for issue #745 (prior pid 45054 dead → replacement session pid 88692), retaining owning PR #746.gitea_update_pr_branch_by_merge— update-by-merge of base master447595b…intofix/issue-745-reconciler-moot-lease-gate; merge result:03c64a3…→a517655….gitea_create_issue_comment— this handoff comment.repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #746
issue: #745
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 17652-0dcbbdd9a409
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-746
phase: claimed
candidate_head:
a517655aadtarget_branch: master
target_branch_sha:
447595b72blast_activity: 2026-07-19T02:56:27Z
expires_at: 2026-07-19T03:06:27Z
blocker: none
Canonical PR State
STATE:
approved
WHO_IS_NEXT:
merger
NEXT_ACTION:
Fresh prgs-merger session merges PR #746 at the approved head. Do not re-review. Do not count reviews #464 or #465.
NEXT_PROMPT:
WHAT_HAPPENED:
Fresh independent Grok gitea-reviewer session (sysadmin / prgs-reviewer / reviewer) completed full preflight, lease acquisition, code review, and validation of PR #746 (Closes #745) at exact head
a517655aadon base447595b72b.WHY:
All issue #745 acceptance criteria are satisfied with no material defects. Post-merge moot-lease cleanup apply is bound to reconciler via exact-task resolve, independent role gate, append-only dry-run evidence, and repository binding. Assessment stays gitea.read for all roles by design. Author/reviewer/merger cannot apply. Open-PR leases cannot be cleaned. Scope is exactly seven files; #749/#751/#753/#755 behavior is not weakened.
ISSUE:
#745
HEAD_SHA:
a517655aadREVIEW_STATUS:
approved at current head
a517655aad(fresh session; #464 quarantined/void; #465 stale atb00e09a)MERGE_READY:
true — APPROVE pinned to HEAD_SHA a517655aade8641afa516016dc5474c2de093a0b; open; mergeable; 0 behind base; checks not_required
BLOCKERS:
none
VALIDATION:
LAST_UPDATED_BY:
sysadmin / prgs-reviewer / Grok independent review session 17652-0dcbbdd9a409
NATIVE_REVIEW_PROOF:
transport=native_mcp; entrypoint=mcp_server; review_session=17652-0dcbbdd9a409; lease_comment_id=12779; remote=prgs; profile=prgs-reviewer; role=reviewer; operator=jasonwalker UID=502; workflow_hash=263d0a6cb8a6
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #746
issue: #745
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 17652-0dcbbdd9a409
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr-746
phase: released
candidate_head:
a517655aadtarget_branch: master
target_branch_sha:
447595b72blast_activity: 2026-07-19T03:00:38Z
expires_at: 2026-07-19T03:10:38Z
blocker: manual-release
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #746
issue: #745
reviewer_identity: sysadmin
profile: prgs-merger
session_id: 22528-3bf57c19fb60
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/merge-pr-746-a517655
phase: claimed
candidate_head:
a517655aadtarget_branch: master
target_branch_sha:
447595b72blast_activity: 2026-07-19T03:04:30Z
expires_at: 2026-07-19T03:14:30Z
blocker: none
Stale #332 review-decision lock cleanup (#594)
Status: APPLIED
sysadminprgs-merger2026-07-19T03:04:44.357902+00:00approveon PR fix(mcp): bind post-merge moot-lease cleanup to the reconciler capability (Closes #745) (#746)closed(merged=True)bde5c5fb20fbf6aec9cd6b802341c43078921d131prgs-reviewerManual deletion of session-state files is not the workflow.
This path only clears a lock when the referenced PR is merged/closed.
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #746
issue: #745
reviewer_identity: sysadmin
profile: prgs-merger
session_id: 22528-3bf57c19fb60
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/merge-pr-746-a517655
phase: released
candidate_head:
a517655aadtarget_branch: master
target_branch_sha:
447595b72blast_activity: 2026-07-19T03:09:08Z
expires_at: 2026-07-19T03:19:08Z
blocker: post-merge-moot