Skip to content

Feature: detect the non-convergent review loop (same-region repeat findings) and advise cutting over patching #1002

Description

@drodio

Feature request: detect the non-convergent review loop and advise cutting over patching

The failure mode

A branch enters a fix→review→fix loop that does not converge on one region of the change. Concretely, from a real case: 17 review rounds, where rounds 13–17 each returned High-severity findings clustered in the same section, and — the key tell — every finding was a correct fix to the previous round's finding. The section specified behaviour that couldn't be pinned (a cache's retention/supersession/eviction over time, against a system with no measurable cadence or churn rate): locally right, globally inconsistent, every round. The author eventually deleted the section (~101 lines → 34). The right move was available at round 3 but taken at round 17 — several High findings and a lot of quota later.

Individual-finding review can't surface this, because each finding is individually valid. The signal only exists across rounds.

Request

Have roborev detect the pattern and surface it — ideally via roborev insights and/or as an advisory line on a review:

This branch has had N consecutive rounds with findings clustered in <file/region>, each resolving the prior round's finding. This is the signature of an unspecifiable region — consider removing it (keeping only the invariants and measured facts) rather than patching again, and capturing the discarded constraints as a tracked issue.

Detection sketch

Per branch, track finding location (file + rough line span / section) across rounds. Raise the advisory when:

  • ≥3 consecutive rounds each produced ≥1 finding whose location overlaps a common region, AND
  • the intervening commits touched that same region (i.e. the author was patching it, and the patch drew the next finding).

Why it matters

This is the highest-cost shape of the non-convergent loop — it burns the most reviews and produces the most High findings, and it's the one case where the correct action is deletion, which no per-finding gate ever recommends. Turning a cross-round pattern into an explicit "cut, don't patch" nudge would have saved ~14 of those 17 rounds. Complements a branch-settle debounce (separate request).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions