Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Rédiger un post-mortem vérifiable

Après cette leçon: Je peux écrire ce qui s’est passé, pourquoi, et ce qui change.

Leçon de 60 min8 commandesLab agent de code IA : utiliser opencode pour expliquer et corriger du code, et vérifier son travail

Rédiger un post-mortem vérifiable

Un post-mortem est un court récit écrit d’un incident : une chronologie, une cause et une liste d’actions. Il compte, car un récit que personne ne peut vérifier ne garde qu’une impression.

L’incident de coût de la médiathèque est fini. L’équipe le rédige, et un petit script compare le brouillon au journal avant que quiconque le signe.

À la fin de cette leçon

Remarque

Je peux écrire ce qui s’est passé, pourquoi, et ce qui change.

Mots clés

MotCe que ça veut direExemple
Post-mortemun récit écrit d’un incident et de ses suites
Chronologieles événements d’un incident, dans l’ordre du temps
Causepourquoi cela s’est produit, en termes que le journal confirme
Actionun changement avec un responsable et une échéance
Contrôleun moyen de voir qu’une action a marchéau plus 2 tentatives

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une chronologie reprend les heures du journal

Une chronologie liste ce qui s’est passé et quand, dans l’ordre. Copiez chaque heure d’une trace écrite. Ne l’écrivez pas de mémoire.

Une bonne chronologie contient aussi les temps lents : quand la cause a commencé, quand on l’a remarquée, quand elle a fini. Les écarts entre ces heures sont les leçons.

Exemple : les événements de la médiathèque

HeureÉvénement
10:55Une fiche plus longue est en ligne
12:02L’alerte horaire de coût se déclenche
12:20La cause est trouvée dans la trace
12:35Les tentatives sont plafonnées
13:00Le coût repasse sous la limite

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une cause que le journal peut confirmer

Écrivez la cause comme une phrase que le journal peut prouver ou réfuter. Elle dit ce qui s’est passé, pour quelles requêtes et pourquoi.

« Chaque question sur les tarifs était tentée cinq fois, car le contrôle de 40 mots ne pouvait pas réussir » se vérifie. « Le système était surchargé » ne se vérifie pas : aucune trace ne le confirme.

Une action a un responsable et un contrôle

Une action est un changement qui corrige la cause ou raccourcit les écarts. Chacune a un responsable, une échéance et un contrôle : un chiffre que le journal montrera quand l’action aura marché.

« Faire plus attention » n’a rien de tout cela. « Au plus 2 tentatives par requête, vu dans le journal sous 2 jours » a les trois.

Une erreur fréquente

Attention

Beaucoup pensent qu’un post-mortem doit dire qui est fautif. Il doit dire ce qui, dans le système, a permis la faute. Mettez un nom à côté d’une action, comme responsable, et nulle part ailleurs.

