fix: resolve reviewer lease identity via host not remote alias

_authenticated_username expects a host for auth/API calls. Lease
acquire/adopt/gate/release paths passed the remote alias (prgs), so
identity resolved empty and same-identity release fail-closed across
sessions — blocking author conflict-fix pushes after REQUEST_CHANGES.

Pass resolved host h from _resolve into _authenticated_username.
This commit is contained in:
2026-07-09 12:09:40 -04:00
parent 946d6c2f81
commit 7f2a5a3d3c
2 changed files with 88 additions and 4 deletions
+10 -4
View File
@@ -6153,7 +6153,9 @@ def _reviewer_pr_lease_gate(
"""Return block reasons when the session lacks an owned PR reviewer lease."""
session = reviewer_pr_lease.get_session_lease()
session_id = (session or {}).get("session_id")
identity = _authenticated_username(remote) or ""
# Resolve host first: _authenticated_username expects a host, not remote name.
h, _, _ = _resolve(remote, host, org, repo)
identity = _authenticated_username(h) or ""
try:
comments = _fetch_pr_comments(
pr_number, remote=remote, host=host, org=org, repo=repo)
@@ -6207,7 +6209,8 @@ def gitea_acquire_reviewer_pr_lease(
h, o, r = _resolve(remote, host, org, repo)
auth = _auth(h)
profile = get_profile()
identity = _authenticated_username(remote) or profile.get("username") or ""
# Host (not remote name) — remote aliases like "prgs" do not resolve identity.
identity = _authenticated_username(h) or profile.get("username") or ""
sid = (session_id or "").strip() or reviewer_pr_lease.new_session_id()
repo_label = f"{o}/{r}"
@@ -6350,7 +6353,8 @@ def gitea_adopt_merger_pr_lease(
auth = _auth(h)
profile = get_profile()
profile_name = profile.get("profile_name") or "unknown"
identity = _authenticated_username(remote) or profile.get("username") or ""
# Host (not remote name) — remote aliases like "prgs" do not resolve identity.
identity = _authenticated_username(h) or profile.get("username") or ""
sid = (session_id or "").strip() or reviewer_pr_lease.new_session_id()
repo_label = f"{o}/{r}"
@@ -6738,7 +6742,9 @@ def gitea_release_reviewer_pr_lease(
"reasons": ["no active reviewer lease found on PR"],
}
identity = _authenticated_username(remote) or ""
# Host (not remote name). Passing "prgs"/"dadeschools" yields empty identity
# and incorrectly blocks same-identity release across sessions.
identity = _authenticated_username(h) or ""
session = reviewer_pr_lease.get_session_lease() or {}
session_id = session.get("session_id")