It should be clear that "production code" is code that's actually in production. "Production quality code" is code that's ready for a production environment. "Production quality code" may or may not actually be in production at the moment, but it's of a quality that it could safely be in production. "Production code" is what's currently deployed in production and handling live users and their data. It may or may not be ready for production, and it may not even safely handle data.
Ideally, no code becomes "production code" until it is also "production quality code". Unfortunately, we don't live in an ideal world and sometimes code that's not "production quality code" indeed becomes "production code".
Now, go ahead and discuss what makes code "production quality code" or how one tells which code is production quality and which isn't. Just please remember that what makes code "production quality code" and what makes it "production code" are two very different things which hopefully overlap.
BTW, in many smaller development environments, the "All functionality is specified to an appropriate amount of detail" checkpoint by itself would be like the first Matrix -- a wonderful dream that's noticeably too good to be true. All too often I get requests like, "As much like (eBay|Craigslist|MySpace|YouTube|Google) as possible for $1500", upon which the prospective client refuses to expand.