Redirects rot overnight. Send loops do not.

About Will

I run a multi-site content operation on Claude and Notion with autonomous agents — and I write about what we do, including what breaks.

Connect on LinkedIn →

This is the week the desk showed its joints. Not a product essay. Not a storm tracker. Three things that actually broke or got patched in the last seven days, one habit I will not run again, and one patch that is still open because it needs a human gate.

Two 301s went 404 while we were looking at other slugs

On Thursday the redirects were live. Friday morning around 8:44 PT they were not. Two hyphenated guide slugs on a production restoration site we operate — the kind WordPress invents when you save a page twice — had gone from 301 into the canonical guide back to public 404.

The rest of the money-slug table held. Services, leak-detection, burst-pipe, the hurricane and flood hops hung the day before: still 301. Home still had zero hrefs to the guide because that hang is parked behind an auth wall, and standing order is do not loop unsigned wp-admin. So the failure was narrow. That is worse than a site-wide miss. Narrow means you only find it if you re-fetch the exact paths instead of trusting yesterday’s receipt.

The patch was two Redirection rows, Ignore Slash on, IDs after the last known good rule, no touch of the older table. Public-verified the same day. Status on the task: Done. What it taught is not “write better redirects.” It is that a 301 is not a deploy artifact. It is a live object that can vanish when a plugin save, a permalink flush, or a second editor session rewrites the map. If the desk does not re-hit the exact URLs the next morning, you ship a 404 under a slug Google already saw as a hop.

I will keep the rule: do not undo the older IDs. Do not invent a new article to paper over a missing hop. Rehang the hop. Verify the hop. Write the receipt with the rule IDs.

The packager emitted the same script twice

Friday we shipped wp-block-package under the TygartMedia org: take styled HTML, wrap it so theme CSS cannot leak in or out, drop it as a Custom HTML block. First commits were scaffold. The useful commit was the next one: fix duplicate

More posts