Skip to content

orb(review): transient lock-contended hold applies the sticky manual-review label, deadlocking the PR until a human unlabels #8999

Description

@JSONbored

Problem

When a pass loses the AI-review lock race it returns the ai_review_inconclusive ("AI review already in progress") hold — a transient infrastructure artifact whose own text promises "it re-evaluates once the in-flight review completes or on the next update". But the disposition that processes this hold applies the sticky manual-review label, and that label is designed to be liftable only by a human (#regate-churn freeze + the executor's live-label guard). Net effect: a transient hiccup silently converts into a mandatory human intervention, the exact opposite of what the product promises.

Verified live 2026-07-26 on #8972 (in-flight review killed by a deploy):

  • 14:55:29Z — the racing pass publishes the contended placeholder and the disposition applies manual-review.
  • The label then (a) freezes all fresh AI review for the contributor PR (isFrozenForManualReview — plain sweeps may only replay), and (b) the executor denies approve/merge on every later pass: 15:08:21Z and 15:20:50Z both show agent.action.approve/agent.action.merge denied with "manual-review label present".
  • Because the contended placeholder is deliberately never persisted (persistable: false), the frozen reuse path has nothing to reuse — the PR loops on the placeholder indefinitely. Deadlock until a human removes the label.

The sticky-label design is correct for substantive holds (guardrail hits, migration collisions, protected-author red CI). It is wrong for transient infra holds, which by their own contract are supposed to self-resolve.

Fix

  1. Don't label on transient holds: holds whose reason code is ai_review_inconclusive/lock-contended (and any other "retry will fix this" class) must not apply the sticky manual-review label. The hold itself (no terminal action this pass) is enough.
  2. Provenance + auto-clear: record which hold reason applied the label; when a later pass produces a real review verdict + disposition for the same head, auto-remove a label whose provenance was transient. A human-applied or substantive-hold label stays sticky exactly as today.
  3. The freeze should not engage off a label whose provenance is transient (follows from 1/2).

Acceptance

  • Reproduce the lock-contended hold → no manual-review label is applied; once the real review lands, approve/merge/close execute normally with zero human action.
  • A guardrail/protected-author hold still applies the sticky label exactly as today (regression-covered).

Related: #8972 (evidence), the orphaned-lock sibling issue (the trigger), #7994 (the original sticky-label rationale — unchanged for substantive holds).

Metadata

Metadata

Assignees

Labels

maintainer-onlyOwner-only work — yields no Gittensor points.orbGittensory Orb related - maintainer self-hosting analytics.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions