← BUILD STORIES

Captured live

The move to hofmeisterbuilds.com

August 2026 · 2 mornings · 8 tests green · 1 rescue

← carried in Red to green protocol, from Lokka

← carried in The memory-file habit

→ carried forward Live-captured logging

→ carried forward One canonical hostname

The site got a new name, and for the first time the story you're reading was written down while it happened, not reconstructed afterward.

Timeline: two mornings, August 2026. Morning one: a rescue, then a domain registered and hardened. Morning two: the site attached, the old name redirected, eight tests green before 4am.

What it is

The same site you're on, moved to hofmeisterbuilds.com. Every page title, preview tag, and absolute URL renamed; the wordmark trimmed from a username to a surname; and the old domain kept registered for good as a permanent redirect, so every link ever shared still lands where it should. The method was the house standard: eight tests defined up front, captured red before any change, driven to green, with configured-at and green-at logged separately, because DNS is allowed to be slow and a pending green is not a failure.

The rescue that came first

The move never got to start clean. Inventorying the repo turned up a live problem pushed fourteen minutes earlier: that morning's session had built its work on stale copies of three files and silently reverted a week-old restructure. The Builds section, these stories, was unreachable, and the project's memory file had lost its rules. The repair came before the move, as its own commit, so the move's tests would measure the move and not the accident. The lesson is now standing in the project notes: before editing the load-bearing files, verify your copy still contains what the last session says it shipped. A stale base reverts silently.

The walls (none of them were code)

  1. The dashboard couldn't see its own recent work. Twice. The dialog for attaching www claimed no such zone existed, ten minutes after the zone was created, and its suggested fix would have made things worse. Minutes later, a rule deploy warned that a DNS record created five minutes earlier might not be there. Same lesson from two angles: dashboards can be stale about your own last five minutes. The refusal forced a better design anyway: one canonical hostname, with www as a permanent redirect instead of a second copy of the site.

  2. www is not a domain. I learned the mental model the hard way. www is never a separate thing you register; it is a hostname inside the zone you already own, and it does nothing until you explicitly wire it up.

  3. The redirect form's two boxes both looked like "type the new domain here." One was the match condition, where the new domain would have made the rule silently match nothing. The other wanted an expression, where a bare domain name is simply broken. I filled both wrong, caught both on review before the deploy button, and shipped neither. The fix was matching all traffic, plus one expression that carries the path across, so a deep link shared last week lands on the same story at the new address.

  4. The 302 that wasn't. My AI's web fetcher reported the freshly deployed redirect as temporary when the dashboard said permanent. The tiebreaker was one command I ran myself on my own machine, which printed 301 Moved Permanently and settled it: the summarized fetch had garbled the report, and the dashboard had been telling the truth all along. For redirect forensics, one curl from a real machine beats an AI summary.

Dead ends

Attaching www as a second custom domain (refused by the dialog, and the redirect is the cleaner end state anyway). Using the AI fetcher as a status-code instrument (kept for reading pages, retired for redirect forensics). A browser-extension screenshot pass that turned out not to be connected; my own screenshots covered it.

What I'd do differently

Push the rename commit the same morning it was written instead of letting it sit a day; the gap between edited and live is where confusion breeds. And check the working copy against the last session's notes at the start of every session, not just after the first silent revert.

What carried forward

In: the red to green protocol from the Lokka migration, the memory-file habit, and launch day's patience with certificate lag. Out: the first build log in this archive captured live as it happened, where every story before it was reconstructed from records afterward, and this page is the visible difference; a standing rule about stale working copies; and the habit of screenshotting a dashboard form before clicking Deploy.