Originally published on my blog. I am cross-posting it here because two parts seem worth arguing about with this crowd: enforcing layer boundaries in the package manifest so an agent cannot cross them, and the sync bug where a device clock lied and silently dropped data.
I already had a working app. I rebuilt it anyway. Twice.
GSD, short for Get Stuff Done, started as a web app and ran that way for a couple of years. It did the one job I built it for. Then I wrapped it as a PWA so it would follow me onto my phone, and that worked too, in the way something works when you have decided not to look at it too closely. Then, knowing almost to the hour what it would cost, I tore the mobile experience down to the studs and rebuilt it as a native iOS and Mac app.
The obvious version of this story is vanity. The real one is not.
The rebuild looks like a platform story, but the platform only changed the surface. What changed the outcome was the discipline underneath. The stack made the experience possible, and the boundaries made it safe. The part I am keeping is not Swift or widgets or the warm glow of finally belonging on the phone, though I will admit the glow is pleasant. It is this: one person, with an AI agent doing most of the typing, can ship a real product only when the intent is clear, the architecture enforces the rules, and the verification loop is fast enough to keep everyone honest.






