Notebook
What changed, and what didn't work.
Short dated entries: a feature that landed, a decision that got reversed, a bug worth naming. The same bias as the graph itself — the negative results are the ones worth keeping.
-
2026-08-27
Deriving “a human read this” from git, instead of adding a field
A node nobody has read is a different thing from a node nobody has written. Telling them apart took no new field — just a commit trailer, and two passes over the log.
-
2026-08-27
Splitting the tool from the graph
One repo became two, because a tool for recording research can be shared and a research record cannot. What that cost, and the one thing the conflation was actually buying.
-
2026-08-26
Where a human argues with the record
The agent writes the node; you read it a week later and think the number is wrong. Until this landed, the only places to put that thought were a status change, which lies, and the inbox, which loses the connection.
-
2026-08-05
The comma that ate seventeen nodes
An unquoted comma in a YAML flow scalar silently turned the tail of a sentence into a key. It hit 17 of the first 55 nodes, and the fix that mattered was not the writer.
Adding an entry
There is no generator and no dependency. Copy
site/blog/_template.html, rename it
YYYY-MM-DD-slug.html, write the prose, and add one
<li> to the list above.
That is deliberately the whole mechanism. A blog that needs a build step is a blog that stops getting posts — the same argument as decision 7, one layer out.