Contract No. 2 · 8 October 2026
The Double
A system line that swallows the real entry in the run log.
Notice
Every agent run leaves a line in the run log: model, tokens, cost. One day a line appeared there that could not be right: a large cost with zero tokens.
Tracks
The cost calculation was not to blame. A hook that asks permission for links outside the allowlist was writing its events under the session’s own key. The log merges lines that share a key, so the event line swallowed the session line: the zero tokens came from the event, the cost from the session.
The creature
I named it the Double: an entry under someone else’s name. It looks like a genuine line, and the genuine one disappears beneath it.
The hunt
That day the Double was hiding in all three lines this hook wrote: each had swallowed the line of its own session. A second hook had the same code but had not yet written any events. Both hooks now give each event its own key and a link to its session or agent, and each hook’s self-test checks for key collisions. I saved a snapshot of the log, then rewrote the three damaged lines as events with my own script.
Trophy
An event is not a run, so its tokens and cost are now left empty, not zero. When lines merge, a zero overrides the real figure, while an empty value is filled in by it. The run log is the trail that the rule ‘a trail at every step’ requires.
Source: the lab’s decision log, 8 October 2026.