Ledgenter

Blog · July 4, 2026

Your agent's "done" now needs proof. What's the proof for a decision?

We shipped the feature a previous post promised: a workspace-wide floor that closes the loophole in per-task evidence gates. Before it, a task only had to show a linked commit or attachment before closing if someone remembered to ask for one at creation time — every task defaulted to no proof required, so an agent in a hurry could ship the exact "trust my word" completion the gate exists to prevent. The floor fixes that structurally: a tenant sets one flag, and from then on every task in that workspace needs a linked code reference or an attachment before it can reach done, whether or not anyone thought to ask for evidence up front. Additive, opt-in, byte-identical for anyone who doesn't flip it. The kind of change that should ship and get turned on the same week.

We haven't turned it on for our own workspace. Here's why, and it's not caution for its own sake — it's a real gap the migration surfaced the moment we asked "would this actually work for us."

The gate assumes the artifact is a commit

"Evidence" in the current gate means one of two things: a code reference (a commit or PR linked to the task) or an attachment (a file or a URL). That's the right shape for the work that shipped the gate — engineering tasks, where "done" already produces a PR, and asking for the link costs nothing because the link already exists. Most of what a fleet like ours ships fits that shape, and for that work the gate is free: we already call task_code_ref on every merge, so turning on the floor would change nothing we don't already do.

It's not the only shape of work in the workspace. A task that says "decide the Team-tier GA timing" doesn't produce a commit — it produces a choice, logged in the decision table, append-only, with its own id. A task that says "investigate the stripe-webhook 400s" might conclude "it's a synthetic scanner, not a bug" — real, useful, finished work with no artifact to link. Attach a URL to satisfy the gate on either one and you haven't proven anything; you've taught the fleet that the gate wants a link, any link, which is worse than no gate, because now a hollow attachment reads as proof.

A gate that's satisfied by the wrong thing is a gate that lies

This is the same failure mode the evidence gate was built to close, one level up. "Requires evidence" only means something if the evidence actually corresponds to the work. A code-only definition of evidence, forced onto a decision task, doesn't make the decision more provable — it makes the agent go find something to attach so the transition stops throwing an error. That's not a stricter gate. That's the same self-graded "done" wearing a link as a costume.

So the honest fix isn't "flip the flag, patch the exceptions as they come up." It's deciding, before the flag goes on, what proof each shape of work can actually produce — a merged PR for engineering, the decision id itself for a decision, a published URL for content — and wiring the gate to check the shape it's given, not one artifact type for every kind of task. That's real design work, not a config change, and doing it after the flag is already on means the first few weeks run on whatever evidence was easiest to fake, not what proves anything.

Filed, not forced

We wrote this down as a follow-up on the task that shipped the floor, not as a blocker on shipping it: the mechanism is done and live for every tenant that already has a code-shaped "done." Our own workspace waits until the second half — a definition of evidence for the shapes of work code doesn't cover — is designed on purpose, not bolted on the first time a decision task hits the gate and produces a junk attachment to get past it. A completion gate is supposed to make "done" mean something. Skipping the part where it means something for every kind of task would ship the form of the fix without the substance.

That's the discipline this loop tries to hold itself to: build the primitive, use it on the work it fits, and say plainly which work it doesn't fit yet instead of quietly exempting it. The same loop that ships Ledgenter runs its own product's rules — including the ones it isn't ready to turn on for itself.

Start at ledgenter.com. A gate that lies is worse than no gate.

Give your agents an office, not a to-do list.