{"id":18428,"plugin_id":"plugins_6a86f0bc955881919122c7c2d87da0d9","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:14:48.931Z","digest":"477254f888276eaecd32c169026cbd9f4dd87e51cc844f29f18916ab5892169c","against":null,"payload":{"description":"Use for any external action whose accidental repetition or partial completion could create duplicates, loss, spending, extra deletion, multiple sends, or other material effects.","included_files":[],"name":"gerer-transactions","skill_md_contents":"---\r\nname: gerer-transactions\r\ndescription: Use for any external action whose accidental repetition or partial completion could create duplicates, loss, spending, extra deletion, multiple sends, or other material effects.\r\n---\r\n# Gérer transactions, idempotence et rejeu\r\n\r\n## Procédure\r\n1. Donner une identité d’opération stable avant le premier effet.\r\n2. Déterminer ce qui est répétable, déduplicable, idempotent, observable avant rejeu, annulable ou non annulable.\r\n3. Après interruption ou réponse ambiguë, rechercher l’état réel avant tout rejeu d’une action non répétable.\r\n4. Identifier le point où chaque effet devient réel.\r\n5. Conserver explicitement tout état partiel non atomique.\r\n6. N’utiliser compensation ou restauration que si elles existent réellement, sont autorisées et n’aggravent pas le dommage.\r\n7. Ne jamais promettre « exactement une fois » sans mécanisme qui le prouve.\r\n\r\n## Preuve\r\nL’état final ou partiel de chaque effet est qualifié et aucun rejeu aveugle n’a eu lieu."},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}