Skip to content

Daily triage template

Copy-paste skeleton. Fifteen minutes. Three outputs per bug: severity, chain level, owner. Triage routes; it does not solve. Daily for the first week post-release, twice-weekly after.

How to use

Open the inbox of new bugs filed since the last triage. For each: agree severity, agree chain level, assign owner. Do not debug. Do not design fixes. Triage is a routing meeting, not an engineering meeting. If a bug needs a 10-min conversation, it does not belong in triage — pull it out.

text
# Daily triage — YYYY-MM-DD

Time:        15 min
Attendees:   QA, PO, on-call Tech Lead
Inbox:       [N new bugs since last triage]

## Routing decisions

  ID    | Title (one line)                      | Sev | Chain        | Owner    | Action
  ──────┼───────────────────────────────────────┼─────┼──────────────┼──────────┼───────
  BUG-N | [Symptom in user-facing terms]        | P1  | scenario-gap | [Name]   | Fix this sprint
  BUG-N | [Symptom]                             | P2  | adr-drift    | [Name]   | Backlog · review
  BUG-N | [Symptom]                             | P3  | unknown      | [Name]   | Spike 2d before fix
  ...

## Patterns surfaced

  [If 3+ bugs in one chain level, name the pattern. This is
   the diagnostic moment — concentration in `observation-mismatch`
   means the briefs are thin; concentration in `scenario-gap`
   means amigos is missing a prompt.]

  Pattern:     [e.g., "Three bugs this week trace to language-
                pack timing — observation-mismatch for
                non-English-default graders."]
  Owner:       [PO logs as brief input for the next cycle]

## Out-of-band (pulled from triage)

  [Bugs that need real conversation, moved to a 30-min slot
   with the right people. Not blocked, just not triaged.]

  BUG-N: [reason] → scheduled [date]

The triage outputs (every bug, every time)

  1. SeverityCritical / High / Medium / Low (technical badness)
  2. ImpactBlocker / High / Medium / Low (user effect) — priority is auto-derived from the matrix
  3. Chain level — operational root cause label and chain-aware label (see Bugs Root Causes)
  4. Owner — a named person, not a team
  5. Actionfix now · fix this sprint · backlog · spike · kill

What triage NEVER does

  • Debug the bug
  • Design the fix
  • Argue about priority (use the matrix; argue about severity or impact, not the output)
  • Skip the chain level (the most-skipped field — the diagnostic depends on it)

Where this lives in your project

Triage produces an entry per bug in the team's tracker. The patterns surfaced section is read at the weekly bi-weekly sync as a heads-up to the PO and Tech Lead. The chain-level distribution is read monthly at the chain-health review.

What to do if a section resists

ResistanceWhat it meansWhere to go
Triage takes 45 minThe team is solving, not routingCut to severity + chain + owner. Solving happens after.
Same bug debated every triageSeverity is being re-litigatedSeverity is set by the filer + QA before triage; triage agrees or rejects, never debates
Chain-level field is "unknown" for everythingThe team has not internalised chain-aware classificationRead Bugs Root Causes at start of next triage
Patterns section is always emptyTriage isn't pattern-detectingThe PO is responsible for naming patterns; it's the most valuable output
Bugs accumulate without ownerThe "unowned" bug is dead before it startsForce an owner. "I'll look at it later" from nobody named is not an owner.

Worked example — daily triage during release week

text
# Daily triage — 2026-05-27

Time:        14 min
Attendees:   Maya (QA), Alex (PO), Esti (TL on-call)
Inbox:       4 new bugs since 2026-05-26

  ID      | Title                                | Sev  | Chain                  | Owner | Action
  ────────┼──────────────────────────────────────┼──────┼────────────────────────┼───────┼──────────────
  BUG-211 | Negative wallet shows $0.00 (caught  | High | scenario-gap +         | Esti  | Fix today
          | in staging)                          |      | logic-error            |       |
  BUG-212 | Hebrew submit "freezes" 2-3s         | Med  | observation-mismatch + | Alex  | Brief input;
          | (3 reports)                          |      | configuration          |       | spike Mon
  BUG-213 | Storybook story for ErrorBanner      | Low  | scenario-gap           | Maya  | Backlog
          | missing focus state                  |      |                        |       |
  BUG-214 | Tooltip cut off at 768px              | Low  | scenario-gap           | Maya  | Backlog

## Patterns surfaced
- BUG-212 is the third Hebrew/language-pack ticket this week.
  Logged by Alex as brief input for next-cycle initiative
  "Perceived responsiveness for non-English graders."

## Out-of-band
None this triage.

See also

200apps · How We Work · NWIRE