Why AI work needs memory surfaces
Our first design kept everything in an event log. Then a note said one thing and the log said another.
The first design of BaseHalf was very tidy. Every change, from a person or an agent, went through one fixed set of commands. Each command wrote an event to an append-only log, and everything else could be rebuilt from that log. One source of truth, complete history, nothing hidden.
We threw it out, for two reasons.
Agents have their own tools. Claude Code edits a Markdown file with its own edit command, and asking it to route every change through ours was friction we could not enforce.
People trust the file. When your note says one thing and a log says another, you believe the note. Our source of truth had become a second truth, sitting beside the one you can actually open.
So the files became the truth, and BaseHalf reads them the way any other tool does. That decision shaped most of what came after.
The same thing happened to connections
Connections used to live in hidden metadata, on both ends: A’s record said it flowed into B, and B’s record said it came from A. Sooner or later the two disagreed, so we built a way to show the broken pair, and buttons to repair or discard it.
In September we moved each connection into the note that uses it, once, as a list at the top of the file, the way a source file lists its imports. You can read it, search it, commit it and edit it by hand. An agent that opens the note sees it without being told anything. The repair machinery went away, because nothing was left to disagree.
What a surface gives you
AI products like to promise that the model will remember you, and it may. But you cannot see what it kept, so you cannot tell which memory shaped this answer, fix the one that is wrong, or hand any of it to a colleague.
We call a memory a surface when it passes three plain tests:
- You can open it and read it.
- You can change it, and the change holds.
- It still works when the app that made it is closed.
A canvas of your own files passes. Close BaseHalf and the notes, their connections and their descriptions are still there, for git, for other editors and for any agent. A longer chat history does not pass, however much of it there is: it keeps everything and cannot tell you what still matters.
A surface also makes forgetting easy. A stale assumption in a note of its own can be rewritten or disconnected without touching anything else, and the next agent to read the folder simply will not find it.