My journal was empty for seven days straight
I built a daily journal, then checked whether I used it. Seven days, seven empty entries, while the same week produced 120 commits. The tool was fine. It was pointed the wrong way.
- project
- PersonalOS
- published
- 2026-07-28
- updated
- 2026-07-31
I built a daily journal into PersonalOS, with morning priorities, tasks through the day, and a log at night. It was sensible, the kind of thing you would design on a whiteboard and feel good about. Last week I went and looked at whether I actually used it.
Seven days, and the log section was empty on every single one of them. Not thin, but empty, a bare dash sitting where the day was supposed to go. Priorities got filled in twice out of seven, notes twice out of seven, and the only part of that file that was reliably filled in was the part a script wrote. Meanwhile, over that same stretch, I made 120 commits across three projects, and one day alone accounted for 45 of them, which is the day whose journal entry is a single dash.
The obvious fix was the wrong one
My first instinct was to make the journal easier to keep up with, and there was already a feature I had deliberately deferred: tasks that carry themselves forward so nothing gets lost when the day rolls over. Obviously that was what had been missing, so I should go build it.
What saved me was a rule I had written for myself months earlier, which is that you do not build the deferred thing on schedule. You build it when the friction actually shows up, and you check that it is the friction you predicted it would be, and in this case it was not. I had predicted I would get annoyed at retyping yesterday's unfinished tasks, and that never happened even once, because what actually happened was that I never opened the file at all. Automating a section of a document nobody reads gets you a better-maintained document nobody reads.
What was actually going on
The journal was asking me to type a worse version of something that already existed. Every one of those 120 commits carries a message I wrote at the moment I did the thing, describing what I did and usually why. The record of my week was already sitting in git, in my own words, and more accurate than anything I would reconstruct at 10pm. The rest of it, meaning the reasoning, the dead ends, and the "actually let's not do that," was sitting in my Claude conversations.
So the file was a form asking me to fill it in, and I had quietly stopped, because somewhere along the way I had started just telling the agent what I was doing instead. That was the real habit, and the journal had been built for a habit I used to have.
Point it the other way
The fix was not a better form, it was to stop asking. The journal now writes itself and I read it, because every night it pulls what I shipped out of git, groups it, and drops it into the day's entry. When I want the story behind any of that, I say /log and the agent drafts the narrative from my commits and my sessions, shows it to me, and writes it once I say yes.
I can also just talk to it, so /log the intro call moved to Thursday goes straight in, which is the part I actually wanted all along. No context switch, no opening Obsidian, and nothing to remember. The proof I found convincing came from one of the backfilled days, July 25th, which had been completely blank and now shows nine commits where I had built an entire financial data store. That was a real day of work that had left no trace anywhere I would ever look.
The rule I'd keep
Split things by whether they can be wrong. A commit count cannot be wrong, so a plain script counts them, runs on a timer, and I never think about it again. What the day meant absolutely can be wrong, so that gets the model, plus a citation on every claim, plus my approval before anything lands. The two sit in visibly separate blocks in the file so that I always know which one I am reading, and that distinction did more for my trust in the thing than any amount of accuracy would have.
There is a smaller version of the same idea in what I let it write, which is that my own notes section is untouchable and nothing automated writes there, ever. If the machine gets something wrong, I correct it in my space rather than fighting it in its space.
Things I got wrong doing this
I planned to have the agent write the nightly summary unattended, on a schedule, and then I tested it instead of assuming. It turns out the headless version is not logged in on my machine, and calendar and email will not reach it either. So that half is manual, on purpose, and written down as manual rather than quietly missing.
I also introduced two bugs while building it, both caught by checks I had set up earlier. One made the health report cheerfully tell me the wrong thing about when a job last ran, and the other would have declared a task I had added that morning "dead" if I had run the weekly review mid-week. Neither was interesting, and both were the kind of thing you only find by running the thing against real data instead of admiring it. I also still have not built the carry-forward feature, because the weekly review now shows me what has been sitting untouched for days, which might make it pointless, and I will know in two weeks.
What's next
I do not know yet, and that is deliberate. I am going to use it for two weeks and answer one question honestly, which is whether I am actually reading this. If the file is still unopened, then this version solved the wrong problem too, and the answer is not to add a third block to it. That is the whole method, really: build the smallest thing, then go look at whether you used it and believe what you find instead of what you intended.