Loop a PR to a quality bar.

Name a score. ProPR reviews the pull request, fixes the merge blockers, waits for green checks, and reviews again until the PR reaches it or the cycles run out.

Describe
Run isolated
Review in GitHub

Feature overview

You start with
An open pull request
You use
/ultrafix goal=8 max=5 ยท ultrafix label
Takes
44 minutes on the real run: two reviews, one fix, two CI waits
Real run
propr #2934

Set the bar

Comment on the PR. goal is the review score to reach and max caps the cycles. Add model= to pick the review model and pause= for seconds between cycles; anything you leave out comes from Settings. Lines below the command steer every cycle.

@maintainercommented on this pull request

/ultrafix goal=8 max=5
Keep the public API unchanged.

Turn on Run ultrafix after PR when you submit a task or plan, and ProPR starts the loop as soon as the PR opens.

ProPR labels the PR and reviews first

ProPR adds the ultrafix label and confirms the goal and the cycle limit. The first action is a review, or a fix when review findings are already pending.

@propr-dev[bot]on propr #2934

๐Ÿ”„ Ultrafix loop started (goal: 8/10, max cycles: 10)

First action: /review

Each cycle reviews, fixes, and waits

The review posts numbered merge blockers (F1), optional suggestions (S1), and a Score: N/10. The fix applies every pending merge blocker; suggestions wait until you name them. Before the next review, ProPR waits for blocking checks to pass, for the PR to go quiet, and for the pause.

Stop it whenever you want

Remove the ultrafix label and the loop ends after the current cycle. Comment /ultrafix again to restart it.

It ends at the bar

A review at or above the goal ends the loop and removes the label. When the cycles run out first, ProPR posts Ultrafix stopped before reaching its goal with the last score. If the source issue carries the auto-merge label, ProPR arms GitHub auto-merge at the goal, or merges the PR itself when the repository has GitHub auto-merge turned off; otherwise you merge.

Optional: escalate when the score stalls

Turn on automatic escalation in Settings. When reviews stop improving the score, ProPR raises the implementing model's reasoning effort one tier at a time, then hands the PR to the next model in your list. Models out of subscription capacity are skipped.

Ultrafix settings: rating goal 8, five cycles, a 60-second pause, and automatic escalation to GPT-6 Astra, then Claude Fable 5.1
Instance defaults for every loop, and the models escalation tries in order.

One loop, minute by minute.

Claude Opus 5.5 implemented public propr #2934 from a plan that set Ultrafix to 8/10. GPT-6 Astra reviewed. Times are UTC on 9 October 2026.

  1. The PR opens. Ultrafix starts with goal 8/10 and waits for blocking CI on 2b9472a.
  2. Review 1 files merge blocker F1 and scores 6/10.
  3. The fix pass commits b4e98fb with a regression test. The loop waits for CI again.
  4. Review 2 finds no blockers and scores 9/10. ProPR removes the label, and the PR merges into its epic branch.

The loop names the checks that hold it

ProPR reporting that Ultrafix is waiting for the blocking checks on commit 2b9472a before the next review.

Review 1: F1 and a score of 6/10

The first review on pull request 2934 listing optional suggestion S1 and ending with Score: 6/10.
Every step of the loop, from the /ultrafix comment to the merge, is on the Ultrafix page.

What you get

A pull request that reached the score you set, with every review and fix as a normal comment and commit in its thread.

Ultrafix → All playbooks