--- id: "3188c0ce-930e-40b7-82df-fbc0258ef63c" number: 185 title: "[Bug] Suppression d'exercice casse le chargement des programmes" status: "qa" priority: "high" sprint: null links: [{"target":"#183","kind":"relatesTo"}] agentRefs: [] attachments: [] createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"} updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"} createdAt: 1785423526481 updatedAt: 1785424283733 version: 2 --- Contexte au 30 juillet 2026 : après suppression d'un exercice depuis la bibliothèque, l'utilisateur ne peut plus charger ses programmes et voit le message `Impossible de charger tes programmes`. Attendu produit/UX : - la suppression d'un exercice ne doit jamais casser l'ouverture des programmes qui le référencent ; - les programmes doivent rester lisibles même si l'exercice source a été supprimé/archivé ; - l'entrée peut être conservée comme archive/snapshot dans le programme, ou au minimum gérée défensivement sans faire tomber l'écran entier. Diagnostic architecture en cours : - ce n'est probablement pas une simple rupture de clé étrangère ; - le chemin snapshot `ProgramExercise` semble déjà dénormalisé et défensif ; - l'hypothèse la plus probable est un lookup non défensif sur une map/liste d'exercices actifs lors de l'enrichissement ou de l'affichage des programmes. Objectif du ticket : - identifier la stack trace exacte et le point de rupture réel ; - corriger le chargement pour qu'un exercice supprimé n'empêche jamais d'ouvrir les programmes ; - préserver la cohérence locale/sync si des snapshots ou enrichissements en dépendent. Priorité : correctif urgent post-build.