I'm curious as to what sort of standards other teams make sure is in place before code ships (or deploys) out the door in major releases.

I'm not looking for specific answers to each, but here's an idea of what I'm trying to get an idea of.

* For server-based apps, do you ensure monitoring is in place? To what degree...just that it responds to ping, that it can hit all of its dependencies at any given moment, that the logic that the app actually services is sound (e.g., a service that calculates 2+2 actually returns "4")
* Do you require automated build scripts before code is released? Meaning, any dev can walk onto a new box, yank something from source control, and start developing? Given things like an OS and IDE, of course.
* How about automated deployment scripts, for server-based apps?
* What level of documentation do you require for a project to be "done?"
* Do you make dang sure you have a full-fledged backup plan for all of the major components of the system, if it's server-based?
* Do you enforce code quality standards? Think StyleCop for .NET or cyclomatic complexity evaluations.
* Unit testing? Integration tests? Performance load testing?
* Do you have standards for how your application's error logging is handled? How about error notification?

Again, not looking for a line-by-line punchlist of answers to anything above, necessarily. In short, **what non-coding items must a code release have completed before it's officially considered "done" for your team?**