chore(agents): add milestone-based PR prioritization to ca-continuous-pr-reviewer #3111

Closed
freemo wants to merge 1 commits from improvement/agent-pr-reviewer-milestone-prioritization into master
+23 -1
View File
@@ -321,8 +321,30 @@ LOOP FOREVER:
stale_count = 0
# ── Step 2b: Prioritize work items ───────────────────────────
# Sort work items so the most impactful PRs are reviewed first.
# This ensures earlier milestones (which are overdue) get reviewed
# before later milestones, and merge retries (which take seconds)
# are processed before full reviews (which take minutes).
work_items.sort(key=lambda item: (
# Priority 1: Merge retries first (already approved, just need merge)
0 if item.type == "merge_retry" else 1,
# Priority 2: Earlier milestones first (v3.2.0 before v3.7.0)
# Extract version tuple from milestone title, e.g. "v3.2.0" → (3, 2, 0)
# PRs without a milestone sort last (999, 999, 999)
milestone_sort_key(item.pr.milestone if hasattr(item, 'pr') else None),
# Priority 3: PRs with passing CI before PRs with pending CI
0 if item.type == "ci_fix" else 1,
# Priority 4: Smaller PRs first (faster to review)
(item.pr.additions + item.pr.deletions) if hasattr(item, 'pr') else 0,
))
# Helper: milestone_sort_key(milestone) →
# if milestone is None: return (999, 999, 999)
# parse version from milestone.title, e.g. "v3.2.0" → (3, 2, 0)
# return parsed tuple, or (999, 999, 999) if unparseable
# ── Step 3: Dispatch parallel reviewers via prompt_async ─────
# Take up to N work items
# Take up to N work items (now sorted by priority)
batch = work_items[:N]
# Claim all PRs in the batch using two-phase locking protocol