Stories A told story · drafted 2026-09-28
The Record That Answers
Open a group and see who to talk to next, why, and what has worked for people like them — learned from every interaction, on one light screen, for us and for every client.
The seven beats
- World
- Seven groups that keep their customers in one record, each forgetting at its own fade-rate
- Cast
- The customer at the centre; operators of each group and its clients; agents who draft, watch and hand work back
- Knock
- The operator, 2026-09-28: core product; customer at the centre; track everything; optimise on interactions; extremely light
- Want
- A record that learns which touch moves people, and hands over the next person and the next word
- Way
- Signals in; outcomes mark the path that led there; silence fades it; the weights come back as a queue, a stage view and a health number
- Turn
- The list is in a different order, and the order is the evidence
- Lesson
- Open — not learned yet
The row is short.
A time. A person. The stage they left, the stage they entered. And one word for who moved them: rule, or agent.
There are two thousand and ninety-eight of these rows, written since the start of July, for one thousand and eight people in seven groups. A stranger became a lead. A lead asked for a price. A buyer came back and bought again.
Not one row says a person moved them.
Each row is read the way a diary is read. One person at a time, when somebody opens that person.
Nobody reads them together.
What they could say together is simple to state. Before people moved, what happened? Which word, on which channel, at which hour, from which helper? Which of them went quiet for four days and then came back, and what brought them?
The answer exists. It is spread across two thousand rows that were written for a different reader.
So the operator does what operators have always done. Starts at the top of the list. Answers the loudest. Remembers who seemed warm last week.
The rest go quiet. Some of them were ready.
The ask arrived in plain words. The customer is at the centre of everything. Track everything. Optimise on what happens between people. Keep it light enough that nobody has to learn it.
Tracking everything is the easy half. Every page read, every reply, every payment already arrives as a signal, and the record already keeps it.
The difficulty runs the other way. A record that keeps everything and answers nothing grows heavier every day it runs. It is not a memory. It is a warehouse.
The usual cure is a dashboard. Eleven tabs, a chart on each, and someone paid to read them.
It is not lighter. It is the same weight, moved.
The other answer is older than any of this. When something works, the path that led there grows a little stronger. When something fails, it gains a little resistance. When nothing happens, both fade.
Nobody decides which path is good. The traffic decides, and the forgetting keeps it honest.
A record built this way does not need a report. It needs one question it can answer at the top of one screen: who next, and why.
Light, here, means a small number of things. Not a small screen. One person. One stage. One thread. One next step. Everything else sits a tab behind them, and fills itself.
And the customer is at the centre of it, not in the sights of it. Every signal that follows a person should be one that person could read. Every channel should be one they chose. Tracking everything is only tolerable on those terms.
The turn is not a feature. It is the first morning the list is in a different order.
At the top is someone who wrote nothing yesterday. Under the name is the reason, in one line: people who read that page twice and then went quiet tended to move when someone answered their first question, not their last. Under the reason is a draft, two lines long.
The operator changes one word and sends it.
If the person answers, the path that led to them is marked, and the next person like them rises a little sooner. If they do not, the path fades, and the list forgets it was ever sure.
Nothing announces that the record has learned. The order of the list is the only evidence.
The same holds in every group. A client's record forgets at the client's own rate. The agency above sees what its clients see. None of them is told what works by anyone except their own customers.
The row is still short.
It has a reader now.
Where the metaphor stops being true
Outside the story, in the repo's words.
- "Nobody reads them together." True today.
lifecycle:mineandlifecycle:of(one.ie/web/src/lib/world-receivers.ts:2093-2152) readstage_transitionfor ONE actor. Neither is in the SDK contract (grep -c '"lifecycle:mine"' packages/sdk/src/receivers.ts→ 0). No aggregate exists. - "Not one row says a person moved them." Measured:
sourceholdsrule(1,086) andagent(1,012) and nothing else. Either a drag on the board writes no row, or it writes one of those two words. VERIFY which, before anything learns from this table. A learner that cannot see human moves learns only what machines did. - "Since the start of July." The
atcolumn is in MIXED UNITS: the earliest row is1783175945(seconds) and the latest1790481622078(milliseconds). Any time-in-stage computed over this table today is wrong by a factor of 1,000 on some rows. Normalisingatis the first card of chapter two, not a detail. - "The path that led there grows stronger."
mark,warnandfadeare wired (schema/one.tql). What is NOT WIRED is the link from a stage move back to the touch before it. Chapter one marks only a sale, by amount × 10 (text/crm.mdworld.tracking). - "Who next, and why." NOT WIRED.
lib/crmandcomponents/crmhold no ranker, and there is no health score inlib/. - "Light." Unmeasured.
ActorContent.tsxpluscomponents/crm/*.tsxis 2,893 lines, and the profile has eleven tabs today (text/crm.mdcard 11, red). There is no budget for load time or bytes. - "One the person could read … one they chose." Chapter one's cards 7, 25, 26 and 27 are red.
POST /api/forgettakes any actor id with no auth check (one.ie/web/src/pages/api/forget.ts); the fix is in flight on the secure lane, 2026-09-28. - Locked words used: signal, and the verbs behind stronger (mark), resistance (warn) and fade. Dead names: none. Warehouse and diary are ordinary English, not substrate words.
The family this story generates
| File | Technology | What it holds |
|---|---|---|
text/crm-learns-story.md |
the story | this file |
text/crm-learns.md |
the promise | the operator's words, the schedule (the loop across people), one proof — written next |
text/crm.md |
chapter one | the person — 28 deliverables, already filed as rows and promises |
Sentences that would be false if shipped
- "The CRM tells you who to talk to next."
- "Time in stage is measured for every person." (
atmixes seconds and milliseconds.) - "We know what moved each customer." (No stage move is linked to the touch before it.)
- "Every reply an agent drafts is scored by its outcome."
- "The profile loads in under a second." (Nothing measures it.)
- "Customers can see and delete everything we hold." (Cards 26 and 27 are red.)
- "Your team moves people through the pipeline." (No recorded move has a person as its source.)
The story shape — the chain, and the three rules
The fourteen parts walk one chain, from what is wanted to what was learned:
goal states the Want plainly
│
story tells the seven beats
│
plan sets the path from the story to the work
│
tasks the rows /do executes, tagged on the board
│
promise what was agreed, its accepts frozen
│
stakes what changes if it is kept or missed
│
events signals — each one marks or warns a route
│
proof the &&-join of the accepts, run as written
│
payment money moves only where a person consents
│
learning a path or a status changes, so the next
pick is not the last one
Three rules hold for every lifecycle, for people and for agents:
- Promises at every touchpoint. Each stage where a person or an agent meets
ONE carries one promise with one checkable proof (
promise,check). - Agents help people move forward. Each stage names the agent that helps the
person reach the next stage (
helper). - Agents hand tasks to people. Where judgment, consent, a signature or money
belongs to a person, the agent hands them the task — a
humanworkflow step, or the task reassigned — and says what it hands over (hands_over).
Every event is written as a signal with its metadata: the receiver, bare tags, who
sends it, and the route it strengthens or weakens. A fact nobody has checked is
written VERIFY:, never filled in.
The knock is what was said. When a story becomes a promise, the Knock's own
words go into the promise's said: block verbatim, and the schedule is their
read-back — so the check a lifecycle row names (check:) is a line the person
could say yes to, proven by running it (text/template-feature.md; the law is
.claude/rules/documentation.md § What a promise contains, and what must be
proven). A check: that only proves a file exists is presence, not a promise
kept at that touchpoint.
Connected to
Every link here was checked against the repo when the page was built. 4 names the story uses could not be found and are shown without a link.
People
- the customer
- the operator of a group
- a client's team
- the agency above them
Agents
Each opens a chat with that agent.
Skills
Each opens the skill's page.
- storytelling
- promise-make
- planning
- sell
Paths
The flows this story walks — trigger → step → step.
- trigger: a signal on a person (event:track, entity:reply) → condition: did their stage move? → tool: mark the path that came before it → delay: the group's fade window → tool: fade what stayed quiet
- trigger: the operator opens the group → tool: the now-queue, path strength × value (VERIFY: no receiver yet) → human: the operator picks a person → agent: agent:run drafts from crm:context → human: approve or edit → tool: entity:reply
- trigger: a person's ring cools past a line → agent: journey-runner proposes a word → human: the operator approves → tool: entity:reply
Tools
Receivers and scripts it signals.
- event:track
- entity:reply
- crm:context
- analytics:revenue
- segment:preview
- world:route
- agent:run
- human:notify
- D1 stage_transition
- one.ie/web/scripts/edge-read-ratchet.mjs
- .claude/scripts/signal-watch.sh
Promises
What it holds; a told promise opens its own story.
- crm
- crm-learns (VERIFY: not made yet — the next step)
Events
Every event is a signal; each names the path it marks or warns.
- event:track · from the page the person is on touch → channel → campaign; marked when a stage move follows it tags: crm, activity
- entity:reply · from the operator, or an agent with a person's approval message → reply → stage move; warned when the reply is never read tags: crm, messages
- world:route · from the group learned tag path → staked subscribers → the CEO tags: crm
- VERIFY: the stage-move writer (one.ie/web/src/lib/world-receivers.ts:2330 inserts stage_transition) · from a rule or an agent — the only two sources recorded stage → stage; the move this whole chapter learns from tags: crm, lifecycle
Transactions
- a sale on a person (checkout:link) marks the path that led to it by amount × 10 — text/crm.md world.tracking
- each drafted reply spends group credit on one model call
Analytics
- stage-to-stage conversion and time in stage, by source, channel, message and agent — VERIFY: not computed; stage_transition holds 2,098 moves
- reply time and response rate per group — VERIFY: not computed
- the profile's load time and bytes — VERIFY: no budget exists