feat(prose-tests): judge the walk as told, not the summary returned#561
Open
leeovery wants to merge 1 commit into
Open
feat(prose-tests): judge the walk as told, not the summary returned#561leeovery wants to merge 1 commit into
leeovery wants to merge 1 commit into
Conversation
An agent returns one message. A walk happens across dozens of turns. We were reading only the return value and judging it as though it were the whole walk — so every step the walker narrated at the time and then compressed out of its closing summary read as a step never taken. This is what produced the under-reporting we spent a long time blaming on the walker, and then on the model. It was neither. A Sonnet walk of continue-feature was marked down for skipping the selection menu; its transcript shows it emitted the display, emitted the menu verbatim, stopped, consumed the scripted answer and validated the selection. An Opus walk of the same case made byte-identical tool calls. The evidence was there the whole time and we were discarding it. The runtime already writes every turn to a transcript, and the stop payload names its path. The hook now lifts the turns into the world beside the action log, where the judging happens. Nothing is asked of the walker, which is what makes it dependable — the same reason the action log is trusted. That in turn lets the walker be asked for less. It no longer has to make its final message a complete log, which was the instruction driving the compression; commands, outputs and file writes come off its list entirely, since the harness records those with more fidelity than a narrative can. What remains is only what no tool call can show: the arm entered, the guard that selected it, and what went on screen. The asserter drops the caveat that a thin narrative is not a missing step. It existed to paper over this blindness and is now false — the walk it receives is complete, so an absent step is absent. Missing walk data is a harness failure, refused loudly like a missing action log, never quietly downgraded to judging the closing summary. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This was referenced Jul 26, 2026
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.
Summary
continue-featurewas marked down for skipping the selection menu — its transcript shows it emitted the display, emitted the menu verbatim, stopped, consumed the scripted answer, and validated the selection. An Opus walk of the same case made byte-identical tool calls.Test plan
node --testacross recorder, corpus and snapshot suites — 40/40 (two new cases: turn ordering and preservation of mid-walk emissions; empty-transcript no-op)Step 0: Initialisation,0.1 Casing Conventions,0.2 Bootwith itsOtherwisearm, and0.3 Knowledge Gate— none of which appeared in the message the walker returned🤖 Generated with Claude Code
Stack