A Rate Limit Is a Scheduling Fact, Not a Verdict
You ask for a specific reviewer and get nothing back — a quota refusal, a crash, a spinner that never resolves. The dangerous move is to record that as a review round, because now the log says the artifact was read and it was not. The other dangerous move is to stop the pipeline, because unavailability is a property of the moment rather than of the work.
The answer is a ring: an ordered rotation of reviewers, entered at whichever one was requested, walked around exactly once. Every hop is logged with the reason the previous one was skipped. If the ring closes without a reviewer, that is the point where a human decides — and the decision is usually to use a reviewer somebody had informally excluded, which is why the ring has to be written down rather than assembled in the moment. Written down does not mean everyone: a member that misbehaves when named — one that runs alone instead of joining the rotation — is excluded on purpose, and the exclusion is part of the record.
Measuring Availability Without Fooling Yourself
This is where it gets subtle, because every obvious signal lies in a different direction.
Byte count lies. One failure produced over seven thousand characters on the wire and displayed as a handful of spinner frames — control codes and carriage returns, not an answer. Strip the escape sequences and measure the rendered text.
Exit code lies too. Another produced eight thousand characters, exited non-zero, and carried a quota message in its tail. Long, and dead. So a crash whose output matches a limit pattern counts as unavailable at any length.
A short clean exit is not an answer. Exiting zero having said almost nothing means the tool ran and produced no review.
A long clean answer is never second-guessed, whatever words it contains. This one is load-bearing in the other direction: a genuine, substantial review of rate-limit handling code would trip any naive keyword scan, and killing it would be the worst possible false positive.
The Shape That Stays Undetected on Purpose
There is a failure this cannot catch: a reviewer that returns just over the displayed-length floor in plain narration, exits zero, and never uses limit vocabulary. It is not a crash, not a quota message, and not short enough for the length test to convict. Every mechanical detector anyone has proposed for it re-creates the false positive above.
So it is left to the session's own judgment, deliberately and with that written down. The reason to name an undetectable case in a contract is that the alternative is a team believing the detector covers it.