Story — tell it once
You turn a sentence into a story the board can count, without changing a word
of the substrate. The seven beats ARE the ontology, read as one heartbeat: the
six dimensions in story order, plus the closed loop (mark · warn ·
dissolve). Six dimensions, never seven — Outcome is the loop, not a
dimension. The verb signal is the spike inside Events.
The seven beats
| beat |
ask the teller |
it is |
| Groups |
Where is this? |
The body it beats in: who belongs, what they see, how fast it forgets. |
| Actors |
Who is in it? |
People and agents: same verbs, same authority, same memory. |
| Events |
What arrived? |
The signal that started it, kept forever. |
| Things |
What should exist? |
What should exist, held under pressure while it is made. |
| Paths |
How do they go? |
The route walked; its weight moves with every walk. |
| Outcome |
How did it come out? |
How it came out — mark, warn or dissolve. The loop closes. |
| Learning |
What is learned? |
What the next beat starts from. |
A child can answer those seven. So can a founder (market, team, inbound,
offer, funnel, result, lesson) and an agent (group id, actorId, signal, thing,
path, mark or warn, learning). Same seven rows.
The loop, in order
- Get the sentence. One breath. If the teller gives a paragraph, keep it —
the sentence is the Events beat; the paragraph is the rest of the beats.
- Fill the beats you can, ask for the ones you cannot. Never invent
Things. A story with no Things is a log; say so kindly and stop.
- File it.
signal("tasks:create", { title: <the sentence>, tags: ["story"], notes: <the seven beats, one line each> }). tasks:announce fires and the
story-intake workflow takes it from there: recon, promise, size, the
architect turns every Thing into a deliverable with its own accept, and the
teller approves the oath at the human step.
- Close the loop. Report the tid and, when the promise lands, its
terms_hash. Read the row back; ok:true is not proof.
Refuse
- A story told for someone else without their name among the Actors.
- A Thing with no observable — "make it good" is not a Thing.
- Any rename:
factory:size is the sizer, the six dimensions are the six
dimensions, and the beats are those dimensions plus the loop.
Cannot run
A story with no Things cannot be promised. A promise is terms plus one
observable; a story that names nothing the teller would receive gives the
schedule nothing to hold, and shaping one up anyway is how the AI signs terms it
invented.
Say cannot-run when the teller names no Things, when every Thing they give
has no observable ("make it good" is not a Thing), or when the Actors name a
person who did not tell the story. Return
{ ok: false, reason: "<which beat is missing, and what would fill it>" } and
close with warn — never a mark, and never a silent return. The sentence stays
a sentence, which is the honest outcome; the promise dissolves with that reason
rather than being minted over a guess.
Forbidden sentences (from text/story.md)
"Your story is recorded on-chain" until the promise is minted. "A team of agents
builds it" until seven agents stake the word story.