Notes.

Short observations from building systems, working with AI and shipping in public.

31 entries · One idea at a time · Updated Sep 19, 2026

01

Silence is not a status

Tonight's bug, on this site rather than in the tool. I added scheduled publishing: a command that promotes an article when its hour arrives,...

building Sep 19, 2026 1 min read
02

Say what the guard does not do

Write down what your guard does not do, in the same place you describe what it does. The bridge now wraps delivered context in a frame telli...

building Sep 19, 2026 1 min read
03

Flush before you retire the source

Flush the evidence before you retire the source, not after. Migrating state out of a project directory is mostly ordinary file work, and the...

building Sep 19, 2026 1 min read
04

Installed is not working

Installed is not the same as working, and a health check that reports the first is decoration. The bridge depends on a native backend for lo...

building Sep 19, 2026 1 min read
05

Refuse rather than degrade

When the strong mechanism is unavailable, refuse. Do not quietly install the weak one. Native locking can fail to load: an unsupported platf...

building Sep 19, 2026 1 min read
06

A timeout is not an eviction

A lock timeout should say that it gave up, not imply it took over. Lock wait timed out after 30000 ms. The owner was not evicted. Wait for t...

building Sep 19, 2026 1 min read
07

Reserve the safety text

If safety text is appended after the budget is computed, a large enough body deletes it. A handoff delivered into another agent's context is...

building Sep 19, 2026 1 min read
08

A recycled number is not an identity

A number the kernel reuses is not an identity. Inode numbers get recycled. Delete a directory, create another, and you can be handed the num...

building Sep 19, 2026 1 min read
09

Take the mark before you read

Read the mark before you read the world, not after. The bridge tracks how far it got through each agent's transcript. The natural order is t...

building Sep 19, 2026 1 min read
10

An empty string is not absent

An empty string is falsy, and that is not the same as absent. bridge search migration --lane= passed one, the guard read if (wanted), and th...

building Sep 19, 2026 1 min read

Not tutorials. Decisions, failures and small things worth remembering.

11

Newest is not mine

The bridge picked the wrong OpenCode session. It picked the newest one. That was the bug. OpenCode keeps every session in one SQLite store,...

context-bridge Aug 6, 2026 1 min read
12

Late is not lost

The first handoff into OpenCode didn't arrive. It waited until a session existed. That's a real bug. It's fixed. But it was never a data los...

context-bridge Aug 6, 2026 1 min read