The public page list no longer claims the site is empty when it could not read it

Every site hands search engines a sitemap.xml: the list of pages a visitor who is not signed in may open. Ours is not a file anybody maintains — it is built on the spot, by asking which top-level spaces are public and then listing the readable pages inside each one.

An automated probe checks it every few minutes. Over one day it caught the portal serving this 9 times out of 100: a perfectly well-formed list, no error, no timeout — containing nothing at all. Measured in the same minute, the very same address served 1,819 pages.

Why an empty answer was the wrong one

Asking whether a space is public has three possible answers, not two: yes, no, and "I could not work it out" — the last one for the seconds when the permission machinery is briefly unavailable. The page list only ever asked for yes or no, and treated the third answer as no.

For a single page that is a sound trade: leaving one out of a list of a thousand costs nothing much, and the file was never a promise of completeness. But when it happens to every space at once, the file that comes out is no longer a shorter list — it is the opposite claim. A search engine reading it is told, in a document that looks entirely healthy, that this portal publishes nothing.

Nothing else had gone wrong. No page had been unpublished, no permission had changed, and by the time anybody looked the list was correct again — which is exactly why it went unnoticed until a probe that refuses to pass on an empty sample caught it.

What it does now

The page list keeps the reason it could not decide, instead of throwing it away, and one rule decides what happens next:

Only the last case changed, and only in the one situation where the old answer was a false statement rather than a smaller one.

Now it also says what went wrong

The deeper problem was that none of this left a trace. Three different failures — the permission check giving no verdict, the lookup taking too long, the query itself failing — were all quietly turned into "no pages", with the reason discarded. Nine occurrences in 27 hours produced not one line anybody could read, which is why the fault could be measured precisely and explained not at all. Each of the three now records what happened, by name.

The same list is what the Published to the Web settings tab shows an administrator, built from the same code so the two cannot disagree. It had the same flaw — an empty table reading as "nothing here is public" — and now says the surface could not be read, in English and German.

The full account, including which cause the logs ruled out and which remain open, is in Doc → Architecture → A Zero-Root Sitemap Is an Assertion.

Reconnecting…
The connection to the server was interrupted. Trying to restore it…
Trying again…
The connection could not be restored. Reloading the page…
The server was updated. Reloading the page to pick up the latest version.