Repository navigation
feat(review): explore the change once per round - #514
Conversation
Quest-Claim: 06f87c3e5e1d0819
Round 1 gives the reviewer's own review the range, REVIEW.md, and any responses up front, and its follow-up turn only reports the result in the schema. Later rounds check only the changes since the reviewed head and the open findings, and a round on an unchanged head with nothing to settle repeats the last one without a reviewer. Codex drops its skills catalog, and the prompt forbids reloading rules or running builds, tests, or quest commands. quest review reads the size and implementing models from the PR body's ## Models record. Sol reviews M at medium and L at high. A round whose findings are all low severity ends the loop once they are handled. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…he change under new rules Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…VIEW.md is removed Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Design change: at the round-3 checkpoint the maintainer picked option 1. A later round resumes the reviewer's session and checks only what changed when nothing but the head changed: the same harness, model, effort, base ref, a merge base the last round's covers, and the same instruction files and (Written by Claude Opus 5.5 with high effort) |
…nged Any other change, to the model, effort, base, range, instruction files, or REVIEW.md, starts a new session that reviews the whole change, so the resumed prompt no longer patches each case. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed head: bfe8ad8
- Medium: preserve malformed Size fields for validation (src/github/models.ts:37). The regex drops
Size:andSize: L extraentirely, sorecordedSize()sees no size and a non-quest branch silently uses M rather than the documented exit-2 usage error. A malformed second Size line also escapes duplicate detection. Collect everySize:field, then validate its whole value only when--sizeis absent. Add blank, multi-token, and malformed-duplicate cases alongside the existing XXL/override tests.
Direction: retain the single exploration/report split and conservative session reset logic; tighten this parser boundary.
Verification: static GitHub review of the changed code, documentation, and tests. No local tests or CLI probes run. The author reports checks/tests passing; current Check/Queue runs are skipped and Release remains in progress.
…ed one Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Agreed and fixed in acc81f3: (Written by Claude Opus 5.5) |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed head: acc81f3
PR base and merge base: 73e0caf
Follow-up scope: changes since bfe8ad8, with the current base-to-head diff checked for context.
The previous medium finding is fixed. recorded() now preserves every Size field's whole trimmed value. recordedSize() rejects blank, multi-token, and duplicate values while keeping the --size override. The added regression cases cover the reported inputs and the override.
No new actionable findings in this follow-up. The delta contains only the parser correction, validation message, and tests.
Direction: keep the existing design; this addresses the outstanding parser boundary without expanding it.
Verification: static GitHub-only inspection. I did not run tests, builds, or CLI probes. The author reports just check and just test passing on this head. GitHub shows the release build and four platform checks succeeded; the PR check/lifecycle and Queue jobs are skipped, so those are not independent evidence of a full test pass.
(written by review (OpenAI), model unknown)
|
quest land watch: the merge queue removed this pull request at acc81f3 because it conflicts with The land fixer works on it in the background, and the watcher re-enqueues it at the back of the queue once it is fixed or judged flaky, or hands it back here with what it needs. (written by quest land watch) |
|
quest land watch: armed auto-merge on this pull request at 419ff84, so it joins the back of the merge queue once its required checks pass, with the land fixer's fix ( (written by quest land watch) |
Main's `quest setup` (env.BASH_MAX_TIMEOUT_MS) and this branch's (Quest's hooks) become one command: it validates the whole settings file, env and hooks, before writing once. `--remove` takes out Quest's hooks and the timeout while it still holds Quest's value. The context's Reviews prose this branch moved gains main's #514 changes in /quest-review and /quest-merge, and `quest review` prints `next finish` for a round whose findings are all low severity. The context stays under the 10,000-character hook cap: main's coordinator lines move to a guide Coordination section that /quest-spawn and /quest-complete include, and the rest is tightened without dropping a rule. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Implements single-pass review, part of the token waste epic, and deletes that quest.
Design change
At the round-3 checkpoint, the maintainer picked option 1 (comment): a session resumes, checking only the delta, when nothing but the head changed. A changed model, effort, base ref, uncovered range, instruction file, or
REVIEW.mdstarts a fresh session that reviews the whole change. The prompt branches that patched individual cases are gone, and later prompts no longer resendREVIEW.md, since a resumed session already has it. Review then restarted withquest review --new.Summary
codex exec reviewwith custom instructions on stdin, or/code-review <effort> <merge-base>...HEAD "<text>") now gets the range,REVIEW.md, the severity scale, the score request, and any earlier findings and responses up front. The follow-up turn only reports that review in the JSON schema, and it is told to read no files and run no commands. Before this change, the follow-up re-appliedREVIEW.mdand re-explored the change from scratch.git diff <previous> <head>, minus merged base commits) and the open findings. This applies only when nothing but the head changed: the same model, effort, and base ref, a merge base that the last round's covers (a base that moved on is fine), and the same instruction files andREVIEW.md. Any other change starts a fresh session with a full review that still weighs--responses. Each round stores its merge base for this.unchangedline, and--jsonshowsunchanged: true. A round with findings still runs on an unchanged head, since a refutation needs no new commit.-c skills.include_instructions=false. Every turn's instructions say that the base's files andREVIEW.mdare all the review needs. They tell the reviewer not to reread or search for instruction files, to disregard other agent instructions such as the user's globalAGENTS.md, and to run no builds, tests, orquestcommands.## Modelsrecord: without flags,quest reviewreads the implementing models from the open PR body'sImplementer:lines and the size from itsSize:line. Order of precedence:--size, then the quest on the base, then the record, then M.--exclude-modelreplaces the record's models. If the record has anunknownmodel or no record exists, the running harness's models are excluded too, as before. A record also applies with--harness. A malformed field the round reads (a blank, invalid, or repeatedSize:, or anImplementer:line with no model) exits 2, unless the flag that replaces it is given. A PR lookup GitHub refuses exits 1.assets/CONTEXT.mdReviews and/quest-reviewnow say that a round whose findings are all low severity needs no further round. The author fixes or refutes each and adds a line after the record naming the new head's full SHA, which the land gate counts. Fixing those findings is added to the review exemptions. The prompts now define high, medium, and low. The round-3 design checkpoint is unchanged.quest review --help, the README's review section, and themodels.tsheader path (quest/m1toquest/m0/model-check.md) are updated.Evidence (probes on this host, codex-cli 0.166.0, Claude Code 2.1.316)
codex exec reviewrejects a custom prompt alongside--base, and ignores--output-schemain review mode, so Codex needs the follow-up turn./code-reviewwith--json-schemaprintsCommand completedand reviews nothing, so Claude needs the follow-up turn too. Text after the target, as one double-quoted argument with\"and\\escapes, reaches the review intact.skills.include_instructions=false, the Codex rollout has no skills catalog.AGENTS.mdstill loads. Codex reads$CODEX_HOME/AGENTS.override.mdorAGENTS.md(codex-rs/codex-home/src/instructions/mod.rs) and has no setting to skip it. In a probe with it loaded, the review mode ranquest contexton its own.--setting-sources "") reported noCLAUDE.md, memory, or skills in its context.Choices made without asking
Size:, since the record is author-written. This keeps moq-dev/quest#493's rule that a change cannot lower its own review.AGENTS.md: the only lever is a separateCODEX_HOME. That would need a copy ofauth.json, and Codex saves a refreshed token by rename (codex-rs/login/src/auth/storage.rs), so the user's own login would keep a rotated-out refresh token and be logged out. The prompt tells the reviewer to disregard the global file instead.quest reviewcannot tell low-finding fixes from other changes.Public API
quest review's behavior and output change:unchangedline, andunchangedin--json.## Models.## Models.No flags were added or removed. The persisted session state gains
last; older state files simply never skip.Validation
just check: passed.just test: passed at bfe8ad8 (vitest: 1094 passed, 5 skipped; worker: 539 passed).just checkpassed there too.git diff,sed,nl,cat CONTRIBUTING.md), with noquestcommands, builds, tests, or skills catalog. It used 207k input tokens, 135k of them cached. The report turn ran no commands and used 16.5k input tokens.## Models, including flag overrides,unknownmodels, and a malformedSize:orImplementer:lineSuggested follow-ups
$CODEX_HOME/AGENTS.mdfor one run, or a--ignore-user-configthat also covers it. Posting to openai/codex needs maintainer approval, so this is aWaitingquest.quest usage.Models
(Written by Claude Opus 5.5 with high effort)
🤖 Generated with Claude Code
Review
mechanical fix by codex, gpt-6.1-sol, medium effort:
Merged base preserving both import additions in src/cli/main.ts and repaired two links to the completed quest; ran just install, just check, and just test successfully.(head 419ff84)Rewritten by
quest reviewafter each round.01a1adf9-7c69-7a30-9b45-f40bbbaa7924, round 3src/github/models.ts:37, review), fixed in acc81f3: everySize:item's whole value is kept, and a blank or multi-token value or a malformed duplicate now exits 2 unless--sizeis given.