Aller au contenu principal

Humain dans la boucle — le pipeline vous attend

Avancé ⏱ 15 min approbations · hitl · gouvernance

Vous allez construire : la couture de revue dont tout pipeline qui agit a besoin — les brouillons s'arrêtent dans une file d'approbation, un relecteur approuve ou rejette (CLI, ou le lien de la notification Slack/WhatsApp/email), et le brouillon résolu est émis sur un topic que le stage suivant consomme. Approuvé → l'action part. Rejeté → non. Chaque décision est journalisée : qui, quand.

le stage rédige → file d'approbation (le pipeline s'arrête) → pulse approvals approve/reject → topic résolu → le stage suivant agit

Prérequis

  • Une app déployée dont le stage d'action passe par le plugin d'approbation humaine (le pipeline qui agit du tutoriel MCP est la base naturelle — les templates qui l'utilisent embarquent HumanApprovalPlugin).
  • pulse approvals demande un Pulse ≥ le build portant B-199 (vérifiez : pulse approvals --help).

1 · Voyez ce qui vous attend

pulse approvals list
2 approbation(s) :
ap-7c1… pending via slack 2026-07-14T09:02:11Z
La réponse au ticket #4821 dépasse le seuil de remboursement
ap-8d0… pending via email 2026-07-14T09:05:37Z

2 · Lisez le brouillon sur lequel le pipeline s'est arrêté

pulse approvals show ap-7c1…

Le brouillon complet produit par le stage, le canal qui a notifié, et le resolvedTopic où le verdict atterrira.

3 · Décidez

pulse approvals approve ap-7c1… --feedback "remboursement justifié, le client a raison"
# ou
pulse approvals reject ap-8d0… --feedback "ton — escalader à un agent humain"
approved ap-7c1… status=approved → emitted on drafts.resolved

À l'instant où vous répondez, le plugin émet le brouillon (verdict et feedback attachés) sur son topic résolu — le pipeline suspendu reprend au stage suivant. Le même répondeur alimente les liens de notification : CLI et relecteurs Slack partagent une seule file.

4 · Vérifiez la reprise et la piste d'audit

pulse events tail --topic drafts.resolved
pulse audit --limit 5 # APPROVAL_GRANTED / APPROVAL_REJECTED, avec relecteur et horodatage

Ce qui vient de se passer

L'humain est un stage, pas un spectateur : la topologie du pipeline garantit que rien n'agit sans verdict, la file survit aux redémarrages (une table persistée, pas un callback), et la gouvernance obtient ce qu'elle demande vraiment — qui a approuvé quoi, quand, avec quel raisonnement — sous forme de données, pas de captures d'écran.

Ensuite