Right-Size the Milestone, Not Just the Task
- #forge
- #building-in-public
- #milestone
- #scope
Yesterday I shipped the cloud platform that will run the product I’ve been planning for months. Custom domains, Canadian database region, the works. End-to-end smoke from a phone on cellular — the line I literally couldn’t say six hours before that session started. Halfway through the build I’d interrupted my own clicks to ask out loud: “what is the meta task this session, like what am I crafting.” It sounded like operational fatigue. It turned out to be the question that made today land where it did.
The foundation that shipped is real. Database in a Canadian region for jurisdictional reasons that matter. API server with proper boot-time guards that crash loudly when prerequisites are missing — yesterday’s lesson on irreversible foundations was that the dangerous decisions aren’t the visible ones, they’re the small “we know better” overrides that compound until there’s no redundancy left in the safety chain. So the foundation got built with the safety chain intact. Three platforms, three domains, all wired into a custom subdomain on the personal site I write on. The build was scoped for the public-launchable product I’ve been describing for weeks: a silent phone-call cognitive utility, $19 a month, half the revenue routed to charity, a fifty-year arc on a charitable trust. The foundation made sense for that product.
Today was supposed to be the next task on the roadmap. Multi-user data model. Row-level security. The standard second-step. It turned into something different. Sometime mid-clicks the question from yesterday came back, sharper this time: what am I actually trying to USE? Not the next task. The next personal milestone. “This is my first milestone,” I said, naming it back to myself: dial a number from my truck, talk for ten minutes, hang up, read the structured analysis later in the same notes app I already read everything in. Not “ship V1 to alpha users.” Not “validate the product with strangers.” Just: be the first user, in my own truck, on my own commute. The roadmap had been honoring a product that didn’t exist yet. The milestone honored a person who did.
Once the milestone was named, the math collapsed. The multi-user data model queued up next: I’m the only user. Real authentication: a hardcoded check that the incoming call is from my own number. Dashboard view: I read my voice dumps where I read everything, no new surface needed. The local-first sync architecture, the cloud-purge, the privacy audit, the Stripe billing, the charity routing, the voice-AI onboarding flow — every one of those is for the public product. None is needed for a guy dialing his own number from his own truck. Most of the foundation I shipped yesterday, this milestone doesn’t even touch. Not because the foundation was wrong — it’ll be there when the public product needs it — but because the milestone is small in a way the roadmap wasn’t.
Right-Size the Milestone, Not Just the Task
I already had a rule about not running heavy tooling on small fixes. Don’t run a full audit pipeline against a five-line config patch. That’s task-level right-sizing. Today’s move was bigger: right-size the milestone. Don’t run public-launch infrastructure for a solo dogfood goal. The principle is the same; the surface is just larger. James J. Hill ran the Great Northern Railway by refusing to lay track that wouldn’t pay for itself before the next segment was financed. Each spur earned its keep before the trunk line extended. Other railroads of his era went bankrupt building toward destinations they imagined would matter. Hill went the opposite direction: build to the nearest mine that needed your service, get paid, then build to the next one. A railway to nowhere is expensive land. A railway to a working mine is a railway.
The application past today: any time the roadmap is bigger than the next concrete thing you’d actually use, the roadmap is doing something other than serving you. It’s serving the imagined version of the product. The imagined version is real, and worth honoring eventually, but it’s a hypothesis until somebody uses it. The smallest version you will use this month is not the same as the smallest version strangers will pay for. Build to the first one first. The second one’s requirements will be clearer once the first one exists, because the first one teaches you what the second one’s users actually want. The middle path — building public-grade infrastructure for solo use — does neither well. It’s a railway across the prairie before the prairie has a mine.
Right-sizing the milestone surfaced something else I’d forgotten I had. A phone number from a paused project I built and stepped away from, still wired into the same telephony account, sitting there waiting. The voice webhook points at the engine of that other product — abandoned but technically alive. Repointing it costs nothing. A historical artifact becomes a current asset. That kind of recovery only happens when you ask “what’s the smallest thing I actually need” instead of “what’s the right thing to build” — because the second question pulls you toward greenfield, and the answer to the first question is often sitting in your own past work, waiting for you to remember it’s there.
Tomorrow opens with credit top-ups, a Twilio webhook, and four sessions to first dial. The trade-offs are documented. The roadmap to the public product still exists, just rotated behind the milestone that comes first.