Thirteen hours. That’s how long one domain sat in the middle of a migration, stuck on “pending,” with an error field that was completely empty.
An empty error field reads like good news. No error, so nothing is wrong, and when you’re trying to move a batch of domains along, you take that reading and go on to the next one. That’s what we did the first time this came up. We checked the one piece of the record we knew how to check, saw it was published correctly, and filed the stall as someone else’s problem. We figured it was a slow verification queue on the other end.
It wasn’t a slow queue. It was a record that had gone out of date without telling anyone.
What had changed underneath us
The system verifying the domain expects to see a specific token published in a specific place. We had published a token. It just wasn’t the current one. When the first verification window closes without success, the system generates a new expected token and starts waiting on that instead. No error is raised anywhere. Our token was correct the moment we published it. By the time we went back to look at the stall, it was already the wrong answer to a question that had changed.
Checking twice would not have helped. We had checked. But checking once and then trusting the result to still be true later is a different thing from the result actually being true later. A published record and a currently expected record can drift apart with nothing in between raising a flag, because neither side counts a rotation as an error. From the system’s point of view it’s a normal, silent, expected event. From ours it’s invisible unless we go looking for it on purpose.
The fix, and the rest of the batch
Once we understood that, the fix was almost boring. We pulled whatever the current expected value was right then, not the value that was correct when we first looked, and republished against it.
Four other domains in the same batch of twenty-five turned out to be stuck the identical way. Same silent drift, same blank error field, same easy read as “fine, just slow.” Fixing all four took minutes once the actual mismatch had a name. We kept asking “did we do this correctly” when the question that mattered was “is what we did still current.”
If a step just sits there
A blank error field or a status stuck on “pending” tempts you to read it as “no problem, just wait.” Before you wait longer, look for anything in that step that you checked once and that the other side could have changed since: a token, a setting, a reference. If there is one, the stall may not be patience running out. It may be a comparison nobody has re-run since the moment you first made it.
In our case that was one stale token, thirteen hours, and four more domains out of twenty-five stuck behind the same blank field.