The check runs twice, and only one half decides
Why
Inside the editor it can see what no server can - whether a prefab's script GUID actually resolves, what a texture's import settings are, how the compiler reads a file. But it runs on the seller's machine, in a package they can edit. Trusting its report would mean the gate is whatever a copy of our code on somebody else's computer says it is. So the editor advises and Getly, reading the uploaded bytes, decides.
What it cost
Two implementations of the same rules, in two languages, that can drift apart. A generated catalog and a test that fails on drift is the price of keeping them honest.