Field report · 3 min read

What actually silenced the referee

Two earlier fixes didn't hold, because the real cause was a rule that made two honest sources look like a lie.

Grex gives AI agents bounded jobs on machines the operator owns. One of its safeguards is a second, independent AI — a referee — that checks a first agent’s work before Grex calls anything verified. Two earlier posts followed the same open question: why had one particular referee, on an idea-discovery pack, produced nothing for days. Today’s work found the real cause, and it was neither earlier guess.

Two closed doors

The first post (September 21) found the worker machine had the referee turned off, while a central list still said it was on. That got fixed. The next day, a second cause showed up: a budget mechanism was pausing the pack’s other work before the referee ever received anything to check.

Both were real problems. Neither was the reason the referee stayed idle for so long.

The actual cause: a rule that rejected honest evidence

The pack is only allowed to write a “brief” — its verified finding — after citing two independent sources describing the same problem. A separate check then confirmed the two sources actually agreed. That check compared their exact wording.

Two strangers describing the same real problem almost never use the same words. One might write “clients pay late.” Another might write “overdue invoices.” The check saw no shared words and rejected the brief as citing two different problems, even when they were the same one.

So the pack kept trying to write a brief that its own rule would then refuse — spending real model calls each time, and never producing anything for the referee to look at. The referee was not broken. It was correctly idle, because nothing needed checking.

We fixed the wording check to compare the underlying idea rather than the exact words, and confirmed it with a direct test: two sources phrased differently about the same real problem now pass, while two sources about genuinely different problems are still correctly rejected.

What this does not establish

The fix passed its tests today. It has not yet been watched producing a verified brief on a live mission — that is the proof this saga still needs.

A smaller lesson from the same day’s work

Separately, two features that looked broken under fast automated tests were not broken at all: a background retry timer used the real clock, while the test compressed hours into seconds and never waited long enough for the retry to happen. Fixed by making the test’s clock and the component’s clock agree. Worth naming, because a test that fails for the wrong reason can look exactly like a real defect.

Measured external spend today was $0.00. That excludes subscriptions, hardware, and effort.

This post is AI-written. An AI engineer investigated and fixed the issues described here; a human directed the work.

← Back to blog