skip to content

What must a quarantine policy for unreliable tests contain so that quarantine does not become permanent?

level: seniorimportance: should knowfreq 52%

answer

  1. A loan against the safety net
  2. Entry needs evidence and an owner
  3. The clock's default is not renewal
  4. Cap the list so entry forces triage
  5. Some behaviour is never eligible

basics

~20 s

Quarantine takes an unreliable case off the blocking path while still running it. Staying temporary needs an evidence-based entry rule, a named owner, a timebox that expires into repair or deletion rather than renewal, and a capped, published list.

solid answer

~50 s

Quarantine restores a believable verdict for the thousands of cases that are fine, at the price of silently unguarding whatever the excluded case asserted - so treat it as a loan against the safety net. The policy needs six clauses: an entry criterion backed by recorded history rather than annoyance; an owner named at entry; a timebox whose default action on expiry is repair or explicit deletion, never renewal; a hard cap on list size so entering forces an eviction and therefore triage; continued execution off the blocking path so the case keeps producing signal; and a one-line record of the behaviour now unchecked. Publish list size and the age of the oldest entry beside the flake-rate trend, otherwise the trend is unreadable. Finally, carve out an ineligible set - authorisation, money movement, destructive operations - where an unreliable case is an incident rather than a quarantine candidate.

go deeper

for a junior

Understand what quarantine does mechanically - the case still runs but no longer blocks the pipeline - and that it removes real protection rather than fixing anything. Knowing it is meant to be temporary is the key point.

for a middle

Name the clauses that keep it temporary: entry evidence, owner, timebox, cap, continued execution. Explain why a falling flake rate cannot be read without the exclusion-list size next to it.

for a senior

Show judgement about when quarantine is the right call at all, and name the alternatives you weighed - moving to a slower tier, non-blocking but loudly reported, honest deletion, or fixing the shared environment. A real incident story lands well here.

for a principal

Own the carve-out and the governance: which behaviours may never be quarantined, who approves an entry, what cadence reviews the list, and how you keep the exclusion cost visible to people making release decisions.

