We've ultimately decided to bring 'branching' back into our development cycle. The best part is that we've managed to improve the quality of commits from about a 5/10 to about a 8/10 in my opinion. We've been dealing with very few production defects. On the flip side, it's tied our hands when we need to deploy fixes to things like these and we know about problems in the trunk of our software.

We will be ressurecting branches in a very limited capacity. When we do a release (about once per week) we'll create a branch in our code. This will allow emergency bug fixes to be done without forcing deployment of code that hasn't been reviewed. It's not that the code can't be deployed when in fact we've had litte/no issues deploying untested code. However, with the inclusion of QA in our process, we now have resources to eliminate regression by better verifying our releases.

By coordinating the official releases with the end of our sprints we'll gain the insight of the Sprint Review process to approve the work done during the sprint.