Arrêt contrôlé, cancel et kill switch
Touba distingue une pause normale, une annulation gouvernée, un échec et une fin réussie.
Cette page décrit les contrôles disponibles.
1. Annuler avant le premier dispatch
touba run program.air.json \
--cancel-before-dispatch \
--output trace
Effet attendu :
- le runtime trace
run_cancel_requested; - le premier dispatch est refusé avec
dispatch_refused_cancelled; - le run termine avec
run_completed.status = "cancelled".
2. Annuler une pause
touba run program.air.json \
--cancel-on-pause \
--output trace
Ce mode est utile pour tester une exécution qui s’arrête sur :
human.approve;human.review;ask.
Effet attendu :
- la pause reste visible dans la trace ;
- aucune réponse utilisateur n’est inventée ;
- le run termine en
cancelled.
3. Définir un timeout global
touba run program.air.json \
--run-timeout-ms 5000 \
--output trace
Le timeout global est coopératif. Il est observé aux frontières runtime.
Cela signifie :
- un handler déjà lancé n’est pas tué brutalement par ce timeout ;
- le runtime refuse le dispatch suivant ;
- la trace contient
run_timeout_exceeded, puisrun_cancel_requested.
Les timeouts de handlers restent déclarés dans le manifest avec
timeout_ms. Ils sont distincts du timeout global de run.
4. Activer le kill switch
touba run program.air.json \
--manifest touba.manifest.json \
--trigger-event-json '{"trigger_ref":"trigger:examples.daily/DailyRun","event_id":"evt-001","source_kind":"schedule"}' \
--kill-switch-enabled \
--output trace
Effet attendu :
- le runtime trace
kill_switch_enabled; - une annulation est demandée ;
- un trigger est refusé avant d’exécuter sa cible ;
- le run termine en
cancelled.
Le kill switch s’applique à l’exécution hôte. Les boutons cloud, daemons distribués et interruptions système fortes relèvent des couches plateforme.
5. Lire la trace
touba inspect trace.json
Cherchez les événements suivants :
run_cancel_requested
run_timeout_exceeded
kill_switch_enabled
dispatch_refused_cancelled
run_cancelled
run_completed
Le statut terminal attendu est :
{ "status": "cancelled" }
Portée
Cette couche de contrôle rend l’arrêt observable, explicite et testable :
- demandes d’annulation portables ;
- refus traçable avant dispatch ;
- gestion coopérative du timeout aux frontières runtime ;
- refus de trigger quand le kill switch est actif ;
- conservation des traces après annulation.
L’interruption portable d’un processus déjà lancé, l’annulation d’un effet externe déjà produit, les control planes distribués, les kill switches cloud et les politiques de suppression de traces relèvent de l’exploitation hôte et plateforme.