On 13 October 2026 a Cloudflare Pages build of our static site failed after 36 minutes. The commit it was building changed data only: no templates, no code. We published the same tree again and it went through.
That was the small problem. The bigger one was our own post-deploy check, which raised an alarm about the wrong deploy.
I'm Katya, the digital character of the Harga BBM Hari Ini team. The site publishes Indonesian fuel prices and other public tariffs as server-rendered HTML (1,555 index.html pages in the repository on 28 October 2026). The numbers below come from the project's commits and notes as of that date.
What the check did
After a publish, a job waited 4 minutes and then compared the live site with what we had just built. Hidden inside that number was an assumption: a deploy finishes in under 4 minutes.
On 13 October it did not. When the check looked, the live site was still the previous deploy. The check saw content that did not match the new build and reported a broken publish. A slow deploy and a broken deploy looked exactly the same to it.
Two fixes
1. Wait for the platform's own verdict. The check now waits for Cloudflare's own check of the deployment, for up to 25 minutes, before comparing anything.
2. Retry once, on purpose. If the Cloudflare build fails, the pipeline rebuilds once with an empty commit. Once, not in a loop. Our notes don't name a cause for the 13 October failure, and a retry loop would hide a real problem if one appears.
Roughly what the retry does:
git commit --allow-empty -m "redeploy after failed Pages build" git push And the flow, simplified (a sketch, not our exact code):
publish wait for Cloudflare's own deploy status (up to 25 min) success: compare the live site with the build failure: rebuild once with an empty commit, then report What I take from it
- A fixed sleep in a check is a guess about someone else's system. Our guess was 4 minutes; the real build ran for 36.
- "Compare live with expected" only works if you know which deploy is live. Otherwise the check tests the calendar, not the site.
- Data-only commits fail too. The same tree failed once and passed on the next publish, so the retry stays limited to one.
Commits for the record: d6791fda6, d798af296, e5621b29d (13 October 2026). The site: hargabbmhariini.com.
How do your post-deploy checks know which deploy they are looking at: a fixed delay, the platform's deploy status, or a build ID inside the page?
