fix(evaluate): set domain + auto_merge on all 5 approval paths
Some checks are pending
CI / lint-and-test (push) Waiting to run
Some checks are pending
CI / lint-and-test (push) Waiting to run
Musings bypass and batch both_approve set status='approved' without domain or auto_merge. Merge gate requires domain IS NOT NULL and prefix match OR auto_merge=1. Result: agent PRs deadlocked for 20+ hours. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
10b4e27c28
commit
ad7ee0831e
1 changed files with 7 additions and 5 deletions
|
|
@ -546,7 +546,8 @@ async def evaluate_pr(conn, pr_number: int, tier: str = None) -> dict:
|
||||||
)
|
)
|
||||||
conn.execute(
|
conn.execute(
|
||||||
"""UPDATE prs SET status = 'approved', leo_verdict = 'skipped',
|
"""UPDATE prs SET status = 'approved', leo_verdict = 'skipped',
|
||||||
domain_verdict = 'skipped' WHERE number = ?""",
|
domain_verdict = 'skipped', domain = COALESCE(domain, 'cross-domain'),
|
||||||
|
auto_merge = 1 WHERE number = ?""",
|
||||||
(pr_number,),
|
(pr_number,),
|
||||||
)
|
)
|
||||||
return {"pr": pr_number, "auto_approved": True, "reason": "musings_only"}
|
return {"pr": pr_number, "auto_approved": True, "reason": "musings_only"}
|
||||||
|
|
@ -792,8 +793,8 @@ async def evaluate_pr(conn, pr_number: int, tier: str = None) -> dict:
|
||||||
is_agent_pr = not branch_name.startswith(PIPELINE_OWNED_PREFIXES)
|
is_agent_pr = not branch_name.startswith(PIPELINE_OWNED_PREFIXES)
|
||||||
|
|
||||||
conn.execute(
|
conn.execute(
|
||||||
"UPDATE prs SET status = 'approved', auto_merge = ? WHERE number = ?",
|
"UPDATE prs SET status = 'approved', domain = COALESCE(domain, ?), auto_merge = ? WHERE number = ?",
|
||||||
(1 if is_agent_pr else 0, pr_number),
|
(domain, 1 if is_agent_pr else 0, pr_number),
|
||||||
)
|
)
|
||||||
db.audit(
|
db.audit(
|
||||||
conn,
|
conn,
|
||||||
|
|
@ -1084,7 +1085,8 @@ async def _run_batch_domain_eval(
|
||||||
)
|
)
|
||||||
conn.execute(
|
conn.execute(
|
||||||
"UPDATE prs SET status = 'approved', leo_verdict = 'skipped', "
|
"UPDATE prs SET status = 'approved', leo_verdict = 'skipped', "
|
||||||
"domain_verdict = 'skipped' WHERE number = ?",
|
"domain_verdict = 'skipped', domain = COALESCE(domain, 'cross-domain'), "
|
||||||
|
"auto_merge = 1 WHERE number = ?",
|
||||||
(pr_num,),
|
(pr_num,),
|
||||||
)
|
)
|
||||||
succeeded += 1
|
succeeded += 1
|
||||||
|
|
@ -1289,7 +1291,7 @@ async def _run_batch_domain_eval(
|
||||||
pr_info = await forgejo_api("GET", repo_path(f"pulls/{pr_num}"))
|
pr_info = await forgejo_api("GET", repo_path(f"pulls/{pr_num}"))
|
||||||
pr_author = pr_info.get("user", {}).get("login", "") if pr_info else ""
|
pr_author = pr_info.get("user", {}).get("login", "") if pr_info else ""
|
||||||
await _post_formal_approvals(pr_num, pr_author)
|
await _post_formal_approvals(pr_num, pr_author)
|
||||||
conn.execute("UPDATE prs SET status = 'approved' WHERE number = ?", (pr_num,))
|
conn.execute("UPDATE prs SET status = 'approved', domain = COALESCE(domain, ?), auto_merge = 1 WHERE number = ?", (domain or "cross-domain", pr_num,))
|
||||||
db.audit(
|
db.audit(
|
||||||
conn, "evaluate", "approved",
|
conn, "evaluate", "approved",
|
||||||
json.dumps({"pr": pr_num, "tier": "STANDARD", "domain": domain,
|
json.dumps({"pr": pr_num, "tier": "STANDARD", "domain": domain,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue