Problem
The fix loop picks the next issue using oldest-first ordering among ready-for-agent issues. A P3 dead-code finding filed yesterday blocks a P1 CVE filed this morning from being picked up. There is no severity-aware scheduling.
This means the fix loop's throughput can be fully occupied by low-stakes work while high-stakes work waits, which defeats the purpose of autonomous prioritization.
Current behavior
# loops/fix.py
issue = github.get_next_ready_issue(project) # oldest ready-for-agent first
What's needed
Pick the highest-priority ready issue, not the oldest. Priority signals available on every issue:
sev:high / sev:medium / sev:low labels (already in the label taxonomy)
- Issue creation date (recency tiebreaker)
- Scan type (e.g.
scan:logs issues may warrant faster response than scan:codebase)
A simple approach: sort ready-for-agent issues by sev:high > sev:medium > sev:low > unlabeled, then by creation date descending within each tier.
Definition of Done
- Fix loop picks the highest-severity ready issue, with creation date as tiebreaker
- Tie-breaking and ordering logic is unit-tested
- If no severity label is present, issue is treated as lowest priority
Out of Scope
- Dynamic re-prioritization mid-run
- Cross-project priority comparison
- Human-configurable priority overrides beyond existing labels
Problem
The fix loop picks the next issue using oldest-first ordering among
ready-for-agentissues. A P3 dead-code finding filed yesterday blocks a P1 CVE filed this morning from being picked up. There is no severity-aware scheduling.This means the fix loop's throughput can be fully occupied by low-stakes work while high-stakes work waits, which defeats the purpose of autonomous prioritization.
Current behavior
What's needed
Pick the highest-priority ready issue, not the oldest. Priority signals available on every issue:
sev:high/sev:medium/sev:lowlabels (already in the label taxonomy)scan:logsissues may warrant faster response thanscan:codebase)A simple approach: sort
ready-for-agentissues bysev:high > sev:medium > sev:low > unlabeled, then by creation date descending within each tier.Definition of Done
Out of Scope