Cairn

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.