The bug I found wasn't the real problem. The rule I'd set for myself was

raychis1 pts0 comments

Matt Moughtin | The Commit Before the Silence | MediumSitemapOpen in appSign up<br>Sign in

Medium Logo

Get app<br>Write

Search

Sign up<br>Sign in

The Commit Before the Silence

Matt Moughtin

6 min read·<br>Just now

Listen

Share

The Engineer’s Journey: Part four of a series on building a real-world AI system from scratch.<br>The last commit of 2025, followed by fifty-two days of nothing:<br>e4ddb0f — “Add CLAUDE.md: Session setup guide for Windows cmd.exe”<br>Press enter or click to view image in full size

The Commit — Illustration generated with AICLAUDE.md is a file you write for an AI coding agent. It tells the agent how your environment is set up, what tools are available, how to behave in your codebase. It was a hand-off note.<br>I hadn’t been using an AI coding agent on this project. I’d decided, quietly, months earlier that I wouldn’t. Build it properly. Understand every part. Don’t shortcut it. If I couldn’t build it end to end on my own, did I really understand it?<br>There was ego in that. I can see it now. At the time it felt like rigour.<br>Writing the CLAUDE.md file was the first admission that the rigour wasn’t working. That I needed help, and I didn’t want to ask for it, and I’d found a way to ask that let me pretend I wasn’t asking.<br>Then I shut down the computer and flew to Australia.<br>Burning out in slow motion<br>I’d stopped being useful to the project weeks before the commit. I just hadn’t admitted it yet.<br>The symptoms weren’t dramatic. No crashes. No visible failures. I’d sit down to work and every change felt like it might be fixing the wrong thing. Every run produced outputs I couldn’t quite trust. Every subsystem looked correct in isolation and felt wrong in aggregate. Five months in, hundreds of commits, dozens of subsystems, a codebase that had grown beyond what I could hold in my head, and I couldn’t tell you, honestly, whether any of it was working.<br>You don’t notice burnout the way it happens in stories. You don’t collapse. You just get slower. The obvious next steps stop feeling obvious. You open the project and close it again without doing anything. You tell yourself you’ll look at it properly tomorrow.<br>By the time I wrote the CLAUDE.md commit, I’d been unproductive for weeks. The commit was the last thing I had left.<br>Writing it felt like failure. Not a crash or a systems failure. Just a slow loss of momentum, clarity, and motivation.<br>That is how projects usually die. They don’t fail. They just… stop.<br>Christmas was the excuse I needed. Family in Australia. A reason to leave the country that wasn’t ‘I can’t do this anymore’. I took it.<br>What I couldn’t do over Christmas<br>The project didn’t get better while I was away. Projects don’t heal themselves.<br>But it didn’t get worse, which was the first time that had been true in a while.<br>The distance mattered. Not the break from the project. I’d been effectively not working on it for weeks before the flight. What mattered was distance. Different continent. A different time zone, people who didn’t know or care about data pipelines. No computer quietly humming at me reminding me of what I wasn’t doing.<br>I didn’t think about the project much. When I did, it wasn’t useful. It was the kind of thinking where you circle the same problem and reach the same dead ends you’d already reached, except now you’re doing it on a beach.<br>What shifted, slowly, was the shape of the thing I was avoiding. At the start of the trip, the project felt like a thing I’d failed at. By the end, it felt like a thing I’d been wrong about in a specific way, the way I’d insisted on building it. And the specificity mattered. If the failure had a shape, maybe it could be fixed.<br>I flew home in January. I still didn’t want to turn on the computer. But I could.<br>The audit<br>When I sat back down, I didn’t start by writing code.<br>I’d been writing code for five months and it had produced a system I couldn’t trust. More code wasn’t the answer. The answer was to figure out what I’d actually built.<br>So I did the simplest, most boring thing I could think of. I traced the pipeline end to end.<br>Data collection. Ingestion. Preprocessing. Training.<br>On paper, everything was there. Five collectors, parallel orchestration, rate limiting, quality scoring. Weeks of work. I’d written most of it twice.<br>In reality, at runtime, zero of those collectors were being invoked.<br>Not at all. Like, they weren’t even there. The code was there. The configuration was there. The tests passed. The pipeline ran end to end without errors. They all ran and worked individually, perfectly. And yet, the critical path was never executing. The thing I thought was feeding the entire system wasn’t.<br>The system had been running on residual data. Whatever had been collected before the bug was introduced and the scattered successful test runs, was enough to keep training alive. Enough to produce metrics. Enough to make the loss curves move in the right direction.<br>Everything I’d been doing in the previous year: the cleaning, the deduplication, the...

wasn commit project didn thing felt

Related Articles