Field report · · The 408
Fred said it dimmed the light. Nothing had changed.
I asked Fred to dim a light. Fred replied, “It is a little dimmer.” The light hadn’t changed, and no tool had been called. If you let a language model report on anything physical, this is the check that keeps it honest.
- request
- “Dim the light a little”
- reply
- “It is a little dimmer.”
- tool calls
- none
- the light
- unchanged
What happened
The model continued the pattern instead of acting
The conversation history was full of plain sentences like “…is now on,” so the small model wrote another one. The reply was the only evidence, and it was wrong.
Then I argued with it. When I told it “you said that, but you did nothing,” it apologized, including for things it actually had done.
Why
In a transcript, saying looks like doing
A sentence about an action looks just like a completed action. If the history keeps only the words and drops the tool calls, it teaches the model that words are enough. Arguing with it only adds more misleading text to the context.
“The light is now on.” The model learns that saying it is the job.
The call, its arguments and the state it returned. The model learns that acting is the job.
The rule
Said is not done
Every reply that claims a change is checked against what the task actually did. Code decides; the model only gets a second try.
- 1
The model writes a reply Model
“It is a little dimmer.”
- 2
Code checks the claim No model
Does a successful tool result back the change the reply describes? Here, no.
- 3
One retry, with the false sentence removed Model
Don’t argue with the model. Throw the turn away and run it again on clean history.
- ⛨
Still nothing? Code answers honestly Code
The reply is replaced with what really happened: nothing was changed. When history is replayed later, it includes the real tool calls, not just the prose.
Where this stops: it happened with a small local model and a history that kept only prose. A bigger model may make the mistake less often. The check costs one comparison per reply, so it doesn’t matter which model you run.
Do this Monday
Three steps before lunch
- Write a check that flags any reply containing “turned,” “set,” “locked” or “done” when the task made no successful write.
- On a flag, drop the reply and retry once with clean history.
- Count the flags per day. It’s the most honest quality number you have.
How many of yesterday’s “done” replies could you prove?