---
name: diagnostiquer-probleme-azd
description: "Diagnostiquer un problème en reproduisant l'échec, en isolant sa cause et en produisant un verdict sans corriger. Utiliser lorsqu'un bug, incident, test intermittent, échec incertain ou régression exige une preuve de cause racine avant toute remédiation."
---

# Étape 04 · Diagnostiquer le problème

Reproduire, isoler, prouver, puis s'arrêter au diagnostic.

## Quick start

```text
$diagnostiquer-probleme-azd "Le test checkout_cache_flaky échoue parfois en CI"
```

Artefact attendu: `diagnosis.verdict: diagnose-only | blocked | failed`, reproduction minimale, hypothesis ledger et root cause soutenue.

## Utiliser quand

- un bug, incident, flaky test ou échec incertain existe;
- la cause n'est pas encore prouvée;
- une reproduction doit précéder toute correction.

## Procédure

1. Reproduire (`reproduce`) l'échec avec le plus petit cas utile: commande, seed/env, input, expected, actual, timestamp et artifact.
2. Tenir un `diagnosis_ledger` reproductible où chaque tentative garde command, exit/status, output digest et lien artifact.
3. Tenir un `hypothesis ledger` avec au moins deux hypothèses concurrentes quand possible: prediction, falsification test, evidence et status `open | falsified | supported | blocked`.
4. Isoler (`isolate`) la root cause suspectée en changeant une variable à la fois et marquer explicitement les hypothèses falsifiées.
5. Obtenir de la fresh evidence pour chaque affirmation et séparer `author_evidence` de toute `reviewer_evidence`.
6. Séparer l'auteur du diagnostic et le reviewer éventuel, sans modifier le candidate code.
7. Si délégué à un sous-agent, suivre `skills/azd/references/context-packet.md` et `model-routing.md` pour le rôle correspondant.
8. Lier la cause aux nœuds affectés du Project Decision Graph et identifier la première hypothèse invalidée.
9. Rendre un verdict `diagnose-only`: reproduction, root cause prouvée ou cause la mieux soutenue, confiance, impact causal et blockers.

## Sortie

Le skill rend `diagnosis` ([diagnosis-output.md](references/diagnosis-output.md)) avec les champs author_id, reviewer_id, reproduction, diagnosis_ledger, hypothesis_ledger, author_evidence, reviewer_evidence, root_cause, invalidated_assumption, graph_impact, confidence, evidence, verdict.

## Arrêt et interdits

- Arrêter quand une cause est suffisamment prouvée pour être transférée à `$planifier-travail-azd` ou `$construire-solution-azd`, ou `blocked` si elle ne peut pas l'être.
- Ne pas corriger, refactorer ou planifier la remédiation dans ce skill. Ne pas produire de patch, fix-forward ou remediation steps; le transfert sortant est un paquet de diagnostic seulement.
- Fail closed si la reproduction est absente et que la cause n'est pas autrement prouvée.
- Fail closed si aucune hypothèse concurrente n'est falsifiée ou si l'auteur et le reviewer partagent la même evidence sans observation indépendante.
- Rapid : 0 sous-agent sauf justification écrite.

Répondre dans la langue de l'utilisateur. Commandes, chemins, identifiants, gates et verdicts restent identiques en français et en anglais.
