docs(fr): refinement of forensic-investigation

This commit is contained in:
Emmanuel Atsé 2026-05-21 13:11:05 +02:00
parent 231a2036bc
commit 62dd242917
No known key found for this signature in database
1 changed files with 87 additions and 88 deletions

View File

@ -1,157 +1,156 @@
--- ---
title: "Enquête de code" title: "Enquête de code"
description: Comment bmad-investigate traite chaque problème comme une scène d'enquête, classe les preuves et produit un dossier structuré sur lequel les ingénieurs peuvent agir description: Comment bmad-investigate traite chaque problème comme une scène de crime, classe les preuves et produit un dossier structuré sur lequel les ingénieurs peuvent agir
sidebar: sidebar:
order: 6 order: 6
--- ---
Vous confiez à `bmad-investigate` un journal de plantage, une trace de pile, ou simplement un « ça marchait avant, plus Vous confiez à `bmad-investigate` un journal de plantage, une stack trace, ou simplement un « ça marchait avant, plus
maintenant ». Le skill prend le relais avec la discipline d'enquête le temps de l'exécution. Il ne se met pas à maintenant ». Le skill prend le relais et applique la rigueur dun enquêteur pendant toute son exécution. Il ne se lance pas dans
corriger. Il ouvre un dossier d'enquête. la correction. Il ouvre un dossier denquête.
Chaque constatation reçoit une note. Chaque hypothèse a un statut. Les fausses pistes sont conservées, pas effacées. Le Chaque constatation est classée. Chaque hypothèse a un statut. Les fausses pistes sont conservées, pas effacées. Le
livrable est un document qu'un autre ingénieur peut reprendre à froid. livrable est un document quun autre ingénieur peut reprendre à froid.
Cette page explique pourquoi l'enquête est une discipline à part entière, et ce que le skill apporte qu'un workflow de Cette page explique pourquoi lenquête est une discipline à part entière, et ce que le skill apporte de plus quun flux de
développement classique n'apporte pas. développement classique.
## Le problème du « débogue, c'est tout » ## Le problème avec « il suffit de déboguer »
Le débogage classique mélange trois activités : examiner les preuves, raisonner sur la cause, et modifier le code pour Le débogage classique mélange trois activités : examiner les preuves, raisonner sur la cause, et modifier le code pour
tester la théorie. Quand elles sont mélangées, deux modes de défaillance apparaissent. tester la théorie. Quand elles sont mélangées, deux modes de défaillance apparaissent.
Le premier est le **verrouillage narratif**[^1]. La première histoire plausible devient la théorie de travail, et chaque Le premier est le **verrouillage narratif**[^1]. Le premier scénario plausible devient la théorie de travail, et chaque
observation est tordue pour la confirmer. Le bug reste non corrigé jusqu'à ce que quelqu'un abandonne et reparte de observation est déformée pour sy ajuster. Le bug persiste jusquà ce que quelquun abandonne et reparte de zéro. Des
zéro. Des heures plus tard. heures plus tard.
Le second est l'**amnésie probatoire**. Vous avez tracé quelque chose, l'avez écarté, mais n'avez pas écrit pourquoi. Le second est l**amnésie des preuves**. Vous avez suivi une piste, lavez écartée, mais navez pas écrit pourquoi. Deux
Deux jours plus tard, avec un regard frais, vous le retracez. Pire encore, un collègue reprend le bug et refait la même jours plus tard, avec un regard frais, vous la suivez à nouveau. Pire encore, un collègue reprend le bug et suit
impasse que vous aviez déjà éliminée. à nouveau la même fausse piste que vous aviez déjà écartée.
La conception du skill est une réponse directe à ces deux modes. La conception du skill est une réponse directe à ces deux modes.
## Classement des preuves ## Classement des preuves
Chaque constatation dans une enquête appartient à l'une de trois catégories. Chaque constatation dans une enquête appartient à lune de trois catégories.
- **Confirmé.** Directement observé dans les logs, le code ou les dumps ; cité avec une référence spécifique (un - **Confirmé.** Directement observée dans les logs, le code ou les dumps ; citée avec une référence spécifique (un
`chemin:ligne`, un horodatage de log, un hash de commit). Si quelqu'un demande « comment le sais-tu ? », vous pointez `chemin:ligne`, un horodatage de log, un hash de commit). Si quelquun demande « comment le savez-vous ? », vous indiquez
la citation. la référence.
- **Déduit.** Découle logiquement de preuves confirmées ; la chaîne de raisonnement est explicite. Si une étape de la - **Déduit.** Découle logiquement de preuves confirmées ; la chaîne de raisonnement est explicite. Si une étape de la
chaîne est fausse, la déduction est fausse, et on peut voir précisément quelle étape. chaîne est fausse, la déduction est fausse, et on peut voir précisément laquelle.
- **Hypothétique.** Plausible mais non confirmé. Énonce quelle preuve confirmerait ou réfuterait, et déclare d'avance ce - **Hypothétique.** Plausible mais non confirmé. Précise quelle preuve la confirmerait ou la réfuterait, et indique à
qui le clôturerait. Les hypothèses sont explicitement *non factuelles*. lavance ce qui permettrait de la clore. Les hypothèses sont explicitement *des suppositions, pas des faits*.
Le classement n'est pas une posture d'humilité. Il rend le dossier lisible. Un lecteur peut parcourir la section Le classement nest pas là par modestie. Il rend le dossier lisible. Un lecteur peut parcourir la section
Confirmé pour savoir ce qui est vrai, la section Déduit pour savoir ce qui en découle, et la section Hypothétique pour **Confirmé** pour savoir ce qui est vrai, la section **Déduit** pour savoir ce qui en découle, et la section **Hypothétique** pour
savoir ce qui reste ouvert. Confondre les trois est la première raison pour laquelle les enquêtes dérapent. savoir ce qui reste ouvert. Confondre les trois est la raison la plus fréquente pour laquelle les enquêtes dérapent.
## Tête de pont d'abord ## Point dancrage dabord
L'enquête ne part jamais d'une théorie. Elle part d'une seule preuve confirmée et étend la zone à partir de là. Cette Lenquête ne part jamais dune théorie. Elle part dune seule preuve confirmée et sétend à partir de là. Cette
preuve peut être un message d'erreur précis, une trame de pile, ou une entrée de log horodatée. preuve peut être un message derreur précis, une stack trace, ou une entrée de log horodatée.
C'est l'inverse de la manière dont les enquêtes se déroulent souvent : quelqu'un a une intuition, construit une théorie, Cest linverse du déroulement habituel des enquêtes : quelquun a une intuition, construit une théorie,
puis cherche les preuves qui la soutiennent. L'intuition peut être correcte ; la *méthode* est fragile parce qu'elle puis cherche les preuves qui la soutiennent. Lintuition peut être correcte ; la *méthode* est fragile parce quelle
fait du biais de confirmation[^2] le comportement par défaut. transforme le biais de confirmation[^2] en comportement par défaut.
Une tête de pont est un fait sur lequel vous pouvez revenir quand le raisonnement devient flou. Si une déduction vous Un point dancrage est un fait sur lequel vous pouvez revenir quand le raisonnement devient flou. Si une déduction vous
emmène quelque part d'étrange, vous pouvez remonter jusqu'à la tête de pont et essayer une autre branche. Sans elle, mène à une conclusion inattendue, vous pouvez remonter au point dancrage et essayer une autre branche. Sans point
vous ne savez pas quelle étape annuler. dancrage, vous ne savez pas quelle étape annuler.
Quand les preuves sont rares, le skill le dit et bascule en exploration guidée par hypothèses : formuler des hypothèses Quand les preuves sont rares, le skill le signale et bascule en exploration guidée par hypothèses : formuler des hypothèses
à partir de ce qui est disponible, identifier ce qui testerait chacune, présenter une liste priorisée de données à à partir de ce qui est disponible, identifier ce qui testerait chacune, présenter une liste priorisée de données à
collecter. L'absence de preuve est elle-même une constatation. collecter. Labsence de preuve est elle-même un constat.
## Discipline des hypothèses ## Discipline des hypothèses
Les hypothèses ne sont jamais supprimées du dossier. Quand une preuve en confirme ou en réfute une, son champ **Statut** Les hypothèses ne sont jamais supprimées du dossier. Quand une preuve en confirme ou en réfute une, son champ **Statut**
passe d'Ouvert à Confirmé ou Réfuté, et une **Résolution** explique quelle preuve a tranché. passe dOuvert à Confirmé ou Réfuté, et une **Résolution** explique quelle preuve a tranché.
Cette règle a un coût réel : les dossiers grossissent. Le bénéfice est réel aussi. L'historique complet du raisonnement Cette règle a un coût réel : les dossiers grossissent. Le bénéfice est tout aussi réel. Lhistorique complet du raisonnement
fait partie du livrable. Six mois plus tard, quand un bug similaire surgit, le prochain enquêteur peut lire le dossier fait partie du livrable. Six mois plus tard, quand un bug similaire surgit, le prochain enquêteur peut lire le dossier
original et voir quelles pistes ont déjà été éliminées et pourquoi. Sans cet historique, chaque nouvel enquêteur refait original et voir quelles pistes ont déjà été éliminées et pourquoi. Sans cet historique, chaque nouvel enquêteur reprend
les mêmes impasses. les mêmes fausses pistes.
Cela discipline aussi l'enquêteur du présent. Si vous ne pouvez pas supprimer une hypothèse fausse, vous devez la Cela discipline aussi lenquêteur sur le moment. Si vous ne pouvez pas supprimer une hypothèse fausse, vous devez la
réfuter avec une preuve citée. L'abandonner discrètement quand elle devient gênante n'est plus une option. réfuter avec une preuve citée. Labandonner discrètement quand elle devient gênante nest plus une option.
## Remettre en question la prémisse ## Remettre en question la prémisse
La description du problème par l'utilisateur est une hypothèse, pas un fait. « Le cache est cassé » est quelque chose La description du problème par lutilisateur est une hypothèse, pas un fait. « Le cache est cassé » est ce
que l'utilisateur *croit*. Avant que le skill ne construise une enquête autour, les affirmations techniques sont que lutilisateur *croit*. Avant que le skill ne construise une enquête autour de cette prémisse, les affirmations
vérifiées de manière indépendante. Si la preuve contredit la prémisse, le rapport le dit directement. techniques sont vérifiées de manière indépendante. Si la preuve contredit la prémisse, le rapport le signale sans détour.
C'est l'instinct de l'enquêteur : le récit du témoin est une donnée, pas la vérité. Parfois le bug rapporté est réel Cest linstinct de lenquêteur : le récit du témoin est une donnée, pas la vérité. Parfois le bug rapporté est réel
mais mal étiqueté. Parfois le symptôme décrit est en aval d'une cause différente. Les enquêtes qui prennent la prémisse mais mal étiqueté. Parfois le symptôme décrit est en aval dune cause différente. Les enquêtes qui prennent la prémisse
pour argent comptant diagnostiquent le mauvais défaut, et le bug revient sous une forme légèrement différente. pour argent comptant diagnostiquent le mauvais problème, et le bug revient sous une forme légèrement différente.
## Une marche calibrée ## Une approche calibrée
Le skill est une seule procédure, pas deux modes. Il calibre la part d'investigation de défaut versus la part Le skill est une seule procédure, pas deux modes. Il ajuste en continu léquilibre entre la recherche du défaut et lexploration du code
d'exploration de zone que l'entrée demande, sur une échelle continue. environnant, selon ce que le cas requiert.
Un cas piloté par symptôme (un ticket, un plantage, un message d'erreur, un « ça marchait avant ») penche vers le suivi Un cas orienté symptôme (un ticket, un plantage, un message derreur, un « ça marchait avant ») penche vers le suivi
d'hypothèses, la reconstruction de la chronologie et une direction de correction. Un cas sans symptôme (comprendre un dhypothèses, la reconstruction de la chronologie et une piste de correction. Un cas sans symptôme (comprendre un
module avant de le toucher, évaluer la réutilisabilité, bâtir un modèle mental) penche vers la cartographie module avant de le toucher, évaluer la réutilisabilité, bâtir un modèle mental) penche vers la cartographie
entrées/sorties, le filtrage du flux de contrôle et un plan de vérification. La plupart des cas réels se situent quelque entrées/sorties, le filtrage du flux de contrôle et un plan de vérification. La plupart des cas réels se situent quelque
part entre les deux, et le dossier reflète l'équilibre que les preuves ont exigé. part entre les deux, et le dossier reflète léquilibre que les preuves ont exigé.
La discipline est la même quel que soit l'endroit de l'échelle où se situe un cas : tête de pont d'abord, classement La discipline est la même quel que soit le positionnement du cas sur léchelle : point dancrage dabord, classement
des preuves, suivi des hypothèses, jamais effacer. La sortie est toujours des preuves, suivi des hypothèses, rien nest jamais effacé. La sortie est toujours
`{implementation_artifacts}/investigations/{slug}-investigation.md`, avec les sections qui ne s'appliquent pas à un cas `{implementation_artifacts}/investigations/{slug}-investigation.md`, les sections non
laissées vides ou omises. pertinentes étant laissées vides ou omises.
Quand un bug profond exige de comprendre un sous-système plus large, la procédure intègre en ligne les techniques de Quand un bug profond exige de comprendre un sous-système plus large, la procédure intègre directement les techniques de
cartographie entrées/sorties, de filtrage du flux de contrôle, de raisonnement à rebours depuis les sorties et de cartographie entrées/sorties, de filtrage du flux de contrôle, de raisonnement à rebours depuis les sorties et de
traçage des frontières inter-composants[^3]. Le modèle de la zone atterrit dans le même dossier. Pas de changement de traçage des frontières inter-composants[^3]. La modélisation de la zone explorée figure dans le même dossier. Pas de changement de
mode. mode.
## La méthodologie vit dans le skill ## La méthodologie réside dans le skill
La discipline d'enquête est une propriété du skill lui-même. Quiconque invoque `bmad-investigate` adopte la méthodologie La discipline denquête est une propriété du skill lui-même. Quiconque invoque `bmad-investigate` adopte la méthodologie
et le style de communication pour l'exécution : précision clinique, langage centré sur la preuve, pas de prudence et le style de communication pendant lexécution : précision clinique, langage centré sur la preuve, pas de prudence
inutile, présentation en dossier de cas. Quand le skill se termine, l'appelant retrouve sa voix d'avant. Pas de inutile, structuration en dossier denquête. Quand le skill se termine, lappelant retrouve sa voix habituelle. Pas de
changement de persona, juste un déplacement de ton issu des principes du skill. changement de persona, juste un ajustement de ton dicté par les principes du skill.
Cela compte parce que l'enquête et l'implémentation récompensent des instincts différents. Les enquêteurs sont lents et Cest important car lenquête et limplémentation sollicitent des réflexes différents. Les enquêteurs sont lents et
précis. Les implémenteurs sont rapides et confiants. Le même cerveau faisant les deux dans une seule session finit par précis. Les développeurs sont rapides et confiants. Essayer de faire les deux dans une même session finit
mal faire les deux. Le skill délimite la posture d'enquête en ligne, sans changement de contexte vers une identité généralement par mal faire lun et lautre. Le skill délimite la posture denquête directement dans le flux de travail, sans basculer dans une
séparée. identité distincte.
## Ce que vous obtenez ## Ce que vous obtenez
Un fichier d'enquête achevé : Un dossier denquête complet :
- Sépare les constatations Confirmées (avec citations) des Déductions et des Hypothèses - Sépare les constatations **Confirmées** (avec citations) des **Déductions** et des **Hypothèses**
- Préserve toutes les hypothèses jamais formulées, avec leur Statut final et leur Résolution - Préserve lintégralité des hypothèses formulées, avec leur Statut final et leur Résolution
- Reconstruit une chronologie des événements à partir de plusieurs sources de preuves - Reconstruit une chronologie des événements à partir de plusieurs sources de preuves
- Identifie les lacunes de données et ce qu'elles résoudraient - Identifie les lacunes de données et ce quelles permettraient de résoudre
- Fournit des conclusions actionnables ancrées dans les preuves - Fournit des conclusions exploitables ancrées dans les preuves
- Inclut un plan de reproduction quand une cause racine est identifiée - Inclut un plan de reproduction quand une cause racine est identifiée
- Maintient un backlog d'enquête de pistes encore à explorer - Maintient un backlog des pistes restant à explorer
Donnez-le à un ingénieur qui n'était pas là, et il comprend ce qui s'est passé, ce qui est connu, et ce qui reste Transmettez-le à un ingénieur qui nétait pas là, et il comprendra ce qui sest passé, ce qui est connu, et ce qui reste
incertain. C'est la barre. incertain. Cest le standard visé.
## L'idée plus large ## La vision densemble
La plupart du « débogage par IA » d'aujourd'hui mélange preuves, raisonnement et changements de code en un seul flux de La plupart des approches de « débogage par IA » actuelles mêlent preuves, raisonnement et changements de code en un seul
texte plausible. Le signal est difficile à trouver, les impasses se répètent, et le dossier, s'il en existe un, est un flux de texte plausible. Le signal est difficile à trouver, les impasses se répètent, et le dossier, sil en existe un, est
journal de chat que personne ne veut lire. un historique de conversation que personne ne veut lire.
`bmad-investigate` traite l'enquête comme une discipline avec son propre livrable. La preuve a une note. Les hypothèses `bmad-investigate` traite lenquête comme une discipline avec son propre livrable. Chaque preuve est classée. Les
ont un statut. Les fausses pistes sont documentées, pas effacées. Le dossier survit à la session. hypothèses ont un statut. Les fausses pistes sont documentées, pas effacées. Le dossier survit à la session.
Quand le prochain bug ressemblant à un que vous avez déjà vu apparaîtra, vous aurez un point de départ qui ne sera pas Quand un bug similaire réapparaîtra, vous aurez un point de départ concret, pas un prompt vide.
une invite vide.
## Glossaire ## Glossaire
[^1]: **Verrouillage narratif** : phénomène cognitif par lequel un raisonnement adopte la première explication plausible [^1]: **Verrouillage narratif** : phénomène cognitif par lequel un raisonnement adopte la première explication plausible
et l'enrichit progressivement, devenant de plus en plus difficile à abandonner même face à des preuves contraires. et lenrichit progressivement, devenant de plus en plus difficile à abandonner même face à des preuves contraires.
[^2]: **Biais de confirmation** : tendance cognitive à rechercher, interpréter et favoriser les informations qui [^2]: **Biais de confirmation** : tendance cognitive à rechercher, interpréter et favoriser les informations qui
confirment des croyances préexistantes, tout en ignorant ou minimisant celles qui les contredisent. confirment des croyances préexistantes, tout en ignorant ou minimisant celles qui les contredisent.
[^3]: **Passage de frontière** : transition entre deux zones d'exécution distinctes (langage, processus, machine, [^3]: **Passage de frontière** : transition entre deux zones dexécution distinctes (langage, processus, machine,
client/serveur, code/configuration). Les frontières concentrent les bugs car chaque côté suppose que l'autre s'est client/serveur, code/configuration). Les frontières concentrent les bugs car chaque côté suppose que lautre sest
comporté comme documenté. comporté comme documenté.