I'm pretty sure what I'm going to describe in my reply will be very different from canonic Kanban. I mean, it might be very very arguable.
Never the less, since you asked for other ideas, I guessed you might be interested in heretical points of view as well. Should it not fit your case, please take it as a proof of concept.
First, a little overview to depict the metaphor I'm using. Take in consideration this short excerpt from the video you can find here
"
Suppose a board representing at least two columns (for example, Doing and QA, but names are not important here) representing activities a programmer is called to do.
Suppose this situation: Task B in the backlog and Task A actually in progress. When Task A is moved to QA, should the programmer work on Task A or move Task B to Doing and start working on it? We all know multitasking is evil, and programmer should not work on both task A and task B.
The right answer is: work on Task A first. Kanban is a pull system and would make this very clear: but even without Kanban, it's obvious that Task A is closer to be Business Value and should not be parked in QA column and moved to Done column as soon as possible. Waste should be eliminated and not stockpiled.
This begs the question: is there a Free Slot in Doing Column? Could another programmer move Task B forward?
The question is misplaced. If there's just one developer, the answer is no.
Since programmer is not available, de-facto Work In Progress Limit of Doing Column should be decreased to 0.
With 2 developers, the right question should be "Is the other developer available?"
The fact is: Work In Progress Limit is not a measure of Free Slots. The number of Available Developers is.
The board I tried to imagine uses another principle:a generic, personal and customized representation of a single programmer, like magnetic sticker. Call it Face.
A programmer puts his face on a task to communicate he's working on that issue. Since each programmer has just one Face, programmers cannot commit to more than one task.
Work in Progress Limit is not a measure of how many Free Slots are available: Available Team members, that is, Faces without a Task, is a good measure.
The rule is simple: Each team Member has just 1 face and can put it on just 1 task.
Yet, consequences are not trivial: using Faces it's easy to see who's working with who, how the team is clustering and who can be asked on a specific issue.
"
In other words, what I think, then, is: WIP limit might not be the most appropriate measure of items you should put in a column, particularly when the sum of the WIPs of all the columns is greater than the number of developers (that is, the slots you actually can count on).
I believe that the same might apply to your case: in QA column you have a Kanban-item failing test. To me, there's no problem in moving it backwards in the doing column, the developer who was working on the failing item is still committed to it. Actually, you have a free slot.
I cannot understand why a WIP limit on Doing column should block your workflow. What should you do, otherwise? In order to respect an arbitrary number you wrote on the column, should you move the developer to another task? In the case you decide to abdicate and violate the WIP limit, shoudn't you call into question the meaning and the pertinence and applicability of that limit?
In short: move the task back, as long as you have a developer committed to the task.