Skip to content

Bugs and Their Roots

The bug taxonomy. Chain-aware root causes that trace every defect to its level.

Events in this phase

Daily triage runs for the first week after a release, then settles to twice weekly. Bug filing never stops — anything unexpected gets filed, classified, and routed. Root cause notes are written on bugs that are not surface-level mechanical fixes.

A bug is a witnessed gap between what the chain said would happen and what is happening. The taxonomy is the team's shared language for what kind of gap, where in the chain it originated, and how urgently it needs to be repaired.

Six dimensions of every bug

Every bug filed has six fields. Less and the triage stalls. More and it becomes a paper exercise.

DimensionQuestion it answersExample values
SeverityHow much harm is it causing now?P0 / P1 / P2 / P3
SurfaceWhere does the person encounter it?Page / flow / API / job
ClassWhat kind of break is it?Functional / performance / data / security / copy / accessibility
Chain levelWhich level of the chain produced it?Strategy / Discovery / Scope / Execution / Operation
ReachHow many people meet it?One / a segment / everyone
ReversibilityCan the harm be undone?Reversible / partial / irreversible

The chain level is the dimension teams skip. Without it, every bug looks like a code defect. With it, the team learns that more than half of "bugs" trace to a brief that was never witnessed, a story that was missing a state, or a prediction that was never named.

The chain-aware classification

Same defect, five different fixes. A "the form errors on Hebrew names" bug at Execution level is a regex fix. The same observation at Discovery level is a brief that didn't witness Hebrew speakers and a feature that needs reshaping. The team that classifies the bug at the right level pays for the fix once.

Triage cadence

Daily for the first week post-release. Twice-weekly afterward. Triage is short — fifteen minutes — and produces three things: a severity, a chain level, and an owner. The triage does not solve. It routes.

The PO sees the chain-level distribution monthly. Recurring concentration in one level is a structural signal. Most defects keep tracing to Discovery is a finding about the team's discovery practice, not about the QA team.

What gets fixed, what gets tracked, what gets killed

  • Fixed now — P0 and P1 anywhere; P2 if reach is large; any irreversible-class bug.
  • Tracked — P2/P3 with limited reach; chain-level Strategy bugs that need a portfolio decision before code.
  • Killed — bugs that document the system working as designed. They become docs, not tickets.

A bug that has been open six months is not a bug. It is a decision that has not been made. Move it.

Resolution gate — taxonomy applied

Enough to know what the chain produced.

Every open defect has six dimensions, including chain level. Triage cadence has run twice. The PO has the level distribution.

Part 4 — Incidents and Postmortems →

200apps · How We Work · NWIRE