Skip to content

orb(review): one-shot cadence pins a transient/inconclusive verdict across ALL future heads #9019

Description

@JSONbored

In one-shot cadence, getLatestPublishedAiReview is deliberately head-agnostic (src/db/repositories.ts ~5102-5126), and any non-null result suppresses a fresh review (src/queue/processors.ts ~9920-9931) and is replayed (~9995-10012).

That is correct for a real verdict. It is wrong for an inconclusive one: a provider outage or consensus defect produces a held verdict that is still persisted and stamped published (~10417-10460, ~9461). From then on the outage verdict is replayed even for new pushes — unlike every other cadence, a contributor pushing new code cannot escape it. The only exit is a maintainer forceAiReview, which #9008 shows can itself be silently eaten by a held lock.

Related, same family: getCachedAiReview lets a published row skip the non-cacheable 30-minute cooldown entirely (repositories.ts ~5063-5086), so a transient outage verdict at head H is final for H — the bot never retries. The finding text says it "re-evaluates on the next update", which is only true if the contributor pushes, and a green PR gives them no reason to.

Fix

  1. Exclude non-cacheable/inconclusive rows from oneShotPriorReview — that PR never actually got its one real shot.
  2. Reuse only same-head or genuinely conclusive verdicts; keep the cooldown-bounded retry alive for published-but-inconclusive rows.

Acceptance

  • An outage-time inconclusive verdict is retried on the next pass/push instead of being replayed forever.

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