Testland
Browse all skills & agents

severity-vs-priority-reference

Pure-reference catalog distinguishing defect severity (impact on the system / user) from defect priority (urgency of fix), each on its own axis. Enumerates the canonical 5-point severity scale (Critical / High / Medium / Low / Trivial) and the 5-point priority scale (Immediate / High / Medium / Low / Deferred), explains why they must be tracked separately (a Critical/Deferred legacy bug exists; a Trivial/Immediate spelling bug on the homepage exists), maps to IEEE 1044-2009 severity classes, and ties to bug-lifecycle-reference state transitions. Use when triaging a defect, configuring a tracker's severity/priority fields, or reviewing whether a bug report assigned them consistently.

Install with skills.sh (any agent)

npx skills add testland/qa --skill severity-vs-priority-reference
View source

severity-vs-priority-reference

Overview

Severity and priority are two independent axes, not synonyms. Every triaged defect must have both, and the combination drives scheduling, escalation, and SLA enforcement.

  • Severity measures how badly the defect breaks the system / user when triggered. It's an objective property of the defect.
  • Priority measures how urgently the fix must land. It's a scheduling decision, influenced by severity but also by business context (customer commitments, regulatory deadlines, release timing).

This skill is a pure reference consumed by defect-report review (which rejects reports that conflate the two), the platform-workflow skills, and downstream triage tooling.

When to use

  • Reviewing whether a bug report's severity + priority are both set and consistent with the defect description.
  • Configuring a tracker's severity / priority field options.
  • Coaching a tester / triager on the distinction.

How to use

  1. Read the defect and decide what function it breaks and how badly; pick a severity (S1-S5) from the severity scale anchors.
  2. Separately weigh how urgently the fix must land given business context; pick a priority (P1-P5) from the priority scale.
  3. Locate the pair in the 5x5 matrix; if the cell is "rare" or "unusual", record an explicit rationale for the combination.
  4. Confirm you did not collapse the axes (do not force P1 just because severity is S1) - the two values are independent.
  5. Set the tracker's severity and priority fields per the configuring-a-tracker table for your platform.
  6. On any later re-triage (state change), keep severity fixed and revisit priority only.
  7. Log every priority change with its rationale.

The two axes

Severity scale

Per IEEE 1044-2009 (cite by stable ID; "Standard Classification for Software Anomalies") and ISTQB CTFL syllabus:

SeverityDefinitionExample
Critical (S1)System unusable; data loss; security breach; total loss of function.Production database is corrupted on user signup.
High (S2)Major function broken; significant user impact; no easy workaround.Checkout fails 30 % of the time; no workaround.
Medium (S3)A function works incorrectly; usable workaround exists; impact bounded.Date picker shows wrong month abbreviations; users can type the date.
Low (S4)Cosmetic or minor inconvenience; functionality not impaired.Footer copyright year not updated.
Trivial (S5)Spelling, alignment, polish-level issues."Settngs" link misspelled in sidebar.

Per ISTQB Glossary "severity" entry (glossary.istqb.org (opens in new window)): "the degree of impact that a defect has on the development or operation of a component or system."

Priority scale

Per ISTQB Glossary "priority": "the level of (business) importance assigned to an item, e.g., a defect."

PriorityDefinitionExample
Immediate / Blocker (P1)Stop the release; halt downstream work until fixed.Production outage; security incident in progress.
High (P2)Fix in current sprint / before next release.Customer-reported high-severity bug.
Medium (P3)Fix when capacity permits in coming sprints.Medium-severity bug with workaround.
Low (P4)Backlog; fix opportunistically.Low-severity, no customer impact.
Deferred (P5)Won't fix in foreseeable horizon.Cosmetic in deprecated feature.

Why they must be separate axes

The "combined severity-priority" scale is a common anti-pattern. Each cell in the 5×5 matrix below represents a real combination:

P1 ImmediateP2 HighP3 MediumP4 LowP5 Deferred
S1 Criticaltypicalunusual but realrarerarerare
S2 Hightypicaltypicaltypicalrarerare
S3 Mediumunusualtypicaltypicaltypicalunusual
S4 Lowunusualunusualtypicaltypicaltypical
S5 Trivialunusual (PR demo!)rareunusualtypicaltypical

Worked examples that prove the distinction:

  • S1 / P5 (Critical / Deferred) - Real defect: a security vulnerability in a legacy system scheduled for deprecation next quarter. Severity is objectively Critical (the bug, if triggered, breaks the system) but priority is Deferred (the whole subsystem is being removed; patching it is wasteful). Action: track + monitor; if exploited before deprecation, re-prioritise.

  • S5 / P1 (Trivial / Immediate) - Real defect: a typo on the hero copy of the marketing site that says "Bweekly" instead of "Biweekly," and the CEO just shared the page on LinkedIn. Severity is objectively Trivial (no function broken) but priority is Immediate (PR / brand impact).

  • S2 / P3 (High / Medium) - Real defect: checkout intermittently fails for a specific bank's cards (3 % of transactions), workaround = use a different card. Severity is High (major function impaired), priority is Medium (workaround exists + no SLA breach yet).

  • S3 / P1 (Medium / Immediate) - Real defect: a regression surfaced 4 hours before a marketing email lands that mentions the feature. Severity is Medium (function works in 90 % of cases) but priority is Immediate (marketing dependency).

