I'm in the aircraft simulation business, and we have a similar scheme (except we call bugs DRs, or defect reports). In our world, every bug needs to be fixed by the end of the contract. However, we have assigned levels to bugs. Level A's have a negative impact on training - you can't train a pilot on a simulator with an A-level DR. A DRs range from program crashes to routine things that just ain't right. You can't ship out of in-plant acceptance with open A DRs. B DRs are bad, but can be fixed 30 days after final acceptance (and start of training). C DRs are usually cosmetic - documentation and such - that can wait 90 days after acceptance.

The key is, a lot of shit gets written as A DRs at the start of in-plant acceptance. This is appropriate - you have a few weeks to fix it, and the programmer should decide what is a priority and what isn't. As the ship date approaches, you start having conversations about whether a DR is an A or really a B. In other words, is it heinous or not?

Of course, we're lucky - we have a first acceptance date, in-plant, then a second one, just before training starts, so we always have weeks to fix the worst problems while the hardware is shipping across the country. We also have direct access to the customer, who can help tell us what his priority is out of the DRs. Still, triage is the most important part of late bug fixing.