Revue immuable
Chaque proposition reçoit un identifiant unique et une empreinte de son instantané action-paramètres. Toute divergence ou altération est refusée.

AGENT DE WORKFLOW IA SOUMIS À VALIDATION HUMAINE / MVP LOCAL
RELAINE transforme une demande métier formulée en langage naturel en proposition de tâche validée, suspend le workflow jusqu’à une décision explicite, puis exécute exactement l’action examinée via des outils SQLite persistants.

01 / PROBLÈME ET SOLUTION
Un modèle de langage peut interpréter une demande. Le laisser écrire directement dans les systèmes métier rend toutefois la validation, la traçabilité et la gestion des échecs dangereusement floues.
Dissocier proposition et exécution. RELAINE valide la demande, sollicite un modèle local pour une action strictement structurée, persiste un instantané immuable, puis attend une validation humaine.
Deux actions réelles—create_task et update_task—démontrent toute la boucle de contrôle, sans faire passer le projet pour un agent généraliste ou une plateforme de production.
02 / PARCOURS RÉEL
Le navigateur ne fournit jamais de nouveaux arguments à l’outil. La validation désigne l’identifiant et l’empreinte de la proposition persistée ; le backend exécute l’instantané de référence conservé côté serveur.
Une personne décrit le résultat attendu en langage courant.
LangGraph valide la demande et Ollama retourne une proposition create_task ou update_task contrainte par Pydantic.
Action, paramètres, justification, identifiant et empreinte sont visibles avant toute écriture métier.
Seule une validation exacte peut réclamer la proposition et appeler l’outil SQLite correspondant.
Soumission, décision, exécution et récupération restent consultables dans un historique en ajout seul.
03 / ARCHITECTURE
LangGraph orchestre les états ; Pydantic porte les contrats ; le service d’approbation applique les contrôles de confiance ; SQLite conserve propositions, tâches, reçus, checkpoints et audit. Le modèle propose, mais ne dispose d’aucun chemin d’exécution directe.
04 / SÉCURITÉ, IDEMPOTENCE ET RÉCUPÉRATION
RELAINE rend les échecs visibles. Demandes non prises en charge, paramètres manquants, réponse malformée du modèle, indisponibilité d’Ollama et erreurs de base ne sont jamais transformés en faux succès.
Chaque proposition reçoit un identifiant unique et une empreinte de son instantané action-paramètres. Toute divergence ou altération est refusée.
La transition pending-to-executing est protégée dans SQLite pour empêcher deux validations simultanées de réclamer la même proposition.
La mutation métier et un reçu d’exécution unique, indexé par l’identifiant de proposition, sont validés dans la même transaction SQLite.
La récupération finalise un reçu déjà validé sans rejouer l’écriture et ne retente que lorsque l’absence d’effet persistant peut être prouvée.
Une proposition rejetée, non approuvée, terminée, altérée ou issue d’un ancien état ambigu n’est jamais réexécutée automatiquement.
Les événements d’audit accompagnent les changements d’état dès que possible, tandis que des triggers SQLite interdisent leur modification ou suppression.
05 / RÉSULTATS VÉRIFIÉS
La release a validé 103 tests de régression hors Ollama, puis une véritable inférence locale avec le modèle gpt-oss:20b configuré. Les deux tests Ollama réels couvrent un smoke test et un workflow HTTP de bout en bout sur serveur actif.
Ces résultats vérifient les parcours implémentés et le packaging de la release. Ils ne démontrent ni une sécurité de production, ni un comportement multi-utilisateur, ni la qualité du modèle sur toute demande, ni une fiabilité opérationnelle à grande échelle.
06 / CAPTURES RÉELLES
Les deux captures proviennent de l’application locale en fonctionnement avec des données de démonstration synthétiques. La première s’arrête à l’attente de validation ; la seconde montre le résultat persisté et la piste d’audit après approbation.
07 / LIMITES