Écrire le brouillon et le journal, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const fs = require(\"fs\");' 'const EVENEMENTS = [' '  { heure: \"10:55\", code: \"fiche_publiee\" },' '  { heure: \"12:02\", code: \"alerte_declenchee\" },' '  { heure: \"12:20\", code: \"cause_trouvee\" },' '  { heure: \"12:35\", code: \"tentatives_plafonnees\" },' '  { heure: \"13:00\", code: \"cout_normal\" },' '];' 'const BROUILLON = {' '  chronologie: [' '    { heure: \"10:55\", code: \"fiche_publiee\" },' '    { heure: \"12:02\", code: \"alerte_declenchee\" },' '    { heure: \"12:10\", code: \"cause_trouvee\" },' '    { heure: \"13:00\", code: \"cout_normal\" },' '  ],' > pm.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Écrire le brouillon et le journal, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  cause: \"Chaque question sur les tarifs était tentée cinq fois, car le contrôle de 40 mots ne pouvait pas réussir\",' '  actions: [' '    { quoi: \"Plafonner les tentatives à 2\", responsable: \"Samir\", controle: \"Le journal montre au plus 2 tentatives par requête\", jours: 2 },' '    { quoi: \"Faire plus attention à la fiche\", responsable: \"Samir\", controle: \"\", jours: 5 },' '    { quoi: \"Alerter toutes les 10 minutes\", responsable: \"\", controle: \"Une alerte part dans les 10 minutes d’un pic\", jours: 60 },' '  ],' '};' 'fs.writeFileSync(\"evenements.json\", JSON.stringify(EVENEMENTS, null, 1));' 'fs.writeFileSync(\"postmortem.json\", JSON.stringify(BROUILLON, null, 1));' >> pm.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Créer les fichiers du brouillon

Commande
docker exec -w /home/node/project agent node pm.js

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Écrire le vérificateur, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const fs = require(\"fs\");' 'const JOURS_MAX = 30;' 'function aUnChiffre(texte) { return /[0-9]/.test(texte); }' 'function lancer() {' '  const evenements = JSON.parse(fs.readFileSync(\"evenements.json\", \"utf8\"));' '  const pm = JSON.parse(fs.readFileSync(\"postmortem.json\", \"utf8\"));' '  const chronologie = [];' '  const actions = [];' '  let derniere = \"\";' '  pm.chronologie.forEach(function (ligne, i) {' '    const trouve = evenements.find(function (e) { return e.code === ligne.code; });' '    if (trouve === undefined) chronologie.push(i + \":evenement_inconnu\");' '    else if ((trouve.heure === ligne.heure) === false) chronologie.push(i + \":mauvaise_heure\");' '    if (ligne.heure < derniere) chronologie.push(i + \":hors_ordre\");' '    derniere = ligne.heure;' '  });' > verifier-pm.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Écrire le vérificateur, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  evenements.forEach(function (e) {' '    if (pm.chronologie.some(function (l) { return l.code === e.code; }) === false) chronologie.push(\"manquant:\" + e.code);' '  });' '  pm.actions.forEach(function (a, i) {' '    if (a.responsable.trim() === \"\") actions.push(i + \":sans_responsable\");' '    if (a.controle.trim() === \"\") actions.push(i + \":sans_controle\");' '    else if (aUnChiffre(a.controle) === false) actions.push(i + \":sans_chiffre\");' '    if (a.jours > JOURS_MAX) actions.push(i + \":trop_tard\");' '  });' '  console.log(\"Chronologie :\", chronologie.join(\" \"));' '  console.log(\"Actions :\", actions.join(\" \"));' '  const total = chronologie.length + actions.length;' '  console.log(\"Problèmes :\", total);' '  console.log(total === 0 ? \"Le post-mortem est prêt.\" : \"Le post-mortem n’est pas prêt.\");' '}' 'module.exports = { lancer };' 'if (require.main === module) lancer();' >> verifier-pm.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Vérifier le brouillon

Commande
docker exec -w /home/node/project agent node verifier-pm.js

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Ce que le vérificateur affiche

LigneCe qu’elle dit
Chronologie2:mauvaise_heure manquant:tentatives_plafonnees
Actions1:sans_controle 2:sans_responsable 2:trop_tard
Problèmes5
Dernière ligneLe post-mortem n’est pas prêt.

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Écrire la correction

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const fs = require(\"fs\");' 'const pm = JSON.parse(fs.readFileSync(\"postmortem.json\", \"utf8\"));' 'pm.chronologie[2].heure = \"12:20\"; // le journal dit 12:20' 'pm.chronologie.splice(3, 0, { heure: \"12:35\", code: \"tentatives_plafonnees\" });' 'pm.actions[1].quoi = \"Tester chaque fiche avec le contrôle de 40 mots avant sa publication\";' 'pm.actions[1].controle = \"Chaque cas de l’évaluation passe le contrôle de 40 mots avant la publication d’une fiche\";' 'pm.actions[2].responsable = \"Anne\";' 'pm.actions[2].jours = 14;' 'fs.writeFileSync(\"postmortem.json\", JSON.stringify(pm, null, 1));' 'require(\"./verifier-pm\").lancer();' > corriger-pm.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Corriger le brouillon et revérifier

Commande
docker exec -w /home/node/project agent node corriger-pm.js

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

À propos de ce labo et de sa source: Lab agent de code IA : utiliser opencode pour expliquer et corriger du code, et vérifier son travail

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.