Retrospective · Distributed systems · 2014 → 2026

Promise Games, 12 Years On

In early 2014 I wrote a short paper about trust, autonomous agents, and a blockchain that hadn’t launched yet. Here it is — graded with the very three‑state automaton it proposed: kept, not kept, or, honestly, still unknown.

Where it came from

The paper was coursework. I remember the deadline more vividly than any of its insights: it was a submission to the ASCI A9 PhD course on distributed‑systems design1, eight pages of ambition typeset in a hurry. I gave it a grand title — P2P Web of Trust Calculi and Promise Games — and an even grander framework, TelosVM, which I described with a straight face as “computation as social agency.” 1 ASCI — the Dutch research school for Advanced Computing and Imaging. The A9 course was where you went to argue about consensus, replication, and naming until the coffee ran out.

I want to be fair to the version of me who wrote it, and also honest. He was swimming in a particular water. Down the corridor, people were building Mansion, an agent operating system — a whole world modelled as rooms an autonomous agent could walk between2. Promise theory was drifting over from Bergstra and Burgess’ static papers3. Every sysadmin I knew was running CFEngine and talking about convergent operators. And in a logic seminar across town, van Benthem was saying out loud that computation could be read as social agency4 — which felt, at the time, like permission. 2 Mansion was the kind of system that taught you to think of programs as agents with addresses and intentions, not just call stacks. That habit of mind is all over this paper. 3 Bergstra & Burgess, A static theory of promises (2008) and Local and global trust based on the concept of promises (2009). Their move: define trust from promises, not from actions.

And then there was Ethereum. Not a platform — a proof of concept. A whitepaper and a promise, in the most literal sense: a thing that did not yet exist, asking to be trusted. So I wrote about DAOs5 before there were DAOs, and called the experiment the CFEther. 4 van Benthem, Computation as social agency (2013). The phrase I borrowed for the abstract, slightly oversold. 5 “Distributed autonomous organizations.” In 2014 the term was a gleam in a forum post. Ethereum mainnet didn’t launch until July 2015.

The idea, plainly

One stubborn axiom, and everything that hangs off it

Strip away the notation and the paper rests on a single borrowed claim from promise theory: an agent can promise only its own behaviour. You cannot impose an obligation on someone from the outside; you can only make a promise, and watch. I drew promises as what they are — typed, directed arrows from a promiser to a promisee, made only inside a context.

a₃ a₄ π₇ type: brown context: c₁ · (c₂ | c₃) · ¬c₄
A promise. Directed, typed, and conditional on a context formula. Only the promiser controls whether it is kept — everyone else just observes.

A whole governing policy was then a program of these promises, written in a little CFEngine‑flavoured language I called λ. A system was a universe of agents keeping or breaking them. Here is the shape of one promise body, lifted from the paper:

# promise π7 : a3 promises a4, in context, conditional on π2
brown:
  c1&(c2|c3)&!c4::
  "a3" -> "a4"
    handle     => "p7",
    depends_on => "p2";   # i.e. π7 / π2

The part I’m still quietly proud of is the promise automaton. Every promise had three states, not two. Kept. Not kept. And — when the promise wasn’t even made, or its dependencies hadn’t resolved, or nobody had looked yet — unknown. I treated that third value as a first‑class citizen. In hindsight it’s the most honest thing in the whole document.

1 · kept 0 · not kept unknown
The promise automaton. Re‑evaluated each time the engine runs. Most real promises, most of the time, sit in the dashed box.

Out of all this, trust was supposed to emerge: not as a number you were issued, but as something observed, accumulated, and — crucially — typed and contextual. The thesis sentence I’d still defend is that a system should be able to say who trusts whom, for what, in which context, and by how much. Not one global reputation score. A different trust for treasury decisions than for security ones.

found alice bob carol sybil weight ≈ 0
A typed web of trust. Edge thickness is earned, not bought. A fresh identity with no inbound promises — the sybil — carries almost no weight, because reputation can only be accrued, never minted.
A paper about keeping promises that, it turns out, over‑promised.

Kept · not kept · unknown

Grading the paper with its own automaton

It would be too easy to either celebrate or wince. So let me do the thing the paper itself proposed: run the engine over its claims and assign each one a state. No cheating on the dashed box.

1 kept

The organization‑as‑code bet

I claimed groups would run themselves from declarative policy on a public chain. Within two years that was a real, funded, much‑hyped thing. The CFEther wasn’t a fantasy; it was early.

1 kept

Trust, not action, is the unit

Defining trust from promises rather than observed actions — and noticing that a contract can never coerce, only commit — reads as plainly correct now. The autonomy axiom was the right foundation.

1 kept

Embrace the unknown state

Refusing to pretend the system always knows the truth anticipated the oracle problem and, later, optimistic verification with challenge windows. The chain genuinely cannot see off‑chain promises. Don’t pretend it can.

0 not kept

Typed, contextual trust would win

It didn’t. Mainstream on‑chain governance became one‑token‑one‑vote — a plutocracy of transferable balances, the exact opposite of earned, contextual reputation. The easy idea beat the better one.

0 not kept

TelosVM, the λ language, the calculi

None of it shipped as a usable system. It was a tower of beautiful abstractions — promise machines, virtual machines, trust calculi — that mostly promised and didn’t keep. I mistook a vocabulary for a result.

0 not kept

The roaming‑agent future

Mansion’s world of mobile agents walking between machines simply didn’t arrive. The whole middleware dream of that era quietly closed its doors. The agents that came instead were nothing we pictured.

? unknown

Will reputation finally beat tokens?

Soulbound tokens6, proof‑of‑personhood, reputation graphs — the field keeps re‑proposing exactly what the paper wanted. Whether any of it displaces the token is still, genuinely, undecided. 6 Vitalik Buterin, Soulbound (2022) — the case for tokens that say who you are, not what you can afford. I read it with the odd feeling of being scooped by my own old footnote.

? unknown

Is the old vocabulary right for what I’m building now?

“A network of voluntarily cooperating agents — human, machine, or inanimate.” The line fits the systems I work on today better than the ones I wrote it for. Whether promise theory is their right grammar, or just a familiar one, I honestly can’t tell yet.

? unknown

Does any of it converge?

The whole framework assumed the system settles into a desired state, CFEngine‑style. Twelve years of watching these networks, I am no longer sure they have a convergent state at all. The engine keeps running.

In hindsight

What I got wrong about what was hard

The deepest mistake wasn’t any single prediction. It was where I located the difficulty. I spent eight pages on the calculus — the logic, the model checking, the typed graphs — as if trust were a thing you compute once the maths is clean. The actual hard parts got a sentence each: bootstrapping trust from nothing, surviving collusion, resisting the agent who spins up a thousand identities. Those turned out to be the entire game. The maths was the easy 10%.

There’s a particular melancholy in re‑reading a young paper that was right about the question and wrong about which part would matter. The world built the crude version of my idea — money as governance — and skipped the careful version — trust as governance — because the crude one fit on a token contract and the careful one needed a society. I can’t even be bitter about it. I’d have shipped the token too.

But here is the part that keeps me honest, and it isn’t nostalgia. The careful version of the idea — authority earned and contextual rather than bought — never actually died. It just wasn’t waiting in a whitepaper. These days I spend my time trying to build it for real, and not in Amsterdam: closer to home, in a corner of the namespace that wears its own two letters, for people who already had a working answer centuries before any of us drew the map.

Where I’m from there is an older democracy that rotates authority by generation, binds its leaders with promises made out loud and in public, and measures a person’s standing by what they have kept rather than by what they hold. It is, give or take the notation, the typed and contextual web of trust I once spent eight pages trying to define — non‑transferable, term‑limited, earned. When I now read the canonical essays arguing that on‑chain reputation should reflect who you are and not what you can afford, I recognise the destination. I also notice, quietly, that the road was walked long before the map. I didn’t invent the design. At best I’m translating it onto rails that an old proof of concept finally made real.

Coda

When I wrote it, I thought unknown was a placeholder — a value waiting to be resolved into a respectable 0 or 1 once the engine got around to it. I think now it was the only honest entry in the whole state table. Most of what matters in a system of promising agents is, at any given moment, not yet kept and not yet broken. Still out. The grown‑up move isn’t to resolve it prematurely. It’s to design for living inside it.

So I’ll leave the paper’s own promise where it belongs — not finished, but in the keeping of other hands now, in a place it never thought to name.

Still unknown — and that’s the right answer.