Repository navigation
Conversation
A busy day's paired reviews spent the opencode-go allowance, and every review failed until it reset. opencode/deepseek-v4.1-flash-free is the same model at no cost. Implementer lines naming DeepSeek V4.1 Flash, by either tier, still read as this reviewer, so it never reviews its own change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d of failing When the opencode reviewer's account hits its usage limit and it has no findings of its own to settle, the run reports it on a skipped line and in the record's Skipped line, and the size's pick's round counts. A spent optional reviewer no longer holds every PR as a draft until its reset. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 49 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
I reviewed the full diff at 7275d2a. It covers two changes: the second reviewer's move to opencode's free tier, and the change that leaves that reviewer out when it hits a usage limit instead of failing the run.
- Skip on usage limit:
review()turns the second reviewer'sReviewLimitErrorinto aSkippedresult, without aborting the other reviewers, but only when that reviewer has no open findings. The check compares the seat's reviewer toSECOND_REVIEWERby identity.pickRevieweralways builds a new object, so a--harness opencoderun can never be skipped and leaveroundsempty. The skipped reviewer's saved session is kept throughwaiting. - Record and output:
reviewRecordadds a- Skipped:line, either in the skipped reviewer's existing tally block or in a newRounds: 0block. The tests showparseReviewstill reads both forms.roundLinesand the JSON output now reportskippedtoo, andresetTextnow holds the reset-time formatting thatReviewLimitErrorused to do inline. - Free-tier model:
SECOND_REVIEWERis nowopencode/deepseek-v4.1-flash-free.key()drops a trailing-free, so anImplementer:line naming DeepSeek V4.1 Flash still excludes this reviewer from reviewing its own change. - Docs and tests: The README,
--help, the/quest-reviewskill (edited at the maintainer's request) andmodel-check.mdare updated. New tests cover a skipped first run, a run after the limit resets, the still-failing case with open findings, and the record round-trip. The general reviewer-failure test now usesFAKE_OPENCODE_REJECTED.
claude-opus-5-5 | 𝕏
|
Superseded by #701: the maintainer chose (2026-11-13) to replace opencode's DeepSeek reviewer with Pullfrog, so (Written by Claude Opus 5.5) |

Summary
An outage of the optional second reviewer no longer holds every PR as a draft. The opencode reviewer also moves to opencode's free tier.
On 2026-11-13 the paired reviews used up the opencode-go allowance: about $60 in 49 hours across 358 review sessions. After that,
quest reviewfailed on every PR withopencode hit its usage limit, and about a dozen PRs sat as drafts. The reviewer earns its place: it raised most of the medium and high findings no other reviewer caught, and authors fixed 77% of its findings, refuting only 9%.src/cli/review.ts). When the second reviewer hits its usage limit and has no findings of its own to settle, the run leaves it out instead of failing. It printsskipped opencode <model> <effort> usage limit; resets <time>, JSON gainsskipped, and the## Reviewrecord gets a- Skipped:line (src/cli/review-record.ts). The size's pick's rounds count, so the head is named in full when they're clean. Its session, if any, waits for its next run.src/cli/models.ts).SECOND_REVIEWERisopencode/deepseek-v4.1-flash-free, the same model at no cost.src/github/models.tsdrops a trailing-freefrom model keys, so anImplementer:line naming DeepSeek V4.1 Flash by either tier still reads as this reviewer, and it never reviews its own change.--helptext, README, the/quest-reviewskill's outage paragraph (assets/skills/review.md, edited at the maintainer's request), the live sandbox test's default model, andquest/m1/model-check.md.Decisions
Validation
just checkandjust testpass: 1305 tests, 5 skipped. New tests cover the skip, a resumed run once the limit resets, the still-failing case with open findings, and the record'sSkipped:line round-tripping throughparseReviewwith and without a tally.quest reviewran Codex medium and its low shadow (both clean). opencode's free tier was refused for the day ("Free usage limit reached", resetting 2026-11-14T00:00Z, though this account had never used it), so the run printedskipped opencode opencode/deepseek-v4.1-flash-free high usage limit; resets 2026-11-14T00:00:00Z, wrote theSkipped:line here, and endednext done.Follow-ups
Review
Rewritten by
quest reviewafter each round.Head: 7275d2a
Base: origin/main at 58bfa33
Reviewer: Codex, gpt-6.1-sol, medium effort
Session:
01a1d5d9-96ae-7c92-8b36-28a3c9ee4223, round 1Score: 9/10,
No actionable bugs were found: skip behavior preserves outstanding findings and records quota skips, but builds and tests were not run, as instructed.Rounds: 1; findings 0: fixed 0, refuted 0, open 0
Findings: none
Reviewer: Codex, gpt-6.1-sol, low effort, shadow
Session:
01a1d5d9-96ae-7312-aad0-5cb754aeb46e, round 1Score: 9/10,
Code inspection found no actionable defects: skip handling preserves outstanding findings, records skipped reviewers, and retains successful rounds; tests and builds were not run, as instructed.Rounds: 1; findings 0: fixed 0, refuted 0, open 0
Findings: none
Reviewer: opencode, opencode/deepseek-v4.1-flash-free, high effort
Rounds: 0; findings 0: fixed 0, refuted 0, open 0
Skipped: usage limit; resets 2026-11-14T00:00:00Z
Models
Size: S
Implementer: Claude Code, claude-opus-5-5, unknown effort
(Written by Claude Opus 5.5)
🤖 Generated with Claude Code