Most repair loops fail in the same quiet way. A model produces an output that does not pass its check, an automatic repair attempt runs, the repair also fails, and the item lands in a general queue labeled "needs review." The queue grows, nobody knows who should close anything, and the same failure keeps arriving through different inputs.
The fix is a decision made in the failure-handling code, not in a meeting. At the moment the repair fails, the system writes a reason code onto the item. That code is the routing key. It says what kind of cause produced the failure, which in turn says who can change that cause.
This is the same discipline used in healthcare revenue cycle work, where a payer denial is coded before any appeal or correction starts. As one analysis of denial programs puts it, a payer reason code tells you what the payer's system determined but not whether the authorization was never requested, was requested for the wrong service, or was obtained and never attached, and each of those is a different process failure with a different fix (Revecore). The same gap exists in repair queues. "Repair failed" is not a cause.
The second half of the discipline is ownership. Quarantine workflows for flaky tests make the same point: a quarantined item must be kept in a reviewed manifest with an owner, an issue, a reason and an expiry date, and CI should fail when those records expire (QA Job Fit). A repair queue without owners and deadlines is a quarantine without expiry, which is to say a backlog.



