part three · bugs and their roots
Bugs and Their Roots
The bug taxonomy. Chain-aware root causes that trace every defect to its level.
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.
| Dimension | Question it answers | Example values |
|---|---|---|
| Severity | How much harm is it causing now? | P0 / P1 / P2 / P3 |
| Surface | Where does the person encounter it? | Page / flow / API / job |
| Class | What kind of break is it? | Functional / performance / data / security / copy / accessibility |
| Chain level | Which level of the chain produced it? | Strategy / Discovery / Scope / Execution / Operation |
| Reach | How many people meet it? | One / a segment / everyone |
| Reversibility | Can 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.
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.