--- name: checkpoint-delivery-submit-logging-fix description: memory note checkpoint-delivery-submit-logging-fix metadata: type: project --- # Checkpoint — hotfix livraison délégation + logs submit Date: 2026-06-20 ## Pourquoi ce checkpoint existe Après le fix AppImage 0.3.0 précédent, la délégation `Main -> DevBackend` a reproduit le même symptôme que `Main -> Architect` avant redémarrage : le message de délégation apparaît dans l'input de la cellule cible, mais n'est pas soumis. Le chantier `feature/agent-skill-awareness-v2` est donc suspendu tant que le canal de délégation n'est pas fiable. ## Branche et état Branche active pendant le hotfix : `feature/agent-skill-awareness-v2`. Dirty attendu hors code : fichiers runtime `.ideai/conversations/*`, `.ideai/layouts.json` produits par la session live. ## Changements code effectués Frontend : - `frontend/src/features/terminals/useWritePortal.ts` - Logs détaillés `[write-portal]` : abonnement, attachement front, réception `delegationReady`, chunks de texte, délai avant submit, submit, ack, erreurs. - Fix défensif : `submitSequence: ""` est normalisée vers `"\r"` au lieu d'écrire zéro octet. - En cas d'erreur d'injection, arrêt du retry immédiat infini. - `frontend/src/adapters/terminal.ts` - Logs `[terminal-write]` sur writes non triviaux ou contrôles (`\r`, `\n`, bulk, etc.). - `frontend/src/adapters/input.ts` - Logs `[input-gateway]` pour `delegationDelivered` et `setFrontAttached`. - `frontend/src/domain/index.ts` - Commentaire défaut submit aligné sur ~350 ms. - `frontend/src/features/terminals/useWritePortal.test.tsx` - Test ajouté : `submitSequence: ""` doit envoyer `"\r"`. Backend/application/Tauri : - `crates/application/src/orchestrator/service.rs` - `note_delegation_delivered` passe par `application::diag!` persistant. - `set_agent_front_attached` logge les changements d'attachement et le cas médiateur absent. - `crates/infrastructure/src/input/mod.rs` - Logs détaillés `[input-mediator]` : start turn, gate cold start, publish `DelegationReady`, choix front-owned vs headless, bind handle, front attach/detach, headless text/submit start/ok/failure. - Défaut headless `DEFAULT_SUBMIT_DELAY_MS` corrigé de 60 ms à 350 ms pour être aligné avec le write-portal. - Headless normalise aussi une submit sequence vide vers `"\r"`. - `crates/app-tauri/src/commands.rs` - Logs persistants `[pty-write]` autour de `write_terminal` avec session, bytes, contrôle sans contenu bulk. - Logs persistants `[delivery]` pour `delegation_delivered` et `set_front_attached`. ## Vérifications passées - `cargo fmt --all -- --check` : OK. - `npx vitest run src/features/terminals/useWritePortal.test.tsx src/adapters/terminal.test.ts src/features/terminals/TerminalView.portal.test.tsx` : OK, 3 files / 20 tests. - `npx tsc --noEmit` : OK. - `cargo test -p infrastructure input --lib` : OK, 35 tests. - `cargo check -p app-tauri` : OK. - `cargo test -p application --test orchestrator_service` : OK, 45 tests (warning existant `CapturingFs::writes` unused). - `cargo test -p app-tauri --test orchestrator_wiring` : OK, 13 tests. ## Build AppImage Commande Tauri standard : frontend build OK, Rust release OK, bundling Tauri KO avec `failed to run linuxdeploy` comme précédemment. Contournement réussi : ```bash ARCH=x86_64 APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=1 \ /tmp/appimage_extracted_02f96dbd6ecc47f616b5a57fb8b7aa60/usr/bin/appimagetool \ --runtime-file /tmp/idea-appimage-runtime-x86_64 \ /home/anthony/Documents/Projects/IdeA/target/release/bundle/appimage/IdeA.AppDir \ /home/anthony/Documents/Projects/IdeA/target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage ``` Artefact : - `/home/anthony/Documents/Projects/IdeA/target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage` - taille : 106M - `--appimage-offset` : `944632` ## Reprise recommandée 1. Relancer IdeA avec l'AppImage ci-dessus. 2. Reproduire une délégation simple `Main -> DevBackend` ou `Main -> Architect`. 3. Si le message reste dans l'input sans être soumis, récupérer les traces : - logs persistants `application::diag!` (chemin configuré au startup, typiquement app-data logs/idea.log), chercher `[delivery]`, `[pty-write]`, `[rendezvous]`. - console frontend, chercher `[write-portal]`, `[terminal-write]`, `[input-gateway]`. - stderr si lancé depuis terminal, chercher `[input-mediator]`. 4. Une fois délégation fiable, reprendre `feature/agent-skill-awareness-v2` depuis le cadrage Architect déjà obtenu.