Repository navigation
review: a fallback stays inside the reviewer's model family - #205
Merged
Merged
Conversation
A review whose model the endpoint parked or could not route continued on REDLINE_FALLBACK_MODEL whatever that model was. A host that reads on one vendor's models because another vendor's coding agent writes its pull requests could have a review finished by the author's own family, with nobody choosing that. review.mjs now uses the fallback only when it is of the stopped model's family (modelFamily, sameModelFamily). Otherwise it logs why and fails the run, as it does with no fallback. The default fallback, claude-opus-5-5, now serves only a Claude reviewer: a host that reads on another family names a fallback of that family. The README, the hosted quickstart and the changelog say so, and the quickstart says how to choose the reviewer's family.
sprayberry-redline
approved these changes
Nov 11, 2026
sprayberry-redline
left a comment
Collaborator
There was a problem hiding this comment.
Verdict: approve. The family check runs before switching models, preserving the original error when a fallback is refused and retaining conversation history when it is allowed. The tests cover cross-family refusals for parked and unroutable models, same-family continuation, and model ID normalization; the documentation explains the configuration change.
This was referenced Nov 11, 2026
This was referenced Nov 11, 2026
askalf
pushed a commit
to askalf/pitlane
that referenced
this pull request
Nov 11, 2026
Moves this repository's askalf/ci pins (its reusable workflow calls, their redline-ref inputs and any action pins) to askalf/ci@19e8159, the main commit that last changed the review, the fix or an action (main 2026-11-11, askalf/ci#205). The scripts are fetched at that same commit. The pins are the only change. --------- Co-authored-by: askalf-pin-bump[bot] <352119504+askalf-pin-bump[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
A review's fallback model is used only when it is of the same family as the model that stopped.
Why
Which family reads a repository is a choice. Where one vendor's coding agent writes the pull requests, another vendor's model reads them, so the reviewer does not share the author's blind spots.
The fallback could undo that choice without anyone making it. A review whose model the endpoint parked or could not route continued on
REDLINE_FALLBACK_MODELwhatever that model was, and the default isclaude-opus-5-5. On a host that reads on GPT models, a parked seat would have handed the review to Claude, with one log line to show for it.How
modelFamily(id)inscripts/redline/review.mjs:claudeforclaude-*,gptforgpt-*,chatgpt-*,codex-*and theo3/o4-ministyle ids, else the id's leading run of letters and digits (gemini-3-proisgemini). A provider path before the id is not part of it.sameModelFamily(a, b)is false when either id has no family.reviewChangechecks the family at the point of use, so it covers the routine, deep and pin models alike. A fallback of another family is not used: the run logs<reason>; the fallback <model> is of another model family, so it is not used and the review stopsand fails with the same error as a run with no fallback.What changes for a host
REDLINE_FALLBACK_MODELunset: a parked or unroutable model now fails the review. It gets a fallback back by naming a model of its own family.Docs
docs/hosted-quickstart.md: how to choose the reviewer's family.CHANGELOG.md: November entry.Tests
node scripts/redline/review.test.mjs: ten new checks.ModelUnroutable.modelFamilyandsameModelFamilyover listed ids, unlisted ids, provider paths and empty values.The existing Claude to Claude fallback checks pass unchanged.
node test-all.mjspasses but for two path checks inreview.test.mjsthat fail the same way onmainon a Windows checkout; CI runs them on Linux.