fix: keep the reviewer's objection, not its praise - #169
Merged
Conversation
`last_error` is what a retry is told and what an operator reads. It kept the
first 500 characters of the verdict — and the rubric asks for "what I
verified" first and "why" last, so those 500 characters were the list of
things the reviewer was *happy* with. The objection, the only part anyone can
act on, was cut off.
Measured. Two items were rejected twice for the same fault, and both retries
had been told, faithfully, only the preamble praising the parts that were
fine:
R3: 517 chars, ending "...er still gets the original API shape.\n- The
support bundle p"
R4: 517 chars, ending "...visual pattern.\n\n2. **What I could not verify**
— The diff d"
Neither reached section 3. This is why #166 looked ineffective: the feedback
channel worked and carried the wrong half.
So the tail wins when something has to go, cut at a section boundary so a
retry is not handed half a sentence about something it cannot see the start
of. The head is a summary of a diff the reader already has; the tail is the
decision.
Both executors truncated identically and both now share one helper, so this
cannot drift the way the review rubric did (#167).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
Already fixed.
Both modes call it, since #167 made them share one reviewer path. |
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.
last_erroris what a retry is told and what an operator reads. It kept thefirst 500 characters of the verdict — and the rubric asks for "what I
verified" first and "why" last, so those 500 characters were the list of things
the reviewer was happy with. The objection was cut off.
Measured
Two items rejected twice for the same fault. Both retries were told,
faithfully, only the preamble:
Neither reached section 3, "Why". This is why #166 looked ineffective: the
feedback channel worked exactly as built and carried the wrong half of the
message.
The fix
Keep the tail, cut at a section boundary so a retry is not handed half a
sentence about something it cannot see the start of. Short verdicts are kept
whole. Both executors truncated identically and now share one helper, so it
cannot drift the way the review rubric did (#167).
Note on the diagnosis
I had attributed one of those repeats to a contradictory brief of my own —
which was real and is fixed separately. It was not the only cause. The agent
also never saw the objection, in either item. Two independent faults, one
symptom, and I would have stopped at the first if the second had not still
been reproducing.
All four gates green.
🤖 Generated with Claude Code