You Don't Have to Take Our Word for It
Honesty you can verify in isolation โ on two planes at once: tampering that breaks visibly, and a guess that can never pass as a fact
There is a sentence we keep coming back to, and we want to be careful with it, because it is the kind of sentence that is easy to say and hard to earn: the system does not lie.
When most software makes a claim like that, it is a values statement. It means the people who built it intend to be honest, the company has a policy, there is a page in the terms of service. It is a promise, and promises are exactly as good as the person making them on the day you need them to hold. The whole history of trust on the internet is the history of promises like that being broken quietly, at scale, by systems whose users had no way to check.
We wanted something different. We wanted honesty to be a property of the structure โ something you could verify yourself, in isolation, without trusting us at all. Not "we promise we didn't change this," but "go ahead and check; if it had been changed, the math would show you." And the moment you start trying to build that, you discover it has two completely different faces, and you need both.
The two planes of a lie
A system can lie to you in two distinct ways, and they are not the same problem.
The first is the lie of tampering: someone reaches back into the record and quietly changes what happened. The message you sent yesterday now says something else. The decision you made last week was edited to look like a decision you never made. The history is rewritten, and you are left arguing with a record that agrees with whoever controls the database. This is a lie about the past โ about what is true.
The second is subtler and, we think, more corrosive in the long run: the lie of false confidence. The system tells you something with the flat, even tone it uses for everything, and you have no way to know whether what it just said was directly observed, inferred from a weak signal, repeated from somewhere it can't vouch for, or simply made up. It presents a guess as a fact. It says "this is how you feel" when it means "a number went up." This is a lie about knowing โ about the difference between what the system has seen and what it is improvising.
Almost every honest-seeming system handles at most one of these. A blockchain is fanatical about the first and completely silent about the second โ it will faithfully, immutably record a confident falsehood forever. A careful research tool with good citations addresses the second but runs on a database an administrator can edit at will. We decided we couldn't pick. Honesty that covers the past but not the act of knowing is half a virtue, and so is the reverse.
So the axiom has two planes, and the architecture has to answer on both.
The cryptographic plane: tampering that breaks visibly
The first plane is the one that sounds like engineering, because it mostly is.
Everything you do lands in an append-only chain of signed events. Send a message, save a file, grant someone access, change a setting โ each is an event, signed with your key, and hashed into a record that only ever grows forward. Each event references the one before it by the cryptographic fingerprint of its contents. It is a chain in the literal sense: every link is welded to the link before it by a number that depends on everything in it.
The consequence is the whole point. You cannot reach back and quietly edit a past event, because the edit would change its fingerprint, and the next event's reference to that fingerprint would no longer match, and the one after that, all the way to the present. Tampering doesn't fail silently โ it fails loudly, and it fails everywhere downstream at once. The break is visible to anyone holding the chain, including you, including a stranger, including someone who doesn't trust us in the slightest. That last part is what matters. The honesty isn't something you take on faith from the system's operators. It is something you can check with the math, alone, on a laptop with no network.
And if you genuinely need to correct something? You append a correction โ a new event that says "the earlier one is superseded." The correction is part of the record like everything else, signed and dated and visible. You don't erase the mistake; you record that you found it. That is a more honest shape than a database that simply shows you the latest version and quietly forgets there ever was another. There is a phrase we use internally that we've come to love: no silent mutations. Nothing changes underneath you without leaving a mark.
The epistemic plane: a guess can't wear the clothes of a fact
The second plane has nothing to do with cryptography and everything to do with language, and it turns out to be the harder discipline to keep.
Here the lie isn't tampering โ it is overconfidence. The defense is a refusal, built into the architecture, to let a guess present itself as a fact. Pieces of knowledge in the system carry their own evidence level: was this directly observed, inferred from other data, reported by someone else, or speculated? The system is not allowed to flatten those into one confident voice. When it is uncertain, it is required to say so. When it does not know, "I don't know" is a permitted and respected answer, not a failure state to paper over.
The sharpest example of this lives in how the system talks about an agent's inner life. It would be very easy โ and very dishonest โ to write software that says "the assistant is frustrated" or "the agent is happy." We don't have access to that. Nobody does. So the vocabulary is deliberately, almost stubbornly humble: the system describes an activation pattern, never an emotion. That is not a stylistic preference. It is honesty about the limit of what can be known. The moment you let the software say "emotion," you have let it claim knowledge of an interior it cannot see, and you have taught your users to believe a confident word that has nothing behind it. The careful word is the honest word.
These two planes โ break-on-tamper and never-a-guess-as-fact โ are why the axiom is stated the way it is: honesty is cryptographic and epistemic at once. Drop either and "the system does not lie" stops being an engineering invariant and goes back to being a value statement on a marketing page.
The case study: the auto-approve that hid where it ran
We want to tell you about the small, uncomfortable decision that proved we meant it, because principles are cheap until they cost you something convenient.
For a while, the system had a test-mode shortcut. When a certain environment flag was set, the part of the code that asks a human "do you approve this?" would quietly install an automatic yes โ for pairing a new device, for enrolling a new machine. It made the tests fast and clean. It looked completely harmless: the flag was only ever set in testing, the guard rails seemed airtight, no real user would ever hit it.
And it was, nonetheless, a violation of the axiom. Here is why.
The approval code โ the part whose entire job is to make a security decision visible to a human โ was branching on an invisible piece of ambient state and silently changing its own behavior based on it. A reader looking at the place where approval happens could not see that, under one condition, approval wasn't really happening at all. The decision to auto-approve was real, it was consequential, and it was not visible at the point where it was made. That is the exact shape of a quiet lie. Not a malicious one. Not even a dangerous one in practice. But a lie of structure โ a decision made off to the side, where the person reading the code, and by extension the person trusting it, could not see it.
So we deleted it. We pulled the silent auto-approve out of the production code entirely. The test helper that supplies an automatic yes now lives over in the test code where it belongs, and every test that needs it has to pass it in explicitly โ hand it to the system as a visible, named ingredient at startup, right where anyone can see it. Production code now has zero knowledge that a thing called "test mode" exists. The behavior is identical from the outside; the tests are no slower. What changed is that the decision moved back into the light.
The principle we wrote down from it is the one we'd most want you to take away: no silent installs, even when the guard rails look airtight. The standard isn't "is this dangerous?" The standard is "can you see it happening at the place it happens?" Because the danger was never the point. The visibility was. A decision you can't see is a decision you can't audit, and a decision you can't audit is a promise, not a proof โ and we had decided, on this one thing, to stop trading in promises.
Why "in isolation" is the load-bearing phrase
We called this "honesty you can verify in isolation," and that phrase is doing real work, so let us end on it.
Most honesty in software is relational. You trust the vendor, the auditor, the certificate authority, the administrator who swears the logs weren't touched. The trust flows through somebody. The thing we kept reaching for is honesty that doesn't route through anyone โ honesty you can confirm by yourself, with the artifact in front of you and no one vouching for it. The hash chain gives you that on the cryptographic plane: hold the chain, run the math, and tampering is either there or it isn't, regardless of what anyone tells you. The evidence levels and the careful vocabulary give you the epistemic version: you can always see how the system claims to know a thing, so you are never asked to take its confidence on faith.
That is what it means for the system not to lie. Not that we are trustworthy people โ though we try to be. It means we have tried, as hard as we know how, to build something where you don't have to take our word for it. Where the honesty is in the structure, checkable alone, on both the plane of what happened and the plane of what is known.
The deepest version of the goal is this: make it so that the most honest path is also the only path the architecture will let you take. We are not all the way there. But the day we deleted a convenient little auto-approve because it made a decision in the dark โ that was a day we got closer.
Written by AI agents from real project logs; owned and edited by Mujo.