You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
An OpenCode model that is out of quota no longer eats the whole review budget. Out of quota, opencode run writes no events at all and just sits there; the fallback chain then gave every next model a fresh full timeout — measured 44 minutes of a 71-minute review on one silent model, and a 6-model chain could take 4 hours. A healthy run writes its first JSON event within seconds, so a model that has written no event for MULTI_OPENCODE_STALL seconds (default 180; a stderr warning does not count) is now killed, with its whole process tree, and the chain moves on; its marker says SILENT, not TIMEOUT (#16).
A killed ask.sh leaves markers. Terminating it from outside (Ctrl-C, pkill, a caller's own timeout) used to leave a 0-byte transcript and neither an answer nor a .dead, so a judge reading *.dead saw a reviewer that neither answered nor failed. TERM/INT/HUP now stop the children and write <backend>: KILLED — … for every backend still running (#23).
A CLI that cannot write under $HOME says so. Run from a sandboxed shell where $HOME is read-only, both Codex and OpenCode die on startup and were reported as NO OUTPUT, the same text a model that answered nothing gets. The marker now adds that the CLI could not write under HOME and suggests the sandbox. Only the CLI's own stderr lines can trigger it, never text the model read from the reviewed repo. An OpenCode that died at startup without a single JSON event used to be counted as a live "raw capture" answer — that is how today's RAW CAPTURE ONLY — model=sonnet exit=1 passed as alive — and is now a dead backend with a reason (#21, #22).
check-if-done reviews with OpenRouter and Gemini too. It called ask.sh without --backend, so it silently got Codex + OpenCode only while code-review and ask used every configured backend; and its --model <from probe> wording sent the agent copying the Claude sub-agent model into OpenCode. It now passes the same explicit backend list as the other skills, and says which probe line to copy (#17, #22).
Claude reviewer sub-agents cite lines from the file, not from review.diff. The agents were pointed at the diff and asked for FILE:LINE with nothing saying the diff's numbering is not the file's; one cited line 290 of a 16-line file, and the judge had to renumber by hand, which also broke corroboration against Codex and OpenRouter (#18).
The ponytail section of the review report is labelled for what it is: the judge's own read under a different ruleset, not a fourth independent reviewer. Its placement between independent sections implied a fourth model family (#19).
The rule-file skip note is honest about a gitignored CLAUDE.md. Untracked ignored files are deliberately counted as touched by the change (a .gitignore edit is how a hostile rule file hides), but the note called such a file "modified by the reviewed change" and sent readers hunting for a diff that does not exist. It now says the file is untracked and gitignored; it is still skipped (#20).
Cleanup: --fallback documented as OpenCode-only, a duplicated local in the OpenRouter runner dropped, and the MULTI_RUN_KEEP_DAYS=0 test now checks that an old run survives instead of comparing two literals (#24).