Trier et router les bugs
Un rapport entrant est lu, comparé aux tickets ouverts pour repérer les doublons, puis classé sur le board de la bonne équipe avec sa sévérité.
- Démarre
- Nouveau rapport de bug
- Étapes
- 5
- Contrôles et conditions
- 0
- Une personne décide
- Jamais, tourne seul
Déclencheur · Événement
Nouveau rapport de bug
Chaque rapport entrant déclenche l'exécution dès son arrivée, si bien que le triage se fait en quelques minutes plutôt qu'au prochain passage.
Claude exécute la suite en autonomie
- 1
Signaler ce que le rapport n'a pas dit
Symptôme, étapes de reproduction, environnement, fréquence et impact sont extraits, et tout ce que le rapport n'a pas fourni est signalé comme manquant.
- 2
Titrer le ticket sur le symptôme
Le ticket est titré sur ce qui a été observé, et la cause supposée par le rapporteur reste dans le corps, attribuée à lui.
- 3
Repérer les doublons et les régressions
LinearLinear
Un rapport correspondant à un ticket ouvert ou récemment fermé y est ajouté plutôt que reclassé, et une correspondance sur un ticket fermé compte comme une régression.
- 4
Fixer la sévérité selon l'impact décrit
Chaque ticket reçoit une bande de sévérité selon l'impact décrit plutôt que le ton, relevée quand plusieurs comptes le signalent ou qu'il s'agit d'une régression.
- 5
Classer sur le board de l'équipe concernée
LinearLinear
Le ticket atterrit sur le board de l'équipe qui possède la zone, avec tout doute sur la responsabilité signalé dessus plutôt que laissé dans une file de triage.
SlackSlack
Le triage est un travail facile à mal faire et invisible quand il est bien fait. Un rapport arrive, quelqu'un le survole, le classe là où ça semble raisonnable, et lui donne une sévérité fondée surtout sur le ton du rapporteur. Deux semaines plus tard, le même bug a trois tickets ouverts sur deux boards, dont une régression que personne n'a repérée parce qu'elle correspondait à un ticket fermé que personne n'a cherché.
Presque rien de tout cela ne demande de jugement produit. Extraire un symptôme, chercher une correspondance existante, décider d'une bande à partir de l'impact décrit, et faire correspondre une zone à l'équipe qui la possède sont des tâches mécaniques, et les faire de façon constante sur 200 rapports par semaine est exactement le point où les humains cessent d'être constants. Cette constance est l'argument pour faire tourner le triage de bugs avec un agent IA : chaque rapport reçoit les cinq mêmes vérifications dès son arrivée.
What you get
Every report lands on the owning team's board within minutes, deduplicated against what is already open, with a severity that reflects what the reporter actually described.
Ce que le triage de bugs par IA extrait d'un rapport
Chaque rapport est lu dès son arrivée, et cinq éléments en sont extraits, dans les mots du rapporteur quand c'est possible : le symptôme, les étapes de reproduction, l'environnement (navigateur, appareil, version, compte), la fréquence, et l'impact, c'est-à-dire si le rapporteur est bloqué ou contourne le problème.
Tout ce que le rapport n'a pas fourni est signalé comme manquant. Un rapport sans étapes de reproduction vaut quand même la peine d'être classé, mais il doit le signaler visiblement, car « impossible à reproduire » et « jamais reçu la méthode » mènent à des décisions opposées quand quelqu'un envisage plus tard de fermer le ticket.
Le symptôme va dans le titre, jamais le diagnostic du rapporteur. Les gens fournissent une cause avec leur rapport, et cette cause est souvent fausse : « le cache est cassé donc mon tableau de bord est vide » est une observation et une supposition. Un titre qui affirme la supposition envoie le ticket directement à l'équipe qui possède ce qui est supposé, où il est fermé à juste titre comme n'étant pas un bug, pendant que le vrai problème reste ouvert. La supposition va dans le corps avec le nom du rapporteur attaché, et le ticket atterrit là où pointe le symptôme.
Repérer les doublons et les régressions
Le tracker, Linear ici, est cherché sur le symptôme, en comparant le fond plutôt que la formulation : d'abord les tickets ouverts, puis ceux récemment fermés. Un rapport qui existe déjà devient un commentaire sur le ticket existant, avec les détails et le rapporteur du nouveau rapport, et la réponse indique qu'il a été rattaché.
Chercher dans les tickets fermés est l'étape qui se rentabilise. Un rapport correspondant à un ticket fermé la semaine dernière est une régression : le correctif n'a pas tenu, ou il a tenu et autre chose l'a cassé. Traité comme un nouveau bug, il repart en fin de file sans historique, et la personne qui l'a corrigé la première fois ne l'apprend jamais. Une requête de plus change ce résultat, et la régression est traitée comme plus urgente qu'un nouveau bug.
Fixer la sévérité selon l'impact et classer sur le bon board
La sévérité vient de ce qui a été décrit, jamais du ton du rapporteur. Un rapport furieux sur un défaut d'alignement cosmétique n'est pas urgent, et une note polie sur des exports corrompus l'est. Les bandes suivent l'impact :
- bloqué sans contournement possible, ou données perdues ou affichées de façon erronée — bande la plus haute ;
- un contournement à répéter à chaque fois — bande suivante ;
- cosmétique, ou touchant une configuration inhabituelle — bande la plus basse.
Deux faits font monter la bande : le nombre de comptes ayant signalé la même chose, et le fait qu'il s'agisse ou non d'une régression.
Le ticket est ensuite classé sur le board de l'équipe qui possède la zone concernée. Quand la responsabilité est ambiguë, il va sur le board le plus probable avec le doute signalé sur le ticket lui-même. Un ticket laissé sans affectation dans une file de triage en attente d'une décision de routage est la façon la plus courante pour un vrai bug de s'enliser.
Seule la bande la plus haute est aussi postée sur Slack. Router chaque rapport de routine vers le chat apprend à l'équipe que le canal est du bruit de fond, et l'alerte qui avait vraiment besoin d'une réponse en dix minutes reçoit le même traitement que le bouton mal aligné de mardi.
The prompt
The real prompt behind the steps above, detailed enough that an agent with the same tools can run it as written. The Run buttons copy the full version, which also carries the steps for connecting those tools.
# Triage and route bug reports
You have access to an issue tracker and a messaging tool. Run this on
**[each incoming bug report]**.
## 1. Label what the report leaves out
Extract, in the reporter's own words where possible:
- The symptom. What happened, not what they think caused it.
- Reproduction steps, if given.
- Environment: browser, device, version, account.
- Frequency: once, intermittent, or every time.
- Impact: blocked entirely, or working around it.
Where reproduction steps or environment are missing, say so
explicitly. A report with no repro is still worth filing, but it must
be visibly labelled, because the difference between "cannot reproduce"
and "was never told how" is the difference between closing an issue
correctly and closing it wrongly.
## 2. Title the issue on the symptom, not the diagnosis
Reporters routinely supply a cause along with the effect, and the
cause is frequently wrong. "The cache is broken so my dashboard is
empty" is one observation and one guess.
File the observation. Keep the guess in the body, attributed to the
reporter. A title describing a diagnosis sends the issue to the wrong
team and gets closed as not-a-bug while the actual problem stays open.
## 3. Catch duplicates and regressions
Search the tracker on the symptom, matching by substance rather than
by wording. Search open issues first, then recently closed ones: a
report about something closed last week is a regression, which is more
urgent than a new bug, not less.
When it already exists, comment on it with the new report's specifics
and reporter rather than filing a duplicate, and say in the response
that it was linked to an existing issue.
## 4. Set severity from stated impact, not tone
Severity comes from what was described, never from the reporter's
tone. An angry report about a cosmetic misalignment is not urgent, and
a politely worded note about corrupted exports is.
- Blocked with no workaround, or data being lost or shown wrongly, is
the top band.
- A workaround exists but is performed repeatedly is the next.
- Cosmetic, or affecting one unusual configuration, is the lowest.
Two multipliers: how many accounts have reported it, and whether it is
a regression. Both should raise the band, and both are facts rather
than judgements.
## 5. File it on the owning team's board
Map the affected surface to the board that owns it. Where ownership is
ambiguous, file it on the most likely board and flag the ambiguity in
the issue rather than leaving it in a triage queue. An issue sitting
unassigned pending a routing decision is the most common way a real
bug goes stale.
Post to the channel only for the top severity band. Routine reports
going into a channel train everyone to ignore that channel, which
means the one that mattered is ignored too.
## Output
Report: reports triaged, matched to existing issues, regressions
identified, new issues created by board and severity, reports missing
repro steps, and the ones where ownership was ambiguous.
Pourquoi le faire tourner avec Tulina
Un prompt aide une personne. Un processus fait avancer une équipe.
Collé dans une conversation, le prompt ci-dessus marche une fois, pour celui qui l'a collé. Dans Tulina, « Trier et router les bugs » devient un processus que l'équipe partage, qui garde son historique, qui tourne seul, et qui reste dans le même périmètre de sécurité que les outils qu'il appelle.
Toute l'équipe travaille sur le même
PersonnelÉquipeOrganisation
Un processus se range à l'endroit qui lui correspond : à vous, à votre équipe ou à toute l'organisation. Celui qui l'exécute peut l'améliorer, et tout le monde repart de la meilleure version au lieu de réexpliquer le travail à chaque fois.
Chaque modification est une version
v1v2v3
Chaque changement crée une nouvelle version et garde la précédente ; une mauvaise modification se défait en restaurant une version antérieure. Chaque exécution enregistre la version qu'elle a suivie, et ce qu'elle a appris revient dans le processus.
Il tourne sans vous
planifiéwebhookà la demande
Un agent hébergé exécute le processus sur l'infrastructure de Tulina, à heure fixe ou quand un événement arrive, et continue quand vous fermez la conversation. Rien à héberger. Chaque exécution est suivie jusqu'à son résultat.
Dans le même périmètre de sécurité
coffrerôlesjournal
Les identifiants restent dans le coffre, jamais dans le prompt. Les rôles décident qui peut lancer quoi, chaque appel est journalisé, et une étape qu'une personne doit valider attend cette personne.
Questions sur le triage de bugs par IA
Aussi sur Linear
D'autres processus qui tournent surtout sur Linear. Les outils partagés avec celui-ci sont allumés.
Les appels clients deviennent des tickets
Chaque appel enregistré dans la journée est passé au crible la nuit — bugs et demandes de fonctionnalités routés vers la bonne équipe en tickets et docs, plus un récap le vendredi.
- Partage
- Linear, Slack
Passage nocturne5 étapes →
Les PR mergées font avancer les tickets et un résumé part
Chaque pull request mergée est rattachée à son ticket, avancée sur le board, et regroupée dans un résumé pour l'équipe.
- Partage
- Linear, Slack
Pull request mergée4 étapes →