Writing · 2026-07-10Tokyo · Incoming Cambridge HSPS

a commit is just a checkpoint

A commit is only a checkpoint; i call work done after verifying it in the live environment the user actually experiences.

a commit is just a checkpoint. the line i care about is farther down the road, and i only call something done after i verify it in the live environment the user actually experiences. that sounds small, but it changes the whole shape of the work. a commit records progress. it does not prove the thing is finished for the person who will live with it. if the only proof comes from the repo, i have a strong signal that i am still inside the comfort of my own workspace instead of the place where the work has to stand on its own.

the distinction matters because the repo can feel clean in ways the real world never will. local confidence is easy to build. the code looks tidy, the tests pass, the branches line up, and the mental model feels complete. then the user touches the thing and the story changes. that is the part i want to catch early. i have learned that a polished repo can create a false win, and false wins are expensive. they make you believe the hard part is over while the actual use case is still waiting to expose the gap.

this is the part i keep coming back to: founders ship too many things that only work in repo. i have seen enough of that pattern to stop treating repo success as the finish line. inside the repo, everything is framed by what i already know. the edges are familiar, the setup is under my control, and the environment is shaped by my assumptions. once the thing crosses into the live environment, those assumptions get tested by reality. that is where hidden friction shows up. that is where the work earns its name.

the mechanism is simple. a repo is an edited view of the system, and a live environment is the system under real conditions. the repo rewards internal consistency. the live environment rewards usefulness. those are related, but they are not the same thing. if i only check the first, i can end up with a solution that feels finished while still missing the conditions that matter to the user. when i verify in the place the user actually experiences it, i get a cleaner answer about whether the thing holds up in practice.

so i adopted a rule: real-world done is the standard. i do not let the commit define completion for me. i let the user-facing result define it. that one shift keeps me honest when a task seems complete inside the repo but still needs a final pass where the experience actually happens. it also changes how i think about progress. a commit becomes a checkpoint on the way to done, a marker that says work moved forward, while the live verification says the work actually reached the point where it matters.

that rule saves pain because it catches the false win early. the earlier i find the gap, the less time i spend building confidence around the wrong thing. the lesson is useful anywhere software leaves your hands and enters someone else’s experience. if you build solo with AI agents, it is especially easy to confuse internal order with external success, because the whole process can look productive long before it is genuinely finished. the fix is to ask a better question at the end of every task: what is the actual line for done, and have i checked it where the user feels it?

More writing