Your custom types are compiled by the portal, and the result is recorded on the type: the build succeeded, here is the code it produced. What that record never said is which platform version the code was built for — well, it did, in a separate field that nothing read alongside the verdict.

So a type could sit there reporting a clean, successful build while every page of every record of that type was dead. On 2026-09-06 exactly that happened to two types on a client portal: their code had been built for a different platform version than the one actually serving, so no page could open — and the type's own status, the deploy checks, the diagnostics and the "compiling…" page all said it was fine. Every deal page and every offer page was down for two and a half hours behind a green tick.

"The build succeeded" and "this portal can open it" are different questions, and the second one can only ever be answered by the portal asking it. Both are now answered:

Nothing changes for a type whose code was built by the portal that is serving it, which is every type on a portal running one version.

The full design — including why this needed a new state rather than a redefinition of "Ok", and why it is worked out fresh by each portal instead of being written onto the shared record — is in Build Identity Admission, alongside its companion Mesh Admission.

Reconnecting…
The server was updated. Reloading the page to pick up the latest version.