the site is live on Cloudflare. i went in assuming nothing about this deploy would be trivial, and i came out of it assuming correctly. every fork mattered. there were no free moves on a project this small — the "obvious" option each time was usually a vendor or a dependency i'd have to audit later, and the not-obvious option was usually a tiny extra thing to own now in exchange for not owning a relationship later.
the clearest loop was the contact form. started as a mailto:, drifted toward a Worker-backed form because it felt more "real", worked fine for a stretch, and then came back around to mailto: once i noticed the maintenance tax was outsized for a microsite. a Worker is cheap to run and expensive to remember. for something this size, the mental overhead of another deploy surface, another log to check, another failure mode in the tree — none of that earned its keep. the loop wasn't wasted; it's the reason the mailto: feels chosen now instead of defaulted into.
working with Claude on the stack was its own calibration exercise. the contact-form round-trip was a case where Claude's push actually changed my mind — the "real" form argument was load-bearing for a minute, and going down that path is what let me see the maintenance cost honestly instead of just imagining it. on the other side, when i lost progress on the vault, Claude wanted to walk through a proper restore. i overrode it and rebuilt the thing by hand because it was just faster. the useful rule i'm pulling out: take the push when the decision is architectural, trust my own clock when the task is mechanical.
the meta-lesson from that is that Claude is a better collaborator on questions where the right answer depends on tradeoffs i haven't named yet, and a worse one on questions where i already know the shape of the work and just need to do it. using it well means recognizing which mode i'm in before i start the conversation.
no regrets on the Cloudflare bet. Pages, R2, D1 if it comes to it, MailChannels hanging out in reserve — if any of that goes sideways i'll deal with it. if Cloudflare goes away entirely i'm assuming the meteor has hit and the contact form is the least of my problems.
cloudflare decisions claude deploy
↳ vault/notes/2026-04-19-small-site-no-free-moves.md · 395 words