When a defect report is rejected, how do not a bug, duplicate, cannot reproduce and works as designed differ?
answer
- Four different claims, not four ways to close
- One asserts correctness, one asserts a failed attempt
- Duplicate links; it does not discard
- Design disputes route to whoever owns the spec
- Every rejection needs a reason and reply
basics
~20 sThey assert different things: not a bug means the product behaved correctly and the report was mistaken; duplicate means another open record already covers it; cannot reproduce means nobody could make it happen again; works as designed means the behaviour matches the specification, so changing it needs a specification decision.
solid answer
~50 sAll four end a report without a code change, but they make different claims and route differently. **Not a bug** says the observed behaviour was correct — a misread, a test error, a stale environment. **Duplicate** says the failure is real but already tracked, so the newer record closes onto the canonical one and its evidence is carried across. **Cannot reproduce** is the weakest claim: nobody made it happen again, on a stated build, environment and data set, after a stated number of attempts — it says nothing about whether the defect exists. **Works as designed** concedes the behaviour is real and intended; the argument moves from code to specification, and if the design is wrong the right output is a change request, not a defect. Every rejection carries a reason, names who made the call, and goes back to the reporter, who can supply new evidence and get the report re-opened.
go deeper
Learn the four reasons and what each one claims. The key recall is that cannot reproduce describes a failed attempt, while not a bug claims the product behaved correctly — they are not interchangeable.
Be ready to say what evidence each rejection needs before it is legitimate: correct behaviour shown, a canonical record linked, the build and attempts recorded, or a specification cited. Interviewers probe the duplicate direction and evidence migration.
Demonstrate judgment on rare and timing-dependent failures: what you ask the reporter for, what diagnostics you add so the next occurrence is conclusive, and how you keep a report alive without blocking a queue.
Own the policy. Decide which rejection reasons your organisation allows, who may apply each, what reply route reporters get, and how you keep rejection from becoming a queue-tidying reflex that quietly suppresses field reports.
## Rejection is a decision, not a delete A rejected report still consumed someone's attention and still describes something a person saw. The lifecycle therefore treats rejection as a **transition with a stated reason**, visible to the reporter, reversible on new evidence. Teams that reject silently teach their reporters — testers, support staff, developers on other teams — to stop filing, and the cost of that is invisible until an obvious defect reaches users because nobody bothered. The four reasons below are the standard set. They differ in **what they claim** and in **who is entitled to make the claim**. ## Not a bug The claim: the product did the right thing; the report is mistaken. Typical causes are a misread of the output, a test that asserted the wrong thing, a stale or misconfigured environment, or user error against a documented behaviour. Who may say it: someone who can point at the correct behaviour — usually the assignee, with the reasoning attached. What makes it defensible is the *evidence of correctness*, not the assertion. "Not a bug" with no explanation is the single most common trigger for a rejection ping-pong. ## Duplicate The claim: the failure is real and already has a record. Three details matter: 1. **Direction.** Close the newer report onto the canonical one, and be explicit which is canonical. When the newer report is the better-written of the two, promote it and close the older one instead — the canonical record should be the one an engineer can act on. 2. **Evidence migration.** The second report almost always carries something the first lacked: a different path to the failure, another environment, a clearer log. Carry that across before closing; a duplicate that discards its evidence is a small act of vandalism. 3. **Not-quite-duplicates.** Two reports with the same symptom and different causes are not duplicates. If closing one as a duplicate would let a distinct cause go unfixed when the canonical one is resolved, they stay separate. ## Cannot reproduce The claim is much weaker than teams treat it: *we tried, under stated conditions, and did not see it*. It is a statement about the attempt, not about the product. To be a legitimate resolution it must record the build identifier, the environment, the data used, and how many attempts were made — and it should go back to the reporter before it is closed, because the reporter is the one person who has seen it. Most cannot-reproduce closes are really a mismatch the team has not found yet: different data, different account state, different timing, different locale or clock. A tax-filing wizard that loses the final page only when the submission crosses local midnight will resist every daytime reproduction attempt, and will look like a phantom until someone notices the clock-skew artefact in the logs. A failure seen 3 times in 137 nightly runs is not reproduced by two manual attempts — that outcome was the most likely one even if the defect is perfectly real. Practical handling: ask for the missing dimension rather than closing (exact time, account, data set, build), attach whatever diagnostics would make a recurrence conclusive, and if it must be closed, close it in a way that makes recurrence cheap to spot rather than pretending the question is settled. ## Works as designed The claim: the behaviour is real, intended, and matches the specification. This is the only rejection where reporter and assignee usually agree on the facts and disagree about the design. It therefore routes differently: the decision does not belong to the engineer, it belongs to whoever owns the specification — product, or whoever wrote the acceptance criteria. Two failure modes: - Using it as a shield. "It is designed that way" when nothing was actually designed — the behaviour is simply what the code happens to do. Ask for the specification; if none exists, the argument is really about whether the behaviour is defensible, and that is a product conversation. - Closing and forgetting. When the design is wrong, the right output is a change request or a backlog item that inherits the report's evidence, not a closed defect and a shrug. ## The shape of a good rejection Regardless of reason, a rejection that survives review contains: the reason from the fixed set, the evidence for it, the person who made the call, and a notification to the reporter with a route to disagree. Disagreement is normal and cheap when the process expects it: the reporter supplies the missing dimension, the report reopens, and nobody has to escalate a personal argument. An interviewer asking this wants to hear two things. First, that you know the four claims are genuinely different — candidates who blur *cannot reproduce* into *not a bug* are telling you they close reports to keep a queue tidy. Second, that you treat rejection as reviewable: reasons recorded, reporter informed, evidence preserved.
- The reporter disagrees with a not-a-bug close. What should the process allow?The reporter should be notified of the reason and be able to reopen with new evidence — an actual output, a spec line, a recording — without needing to escalate personally. If the disagreement survives one exchange it goes back to triage, where product and engineering settle it together. What the process must not allow is a private close nobody sees, because that is how obvious defects reach users.
- When does works as designed properly become a change request rather than a defect?When both sides agree the behaviour matches the specification and the disagreement is about whether the specification is right. At that point the engineering question is closed and a product question opens, so the record moves to a change request that inherits the report's evidence and impact description. Closing the defect without creating that follow-on is how a known design problem gets forgotten and re-reported six months later.
- Two reports share a symptom but the assignee suspects different causes. Should either be closed as a duplicate?Not until the causes are actually shown to be the same. If they are closed together and the canonical fix only addresses one cause, the second failure survives with no open record and reappears as a fresh report from a user. Keep both open, link them as related, and merge only when a diagnosis — not a matching symptom — says they are one defect.
saying these in an interview costs you the question
- Uses cannot reproduce and not a bug interchangeably
- Closes cannot reproduce after two casual attempts
- Closes a duplicate without carrying its evidence across
- Says works as designed with no specification to cite
- Rejects a report without notifying the reporter
- Treats a matching symptom as proof of a duplicate