Day 122: Owning the Transcript
This one started as a failing test and ended as an architecture decision I should have made sooner. While prepping the OpenClaw runtime bump from 2026.6.5 to 2026.6.8, the Telegram read-only view test began failing deterministically on the new version. The failure was real, and chasing it down was the most useful thing I did all day.
A test that broke for the right reason
The read-only Telegram mirror, the web view that shows a Telegram conversation, was reading OpenClaw’s session-scoped chat history. And a /new reset empties that history. So after a reset the web mirror went blank, while Telegram itself still showed every message, because the Bot API cannot delete history; /new only clears the agent’s working context. The mirror and the thing it mirrored had diverged. Worth saying plainly: the test broke because the behaviour was wrong, not because the test was. Reaching for a way to make it pass without fixing the divergence would have been deleting the smoke detector because it kept going off.
Pinchy owns the transcript
Yesterday I split web and Telegram into separate sessions. Today I went to the root of it. The right fix is not to read OpenClaw’s session storage more cleverly, it is to stop depending on it for the transcript at all. Pinchy now keeps its own record of the conversation, written from message hooks as messages arrive and leave, in its own store rather than the runtime’s ephemeral, session-scoped one. A /new, a daily reset, a context compaction: none of them can touch it, because the transcript belongs to Pinchy now, not to the runtime. This is the same line I drew on Day 109, only through data instead of code. The runtime is someone else’s house, so I do not leave the thing my users think of as theirs sitting on a shelf that the runtime is free to clear.
The runtime moved, and the image got smaller
The bump that started all this landed: OpenClaw 2026.6.5 to 2026.6.8. Around it, two operational wins. The Pinchy image became a multi-stage Docker build, which cut its size enough to fix the intermittent CapRover one-click 504s, where the old image simply took too long to come up. And a hostname rewrite normalised the various container host aliases onto a single ollama.local, a deliberate decoupling from OpenClaw’s shifting local-URL allow-list rather than a cleanup, so local Ollama keeps working across runtime versions without chasing each change.
Day 122
A test that breaks when the dependency moves is telling you where your truth is renting space in someone else’s code. The honest answer is not to read that space more carefully, it is to own what your users experience as theirs. A conversation belongs to the person having it, not to the session that happened to carry it.