KEEL · YARD v0.10.0

The spine handbook

Arcs and movements are containers — they carry a premise and an intent, one line each, and nothing checks them. The beat is where the story is actually designed. Everything mechanical in Keel — contract checking, the promise ledger, the tension curve, blast radius — reads beats. This chapter is how to work them.

The beat is a card, not prose

# b-v1.1.2.3 — checked out as checked-out/b-v1.1.2.3.yaml id: b-v1.1.2.3 title: The Gate Opens at Dusk pov: e-kael location: e-hollow-gate story_time: precision: day year: 812 day: 14 part: dusk on_stage: - e-kael - e-vess premise: Kael bribes the gatekeeper and learns the toll is memory, not coin. enters_with: Kael desperate, believes coin will buy passage. exits_with: Kael lighter by one memory he cannot name. opens: - P-14 pays: - P-03 tension: 7 word_budget: 2400 owner: reza status: specified scenes: - s-0068

enters_with / exits_with are the load-bearing fields. A beat's exit state must satisfy the next beat's entry state — which can be checked mechanically. It is a type system for story, and it is what makes retroactive editing tractable: change an exit, and the blast radius knows exactly which contract broke.

The resolution ladder

You will never design a hundred beats before writing — and you should not. Beats climb a ladder, and the spine stays deep near the pen, shallow further out:

stub sketched specified pending canon a titled slot premise written contract complete awaiting canon settled WRITEABLE FROM HERE
The ladder. Grey nodes cannot take prose; the moment a beat is specified, its leaves may exist.

The write gate — two invariants

1. No leaf exists outside the spine. There is no command that makes a floating leaf. Creation requires a parent beat at specified or better:

$ keel new s-0069 keel: leaf creation requires --beat <beat-id> — no leaf exists outside the spine $ keel new s-0069 --beat b-v1.1.2.4 keel: the write gate refuses this: beat b-v1.1.2.4 is Stub, and leaves require a specified-or-better beat. Specify the beat first (co/ci its card, fill the contract, set status: specified)

2. A leaf can never be more canonized than its beat. Draft freely against a pending beat — the prose simply cannot reach canon before its structure does. The second invariant is what keeps the first from being tyrannical: specified is enough to write, so nobody stands in front of your exploratory impulse.

Building the spine — parents in order

Position lives in the id itself — arc-v1.2 is volume 1, arc 2; b-v1.2.1.3 is its first movement's third beat — so the tree needs no separate ordering. Creation requires each parent to exist:

$ keel new arc-v1.2 --title "Salt and Ash" created arc-v1.2 — "Salt and Ash" (sketched) · co/ci to give it premise and intent $ keel new b-v1.3.1.1 keel: beat b-v1.3.1.1 has no parent movement — create mv-v1.3.1 first $ keel new mv-v1.2.1 --title "Crossing" created mv-v1.2.1 — "Crossing" (sketched) $ keel new b-v1.2.1.1 --title "The River" created b-v1.2.1.1 — "The River" (stub · not writeable until specified)

A new beat arrives as a stub with placeholder contract fields. Check it out, fill the contract, set status: specified, check it in — the gate opens. (Check-in validates the card: a broken YAML or an id that no longer matches the object is refused, loudly.)

The frontier — warned, never blocked

The frontier is the last specified beat in reading order. Writing into the final specified movement means the spine is about to run dry ahead of you — and generation quality drops when Davy has no next beat to write toward. Keel warns, everywhere, and blocks nowhere:

railthe keel lens carries ⚠ frontier: 1.1.2 on its border
footthe ⚠frontier chip appears while your open leaf is in that movement
keel statusfrontier: 1.1.2 "The Gate" — last specified beat
leaf creationprints the warning and suggests specifying the next movement soon

The working pattern: series premise and ending → arcs for volume one → movements for arc one → beats in detail only where you are about to write. Arc III can stay a one-line stub for a year. Stay one movement ahead of the pen, and the frontier warning stays quiet.

Reading the tree

canon — settled structure
pending — awaiting canonization
specified — contract complete, writeable
sketched / stub — grey, cannot take prose
j / kwalk the tree (Map view); the detail card follows below it
Enteropen the selected beat's first leaf in the editor