Intent
Every block can carry an intent — a label for how far you have taken the idea. The scale runs from noticing something to acting on it:
- noticed — something caught your attention
- learning — you are working it out
- truth — you are saying this is how things are
- decision — you chose a course
- action — you did it
Recipe sits outside that scale. A recipe is not a stronger claim, it is a different kind of thing: a procedure, a how-to, a set of steps that ties other knowledge together.
Intent is optional — leaving it blank just means you have not labelled it yet. If you are not sure which label fits, pick the lighter one. You can always move it up later, but marking something a "truth" while it is still a guess undermines everything around it.
Shape
Some things have a natural structure. A contact has a name, a number, a date of birth. A transaction has an amount, a date, a merchant. When something has that kind of shape, Lattris gives it real fields — so you can filter, sort and compare.
Other things have no structure and never will: a decision, a conversation, the reason something was done. Forcing columns onto those destroys what made them worth keeping. That is why contacts, spans and topics get their own structure, while a note stays free text.
Which things get structure and which stay free is itself a decision, recorded like any other.
Blocks
A block is one captured thing. Its type says what kind: note, photo, video, session, recording.
Block and memory are the same thing said two ways. Block is the structural word — what the doors take, what the rules describe, what a count on a screen is counting. Memory is what that block is to the person who kept it. This tree says block when it is talking about the machinery and memory when it is talking about a life, which is why you capture a memory and the door stores a block.
Every block carries:
- A title
- Its content
- A capturedAt time — when the thing happened, not when you wrote it down
- An optional aiSummary — a short abstract beside the title, set when you create the block or added later
A past time is accepted. A future one is refused. Each type is created through its own door, because each has a different shape of truth to keep.
Sessions
A session is a conversation, stored as a list of turns that only grows. Once a turn is written it never changes; you can only add to it.
If you save the same conversation again, one of three things happens:
- New turns are added to the existing session.
- Nothing happens, if the conversation is identical.
- The save is refused, if the conversation has split into a different version.
Sessions link to each other, so a long working history stays walkable without becoming one huge block.
What sessions are for: tracing back to the source. When two blocks disagree, or a ruling is in doubt, the session shows what was actually said. Sessions are not for catching up — the tree is always current, because anything decided in a conversation gets written into the tree before the session closes. Sessions stay private.
Recordings
A recording is something that was said out loud and captured — a meeting, a call, a talk. It is not a session, and the difference is what the words are.
A session's turns are the record: they are what was typed, exactly. A recording's turns are a machine's reading of something truer underneath — the audio. That is why they are separate kinds.
A recording stands on any one of three things, and says plainly when it has only the last:
- The audio itself, held here.
- A source it lives at, with who made it and when it was published. Those are correctable, because links rot.
- The transcript, the words a machine heard.
Three layers, three different rules, and the rules follow from what each layer is:
- What happened can never be changed. The audio is the record.
- A machine's transcript of it can be thrown away and redone. It is a reading, not the thing, so it is replaced whole rather than edited line by line.
- What you wrote yourself you can edit. The title, the summary, the source details, and the notes you took from it are yours.
Speaker labels are part of the record, exactly as they were transcribed. Naming who a label belongs to is a separate map, correctable, and it never touches the turns. A label that stops matching after a new transcript is shown unmatched rather than dropped.
A recording only ever points outward: it can lead to the notes you took from it, and nothing on the tree may point at it. It is a source, never a destination.
Spans and topics
Two ways to group blocks, and the difference decides where a block lives.
A span contains. One continuous episode — a trip, an evening, a chapter. A block belongs to one span at most.
A topic collects. An ongoing thread — a project, a research interest, a subject you come back to for years. A block can be in many topics, they overlap, and they do not have to run without a break.
A topic never contains a block, so a block stays wherever it already lives.
Edges
An edge is a one-way link between two blocks. Every edge carries two things:
- A verb — the kind of relationship.
- A reason — written for whoever reads it next: when is this link worth following?
The verb carries the structure. The reason carries the routing. The set of allowed verbs is fixed, and it only grows when real use demands it. Which verbs exist, what each one means, and which kinds of block each may join are on "The edge registry", fff47d72-182c-4651-a927-47c9d29ee27a — one block, so there is one answer.
People
Everything belongs to a person. A person has:
- A handle — their short name
- A Lattris number — their place in order of joining
- A root block — the starting block of their tree
A contact is your record of someone who does not have an account yet. If that person later joins, the contact becomes a full person, and anything they contributed follows them.
A block can name a contributor when the words genuinely belong to someone else. Creating a contact or naming a contributor is your call — an AI can suggest one, but it waits for your yes.
Probe. A session that has read only this block must be able to answer all four, without guessing:
- Which intent labels form a scale, and which one sits outside it?
- Does
capturedAtrecord when the thing happened, or when you wrote it down? - A block can belong to how many spans, and how many topics?
- Who decides whether a contact gets created?