An edge joins two blocks in one direction. The verb carries the structure; the reason carries the routing. The vocabulary is a registry, not a free field: the door refuses a verb it does not hold for the pair you are joining, and the refusal names what it will accept instead. You never have to guess the list.
What each verb may join
- note → note:
references,led_to - note → session:
references - session → note:
led_to - session → session:
continued_as,forked_into - recording → note:
led_to - nothing → recording: no verb is registered for any pair that ends at a recording
What each verb means
references — this is worth reading next, and the reason says when. It is the verb of the walk: nearly every link a reader follows is a reference.
led_to — cause pointing at effect. A recording uses this verb and only this one: the recording leads to the notes taken from it. The block that produced something points at what it produced. The common case is a conversation and the knowledge taken from it: the session led_to the note.
continued_as — a session's next epoch. When a conversation's context resets, the next stretch is saved as its own block, and this edge chains it to the one before. The saver names the previous block and the edge is written in the same transaction as the save. The server takes the saver's word for it.
forked_into — a session that diverged from another. This one is not taken on the saver's word. A fork is a claim the server fingerprint-verifies — a real shared prefix and a real divergence against the origin — before the edge exists. The claim nominates; the fingerprints decide.
Those two session verbs carry different grades of evidence, and it is worth knowing which you are reading: a chain is asserted, a fork is proven.
A recording is a source and never a destination. Nobody has to remember that: no verb exists for any pair ending at a recording, so the door refuses it and the shape holds itself up.
Why it is a registry
What a verb may join is constrained by block type, not by intent. A note's intent — truth, recipe, decision — does not change which verbs it can carry. Constraining by intent waits until a real edge demands it.
A new verb lands by migration, from a real use case, never by code alone. The vocabulary widens when something real needs it and not before: a verb nobody uses is structure nobody reads.
Probe. A session that has read only this block must be able to answer all three, without guessing:
- Which verb joins a session to the knowledge taken from it?
- Which of the two session verbs does the server prove, rather than take on trust?
- What do you do when the door refuses a verb?