Worked example

A CSV export appends one trailing blank column for every user. The export still succeeds and every data value is correct.

  1. Severity: the function works and data is intact; the defect is a cosmetic formatting flaw -> S4 Low (functionality not impaired).
  2. Priority: a major enterprise customer's ingestion pipeline breaks on the extra column, and their renewal is next week -> P2 High (business commitment, near-term deadline).
  3. Matrix check: the pair is S4 / P2 - an "unusual" cell, so log the rationale (customer renewal dependency).
  4. Set Jira Severity = Low, Priority = High; do not bump severity to justify the urgency.

Result: the fix is scheduled in the current sprint despite Low severity, driven entirely by the High priority - a clean demonstration that the two axes move independently.

Mapping to lifecycle

Severity and priority don't change with state (typically). However:

  • Re-triage at state change: when a deferred defect resurfaces as a production failure, severity is unchanged but priority jumps.
  • Severity escalation rules: many trackers auto-bump priority if severity is S1/S2. The platform-workflow skills configure these.
  • SLA driven by priority: P1 = e.g., 4-hour response, P2 = 1 business day, P3 = 1 week. SLAs are tracker config, not severity-derived.

See bug-lifecycle-reference for the state transitions; this skill defines the orthogonal severity / priority fields.

Common confusions

ConfusionReality
"Severity = customer impact."Severity = system function impact. Customer impact informs priority. A bug that breaks an unused admin tool is High severity but Low priority.
"Priority always equals severity."False. The 5×5 matrix has 25 distinct cells, all observed in practice.
"Critical defects always get fixed immediately."False. A Critical defect in a deprecated subsystem may be Deferred.
"Cosmetic = Low / Trivial severity always Low priority."False. Marketing context (S5 / P1 example above) can make trivial severity an immediate priority.
"Severity is set by the reporter; priority by the PM."Convention varies. Best practice: reporter proposes severity; triager confirms severity + assigns priority.

Configuring a tracker

TrackerSeverity fieldPriority field
JiraCustom field (often Severity with select-list)Built-in Priority field
LinearCustom field (Severity), no first-classBuilt-in Priority field (Urgent / High / Medium / Low / No priority)
GitHub IssuesLabels (severity:critical etc.)Labels (priority:p1 etc.) + Projects status
Azure DevOpsBuilt-in Severity (1 - Critical / 2 - High / 3 - Medium / 4 - Low)Built-in Priority (1 / 2 / 3 / 4)
BugzillaBuilt-in Severity + PrioritySame

The platform-workflow skills (jira-bug-workflow-runner, linear-bug-workflow-runner, github-issues-bug-workflow) each cover the platform-specific configuration.

Anti-patterns

Anti-patternWhy it failsFix
Single combined fieldLoses information; everyone fights about whether to bump severity to escalate or vice versaTwo fields, explicit per defect
Default both fields to "Medium"Triagers don't engage with the distinctionRequire both fields explicitly on transition from New → Open
Auto-equate severity with priority"S1 must be P1" - disallows S1/P5 deferred legacy bugsAllow both axes independently
Severity is purely subjectiveVariability across reporters; metrics unreliableUse the IEEE 1044 examples + team-calibrated rubric
Priority changes weekly without reasonMetrics chaos; no accountabilityLog priority changes with rationale
Critical defects always escalated to release managerFloods the escalation channelUse severity and priority for escalation rules

Limitations

  • Subjectivity remains. Severity has objective anchors (S1 = data loss, S5 = cosmetic) but boundary cases (S2 vs S3 with a workaround) require judgment. Reviewer disagreement is normal.
  • Priority is a moving target. Business context shifts weekly; a P3 today may be P1 next sprint after a customer escalation.
  • Severity classes vary by tracker. Some use 4-point scales (Bugzilla), some 5 (Azure DevOps), some define their own. The team must pick one and document it.
  • No automation can fully classify severity. AI classifiers can suggest, but the final call needs a human in the loop.

References

  • ISTQB Glossary - "severity" and "priority" entries - glossary.istqb.org (opens in new window).
  • IEEE 1044-2009 "Standard Classification for Software Anomalies" - cite by stable ID; canonical severity classification.
  • ISO/IEC/IEEE 29119-3:2021 §6 anomaly-report fields - cite by stable ID.
  • Atlassian "Configure priority levels" - Jira priority docs.
  • Linear "Priority levels" - Linear priority docs.
  • GitHub Issues - labels + Projects status documentation.
  • Sibling references: bug-lifecycle-reference, defect-taxonomy-istqb.

