hunch test can only measure against gold, and answer keys have errors or don’t exist. You cannot read every row, so review picks the rows where your verdict tells hunch the most, shows them one at a time, and saves each verdict as gold.
Which rows come first
The queue orders rows by what a verdict on them can teach:
Spot checks catch what disagreements cannot: rows where the model and the key agree and are both wrong. The sample is chosen by a hash of the question and row id, so it stays the same from one session to the next.
The screen
This is the command guard, where the model and the answer key disagree about one command:The keys
Judge from the model’s input
Judge as a stranger would, using only the state sent to the model. The terminal previews that state but cuts each column at 600 characters; the browser also limits displayed text. If a decisive passage is hidden, presss to skip the row rather than guessing or using outside knowledge. Inspect the source and the spec’s redact and clip rules to diagnose what is missing, then review again only when the relevant model input is visible.
Sometimes the model’s input itself is missing what you need: you know the session or what happened next, but the state does not say it. Press c for those rows. hunch test counts them separately:
Where verdicts go
Verdicts are appended to<judgment>.reviews.csv, next to the spec:
state_hash), not its id. If the text changes, through new data or a different redact or clip, the row returns to the queue. Rewording the question keeps verdicts. The last verdict on a row wins.
Two versions of a spec that ask the same question of the same rows can share one file with the reviews: key:
candidates/command_guard.yml
--limit N keeps sessions short; the queue picks up where you stopped. Other flags are in the CLI reference.
Long texts, such as whole agent replies, may be easier to read in the browser. The server has the same queue at /review; its display limit is 1,500 characters per state field.