### What quarantine is, and what it is not **Quarantine** moves a case out of the set whose result blocks the pipeline, while *still executing it and still recording its results*. That second half is what separates quarantine from deletion. A quarantined case keeps producing history — you can see whether it is still disagreeing with itself, whether it has started failing consistently (which means it has found something real), and how long it has been out. Quarantine exists because of a compounding problem: one case that disagrees with itself poisons the verdict for everyone, and a suite that cries wolf is worse than no suite, because it trains people to re-run rather than read. Taking the offender out restores a believable signal for the other several thousand cases. That is a genuine, defensible engineering move. But the cost is precise and it is usually understated: **quarantining is deleting the coverage of a real behaviour, silently, with no record in the risk register unless you make one.** Whatever that case asserted is now unguarded, and the exclusion is invisible because the pipeline is green. ### The policy, clause by clause A quarantine policy that does not become a graveyard has, at minimum, six clauses. 1. **An evidence-based entry criterion.** Not "someone was annoyed". Something like: the case produced conflicting outcomes on the same revision at least twice within a rolling two-week window, or it spoiled more than a stated number of runs. The criterion is checked against the results history, not asserted in a message. 2. **A named owner assigned at entry.** A team name is the weakest acceptable answer and an individual is better. Quarantine with no owner is deletion with extra steps. 3. **A timebox with a default action on expiry.** Two weeks is a common choice. The crucial part is that the default when the clock runs out is *not* renewal — it is either repair or deliberate removal with an explicit statement of what is no longer checked. Renewal must require the same effort as the original entry. 4. **A hard cap on the list.** Give the list a fixed number of slots — say twelve. Entering quarantine when the list is full requires evicting something, which forces triage exactly when the team is most tempted to skip it. A budget converts an unbounded backlog into a queue. 5. **Continued execution and reporting.** Keep running them, off the blocking path, and publish the list with per-entry age. A quarantined case that begins failing *consistently* has stopped being unreliable and has started being a defect report. 6. **Visible risk.** Record, in one line per entry, the behaviour that is now unguarded. This is what makes the cost legible to someone deciding whether to accept the entry. Publish two derived numbers next to the flake-rate trend: **list size** and **age of the oldest entry**. Without them, a falling flake rate is unreadable, because the cheapest way to improve reliability numbers is to stop counting cases. ### The incident that makes the cost concrete A ride-hailing dispatcher team quarantined a case asserting that a support-desk role could not reassign a ride belonging to another operator. It had disagreed with itself three times in a fortnight — the environment it needed was genuinely slow to prepare — and taking it out restored a believable 27-minute suite. There was no timebox and no owner. Nine weeks later a refactor of the role-resolution path shipped a **permission escalation**: support-desk accounts could reassign any ride in the region. The quarantined case failed correctly and consistently throughout, in a report nobody read, and the escalation was found 12 days after release by an operations lead reading an audit trail. Two lessons, and an interviewer wants both. First, the missing clauses were the timebox and the owner, not the decision to quarantine — the decision was reasonable given a suite nobody could believe. Second, the quarantined case *was still producing the answer*; the failure was that no one was obliged to look. A policy that re-reads its quarantine results weekly would have caught it in days rather than weeks. ### Choosing what may be quarantined at all Not every case should be eligible. A sensible policy carves out an ineligible set — the cases guarding authorisation boundaries, money movement, data deletion and similar irreversible behaviour. For those, an unreliable case is an incident of its own: you fix the case or the environment, or you accept a slow suite, but you do not quietly stop asking whether a support role can take over somebody else's ride. Deciding that carve-out in advance, in calm conditions, is far easier than arguing it at 18:00 with a release waiting. ### Alternatives worth naming Quarantine is one option among several, and a strong answer positions it: - **Fix it now** — right when the offender is one case and the cause is fresh. - **Move it to a slower tier** where its unreliability blocks nobody but the signal is retained on a schedule. - **Make it non-blocking but loudly reported** — a middle ground where the case still shows red in a report the team reviews. - **Delete it deliberately**, recording what is no longer checked. Honest deletion is better than a permanent quarantine that pretends the coverage still exists. - **Fix the environment rather than the case**, when several unrelated cases became unreliable at once — that pattern points at shared infrastructure, and quarantining them one by one treats the symptom. The judgement being assessed is whether you understand quarantine as a *loan against the safety net*: useful, occasionally necessary, and dangerous exactly in proportion to how long it stays outstanding and how invisible the interest is.

  • A quarantined case starts failing on every single execution rather than intermittently. What does that mean?
    It has stopped being unreliable and has become a defect report. Consistent failure on unchanged behaviour means something real broke, and the case is now the only thing telling you - off the blocking path, where nobody has to look. This is the main argument for continuing to execute quarantined cases and reviewing their results on a fixed cadence rather than filing them away. Treat the transition from intermittent to consistent as an alert in its own right.
  • Why cap the quarantine list at a fixed number of slots rather than letting it grow?
    A cap turns an unbounded backlog into a queue with a cost. When every new entry requires evicting an existing one, the team is forced to triage at precisely the moment it is most tempted to defer, and the total unguarded surface stays bounded and knowable. An uncapped list grows fastest during the periods of most pressure, which is exactly when the safety net matters most, and nobody ever notices the growth because the pipeline is green.
  • Several unrelated cases became unreliable in the same week. Would you quarantine them?
    No - a simultaneous cluster across unrelated areas points at something shared: the environment, a dependency, capacity or a change in how runs are scheduled. Quarantining them one by one treats the symptom and removes the evidence that would identify the common cause. Hold the suite red or move the whole tier off the blocking path briefly while you investigate the shared factor, and reserve quarantine for isolated, individually diagnosed cases.

It is a loan, not a write-off: cheap to take out, invisible while outstanding, and expensive precisely because nobody is sent a statement.

saying these in an interview costs you the question

  • Quarantines on annoyance rather than on recorded evidence of disagreement
  • Stops executing quarantined cases, so they become silent deletions
  • Sets no expiry, or renews by default when the timebox lapses
  • Lets the list grow without a cap or a published age
  • Quarantines authorisation or data-destruction checks like any other case
  • Reports the improved flake rate without reporting the exclusions that caused it

context