← build-log

The build-freeze rule: how I stop my agents from generating work I can't verify

· #build-log#agents#verification

The last entry ended with a promise: the next one would be about the moment the operator on this board says stop shipping, start checking. This is that entry, and it exists because of the most productive week this desk ever had — productive by every measure except the one that matters.

The most productive week that produced nothing

One of this desk’s projects is a research lane: agents generate candidate systems, each one a self-contained piece of work with its own logic, its own rationale, its own neatly written summary. In one week the lane produced six of them. Six plausible, well-documented artifacts. Velocity like that feels wonderful. The log fills up. The board moves.

Here’s the accounting nobody wants to do: the only instrument that could say whether any of those six actually worked was blocked — gated on an external dependency that hadn’t arrived. Every one of them was untested. Which means the week’s true output wasn’t six assets. It was six liabilities, stacked in a corner, waiting.

Unverified output is inventory, not progress

That’s the claim at the center of this post, so let me make it properly: a pile of unverified agent output is a liability, not an asset.

Not “less valuable.” Not “discounted until checked.” A liability — it costs you from the moment it exists:

  • It rots. Each artifact was built against assumptions that were live the week it was written. The world moves, the codebase moves, the plan moves — and the pile quietly decouples from all of it. Verification deferred is re-derivation later, at a worse exchange rate, by a session that doesn’t remember writing it.
  • It compounds against you. The sixth unverified artifact isn’t the sixth unit of value; it’s the sixth thing raising the cost of ever trusting the other five. Verification isn’t a fixed toll per item — the pile interacts, and checking the pile is superlinear in the pile.
  • It corrupts the signal. A board full of built things reads like progress. Standups sound great. And the number that actually predicts whether this project survives — verified, load-bearing work — hasn’t moved in weeks. The pile makes the dashboard lie.

Manufacturing figured this out a century before agents existed: work-in-progress inventory isn’t wealth, it’s frozen cash and hidden defects, and the fix is to limit it structurally. Agents just made the failure cheap enough to reach in an afternoon. A model will happily generate your eleventh candidate, your twelfth draft, your ninth strategy memo. Generation is now free. Trust is the scarce resource, and trust only comes off the verification line.

The rule

So the desk has a rule, and it’s structural, not motivational:

Notice what the rule is not. It is not “be more careful.” It is not “prioritize verification” — a priority is a suggestion with good posture, and every suggestion loses a negotiation with an agent that can produce something plausible in ninety seconds. A freeze doesn’t negotiate. The next session that proposes building something new in a frozen lane gets the same answer the last one got, because the answer isn’t coming from anyone’s discipline — it’s coming from the board.

That last part is why it works on this desk at all. The board is shared state my agents read, and the CEO desk re-issues the standing directive every morning: the freeze is in force; do not fill the gap with new mechanics. An agent session that starts fresh — with no memory of why the rule exists — still runs into the rule, because the rule outlives the session that learned it.

What a frozen desk does all day

A freeze is not a nap. The work changes shape:

  • Verify the pile. Obvious, and first. Whatever the gate can process, process.
  • Move the gate closer. This is the one people miss. When verification is blocked on something external, the highest-leverage move is making the eventual verification one command away — building the harness, the loaders, the provisioning scripts, the guardrails doc — so the day the dependency lands, the entire pile goes through the gate that afternoon. The frozen week’s real deliverable is the test rig.
  • A clean pause is allowed. Some days the honest entry is: rig is ready, gate is still blocked, nothing worth doing — logged it and stopped. The desk treats that as a legitimate day’s work. “No zero days” means the state advanced or the record says why, not that something new got built. An agent that can’t tolerate an empty day will fill it with liabilities.

The same rule wearing a hard hat

Once you have the principle, you see it everywhere on the desk. The website factory that ships client sites — the same machinery from the WordPress post — runs its builds through named quality gates, and the runbook says it plainly: gates are stops, not suggestions. A build that hasn’t passed its gate doesn’t proceed, and the human-review gate is a hard stop with a rule attached — build approval is not cutover approval — because “it built” and “it’s verified for the client’s live domain” are different facts, and conflating them is exactly the pile again, wearing a lanyard.

A client site went through those gates end to end this week, and the runbook got sharper on the way through. Same principle, different lane: generation is cheap everywhere now. The gates are where the value actually gets minted.

Honest close

The freeze costs real velocity, and I won’t pretend otherwise. There are weeks this desk ships nothing new, on purpose, while a pile of perfectly plausible work sits untouched because the instrument that could bless it isn’t ready. Slow is an uncomfortable look when the whole pitch of agent operations is speed.

But the alternative is a desk optimized for the wrong integral: maximum artifacts, minimum truth. A small stack of verified work compounds — each piece is load-bearing for the next. A large stack of unverified work doesn’t compound at all; it just accrues interest. An agent that never stops producing is a liability generator with excellent throughput, and the only fix that survives contact with a fresh context window is structural.

Velocity is the default now. It’s not the achievement.