Skip to content

fix(review): disposition recommends approve/merge while blockers are active (+ approval-bar / confidence level may be too loose) #2002

Description

@JSONbored

Parent: #1936

Problem

The Orb review agent is recommending approve/merge on PRs that have active blockers, and the top-line disposition contradicts the signals in its own body. Observed on a live PR (Orb comment, 2026-07-01):

  • Header: "✅ Gittensory review result — approve/merge recommended", Suggested Action: "Approve/Merge — safe to merge".
  • …yet the same comment lists a real Blocker (review-enrichment/src/analyzers/dep-health.ts:69 — npm stale detection preferring time.modified, mis-classifying a 3-year-stale package as healthy), and
  • Validation posture ❌ 5/25 — "Preflight is holding this PR; address the blocker before review."
  • The summary chips also read "no blockers" while the Blockers section is populated, and readiness 55/100 while still recommending merge.

So a PR that is preflight-held with an unresolved blocker is being surfaced as safe to merge. That's a trust-breaking disposition bug: a maintainer following the recommendation would merge a PR the agent itself flagged.

Suspected scope

  1. Disposition/recommendation gate. Wherever "approve/merge recommended" / "safe to merge" is decided, it is not gated on the blocker + validation-hold state. Merge should only be recommended when blockers.length === 0 and validation/preflight is not holding and readiness ≥ the bar.
  2. Summary-chip inconsistency. The "no blockers" chip and the populated "Blockers" section are derived from different sources; reconcile them to one source of truth.
  3. Approval bar too loose. PRs with smallish problems noted in the review summary still come back as "approval / no blockers." The bar for a clean disposition may need tightening.
  4. Confidence threshold. Global confidence is redacted — possibly too low. Consider raising it and/or making the disposition stricter (per-repo overridable).

Impact

High — this is the maintainer-facing recommendation surface. A wrong "safe to merge" on a blocked PR erodes trust in the whole review product and could cause bad merges.

Investigate (when time permits)

  • Audit the disposition path (readiness → recommendation → "Suggested Action"): confirm blockers + validation-hold hard-veto an approve/merge recommendation.
  • Reconcile the "no blockers" chip with the Blockers section (one source).
  • Review the approval bar + the confidence threshold; decide whether to raise/strictly-gate (config-driven, per-repo overridable so self-hosters can tune).
  • Add regression tests: a PR with ≥1 blocker or a validation-hold must never yield an approve/merge disposition.

Metadata

Metadata

Assignees

Labels

maintainer-onlyOwner-only work — yields no Gittensor points.roadmapOn the Wave-2 agent-layer roadmap board (project 9)

Projects

Status
Done

Relationships

None yet

Development

No branches or pull requests

Issue actions