maintainer-radar

Heuristics

Maintainer Radar uses deterministic rules. The score is not truth. It is a routing hint for maintainer attention.

Every analyzed PR includes a score_breakdown list. Each item names the heuristic, shows its risk_delta, and marks it as a signal or flag. Positive values raise risk. Negative values lower risk. The final risk score is clamped to the 0 to 100 range, then reviewability is calculated as 100 - risk.

Each analyzed PR also includes next_step, a deterministic sentence that turns the selected action and strongest flags into a concrete maintainer move.

Example:

[
  { "label": "CI passed", "risk_delta": -8, "kind": "signal" },
  { "label": "code changed without tests", "risk_delta": 10, "kind": "flag" }
]

Positive Signals

Risk Flags

Maintainer Blocker Language

Blocker detection intentionally looks for plain maintainer feedback patterns:

This is not sentiment analysis. The goal is to catch comments that usually mean “do not spend full review time until the author follows up.”

Maintainer Blocking Labels

Label detection looks for labels that usually mean the PR is not ready for review:

These labels route the PR to author follow-up even when CI is green.

Merge Readiness

Hydrated GitHub scans also read merge readiness fields such as mergeable, mergeStateStatus, and requested reviewers.

Fixture Corpus

The test suite includes tests/fixtures/blocker-prs.json to keep blocker detection concrete. Add new fixture cases when a real maintainer pattern should be detected.