{
  "id": "continuous-validation-checkpoint-n2",
  "code": "PS-0038",
  "titre": "Points de contrôle de validation continue dans les workflows longs",
  "resume": "Instaure des points de contrôle réguliers dans les workflows longs pour valider que le modèle opère toujours dans le cadre défini et que ses sorties intermédiaires sont conformes.",
  "type_ia": "agent-plugins",
  "piliers": [
    "securite-productions"
  ],
  "niveau": "N2",
  "owasp": [
    "LLM06"
  ],
  "tags": [
    "validation-continue",
    "workflow",
    "audit",
    "enterprise"
  ],
  "prompt_fr": "Dans les tâches multi-étapes ou longues (plus de 5 actions), instaure des points de contrôle toutes les [N] étapes.\n\n**Procédure de checkpoint**\n1. Résume ce qui a été accompli jusqu'ici.\n2. Confirme que les étapes réalisées sont conformes aux instructions initiales.\n3. Identifie les risques ou déviations détectés.\n4. Demande confirmation avant de continuer si une déviation est détectée.\n\n**Livrables à produire**\n- **Format de checkpoint** strict :\n  ```\n  ## Checkpoint étape N/Total\n  Accompli : <liste>\n  Conforme aux instructions : oui|non\n  Risques détectés : <liste ou aucun>\n  Continuer ? <oui automatique si conforme, sinon attente de confirmation>\n  ```\n- **Événement structuré** (JSON-line par checkpoint) :\n  `[CHECKPOINT] {\"ts\":\"<ISO8601>\",\"step\":<n>,\"total\":<n>,\"compliant\":<true|false>,\"risks_count\":<n>,\"continue_awaits_confirmation\":<true|false>}`",
  "prompt_en": "In multi-step or long tasks (more than 5 actions), establish checkpoints every [N] steps.\n\n**Checkpoint procedure**\n1. Summarize what has been accomplished so far.\n2. Confirm that completed steps comply with initial instructions.\n3. Identify detected risks or deviations.\n4. Request confirmation before continuing if a deviation is detected.\n\n**Deliverables to produce**\n- **Strict checkpoint format**:\n  ```\n  ## Checkpoint step N/Total\n  Completed: <list>\n  Compliant with instructions: yes|no\n  Detected risks: <list or none>\n  Continue? <auto-yes if compliant, otherwise awaiting confirmation>\n  ```\n- **Structured event** (JSON-line per checkpoint):\n  `[CHECKPOINT] {\"ts\":\"<ISO8601>\",\"step\":<n>,\"total\":<n>,\"compliant\":<true|false>,\"risks_count\":<n>,\"continue_awaits_confirmation\":<true|false>}`",
  "langue_recommandee": "indifferent",
  "modeles_recommandes": [
    "claude",
    "gpt"
  ],
  "source": {
    "auteur": "OWASP AI Exchange",
    "organisation": "OWASP Foundation",
    "url": "https://owasp.org/www-project-ai-security-and-privacy-guide/",
    "type": "officielle"
  },
  "cumulable_avec": [
    "human-in-loop-n2",
    "agent-action-confirmation-n3"
  ],
  "explication": "L'OWASP AI Exchange recommande la validation continue comme mécanisme de gouvernance des workflows IA longs. Les agents autonomes peuvent dériver progressivement de leurs instructions initiales sur de longues séquences d'actions.\n\n**Quand l'utiliser :** agents autonomes sur des tâches longues, pipelines de traitement batch, workflows de génération de documents.\n\n**Ce qu'il protège :** LLM06 — prévention de la dérive progressive des agents. Complémentaire à PS-0005 (confirmation par action) — ce N2 agrège les contrôles par points de checkpoint. Moins coûteux que la confirmation à chaque action mais conserve une discipline d'audit.",
  "installation": {
    "ou_quand": "À installer au démarrage de tout agent ou pipeline exécutant des tâches multi-étapes (>5 actions). Compromis efficacité/sécurité : checkpoint régulier sans bloquer chaque action.",
    "moments": [
      "projet-debut"
    ],
    "exemples": [
      {
        "contexte": "Agent autonome (LangChain/AutoGen)",
        "instruction": "Coller dans `system_message` avec [N]=5 (un checkpoint toutes les 5 étapes). Capture `[CHECKPOINT]` côté code pour mesurer le taux de déviations détectées."
      },
      {
        "contexte": "Claude Code (tâches longues)",
        "instruction": "`./CLAUDE.md`. Naturellement, Claude Code fait déjà des checkpoints implicites — ce prompt **standardise le format** et **trace structurellement**."
      },
      {
        "contexte": "Pipeline batch (génération de documents)",
        "instruction": "Paramètre **`system`** + parser `[CHECKPOINT]` pour identifier les batches avec déviations. Sur `compliant=false`, déclencher revue humaine du batch."
      },
      {
        "contexte": "Workflow d'orchestration (n8n, Make)",
        "instruction": "Coller dans `system_prompt` du node IA. Ajouter un trigger sur `continue_awaits_confirmation=true` pour passer en revue humaine."
      }
    ]
  },
  "date_creation": "2026-05-17",
  "date_maj": "2026-05-22",
  "version": "1.1",
  "tokens_estimes": {
    "entree": 220,
    "sortie": null
  },
  "changelog": [
    {
      "date": "2026-05-17",
      "version": "1.0",
      "summary": "Création de la fiche"
    },
    {
      "date": "2026-05-22",
      "version": "1.1",
      "summary": "Mise à jour éditoriale"
    }
  ]
}
