What happened
PR conforma/cli#3373 received 53 head_ref_force_pushed events across 7 Renovate rebase cycles (averaging 7.6 force pushes per cycle). Each force push is a potential review dispatch trigger. The Jul 3 cycle alone generated 8 force pushes within a 14-minute window (02:01-02:15 UTC). The Jul 11 cycle generated 8 force pushes within a 3-minute window (02:10-02:13 UTC). The Jul 6 cycle also generated 8 force pushes. Despite the effective diff against the base branch being semantically identical across all cycles (same dependency bump, same transitive updates), the system treated each force push as a new event requiring review. This resulted in 12 finished review approvals and 5 cancelled reviews (17 total review dispatches). The cancelled reviews on Jul 11 show partial mitigation — 2 of 3 dispatches were cancelled — but 1 still completed a full review on unchanged content.
What could go better
Issue #4401 proposes detecting rebase-only force pushes and skipping re-review when the effective diff is unchanged. This PR reveals an additional dimension: Renovate/MintMaker's multi-step rebase operations generate multiple force-push events per cycle, creating an amplification effect. A single reopen-and-rebase produces 2-9 force pushes, each potentially triggering a separate dispatch. Even if the system correctly skips re-reviews when the diff is unchanged, it should also coalesce rapid-fire force pushes from the same actor within a short time window to avoid the overhead of evaluating each one independently. The 5 cancelled runs suggest some concurrency mitigation exists but it is not fully effective — the cancellations still consume dispatch infrastructure and leave status comments on the PR.
Proposed change
When implementing #4401, include a force-push coalescing mechanism: if multiple force-push events arrive for the same PR within a short window (e.g., 10-15 minutes), batch them and only dispatch one review for the final state. This could be implemented as a debounce in the dispatch layer — on receiving a force-push event, wait a configurable period (e.g., 5 minutes) before dispatching, and if additional force pushes arrive during that window, reset the timer. This would reduce 53 force-push events to 7-10 effective dispatch triggers (one per rebase cycle). Combined with the diff-comparison logic in #4401, most of those would also be skipped, bringing the review count from 17 down to 1-2.
Validation criteria
After implementation, multiple force pushes within a 15-minute window from a bot rebase should result in at most one review dispatch. For a PR like conforma/cli#3373 with 53 force pushes across 7 cycles, the total review dispatches should drop from 17 to at most 7 (one per cycle), and ideally to 1-2 after diff-comparison deduplication is also applied.
Generated by retro agent from conforma/cli#3373
What happened
PR conforma/cli#3373 received 53
head_ref_force_pushedevents across 7 Renovate rebase cycles (averaging 7.6 force pushes per cycle). Each force push is a potential review dispatch trigger. The Jul 3 cycle alone generated 8 force pushes within a 14-minute window (02:01-02:15 UTC). The Jul 11 cycle generated 8 force pushes within a 3-minute window (02:10-02:13 UTC). The Jul 6 cycle also generated 8 force pushes. Despite the effective diff against the base branch being semantically identical across all cycles (same dependency bump, same transitive updates), the system treated each force push as a new event requiring review. This resulted in 12 finished review approvals and 5 cancelled reviews (17 total review dispatches). The cancelled reviews on Jul 11 show partial mitigation — 2 of 3 dispatches were cancelled — but 1 still completed a full review on unchanged content.What could go better
Issue #4401 proposes detecting rebase-only force pushes and skipping re-review when the effective diff is unchanged. This PR reveals an additional dimension: Renovate/MintMaker's multi-step rebase operations generate multiple force-push events per cycle, creating an amplification effect. A single reopen-and-rebase produces 2-9 force pushes, each potentially triggering a separate dispatch. Even if the system correctly skips re-reviews when the diff is unchanged, it should also coalesce rapid-fire force pushes from the same actor within a short time window to avoid the overhead of evaluating each one independently. The 5 cancelled runs suggest some concurrency mitigation exists but it is not fully effective — the cancellations still consume dispatch infrastructure and leave status comments on the PR.
Proposed change
When implementing #4401, include a force-push coalescing mechanism: if multiple force-push events arrive for the same PR within a short window (e.g., 10-15 minutes), batch them and only dispatch one review for the final state. This could be implemented as a debounce in the dispatch layer — on receiving a force-push event, wait a configurable period (e.g., 5 minutes) before dispatching, and if additional force pushes arrive during that window, reset the timer. This would reduce 53 force-push events to 7-10 effective dispatch triggers (one per rebase cycle). Combined with the diff-comparison logic in #4401, most of those would also be skipped, bringing the review count from 17 down to 1-2.
Validation criteria
After implementation, multiple force pushes within a 15-minute window from a bot rebase should result in at most one review dispatch. For a PR like conforma/cli#3373 with 53 force pushes across 7 cycles, the total review dispatches should drop from 17 to at most 7 (one per cycle), and ideally to 1-2 after diff-comparison deduplication is also applied.
Generated by retro agent from conforma/cli#3373