Testland
Browse all skills & agents

bug-lifecycle-reference

Pure-reference catalog of defect lifecycle states and transitions. Defines the ISTQB-canonical states (new / open / assigned / in-progress / fixed / verified / closed / reopened / deferred / rejected / duplicate) and the transitions between them, distinguishes the ISTQB terms (error → fault / defect → failure), maps the lifecycle to the standard Jira / Linear / GitHub Issues workflows, and cites IEEE 1044-2009 and ISO/IEC/IEEE 29119-3 for the canonical anchors. Use as the lifecycle vocabulary for the bug-report-critic, duplicate-defect-finder, and the platform-workflow skills.

bug-lifecycle-reference

Catalogs the ISTQB-canonical defect lifecycle and maps it to Jira, Linear, and GitHub Issues workflows. Consumed by the platform-workflow skills (jira-bug-workflow-runner, linear-bug-workflow-runner, github-issues-bug-workflow) for state-transition logic.

When to use

  • Aligning a team's tracker configuration with the ISTQB-canonical vocabulary.
  • Reviewing a bug report's current state against expected transitions (e.g., is "Closed" appropriate before verification?).
  • Onboarding a tester to the vocabulary used by bug-report-critic.

ISTQB terms - error, fault, defect, failure, anomaly

Per the ISTQB Glossary (glossary.istqb.org):

TermDefinition
ErrorA human action that produces an incorrect result.
Fault (synonyms: defect, bug)A manifestation of an error in software.
DefectAn imperfection or deficiency in a work product where it does not meet its requirements or specifications. Synonyms: bug, fault, problem.
FailureAn event in which a component or system does not perform a required function within specified limits. Failure is what users experience; fault is what produced it.
AnomalyAny condition that deviates from expectation. Broader than defect - could be a usability issue, a documentation gap, or a defect.

These terms are surprisingly often misused: developers say "the bug failed in production" when they mean "the failure, caused by the fault, occurred in production." The lifecycle below tracks defects (faults), not failures (events).

Canonical lifecycle states

The standard set per IEEE 1044-2009 "Standard Classification for Software Anomalies" and ISO/IEC/IEEE 29119-3:2021 "Test documentation":

StateMeaningTypical owner
NewJust reported. Not yet triaged.Reporter
Open (or Acknowledged)Triaged; confirmed as a real defect.Triage lead
AssignedA developer / team owns it.Engineering manager
In ProgressActive investigation / fix.Assigned developer
Fixed (or Resolved)Code change merged; awaiting verification.Assigned developer
Verified (or Tested)A tester confirmed the fix.QA
ClosedDefect lifecycle complete.Release manager / QA
ReopenedVerification failed; back to assigned.QA / Reporter
DeferredReal defect, fix postponed (next release / never).Product manager
Rejected (or Not a Bug)Triage concluded this isn't a defect (misuse, by design, dup).Triage lead
DuplicateAlready tracked as another defect. Link to canonical.Triage lead

Cite: ISO/IEC/IEEE 29119-3:2021 §6 "Test documentation - Anomaly report" - section enumerates the recommended fields and lifecycle states. Cite by stable ID; full text behind iso.org paywall.

State transition diagram

                +-----+
                | New |
                +-----+
                   |
       triage      |  (or reject / dup)
                   v
   +-----------+       +-----------+
   |   Open    |------>| Rejected  |
   +-----------+       +-----------+
        |                     ^
        |                     |
   assign                     |
        v                     |
   +-----------+              |
   | Assigned  |              |
   +-----------+              |
        |                     |
        v                     |
   +-----------+   defer +-----------+
   |In Progress|-------->| Deferred  |
   +-----------+         +-----------+
        |
        v
   +-----------+
   |   Fixed   |
   +-----------+
        |
   verify
        |
        +------- fail ----+
        |                 |
        v                 v
   +-----------+   +-----------+
   | Verified  |   | Reopened  |
   +-----------+   +-----------+
        |                 |
        v          assigned (back to In Progress)
   +-----------+
   |  Closed   |
   +-----------+

Allowed transitions (defensible):

FromAllowed →
NewOpen, Rejected, Duplicate
OpenAssigned, Deferred, Rejected
AssignedIn Progress, Deferred, Reopened
In ProgressFixed, Deferred
FixedVerified, Reopened
VerifiedClosed, Reopened (rare - late finding)
ReopenedAssigned, In Progress
DeferredOpen, Closed (wontfix)

Forbidden transitions (smells):

  • New → Closed (skips triage + verification - only legitimate for spam / duplicate where triager catches it immediately)
  • Assigned → Closed (no fix, no verification - what was closed?)
  • Fixed → Closed without Verified (no verification - possibly the fix never worked)
  • Closed → anything except Reopened (reopening is the only way back)

