Skip to content

feat!: quest review avoids only the latest writer - #567

Open
kixelated wants to merge 2 commits into
mainfrom
review-latest-writer
Open

kixelated wants to merge 2 commits into
mainfrom
review-latest-writer

Conversation

@kixelated

@kixelated kixelated commented Nov 8, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

quest review avoided every model the PR's ## Models record named. Once Sol and Opus had both written a PR, as happens when an iterate runs on the other harness, no listed reviewer was left. The error said pass --harness and --model, so agents picked an unlisted model themselves (Claude Fable 5.1 reviewed moq-dev/rind#455 and moq-dev/rind#483).

Approach

  • Reviewer choice (src/cli/review.ts, src/cli/review-record.ts): a review avoids only the latest writer, the model of the record's last Implementer: line. Earlier writers may review. The body's and kix's sessions comment's last lines are kept apart: when they name different models, which pushed last cannot be told, so the running harness, usually the session that just pushed, is taken to be the latest writer, as it is with no record or an unknown last model. --harness then avoids every model they name. --exclude-model still names every model to avoid.
  • Record order (src/github/models.ts): withModels moves a session's line last when it pushes again instead of leaving it where it was, so the last line names the latest writer. kix's sessions comment uses it through withSession. A redelivered PR body (cloudflare/src/github/service.ts) keeps earlier sessions with the delivering session's own lines last.
  • Rules and docs: CONTEXT.md now says a model other than the one that changed the PR last reviews it, and that a session's line moves last whenever it pushes. Also updated: the review skill and its stubs, quest review --help, README, getting-started, and the model-routing epic's Plan, which records the decision.

Impact

  • Breaking: a PR both Sol and Opus wrote is now reviewed by whichever did not change it last, instead of failing with no reviewer. The error messages say is avoided instead of wrote the code.
  • Agents writing the record by hand move their line last on each push instead of adding it once.
  • No migration: earlier records keep their order, so on a PR written before this lands, the last line is the latest session to first push.

Decisions

  • The maintainer, 2026-11-07: "only avoid the most recent model. So if Opus worked on it last, use Codex to review" ✅ (rejected: fail with a Maintainer: item instead of the hint to pass a model; add a third reviewer to each size; name fallback reviewers in a repository's AGENTS.md).

Validation

  • just check passes.
  • just test passes on the final head: 1184 tests, 5 skipped, plus the Worker's 540. The review skill's stubs were regenerated with quest init.

Models

Size: S
Implementer: Claude Code, claude-opus-5-5, high effort

(Written by Claude Opus 5.5 with high)

🤖 Generated with Claude Code

Review

Rewritten by quest review after each round.

  • Reviewer: Codex, gpt-6.1-sol, medium effort
  • Session: 01a1b8ae-f07c-7fa0-a383-3e65b2cafe56, round 2
  • Head: 3003714
  • Base: origin/main at f3a9069
  • Score: 10/10, The updated selection fixes the reported self-review scenario, and the incremental changes introduce no findings.
  • Findings: none
  • The last round's findings, at 67259ab:
    • Fixed: medium, src/cli/review.ts:191: Resolve the latest writer across both record locations; src/cli/review-record.ts now preserves each record's latest model separately, and authored() in src/cli/review.ts avoids the running harness when those models disagree, preventing the local Sol session from selecting itself in the reported scenario.

A review avoided every model the PR's record named, so once Sol and Opus
had both written a PR no listed reviewer was left, and agents picked an
unlisted model themselves. It now avoids only the model of the record's
last Implementer line, and each session moves its line last whenever it
pushes, so that line names the latest writer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@pullfrog

pullfrog Bot commented Nov 8, 2026

Copy link
Copy Markdown

Pullfrog  | Review this ➔

The body's and kix's sessions comment's last Implementer lines can name
different models, and which pushed last cannot be told from them, so the
running harness, usually the session that just pushed, is avoided then.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated marked this pull request as ready for review November 8, 2026 01:12
@coderabbitai

coderabbitai Bot commented Nov 8, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You'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 7 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 8b2132d0-7bb3-417c-9a50-70a13d4af20f
Commits

Reviewing files that changed from the base of the PR and between f3a9069 and 3003714.

Files selected for processing: 16

  • .agents/skills/quest-review/SKILL.md
  • .claude/skills/quest-review/SKILL.md
  • README.md
  • assets/CONTEXT.md
  • assets/skills/review.md
  • cloudflare/src/github/service.ts
  • cloudflare/test/publish.test.ts
  • cloudflare/test/seed.test.ts
  • docs/getting-started.md
  • quest/m0/model-routing/README.md
  • src/cli/main.ts
  • src/cli/models.ts
  • src/cli/review-record.ts
  • src/cli/review.ts
  • src/github/models.ts
  • test/review.test.ts
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

Share

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review by review (OpenAI)

Reviewed head: 3003714
Compared with base: f3a9069

[P2] Reconcile iterate writer selection with the reordered record — src/github/models.ts:61-65

Moving an existing first Implementer: line to the end changes more than reviewer selection: assets/AGENTS.md's Coordination section still instructs agents to dispatch /quest-iterate to the model on the first line, and README's “Route work by size” section and quest models --writer help retain the same rule. For a body whose sessions are [Opus, Sol], an additional push by the original Opus session now produces [Sol, Opus], so the next iterate is dispatched to Sol rather than staying on the PR's writer as those instructions require. This affects the mixed-writer PRs this change explicitly supports.

Preserve the stable writer separately from recency, or update those routing instructions and help to an explicitly chosen writer-selection rule. Cover the [A, B] → A-push case so latest-writer tracking does not silently change iterate ownership.

The latest-writer review exclusion itself follows the stated direction: earlier writers remain eligible, the two record locations are kept separate, ambiguous records fall back to the running harness, and explicit exclusions retain precedence.

Validation: static review through the GitHub connector of the changed code, surrounding record/publication callers, documentation, and updated tests. I did not run builds or tests, and have not independently verified the PR body's reported passing checks. Submitted as a COMMENT, not an approval.

(Written by review (OpenAI))

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant