Stories A promise's telling
One graph
Every capability, person, path and model in ONE is a node in one graph that a signal can reach by name, and every edge it crosses is marked or warned so the next signal finds the one that worked.
The seven beats
- World
- ONE's substrate on 2026-10-07 — 504 receivers in code, 47 workflow templates, five tag stores, two learning writers, and a graph that already holds all of it as nodes and edges without anyone saying so
- Cast
- Tony, who asked for the simple thing; the agents that guess a receiver's name; the ad that sells credits; the router that picks actors but never models; the builders that will take a card each
- Knock
- Tony: enable any receiver to be defined without having to build a new one — and workflows are called paths now
- Want
- One rule that makes every name reachable: a receiver is a path with its name on the first edge, a person is an address, a workflow is a path, a trigger is an edge in, and the stamp carries what the signal learned
- Way
- Measure first; then one case in the dispatcher, one field on the contract, one pure stamp, one deposit writer, two routes — no entity, no relation, no thing-type
- Turn
- The handler kinds were step kinds, the base template was the door, the receiver row was a trigger; the fold left nothing to build but a third rung and a tag
- Lesson
- Open — whether one grammar stops the guessing shows in the unknown_receiver share and in routes that land on a receiver node, which are zero today
I · The graph nobody named
By October the substrate held ten entities and sixteen relations, and
the two that mattered were an edge and a motion. Steps were things
joined step to step by the path relation; a function called
next_steps walked it. Workflows had been paths since the day the step
kinds were locked, and the word had not caught up.
II · Five hundred doors, each with a key cut by hand
Adding a receiver touched nine places. The receiver skill listed eight and the dispatcher's prefix check was the ninth. Twenty-six rows on the board waited on a receiver; twenty-one of them had a door already. The block was never missing capability. It was the map.
III · The ask
Tony wrote one sentence with eleven wants in it, and then a shorter one: can we make it more simple and elegant and fast to build. The first refinement gave the page five words — receiver, actor, path, trigger, signal — and five handler kinds, a base template, a receiver row with its own type.
IV · The fold
Each of the three dissolved under one sentence. The handler kinds were
step kinds the executor already ran. The base template was the door,
which already stamps and gates once for every signal. The receiver row
was a trigger step, which workflow:create already writes. What was
left to build was a third rung in the dispatcher and a tag on a
contract.
V · Where it joins
Ten seams, each measured. Five tag stores with the receivers in none. A router that picked actors by learned edges and models by a constant. Two writers learning from the same ad in two stores. A sale that marked the seller and forgot the ad. Surfaces that disagreed by number on what could be called. Every join was a verb over an edge that already existed, and the only new field was tags on the receiver.
VI · The cards
Sixteen, in three waves. The first ten have nothing open in front of them. Four need the dispatcher or the stamp. Two need the stamp on the wire. Each is one file a builder reads, one test that is red, one accept line. Four of them touch the dispatcher or money and keep their person at the gate.
VII · Open
Whether one grammar stops the guessing shows in the unknown_receiver share, and in routes that land on a receiver node, which is zero today.
Connected to
Every link here was checked against the repo when the page was built. 2 names the story uses could not be found and are shown without a link.
People
- tony
Agents
Each opens a chat with that agent.
Skills
Each opens the skill's page.
- receiver
- sdk
- workflow
- signal
- typedb
Paths
The flows this story walks — trigger → step → step.
- trigger: receiver:<name> → the receiver's own steps → the close marks the edges
- trigger: receiver:actor:<verb> → condition: consent → tool: the verb's door
- trigger: chat staked campaign:credits → tool: reply → human → tool: pay link → sell → checkout:resume
Tools
Receivers and scripts it signals.
- workflow:trigger
- workflow:create
- world:pick-model
- meta:catalog
- world:route
- world:announce
- proof.sh
- do-promise-settle.sh
Promises
What it holds; a told promise opens its own story.
Events
Every event is a signal; each names the path it marks or warns.
- workflow:trigger · from the dispatcher's third rung receiver:<name> → the path (mark on a run that closed, warn on none) tags: one-graph, receiver
- world:pick-model · from the executor, on an agent step with no model shape → model (mark on pass, warn on fail) tags: one-graph, routing
- checkout:resume · from the storefront webhook tag:campaign:<c> → product (mark, weight = amount) tags: one-graph, sell, credits
- world:announce · from promise:make promise:one-graph → proof tags: promise, made, one-graph
Transactions
- none — the sale this promise marks is the sell-credits goal's, not this one's
Analytics
- unknown_receiver share, GET /api/receivers/flow — the routes that land on a receiver node, zero today
- strength on tag:campaign:credits:a and :b, read from claw_paths after the first live sale
- cost_usd by tag:campaign:*, read from gateway_calls joined on signal
- receivers reachable per surface — chat 14, MCP 111, OpenAPI 181 today — converging on one number