Replay déterministe — rejouez l'événement d'hier
Vous allez construire : rien — vous allez interroger ce que vous avez déjà construit. Chaque événement qui traverse un pipeline laisse une trajectoire enregistrée (chaque hop : nœud, moteur, entrée, sortie, appels LLM/MCP). Vous allez les lister, en rejouer une pour de vrai (chaque hop ré-exécute l'agent déployé via le runtime vivant), la rejouer --mocked (le parcours enregistré — byte-déterministe, zéro appel externe), et differ les runs pour voir exactement où le comportement a changé.
Prérequis
- N'importe quelle app déployée ayant traité au moins un événement — le
hellodu démarrage rapide convient. pulse replaydemande un Pulse ≥ le build portant B-198 (vérifiez :pulse replay --help).
1 · Trouvez une trajectoire enregistrée
pulse replay list --pipeline hello
hello — 3 trajectoire(s), plus récentes d'abord :
t-9f2… OK 2 hop(s) 2026-07-14T08:12:03Z
…
2 · Inspectez le trajet, hop par hop
pulse replay show t-9f2…
Chaque hop montre le nœud, son moteur, la durée, et la sortie produite — la boîte noire d'un événement.
3 · Rejouez — ré-exécution réelle, par défaut
pulse replay run t-9f2…
pulse replay diff t-9f2… r-58…
Le défaut est live : chaque hop ré-exécute réellement l'agent déployé via le runtime — le même moteur de raisonnement que le vrai trafic (les appels LLM, l'évaluation des règles et la résolution d'outils se produisent vraiment). Le diff surligne tout hop où le graphe, une réponse LLM ou une API externe diffère du run enregistré :
hop 1 [judge] DIVERGES
a: {"likelihood":"high",…}
b: {"likelihood":"medium",…}
4 · Le parcours enregistré — le déterminisme, prouvé
pulse replay run t-9f2… --mocked
pulse replay diff t-9f2… r-41…
identical — 2 hop(s), no divergence
--mocked opte pour le mode enregistré : chaque hop renvoie la sortie originale capturée — aucun LLM re-facturé, rien de renvoyé, byte-déterministe à graphe inchangé. Ce diff vide est la preuve de déterminisme.
Ce qui vient de se passer
Vous avez débogué avec des preuves au lieu d'une reproduction : la trajectoire enregistrée est la vérité de ce qui s'est passé ; le replay live + diff isole précisément quel hop se comporte différemment aujourd'hui — parce que chaque hop s'est réellement ré-exécuté via le runtime ; et le parcours mocked relit l'enregistrement gratuitement. Pour les stages LLM, c'est la différence entre « il a répondu autrement une fois » et voir le hop divergent.
Limites honnêtes
Le replay live ré-exécute pour de vrai les nœuds à effets de bord : pointez les sinks vers une destination de staging avant de rejouer en live quoi que ce soit qui agit sur le monde. Le replay mocked est byte-déterministe à graphe inchangé — éditez le pipeline et le replay suit la nouvelle forme.
Ensuite
- Approbation humaine dans la boucle — suspendez le pipeline sur une décision humaine
- Observez votre app