22 lines
3.4 KiB
Markdown
22 lines
3.4 KiB
Markdown
---
|
|
issueRef: "#117"
|
|
version: 13
|
|
updatedBy: {"kind":"user"}
|
|
updatedAt: 1788789622644
|
|
---
|
|
2026-08-21 Main
|
|
- Ticket rouvert pour livraison effective sur la branche backend dédiée `feature/117-ask-agent-sync-background-tasks` depuis `develop` @ `c1d7f6d`.
|
|
- Direction produit validée utilisateur: `idea_run_in_background` doit rester disponible pendant un `idea_ask_agent`, mais le moteur doit gérer ça en interne sans dépendre d'un texte/outil spécial des agents.
|
|
- Clarification technique établie: aujourd'hui, le rendez-vous `idea_ask_agent` se résout sur le premier `Final` structured, même si des child background tasks liées au rendez-vous restent `Running`; la completion ultérieure réveille le propriétaire pour un nouveau tour, sans second `Final` corrélé au même appelant.
|
|
- Architect a figé la cible: une background task lancée pendant un rendez-vous devient une child jointe au rendez-vous. Le premier `Final` devient un `pending_final` candidat si des children jointes restent ouvertes; l'appelant n'est libéré qu'après `pending_final` + toutes children jointes terminales avec succès.
|
|
- Architect: les completions de children jointes ne doivent pas suivre le wake asynchrone standard tant que le parent rendez-vous reste ouvert; elles doivent d'abord réévaluer/finaliser le parent. Échec/cancel/timeout d'une child jointe => échec/cancel/timeout parent cohérent, pas succès.
|
|
- Points de code ciblés par Architect: `crates/application/src/orchestrator/service.rs` (`run_in_background`, `ask_structured`, complétion rendez-vous, registre active_rendezvous`), modèle/store de `BackgroundTask` pour persister l'état joint/pending_final, chemin completion sink / wake, watchdog rendez-vous, tests `orchestrator_service` + reboot/reconcile.
|
|
- Git: branche `feature/117-ask-agent-sync-background-tasks` créée depuis `develop` @ `c1d7f6d`.
|
|
- DevBackend a livré un premier patch: le parent rendez-vous attend désormais les children jointes et supprime le wake async standard pour une child jointe tant que le parent rendez-vous est encore ouvert.
|
|
- DevBackend a exécuté: `cargo fmt`; `cargo test -p application --test orchestrator_service`; `cargo test -p backend --lib background_tasks_b7_tests::app_reconcile_`; `cargo check -p application -p backend` => verts selon son rapport.
|
|
- Écart déclaré par DevBackend: pas de persistance/reconstruction explicite du `pending_final` à travers reboot.
|
|
- QA indépendant: chemin chaud VERT (`ask_structured_pending_final_waits_for_joined_background_success`, `ask_structured_joined_background_failure_fails_parent_rendezvous`, suppression du wake async parasite au reconcile boot) mais verdict global ROUGE pour #117 tel qu'écrit.
|
|
- Preuves QA: `cargo test -p application ask_structured_pending_final_waits_for_joined_background_success -- --nocapture` => OK; `cargo test -p application joined_background -- --nocapture` => 2/2 OK; `cargo test -p backend app_reconcile_suppresses_joined_child_wake_while_rendezvous_parent_open -- --nocapture` => OK.
|
|
- Blocage QA: aucun test ni mécanisme démontré pour reconstruire le `pending_final` après reboot, alors que le ticket #117 exige explicitement que la réponse finale revienne encore à `A` après redémarrage.
|
|
- Architect a confirmé: ce gap reboot est un blocker pour clôturer #117; au mieux c'est un lot partiel avec dette séparée, pas une clôture.
|
|
- Action: retour DevBackend demandé sur la persistance/reconstruction du `pending_final` et la validation reboot/reconcile complète. |