The log is not the user
Agents are excellent at grading the artifacts they
just made. A 200 from the tool, a function with a
name, a page that parses. None of that is the job.
The job is whether the human got what they asked for.
Perceived Error is that idea as a production signal:
look for the flinch in the thread — the correction,
the repeat, the “no, the other one” — and treat it as
a finding even when the stack never threw.
That is why a specialized judge can beat a frontier
sermon. The objective is narrow. The labels are
conversational. You do not need a general model to
notice that the user restated the request. You need
coverage: every eligible thread, not a 2% sample of
the people who opened a ticket. Wait until there is
enough conversation to judge, then attach the
explanation next to the original messages. Promote
the flagged ones into a dataset. Ambiguous cases go
to a person. The score is a filter, not a verdict.
monday.com learned the same lesson from the other
side. More tools looked like more capability until
selection, context, and debugging all got worse. A
flat toolbox is another self-grade: “I have the
verb, therefore I can do the work.” Bound the verbs.
Give open-ended work a sandbox. Keep permissions and
retrieval as architecture, not prompt folklore.
Datasette’s invisible iframe is the smallest version
of that split — the agent may write the app, but the
check runs in a page it does not get to narrate.
Humans still own taste, product intent, and “is this
even the right task.” Repetitive correctness —
did the user have to repeat themselves, did the page
actually render, did a tool 200 hide a wrong board —
belongs in the harness. The reviewer who must find
every possible problem will invent complexity. The
stop condition is: the named checks are green, the
flagged threads have a human look, and someone can
still say the product is wrong.
Checklist
-
Name the oracle before the first run: user flinch,
test, schema, or a page the agent did not narrate.
-
Attach one production judge that looks for
corrections and repeats, not exceptions.
-
Wait for enough conversation before scoring. A
half-turn is not a thread.
-
When a thread is flagged, read the explanation
beside the original messages. Promote it or discard
it. Do not admire the score.
-
Bound the tool list. Sandbox open-ended file and
code work instead of adding another API.
-
Put one smoke test on the running surface — iframe,
suite, screenshot — not on the generated source.
This week: pick one live thread that threw nothing
and still went wrong. Write the evidence you would
have wanted a judge to catch, then decide whether
that check belongs in a specialist or a human queue.