Name a score. ProPR works the PR until it gets there.

/ultrafix is ProPR's correction loop for pull requests that need more than one follow-up. It alternates review and fix passes until the PR reaches your score, with every pass in the PR thread.

Gather context
Execute
Refine the PR

Feature overview

One comment, one loop, one merge.Public propr #3343, shortened to the relevant parts: /ultrafix, a 6/10 review with merge blocker F1, fix commit 9fe0246, an 8/10 re-review, a lint fix, and the human merge.

Review, fix, repeat.

/reviewblockers, suggestions, score
Fixapplies merge blockers
ChecksCI goes green
Stopscore goal · max cycles · label removed
↩ next cycle until the loop hits a stop condition

Review the current diff

A read-only /review posts numbered merge blockers (F1), optional suggestions (S1), and a Score: N/10.

Fix the merge blockers

The fix pass applies every pending merge blocker as a follow-up commit on the same branch. Suggestions wait for you to name them.

Wait for green checks

ProPR waits for the blocking checks before it starts the next cycle. Checks you mark non-blocking never hold the loop. Read how a red check becomes a fix commit on the same branch in fix CI failures automatically.

Stop at the goal

The loop ends when the score reaches the goal, the cycles run out, or you remove the ultrafix label. With the auto-merge label on the source issue, ProPR merges once the goal is met. Otherwise you merge.

Two ways to start

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

One label to stop

The ultrafix PR label is the switch. Remove it and the loop stops after the current cycle. Comment /ultrafix again to restart it.

Your target, your model

Set the score, cycle limit, pause, and review model with /ultrafix goal=8 max=5 pause=60 model=<model-id>, or keep the instance defaults from Settings. Lines below the command steer every cycle.

Escalation when scores stall

With automatic escalation, a loop whose score stops improving raises the implementing model's reasoning effort one tier at a time, then hands off to the next model in your ordered list.

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.

Every pass is in the open.

Fixes land as follow-up commits on the same branch, so reviewers inspect each pass in normal GitHub history. The task timeline records every review and fix, the final score, and why the loop stopped. With visual previews on, a pass that changes the screen posts fresh captures.

Every run of one pull request on one timeline: implement, review scored 5, fix, review scored 7, and the Ultrafix run in progress with its live steps
Every review and fix pass of one pull request on one timeline, each review with its score.