Resolved
Twelve pages served the app shell instead of their content
Impact. Anyone opening one of twelve marketing and documentation pages got the web app shell instead of the page they asked for. Sign-in, sync, and every app surface were unaffected.
- Twelve pages that were live, linked, and listed in the sitemap were serving the application shell in production instead of their own content.
- Done Bear routes donebear.com through a Cloudflare Worker that decides which paths belong to the marketing site and which belong to the app. A page has to be added to that allowlist explicitly, and adding a route to the site does not add it to the worker. Twelve had been missed, some for weeks.
- The pages were restored the same day, and the allowlist is now generated from the filesystem instead of hand-maintained, so a new page cannot be forgotten.
- We do not know how long each page was affected, because nothing was watching. Every request returned HTTP 200 with a valid HTML page, so a check that only reads status codes would have seen a healthy site the entire time. That gap is why the monitoring being set up now asserts the text on a page rather than its status code.