Tracker-vocabulary map

The canonical lifecycle maps to platform-specific terminology:

ISTQB / IEEEJira (default workflow)Linear (default workflow)GitHub Issues (default + Projects)
NewTo DoBacklogOpen + label triage
OpenIn Triage (custom)TodoOpen + label confirmed
Assigned(Assignee set)In Progress + assigneeOpen + assignee
In ProgressIn ProgressIn ProgressOpen + linked PR draft
FixedIn ReviewIn ReviewOpen + linked PR ready
VerifiedDone (pre-release)DoneClosed (PR merged) - but often kept Open until verified
ClosedDoneDoneClosed
ReopenedReopenedReopened (custom)Reopened
DeferredWon't Do (deferred subtype)Cancelled (with reason)Closed not-planned
RejectedWon't Do / Cannot ReproduceCancelled with reasonClosed not-planned + label not-a-bug
DuplicateResolved as Duplicate (link to canonical)Cancelled with Duplicate of: linkClosed + comment Duplicate of #N

Per the platform docs (Atlassian "Issue workflow", Linear "Workflow states", GitHub "Issue templates"):

  • Jira workflow is fully configurable - the table reflects the default Software project template.
  • Linear workflow states are fixed enums (Backlog, Todo, In Progress, In Review, Done, Cancelled) but each can be subdivided per team.
  • GitHub Issues has only Open / Closed as states; richer lifecycle requires Projects (status column) + labels.

Recommended state-transition guardrails

The platform-workflow skills enforce these:

GuardrailRule
Triage SLANew → Open or Rejected within 1 business day
Verification gateFixed → Closed must pass via Verified
Reopen auditReopened transitions are tracked; >3 reopens on the same defect signals fix-quality issues
Deferred reviewDeferred items reviewed at sprint planning; auto-expire to Closed (wontfix) after N sprints
Duplicate linkingDuplicate transitions require duplicate_of: link to canonical

Anti-patterns

Anti-patternWhy it failsFix
"Closed" used as "Done" without verificationDefect re-emerges in productionRequire Verified → Closed transition
All defects start in "Assigned" with no triageTriage data lost; metrics unreliableNew → Open → Assigned (triage step is informative)
Reopened defects re-counted as new in metricsInflates inflow / understates fix qualityDistinguish New vs Reopened in dashboards
Deferred = forgottenDeferred items accumulate; technical debtDeferred review at every sprint planning
Multiple "Open" subtypes ("In Triage", "Triaged", "Confirmed")Workflow becomes opaque; reporters don't know which state means whatCollapse to fewer states; use fields for nuance
Direct New → Closed by triageLost signal - was it spam? duplicate? rejected?Always transition through a meaningful state
Different teams use different workflows in the same trackerCross-team metrics impossibleStandardise to the canonical lifecycle above

Limitations

  • Workflow customisation is the norm. Real-world Jira / Linear configurations often add custom states (UX Review, Legal Review, Customer Confirmation). The canonical lifecycle is the floor, not the ceiling.
  • State enumeration vs. label-based. GitHub Issues' Open / Closed binary is impoverished; teams supplement with labels and Projects status columns. This reference treats the effective lifecycle (state + label + assignee) as a single concept.
  • The terms "bug" and "defect" remain interchangeable in practice. ISTQB makes the distinction sharp; most trackers don't. Adopt the canonical vocabulary or accept the colloquial use - but don't mix midstream.
  • Severity / priority are separate axes. State doesn't capture how bad / how urgent. See severity-vs-priority-reference.

References

  • ISTQB Glossary - glossary.istqb.org. Canonical definitions of error / fault / defect / failure / anomaly.
  • IEEE 1044-2009 "Standard Classification for Software Anomalies" - cite by stable ID; defines defect lifecycle.
  • ISO/IEC/IEEE 29119-3:2021 "Software and systems engineering - Software testing - Part 3: Test documentation" §6 - defines anomaly-report fields and lifecycle.
  • Atlassian "Configure issue workflows" - Jira default workflows.
  • Linear documentation "Workflow states" - fixed enum + per-team subdivision.
  • GitHub Issues docs - Open / Closed + labels + Projects.
  • Sibling references in this plugin: severity-vs-priority-reference, defect-taxonomy-istqb.
  • Consumed by: bug-report-critic, bug-report-from-failure, and platform-workflow skills.
  • Sibling-plugin neighbour: bug-report-template (qa-bug-repro is reproduction-focused; this plugin is workflow / lifecycle / taxonomy-focused).