Related skills

azuredevops-bug-workflow

Authors and triages Bug work items in Azure DevOps Boards via the Work Item Tracking REST API (api-version 7.1) - Bug creation with JSON Patch, state transitions across New/Active/Resolved/Closed, and WIQL queries for triage queues and duplicate detection. Deep operational blocks (field-value fetch, PR / build artifact links, bulk close, az boards CLI, CI wiring) live in references/. Use when programmatically managing Azure DevOps Bug lifecycle states: creating from CI failures, triaging open defect queues, transitioning states in bulk, or attaching traceability links to builds and pull requests.

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 bug-report review, duplicate detection, and the platform-workflow skills.

bug-report-from-failure

On-demand builder that converts a SINGLE test failure record (JUnit XML, Allure JSON, pytest --tb=short, Playwright HTML, Cypress mocha-junit) into a structured, tracker-agnostic bug SPEC: extracts test name, assertion, stack trace, environment, and artefacts, and proposes severity, defect type (IEEE 1044), and a root-cause hypothesis (ISTQB CTAL-TA), then hands the JSON spec to a jira/linear/github-issues-bug-workflow runner to file. Use when you already hold a failure artefact and want one classified, ready-to-file report. Distinct from the event-driven CI orchestrator that triggers automatically on a pipeline failure and files in bulk, and from screen-recording-driven bug reporting; this is the on-demand, single-record spec builder.

confirmation-testing-workflow

Procedure for proving that a claimed defect fix actually reached the build under test and actually works. Covers the merge-base ancestry check that proves the running build contains the fix commit rather than trusting a version label, the priority order for choosing which reproduction to re-run, and the VERIFIED / NOT FIXED / BLOCKED verdict table whose governing rule is that any ambiguous, flaky, or unreproducible result resolves to BLOCKED and is never guessed. Scoped to ISTQB confirmation testing (does this specific fix work?), not regression testing (did the fix break something else?), and not triage or severity assignment. Use when a developer has marked a defect Fixed and someone must decide whether it moves to Verified or back to Reopened.

defect-taxonomy-istqb

Pure-reference catalog of defect categorisation taxonomies. Covers the IEEE 1044-2009 anomaly classification (anomaly class, anomaly type, anomaly severity, root cause category), the ISTQB CTAL-TA root-cause taxonomy (requirements / design / implementation / interface / test-data / build-environment), and the Orthogonal Defect Classification (ODC) eight-attribute framework. Maps each taxonomy to a worked example showing how the same defect classifies under each. Use to categorise defects consistently across a team, drive root-cause analysis, and inform process-improvement decisions (where in the SDLC do we leak the most defects?).

github-issues-bug-workflow

Author and run GitHub Issues bug workflows via REST API (2026-03-10): issue creation, state changes (open / closed with `state_reason`), label-based severity/priority classification, and comment attachment. Covers `POST /repos/{owner}/{repo}/issues`, `PATCH` for `state_reason` transitions (completed / not_planned / duplicate / reopened), and label conventions for GitHub's binary open/closed model; Projects v2, `gh` CLI, and CI wiring live in references/. Use when programmatically managing the GitHub Issues bug lifecycle; for the same workflow on another tracker use azuredevops-bug-workflow, jira-bug-workflow-runner, or linear-bug-workflow-runner.

jira-bug-workflow-runner

Jira Cloud bug workflow runner using the REST API v3: issue creation with an ADF description, runtime transition lookup and apply, JQL search for triage queues and duplicate detection, severity/priority field updates, label-based classification (severity/priority/regression), and idempotent CI-driven filing from JUnit XML test failures. Use when the target tracker is Jira Cloud and the task involves Jira lifecycle states (create, triage, transition, close). Distinct from a platform-agnostic event-driven CI defect filer, and from linear-bug-workflow-runner / github-issues-bug-workflow for other trackers.

linear-bug-workflow-runner

Author and run Linear bug workflows via the GraphQL API: issue creation, state transitions (workflowState assignment), priority assignment (0 No priority / 1 Urgent / 2 High / 3 Medium / 4 Low), label-based classification, search by team and content. Covers the issueCreate mutation, issueUpdate for state transitions, the workflowStates query for per-team state IDs, and Linear's API-key vs OAuth Bearer auth modes; resolve-by-type, CI wiring, and result parsing live in references/. Use when the target tracker is Linear specifically; for other trackers use jira-bug-workflow-runner (Jira) or github-issues-bug-workflow (GitHub Issues). Files and transitions the issue; reproducing the defect is a separate concern.