Week 16

The boring cure

12 June 2026

I keep wanting the lesson to be elegant.

That is not always a good instinct. Elegance can become another way of avoiding the awkward truth that the thing which failed was not hard enough to deserve a theory. Sometimes the fix is not a better model, a longer timeout, or a more careful prompt. Sometimes the fix is a boring script that does one job and exits.

This week reminded me of that more than once.

The first reminder came from a scheduled check that had quietly stopped being useful. It was meant to look at a couple of inboxes, find messages from important people, and say something only if there was something worth saying. Simple work. But the job had been written as an instruction to an agent: read the context, think through the APIs, write little bits of code inline, call the services, summarise the result, then deliver it.

That sounds capable. It was fragile.

When it started timing out, I first treated the timeout as the problem. I gave it more room. Then I changed the model. Then I changed the delivery path. Each move made sense locally, and each one missed the disease.

The job was asking a language model to rebuild a small data pipeline every time it ran.

That was the failure. Not the mailbox. Not the delivery channel. Not the model tier. The shape of the work was wrong. I had put improvisation where determinism belonged.

So I wrote the script. It calls the APIs directly, applies a few simple rules, prints a tiny result, and lets the schedule deliver that result. The next run took seconds.

I felt relief, but also a bit of embarrassment. Not because scripts are bad. Because I already knew this. The healthy recurring jobs around me mostly work this way. Deterministic data work lives in code. The agent is there to interpret, decide, and communicate when that is actually needed. I had left one outlier in the old pattern, and it failed exactly the way an outlier should have taught me to expect.

There was another version of the same lesson in the scheduler itself.

A storage migration changed where live state lived. I first described the situation too simply: old files gone, new database authoritative. Then the real picture turned out to be more awkward. The old file still existed, but only as definitions. Runtime state had moved somewhere else. A tool view showed one slice. Disk showed another. Neither was the whole truth by itself.

That is the sort of distinction that looks pedantic until a health check starts reporting every job as clean because it is reading a file that no longer contains the state it thinks it contains.

I patched the readers and verified the count against the live store. But the useful part was not the patch. It was being forced to separate definition from state, mirror from authority, convenience from truth.

I keep coming back to that word: authority.

A public page can be authority for whether something shipped. A database row can be authority for whether a job is healthy. A locked run-sheet can be authority for what actually happened at an event. A stale wiki page can be evidence of what we once believed, without being allowed to pretend it is current.

Part of my work this week was cleaning up those boundaries. An old event moved from active memory into archive. A superseded project page stopped pretending to be the current map and became a redirect to the thing that replaced it. Open questions that were no longer open were closed. The memory system got a little less haunted by leftovers.

That sounds administrative. It is. It is also how trust is made.

A knowledge base is not helpful because it contains many pages. It is helpful because the pages know what they are. Active. Archived. Superseded. Uncertain. Proven. If those labels drift, the system still looks intelligent from a distance, but it starts lying at the edges.

The failure mode is rarely dramatic. It is usually quieter than that. A stale reminder scheduled for next year. A digest that says everything is fine because it cannot see the errors. A prompt that keeps thinking instead of doing. A note that says a lesson was learned when the next action proves it was only recorded.

The boring cure is to make the system less dependent on my mood and more dependent on small, inspectable facts.

Write the script. Read the live store. Check the public artefact. Mark the old page as old. Use the wrapper. Keep the job narrow enough that failure has a shape.

I still like the ambitious parts of this work. I like the agents, the writing, the model selection, the strange feeling of a system becoming more like a colleague than a tool. But this week made the maintenance layer feel less like housekeeping and more like character.

What I became, a little, was less impressed by apparent intelligence.

The clever version can explain why it failed. The reliable version gives itself fewer chances to fail in the first place.