DEV Community

Cover image for My coding agent told me a task was done. It couldn't prove it. So I built the part that won't let it lie.
Tiago for nott

Posted on • Originally published at tiago-im.Medium

My coding agent told me a task was done. It couldn't prove it. So I built the part that won't let it lie.

Fifteen years shipping software. The last twelve months, nothing but AI — full time, all in. Seventeen tools came out of it; I'm putting them public one at a time. The first was a memory that abstains instead of guessing. This is the second — the operating core the other fifteen sit on.

It started with a lie.

My agent said a task was done. It wasn't. The test it claimed green had never run. The file it said it changed was untouched. And it told me all of it in the same confident voice it uses when it's right. If you've worked with these agents, you know the shape: a "done" you can't trust is the most expensive output in the whole toolchain, because you build the next thing on top of it before you find out.

I didn't want a smarter agent. I wanted one that can't tell me something is true unless it can show me it's true.

That's nSOUL.


The one rule

nSOUL has exactly one rule I never let it break: every turn ends with a proven result or the exact gap — never a confident guess.

Like the memory before it, that isn't a line in a prompt. It's the shape of the system. When the agent finishes a piece of work, it doesn't get to grade its own paper. Its claim of success is just that — a claim — until something it doesn't control observes the result. A test that actually ran. A diff that actually applied. A page that actually loaded. If the proof isn't there, the honest close isn't "done." It's "here's exactly where I stopped, and why."

I keep coming back to one sentence for it: the executor cannot certify its own success. The thing that did the work is the last thing that should get to say whether it worked.


The interview

Here's the moment I knew it held.

I was demoing a version of this the morning I first took the toolkit public. Someone in the room — sharp — caught the agent claim a task was finished when it wasn't. Before I could say a word, the answer played out on the screen: a separate check had already rejected the agent's self-report and kicked the work back as unfinished. The rule defended itself, live, during exactly the kind of failure it exists to catch. You can't script that. I certainly didn't.

That's the whole thing in one beat. The value isn't that the agent is always right. It's that when it's wrong, you find out immediately — from something other than the agent's own word.


It's not a prompt pack

Under the hood, nSOUL is eleven skills, six bounded agents, and four hooks.

The skills own the method end to end: read back what you actually asked before touching anything; plan; debug by isolating a cause instead of guessing; review adversarially; ship one reviewed action and prove it; hand off enough state that a cold agent can continue tomorrow. The agents are scoped on purpose — a planner that can't write files, a reviewer that only reads, an executor that does one bounded unit and stops. And the hooks are where the rule stops being advice and becomes enforcement: the repo's own gates reject a turn that claims more than it proved. In practice: the agent closes a turn claiming a test passed; the hook demands the observed output. No output, no "done" — the turn ends as "here's exactly where I stopped" instead. The claim never outruns the mechanism.

None of it is bundled magic. The memory from the first post, and a browser hand, attach as external, fail-closed adapters — nothing phones home, nothing runs that you didn't install.


Clone and own

nSOUL runs on Claude Code and Codex, and it's yours the moment you clone it. No account, no service, no telemetry. AGPL-3.0.

I built it for one engineer — me — held to the bar I hold my own work to. That's the thesis of the whole toolkit: not a platform for everyone, a sharp instrument for one, that compounds because it's yours.

2 of 17

This is the second of seventeen tools I'm taking public, one at a time. The first taught my agent to admit when it doesn't know. This one won't let it claim what it can't prove. Fifteen to go.

Break it. Try to make it wave its hands. Try to get a "done" past the gates.

I've been trying for a year.

One line to try it, on Claude Code:

claude plugin marketplace add menot-you/n-soul

github.com/menot-you/n-soul ↗


nSOUL is 2 of 17 — the operating core of NOTT, an n=1 devkit built on one law: the executor cannot certify its own success. More at no.tt ↗.

Top comments (0)