La session est la mauvaise limite

Les applications de clavardage traitent généralement la durée de vie de l'interaction comme la durée de vie de la tâche. Lorsque l'onglet se ferme, le raisonnement actif s'arrête. Lorsque le contexte est tronqué, les décisions antérieures disparaissent.

LibreTask sépare la tâche de l'interface. Un fil de travail a un cycle de vie durable. Le workflow peut s'arrêter pendant qu'une personne est absente, puis reprendre quand une décision arrive.

Enregistrer les événements, puis dériver l'état

Le système enregistre des actions significatives comme des événements ordonnés : un contrat a été révisé, un plan a été élaboré, une capacité a été invoquée, une évaluation a échoué, une décision humaine est arrivée ou une livraison a été produite.

L'état actuel est reconstruit à partir de cette séquence. Ceci est utile pour la récupération, mais il répond aussi à une question de produit plus importante: pourquoi le système a-t-il pris ce chemin?

Une réessayer est une décision

Les relevés aveugles peuvent reproduire un effet secondaire externe ou consommer un budget sans améliorer le résultat. Un système régi devrait savoir quelle capacité a échoué, si l'échec est temporaire, quelle politique de réessayer s'applique et si une solution de rechange est disponible.

Les clés d'Idempotency, les timeouts spécifiques aux capacités et les types d'erreurs structurées transforment la récupération d'une boucle générique en une correction explicable.

L'attente fait partie de l'exécution

L'examen humain peut prendre des minutes ou des jours. Un workflow durable devrait cesser de retenir un travailleur vivant et maintenir son état d'attente. Lorsque le signal arrive, l'exécution continue à partir de ce point.

C'est la différence pratique entre un système qui peut fonctionner du jour au lendemain et un système qui ne fait que le dire.