# Tao : audit et diagnostic des frictions (30/09/2026)

Tâche Tao #38, branche `tom/tao-v2`. Étape 1 du plan : audit et diagnostic, sans code.

- Toutes les heures sont à l'heure de La Réunion. État des données : copie de la base prise le 30/09 à 11:46.
- `#N` désigne toujours une tâche. Les cartes, questions et retours sont nommés : « carte de plan n° 63 », « question n° 17 », « retour n° 9 ».
- Trois mots reviennent. Le **pilote** est Tao en tâche de fond sur une tâche : il relit les plans, répond à l'agent, te pose des questions. La **revue horaire** relit chaque heure le transcript des agents. La **garde** surveille les merges et les mises en prod des agents.

## En bref

Tao affiche souvent autre chose que la réalité, et il ne range jamais derrière lui. Sur 38 tâches suivies en quatre jours, l'affichage est fidèle pour 6 (dont trois lancées le matin même), approximatif pour 22 et faux pour 10. Les lecteurs ont relevé 190 écarts entre ce que Tao montrait et ce que disaient les transcripts, plus 77 frictions dans les fils du chat.

Cinq causes expliquent l'essentiel :

1. **Rien ne ferme une carte de plan ou une question du pilote quand la situation change.** Elles ne se ferment que par un clic dans la carte. Ni toi ni Tao ne pouvez les écarter.
2. **Le terminal ne compte qu'à moitié.** Une réponse tapée efface bien le besoin posé par l'agent. Mais un plan validé, une question du pilote tranchée ou un merge fait dans le terminal ne ferment ni la carte de plan, ni la question, ni l'état « merge à valider » quand la carte de merge n'est plus proposée. Et un message tapé pendant que l'agent travaille n'est pas lu du tout par Tao.
3. **L'état d'une tâche dépend de ce que l'agent pense à déclarer.** Aucun fait extérieur ne le corrige : PR déjà mergée, agent inactif, tâche rouverte puis jamais refermée.
4. **Plusieurs voix parlent du même fait sans se coordonner.** L'agent, le pilote, la revue horaire et la garde lèvent chacun leur alerte ou leur question. La main ne dit pas qui pilote vraiment, et l'agent ne la connaît pas.
5. **La remise des messages aux agents n'est pas fiable dans le temps.** Des consignes arrivent deux heures après, d'autres jamais ; le plafond du pilote coupe le relais de tes réponses ; un merge fait par le serveur n'est pas annoncé à l'agent.

Ce qui marche bien est listé en section 4 : il faut le garder tel quel.

## 1. Ce qui a été audité

| Source | Volume | Méthode |
|---|---|---|
| Tâches Tao | 38 (25 de Tom, 13 de Nico) | Un dossier par tâche tiré de la base : journal, plans, cartes, questions, alertes, notifications, état réel des PR sur GitHub, session vivante ou non |
| Transcripts des agents | 34 discussions | Chronologie compacte par discussion (messages tapés, réponses, jalons, merges), avec retour au transcript brut pour dater |
| Fils du chat de Tom | 4 fils, 321 messages | Messages, cartes, questions et alertes remis dans l'ordre du temps |
| Écran actuel | Bureau et mobile | Preview sur la copie de la base, mesure dans le navigateur |
| Code | `internal/tao`, `web/go/src/components/tao` | Chaque famille d'écart rattachée à sa cause, fichier et ligne |

Lecteurs : Bécassine, Honorine, Jeeves et Mathurin (Sonnet 5.5 high) sur les tâches, Octave (Sonnet 5.5 high) sur le chat, Nestor et Alfred (Sonnet 5.5 medium) sur le code. Synthèse et vérification des causes par l'orchestrateur. Relecture contradictoire par Athéna (Opus 5.5 xhigh), qui a recontrôlé les références de code, les dates et les chiffres ; ses corrections sont intégrées.

## 2. Ton écran au 30/09

Mesure faite sur le même écran que ta capture de 11:28.

| | Bureau (1440 × 900) | Mobile (iPhone 13) |
|---|---|---|
| Hauteur visible du fil | 491 px | 504 px |
| Cartes ouvertes de la veille, sous la dernière réponse | 7 | 7 |
| Hauteur de ces cartes | 2 961 px, soit 6 écrans | 4 935 px, soit 10 écrans |

À l'ouverture du chat, le fil se place tout en bas. La première chose visible est donc la question n° 17 du 29/09 sur l'incident du VPS n8n, pas la réponse du jour.

Six des sept cartes sont sans objet ; la septième n'a jamais eu de réponse.

| Carte | Tâche | Ouverte depuis | Où elle en est vraiment |
|---|---|---|---|
| Carte de plan n° 63, images Body v3 | #7 | 29/09 11:26 | Périmée : tu avais tranché le périmètre à 09:56 et la PR #8 est mergée depuis 11:11 |
| Carte de plan n° 71, Juliette v3 | #23 | 29/09 14:41 | Périmée : l'agent a exécuté le plan aussitôt, tâche finie à 14:46 |
| Carte de plan n° 73, AMI Ops v3 | #26 | 29/09 17:30 | Périmée : tu avais donné le feu vert dans le terminal à 17:29, l'agent travaille depuis |
| Question n° 14, « URGENT VPS » | #26 | 29/09 10:46 | Périmée : tu as répondu dans le terminal 83 secondes plus tard |
| Question n° 15, où mettre la base | #26 | 29/09 10:53 | Périmée : tu as répondu « oui pour option B » à 10:58 dans le terminal |
| Question n° 16, même décision | #30 | 29/09 10:53 | Périmée : même question que la n° 15, posée 17 secondes après par le pilote de l'autre tâche |
| Question n° 17, qui prévenir pour Medusa Eats et France Justice | #30 | 29/09 11:03 | Jamais répondue. À trancher ou à fermer : rien ne montre que les deux projets ont été prévenus |

États faux dans la colonne des tâches au même moment :

- **#31** affiche « merge à valider » : la PR #254 est mergée depuis le 29/09 à 10:55 et déployée à 11:17.
- **#7** affiche « attend ta réponse » sur un périmètre que tu as déjà tranché ; le pilote est arrêté.
- **#20** affiche « en cours » : la PR #6 est mergée depuis le 28/09 à 20:22 et l'agent a fini.
- **#12** affiche « en cours » : l'analyse est livrée depuis le 28/09 à 13:37.
- **#27** affiche « session terminée » avec le besoin « régler la facturation GitHub », caduc depuis ta décision du 29/09.
- **#3, #13, #24, #28** affichent « session terminée » alors que le travail est fini et livré.
- **#8** affiche « attend ta réponse » alors qu'elle attend un merge (PR #2 ouverte) ; sa carte de merge a été écartée le 28/09.
- **#26** n'a plus de carte pour la PR #6, toujours ouverte : la carte a expiré le 30/09 à 00:28.

## 3. Les douze frictions

Gravité : **critique** (travail perdu ou fait à tort), **forte** (tu perds du temps ou tu ne vois plus), **moyenne** (bruit). Le tableau est trié par gravité ; les numéros renvoient aux sections qui suivent. « Écarts » compte les relevés des lecteurs sur les 38 tâches, incertains compris ; « encore vrai » compte ceux qui étaient toujours faux le 30/09. Vingt et un écarts isolés (doublons de tâches, divers) ne sont pas dans le tableau.

| # | Friction | Gravité | Écarts | Encore vrai |
|---|---|---|---|---|
| 3 | Remise des messages aux agents : retards, pertes, contretemps | Critique | 18 | 3 |
| 6 | Pilote de fond : plafond, contradictions, tours pour rien | Critique | 11 | 1 |
| 1 | L'état des tâches ne suit pas la réalité | Forte | 44 | 21 |
| 2 | Cartes de plan et questions du pilote jamais fermées | Forte | 8 | 5 |
| 4 | Plans envoyés en carte alors que tu parles à l'agent | Forte | 4 | 0 |
| 5 | La main ne dit pas qui pilote, et l'agent l'ignore | Forte | 6 | 2 |
| 7 | Questions en double, déjà tranchées ou mal posées | Moyenne | 10, et 11 dans le chat | 2 |
| 8 | Trop d'alertes dans le chat | Moyenne | 18 | 0 |
| 9 | Revue horaire : faux oublis et relances inutiles | Moyenne | 20 | 1 |
| 10 | Protocole des agents : fins, jalons et plans mal déclarés | Moyenne | 17 | 3 |
| 11 | Chat trop lourd, et parfois muet | Moyenne | 20 dans le chat | — |
| 12 | Notifications push : aucune n'est jamais partie | Faible aujourd'hui | 13 | 7 |

### 1. L'état des tâches ne suit pas la réalité

Quatre schémas se répètent.

**Merge déjà fait, tâche toujours « à merger ».**
- #31, 29/09 : l'agent merge la PR #254 à 10:55 avec ton accord écrit dans le brief, puis annonce la fin à 11:17 en citant la PR. La tâche passe « merge à valider » et y reste.
- #27, 28/09 à 21:25 : carte « Merge à valider » pour la PR #244, que tu merges toi-même deux minutes plus tard. La carte reste 98 minutes. Corrigé le soir même : une PR mergée ailleurs retire maintenant la carte, tant qu'elle est encore proposée.
- #7, 28/09 : carte de merge pour la PR #7, un brouillon que le brief interdisait de merger.
- #35 (Nico), 30/09 : carte de merge proposée sur une PR brouillon ; le merge échoue, l'état reste « PR à relire et merger ».
- Cause : un jalon `termine` avec une PR donne toujours `merge_review`, sans lire l'état de la PR (`internal/tao/tasks.go:750`). Le merge repéré par la garde ne change pas l'état (`gestures.go:133`). La relecture des PR ne porte que sur les cartes encore proposées (`merge.go:383`) : une carte expirée ou écartée, et plus rien ne relit la PR.

**Tâche rouverte par un de tes messages, jamais refermée.**
- #3, #13, #20, #24, #28, #27. Un message de ta part sur une tâche finie la rouvre ; l'agent répond, mais ne redéclare pas la fin. Elle finit « en cours » ou « session terminée ». Chez Nico, #17 et #18 n'ont été refermées que 3 heures et 12 heures plus tard, après une relance.
- #3, 27/09 à 20:11 : le jalon de fin de l'agent arrive 3 secondes avant la réouverture et est refusé.
- #22, 28/09 à 19:38 : ta question « là tout est bon ? » rouvre une tâche finie. #34 (Nico) : « ok nickel » fait de même.
- Cause : `maybeReopen` rouvre dès qu'un message de Tom est suivi d'un appel d'outil (`hand.go:193`). Rien ne referme sans un nouveau `termine` de l'agent.

**« Bloquée » alors que l'agent travaille.**
- #7 (29/09 09:30) et #26 (29/09 11:02) : « Tao s'est arrêté : 6 gestes en une heure, à toi de reprendre ». L'agent avançait normalement : c'est le plafond du pilote qui pose cet état (friction 6).
- #22, 28/09 de 17:37 à 17:58 : « agent figé sur le dialogue de confiance Codex ». L'agent est un Claude qui attendait ta réponse ; le texte « Trust this folder? » figurait dans sa question.
- #5 (Nico), 28/09 : « bloquée » parce que l'écran Codex n'affichait pas « Implement this plan? » ; Nico avait validé dans le terminal et l'agent travaillait.

**Jalons et étape courante faux.**
- #13, #19, #23, #26, #30 : les sous-puces du plan sont comptées comme des étapes ; une tâche finie montre 7 étapes « à faire ». Corrigé le 29/09 pour les sous-puces. Les titres de section numérotés le sont encore (#29 et #35 chez Nico, les 29 et 30/09).
- #25 : étape 5 sur 5 depuis le 28/09, alors que le travail a changé de nature pendant 30 heures. Au 30/09 elle s'affiche « en cours » alors que l'agent attend ta relecture depuis le 29/09 à 22:17 (à confirmer).
- #32 (Nico) : étape 7 sur 7 « faite » pendant que l'agent refait la landing de zéro.

**Autres cas.**
- 28/09 à 17:45 : huit tâches passent « session terminée » pendant 80 secondes, au moment d'un déploiement du Harness, puis reviennent.
- #12, 28/09 de 10:08 à 13:24 : agent Codex sans outils (bac à sable), tâche affichée « en cours » trois heures.
- #6 et #9 (Nico) : session Codex jamais démarrée, tâche « en cours » ou « en plan » pendant 3 à 5 heures, sans alerte.
- La liste des tâches ne se réconcilie avec tmux que lorsqu'on la consulte, par l'écran des tâches ou par l'outil `tao_tasks_status` (`tasks.go:842`). Aucun balayage de fond.

### 2. Cartes de plan et questions du pilote jamais fermées

- Les sept cartes de la section 2.
- #27, 28/09 : carte de plan ouverte 58 minutes après ton « go » (détail en friction 4).
- #6 (Nico) : question du pilote ouverte 887 minutes. Tao avait lui-même noté qu'elle était « dépassée ». La réponse tardive de Nico a ensuite été relayée à l'agent comme un ordre de suspendre, juste après qu'il avait rouvert la tâche.
- Le pilote sait que ses questions sont tranchées et l'écrit (« ferme-la ou réponds-y B », #30 à 10:56), mais ne peut pas les fermer.
- Causes :
  - Une carte de plan ne se ferme que sur verdict ou remplacement (`plan.go:255,438,440`).
  - Une question du pilote ne se ferme que par une réponse dans la carte (`pilot.go:614`). Le statut « retirée » existe en base mais aucun code ne l'écrit. Le « défaut sûr » affiché sous ces questions ne s'applique jamais.
  - Ni toi ni Tao ne pouvez écarter ces deux cartes : le bouton « Écarter » n'existe que pour les questions du chat, et aucun outil de Tao ne ferme une carte de plan, une question du pilote ou une alerte (`tao.go:136`, `pilot.go:72`).
  - Le serveur renvoie toute carte ouverte, sans limite d'âge ni regard sur la tâche (`prompts.go:167`).
  - Le chat place en bas du fil, en pleine hauteur, ce qui est plus ancien que la conversation du jour (`TaoChat.vue:476-495`). Seules les cartes closes sont repliées (`TaoPromptCard.vue:476`).

### 3. Remise des messages aux agents

Cette friction a fait travailler des agents sur la mauvaise consigne.

- **#7, 29/09 : consignes arrivées deux heures après.** Trois messages de Tao partent entre 09:16 et 09:28. Le premier, le verdict sur le plan, est noté « remis » alors qu'il n'arrive qu'à 11:14. Les deux autres sont déclarés échoués à 09:48 et 09:58, et arrivent quand même à 11:15 et 11:16. Tous après le merge de la PR #8. L'un disait « ne fusionne pas la PR #8 », à l'inverse de ton accord de 09:07.
- **#7, 29/09 : ta réponse jamais relayée.** Tu réponds « seulement les 18 articles d'hier » à 09:56. Le pilote est arrêté par son plafond (friction 6) ; la réponse ne part pas. À 10:16 l'agent modifie deux articles que tu avais exclus.
- **#7, 28/09 : brief jamais arrivé.** La carte de lancement n° 17 est marquée « envoyée » à 09:35. L'agent Codex ne reçoit rien pendant 8 heures.
- **#21, 28/09 et #32 (Nico), 29/09 : merge fait par le serveur, agent non prévenu.** Dans #21 la vérification après déploiement n'a jamais eu lieu. Dans #32 l'agent a poussé 112 minutes de travail sur la branche d'une PR déjà mergée.
- **#6 et #9 (Nico) :** réponses remises 3 à 6 heures plus tard. Une question à choix ouverte dans Codex bloque toute la file.
- **#32 (Nico) :** quatre relances de la revue horaire jamais parties, sans trace au journal.
- **#22, 28/09 :** cinq messages annoncés « non remis » après 40 secondes ; l'agent, occupé, les a traités plus tard.
- Causes :
  - Pour Codex, le serveur déclare l'échec après 30 minutes (`confirmdelivery.go:41`) sans retirer le message de la file de Codex, qui le livre plus tard, hors contexte. Hypothèse à confirmer : Codex ne lit cette file qu'entre deux tours.
  - Pour Claude, une remise échouée est retirée de la messagerie depuis le 29/09.
  - Après un merge exécuté par le serveur (`merge.go:458`), aucun message ne part vers l'agent.

### 4. Plans envoyés en carte alors que tu parles à l'agent

- **#26, 29/09.** Tu écris à l'agent à 17:12 et 17:16, tu réponds à deux de ses questions. À 17:20 le plan v2 part en carte. Tu le refuses dans le terminal à 17:28, tu donnes le feu vert à 17:29. À 17:30 le plan v3 repart en carte. À 17:44 tu écris : « tu fais quoi là t'es tjs en mode plan ? ».
- **#23, 29/09 à 14:41.** Plan v3 « à valider par Tom » pour une consigne que tu venais de confirmer par une carte de reprise.
- **#27, 28/09 à 20:36.** Le pilote renvoie le plan v2 en carte alors que l'agent vient de te le présenter dans le terminal. Tu tapes « go » 3 secondes après ; la carte reste 58 minutes.
- **#5 (Nico).** Deux validations pour le même plan : terminal puis carte.
- Causes :
  - Quand tu as la main, le relecteur est toi et le plan part en carte dans le chat (`presence.go:90`, `plan.go:306`) : cas de #26 et #23.
  - Quand le pilote a un doute, il renvoie le plan à Tom en carte, sans regarder si tu es déjà dans le terminal (`plan.go:399-426`) : cas de #27 et #5.
  - Tes messages tapés pendant qu'un plan attend sont classés « réponse au plan » au journal (`hand.go:257`), sans effet sur la revue, la carte ni l'état « plan à valider ». #26 est restée 88 minutes dans cet état pendant que l'agent travaillait.
  - La présence « Je suis là » ne se prolonge que par des gestes dans l'interface de Tao (`presence.go:74`), jamais par ce que tu tapes dans un terminal.

### 5. La main ne dit pas qui pilote, et l'agent l'ignore

Rappel : depuis ta règle du 28/09 (« c'est moi qui décide si je reprend la main ou pas »), seul ton geste change la main. Avant, elle basculait dès qu'un texte était saisi dans le terminal ; c'est de cette période que datent les 14 changements de main en moins de 9 heures sur #5 (Nico), dont un déclenché par le brief injecté par le Harness.

- **Tu pilotes dans le terminal, la main reste à Tao, et Tao continue d'agir.** #30, 29/09 de 09:15 à 11:26 : tu donnes tes ordres à l'agent pendant que le pilote le relance, lui répond et te pose ses questions. Ton message de 11:27 : « tu m'as posé plein de question mais j'ai oublié de prendre la main tkt je gère ».
- **Tu as la main, et plus personne ne suit.** La revue horaire écrit alors « Main à Tom : écart signalé, pas de relance » : 20 fois en quatre jours. #7, 28/09 : un seul message tapé pour réveiller l'agent t'avait donné la main ; Tao s'est effacé 8 heures alors que l'agent n'avait pas sa mission.
- **Pilote arrêté, main toujours « à Tao ».** #7, et #32 chez Nico : l'écran dit que Tao pilote ; le pilote est arrêté depuis des heures.
- **Un message tapé pendant que l'agent travaille est invisible pour Tao.** Constaté sur cette tâche même : tes messages du 30/09 à 11:37 (retours de l'équipe) et à 12:36 ne sont pas au journal, et le pilote a demandé à l'agent de justifier une décision que tu venais de donner. Claude Code range ces messages à part dans le transcript ; le lecteur ne lit que les lignes de type `user` et `assistant` (`internal/transcript/read.go:455`).
- **L'agent ne sait pas qui a la main** (ta demande du 30/09 à 11:43). Les outils `task_*` ne la rendent pas. Prendre la main n'envoie rien à l'agent (`tasks.go:823`) ; seule la main rendue à Tao déclenche une demande de récapitulatif. #37 : l'agent t'attribue une validation de plan faite par Tao.
- Cause de fond : la main n'a que deux positions et ne dit rien de ta présence dans le terminal. Le serveur lit pourtant ce que tu y tapes toutes les 45 secondes (`hand.go:92`), sans que cela freine le pilote.

### 6. Pilote de fond

- **Le plafond de 6 gestes par heure arrête le pilote au pire moment.** #7 (29/09 09:30), #26 (11:02), #32 (Nico, 10:31). La tâche passe « bloquée », une notification part, et tes réponses ne sont plus relayées : c'est ce qui a envoyé l'agent de #7 sur le mauvais périmètre. Dans #7, les six gestes étaient ses propres questions et corrections de plan ; dans #32, Nico avait demandé que cela aille vite.
- **Le pilote contredit tes consignes.** #7 : « ne fusionne pas la PR #8 » après ton « tu merges tout seul ». #26, 29/09 à 10:33 : il met l'agent en pause sur les écritures en prod et te pose une question déjà tranchée ; ta réponse : « goood j'ai dis qu'il faisait ce qu'il voulait sur les déploiment merge etc ».
- **Il corrige des plans pour des doutes qu'il ne voit pas.** #34 : deux corrections en deux minutes. #32, #17, #31 : une correction parce que « les doutes manquent », alors qu'ils y étaient. Le plan transmis au pilote est coupé à 8 000 caractères (`prompt_task.go:169`) et la section « Doutes » est à la fin.
- **Il arrive après toi.** #7, 28/09 : « plan validé par Tao » remis 62 minutes après ton « go », quand la revue est livrée. #21 : tu valides 17 secondes après le dépôt du plan ; le pilote préparait encore son verdict.
- **Beaucoup de tours ne servent à rien.** 576 tours de pilote en quatre jours ; 230 se concluent par « rien à faire » (40 %). Sur les tâches de Tom : 78 sur 333 (23 %). Sur celles de Nico : 152 sur 243 (63 %). Les réveils sur jalon (89), sur inactivité (63) et sur fin de tour (56) en font l'essentiel.

### 7. Questions en double, déjà tranchées ou mal posées

Deux objets à ne pas confondre : la **question du chat**, posée par Tao dans la conversation, et la **question du pilote**, posée depuis une tâche.

- **Une question d'agent apparaît souvent deux fois** : l'alerte « question » de l'agent, puis la question du pilote 13 à 35 secondes après (#26, #28, #30, #33).
- **Deux pilotes posent la même question.** Incident du 29/09 : questions n° 15 (#26) et n° 16 (#30), même décision, à 17 secondes d'écart. En 17 minutes : 4 questions et 5 alertes sur deux tâches.
- **Deux questions identiques d'un même pilote** à 8 secondes d'écart (#7, n° 11 et n° 12). Tu as répondu deux fois la même chose.
- **Questions déjà tranchées.** #7, question n° 9 : tu avais répondu trois fois en 15 minutes dans le chat.
- **Questions du chat sans le bon choix.** Deux fois le 27/09, puis le 29/09 (Trello pour Body Expert, mail à Juliette) : tu réponds à côté, puis tu corriges. La réponse libre « Autre » existe depuis le 29/09.
- **Défaut appliqué trop vite sur une question du chat.** 30/09 à 11:24 : la question AMI est close par défaut 2 minutes 32 après sa création, parce que tu as cliqué ailleurs. À l'inverse, le défaut d'une question du pilote ne s'applique jamais (friction 2).

### 8. Trop d'alertes dans le chat

102 alertes épinglées dans ton chat en deux jours : 54 le 28/09, 48 le 29/09. Le 29/09 à 12:06, 27 alertes ont été masquées une à une en 38 secondes.

- **Livraisons : une alerte par fichier.** 46 alertes. #7 en compte 18, dont 5 en moins de deux minutes pour la même revue. #24 : 6 alertes en 21 secondes, quatre fichiers puis la même question deux fois. #28 : `HANDOFF.md` présenté comme un livrable.
- **Merges et mises en prod « sans ta validation » : 35 alertes, la plupart pour des actes que tu avais autorisés.**
  - 13 merges ont produit deux alertes à une seconde d'écart : le hook de la garde et sa version de la commande `gh` signalent chacun le même acte.
  - #27 : 15 alertes (12 merges, 3 mises en prod) autorisées par le brief. #31 : 4.
  - #30, 29/09 : tu tapes « ouvre la pr stp merge et déploie » 33 secondes avant. La phrase a validé le déploiement, pas le merge.
  - #25, 29/09 à 22:01 : tu demandes les liens Vercel ; trois alertes en 55 secondes restent épinglées 13 heures.
  - Une simple lecture a levé une alerte : `vercel env ls` (#30).
- Causes :
  - Une alerte par événement, clé unique par source (`reports.go:210`).
  - Seules les alertes question et blocage se ferment seules (`needs.go:162`).
  - La reconnaissance d'une validation ne lit pas le brief, ne remonte pas au-delà de deux heures et rate certaines tournures (`tomorder.go:66`, `gestures.go`).

### 9. Revue horaire

- **48 des 136 « oublis » sont les messages du développeur lui-même** (37 de Tom, 11 de Nico). Quand tu parles à l'agent, la revue écrit « N messages de Tom non signalés », même si l'agent les a rapportés : 12 sur 20 dans #25, et aussi #20, #23, #26, #27, #30. Cause : le test cherche un événement `tom_wrote` que rien ne produit (`review.go:359`).
- **Elle relance des agents qui ont fini.** #8 : la relance fait redéclarer « terminé », d'où trois notifications pour une PR. #24 : l'agent doit justifier une recherche que tu avais demandée et rétablir quatre jalons.
- **Sa relance pour silence n'offre pas « terminé »** : « réponds par un task_milestone (atteint, question ou bloque) » (`review.go:601`). #18 (Nico) reste « point d'étape » 12 heures.
- **Elle change l'état à tort** : #8 et #26 passent de « merge à valider » à « attend une réponse » (à confirmer).
- **Elle cite du texte d'agent comme une question ou un blocage** (#23, #25).
- À garder : elle a repéré une vraie question posée en texte libre (#26, 29/09 à 18:58).

### 10. Protocole des agents

- **`termine` sert à annoncer chaque PR.** #27 : trois « terminé » successifs, trois cycles « merge à valider » puis réouverture. #7 : six. #34 (Nico) : six, donc sept notifications « tâche terminée » en 90 minutes.
- **La vraie fin n'est pas annoncée.** #27 : fin dite par `tao_report` au lieu du jalon, tâche figée en « session terminée ».
- **Le plan n'est pas mis à jour quand le travail change** (#25, #29, #32). `task_plan_update` existe depuis le 29/09.
- **Plan déclaré comme une question** (#7, 28/09) : cinq jalons refusés ensuite.
- **Un sous-agent déclare un jalon** à la place de l'agent principal (#24).
- **Diffusion générale du 28/09 à 13:09** (« protocole de suivi ») : des tâches finies redéclarent « terminé », notifications en double (#8, #19).
- **Codex** : la session garde l'identifiant de l'ancienne tâche (#18), le plan n'est pas enregistré comme revue (#6). À confirmer : `etape=0` refusé (#6), livrables donnés en chemins `/opt/` que Nico ne peut pas ouvrir (#5, #18).

### 11. Chat trop lourd, et parfois muet

- **Tours chargés.** 30/09 à 11:22 : 2 050 caractères, 13 appels d'outils, une carte de compréhension, une question et deux listes. Ta réponse à 11:23 : « J'ai trop de questions d'hier trop d'info dans l'inface tao je ne vois rien là ». Longueur médiane d'une réponse de Tao : 1 100 à 1 300 caractères du 27 au 29/09, 520 le 30/09.
- **Répétitions.** 14 messages du 28/09 répètent « rien n'est lancé ». Le 30/09, trois messages de suite redonnent la liste des cartes à valider, avec des numéros qui changent.
- **Quatre gestes de ta part en médiane** entre une demande et son lancement ; neuf pour La Fée Clochette le 28/09 (trois compréhensions, six cartes).
- **Cartes refaites.** 27/09 : huit cartes pour une demande. 30/09 : six cartes pour trois lancements en cinq minutes.
- **Affirmations périmées, sept cas.** 28/09 à 19:39 : « envoie ton export Semrush », déjà traité par l'agent. 28/09 à 12:53 : « toujours à lancer : 33, 34, 35 », déjà lancées. 30/09 à 11:43 : « rien ne t'attend » alors qu'une carte de plan t'attendait.
- **Tao muet ou interrompu.** 27/09 à 17:27 : pas de réponse, tu envoies « ? ». 28/09 à 13:08 : « exit status 143 », tu ne sais plus quels messages sont partis. 30/09 à 11:29 : tour interrompu, tu relances « tu as vu ? ». C'est aussi le retour n° 9 de Nico.
- **Cartes de merge expirées le soir** : quatre le 28/09, deux sur #26. Tu dois demander à Tao de les reproposer.
- **Détails d'affichage** : la question ouverte du chat est rendue deux fois (dans le fil et épinglée) ; le bloc « Propositions » de chaque ancien tour reste déplié ; les plans d'un agent s'affichent en anglais (#26) ; le markdown brut apparaît dans la colonne des tâches ; quatre fils vides créés en une minute le 30/09 ; sur les tâches de Nico, des libellés disent « Tom ».

### 12. Notifications push

Aucune notification n'est jamais partie : 316 en file (218 pour toi, 98 pour Nico), toutes « aucun appareil abonné ». Aucun navigateur ne s'est abonné depuis la mise en service du 27/09. Ce que tu appelles « trop de notifications », ce sont les alertes épinglées de la friction 8.

Le jour où un appareil s'abonne, la file actuelle t'enverrait une centaine de notifications par jour (119 le 28/09, 92 le 29/09) : questions en double, « tâche terminée » répétées, « revue : action attendue » pour des silences normaux (11 en 36 heures sur #25), « bloquée » pour le plafond du pilote. Seules les alertes tiennent compte de ta présence (`reports.go:233`), pas les autres envois.

## 4. Ce qui marche et qu'il faut garder

- **Plans validés par Tao sans carte**, en 13 à 55 secondes, quand tu n'es pas là (#27, #30, #31, #38). Il a vu un vrai risque au moins une fois : un push qui aurait déclenché un déploiement (#17).
- **Questions du chat bien posées** : réponse en moins d'une minute en médiane. Les questions du pilote attendent 7 minutes en médiane.
- **Réponse par la carte, relais et reprise de l'agent en moins d'une minute** (#30 à 09:58, #33).
- **Besoin effacé au bon moment** quand tu réponds, par la carte ou dans le terminal (#7, #25, #26, #30).
- **Relais de tes consignes avec preuve de remise** : pris en compte en 6 à 15 secondes sur Claude (#31, #38).
- **Carte de merge exécutée par le serveur** : 105 secondes de la proposition au commit vérifié (#32).
- **« Comment avancent les discussions ? »** : état de quatre tâches en 18 secondes, lu dans les transcripts. Tu l'as utilisé six fois le 28/09.
- **Vérification de remise dans le transcript** : c'est ainsi que Tao a découvert le brief jamais arrivé de #7.
- **Le pilote arrête un agent** : 33 secondes après l'alerte VPS, « ne lance aucune action Hostinger » (#26).
- **Tao reconnaît ses erreurs** et en fait des leçons ; ses réponses ont raccourci dès ta remarque du 30/09.

## 5. Retours de l'équipe

Tu as demandé de regarder les retours de l'équipe « d'après le 23 oct » : je l'ai lu comme après le 23 septembre. Ce sont trois retours de Nico, tous sur Tao.

| Retour | Demande | Constat |
|---|---|---|
| n° 8, 29/09 | Déplacer les échéances de la colonne de gauche vers un onglet calendrier | La colonne empile tâches puis « journée » (`TaoBrief.vue`, 680 lignes) ; rejoint l'allègement de l'écran |
| n° 9, 29/09 | « Tao n'a pas répondu en 4 min », la conversation reste bloquée | Délai fixe de 4 minutes par tour (`internal/tao/engine/chat.go:353`) ; à reproduire et mesurer (voir friction 11) |
| n° 10, 29/09 | Ouvrir une discussion dans un nouvel onglet | « Ouvrir la discussion » remplace la page (`TaoTasks.vue:72`, `TaoAlerts.vue:101`) |

Les retours n° 3 à n° 7 du 23/09 ont été traités par la branche `tom/boite-a-suggestion-nicolas` mais sont toujours « nouveau ». La page Retours sait changer un statut ; les agents n'ont qu'un accès en lecture, et un retour résolu reste dans la liste.

## 6. À signaler à part

- **Incident du VPS n8n, 29/09 (tâche #30).** C'est le fait le plus grave de la période : base AMI Ops effacée, écritures de Medusa Eats, de France Justice et historiques n8n du 22 au 29/09 perdus. Côté Tao : avant le feu vert, le pilote n'avait vérifié et relayé que la dépendance de Body Expert. La règle d'inventaire ajoutée le jour même reste une consigne ; rien ne la vérifie. La question n° 17 (qui prévenir) est toujours ouverte.
- **PR ouvertes que Tao ne montre plus :**
  - `lafeeclochette#7` : correctif déjà déployé en prod par toi, pas encore sur `main` (#20).
  - `aminocodb#6` : tout est appliqué en prod, carte de merge expirée (#26).
  - `paf-studio-code#251` : passation de #27.
  - `covalba-automatisation-devis#2` : carte de merge écartée (#8).
  - `juliette-riou#10` et `ami-agent#1` : affichées correctement.
- **Session Claude en double** sur la discussion Codex de #7, ouverte par la carte de lancement n° 52 : elle est toujours la session enregistrée de la tâche.
- **Session Codex fantôme de #14** (Nico) : elle notifie « session figée » toutes les 24 heures.

## 7. Ce que cela implique pour la V2

Ce sont des directions ; le plan V2 (étape 2) les détaillera écran par écran, avec les cas de panne.

1. **Un seul élément « à traiter » par tâche**, qui se met à jour ou disparaît quand la tâche bouge. Frictions 1, 2, 7, 8.
2. **Le terminal compte autant que l'interface.** Une réponse, un feu vert ou un merge tapés dans le terminal ferment la carte, la question et le besoin correspondants, y compris quand tu les tapes pendant que l'agent travaille. Frictions 2, 4, 5.
3. **L'état se vérifie sur des faits**, par un balayage régulier : état de la PR, session vivante, activité de l'agent, réouverture sans suite. Friction 1.
4. **La main reste ta décision, mais Tao tient compte de ta présence dans le terminal.** Il se tait quand tu parles à l'agent, sans changer la main ; l'agent sait à tout moment qui l'a. À arbitrer avec toi : jusqu'où Tao s'efface quand tu écris sans avoir pris la main, puisque tu as supprimé la bascule automatique le 28/09. Friction 5.
5. **Tao peut ranger** : fermer, fusionner, reformuler, corriger un état avec preuve. Friction 2.
6. **Une seule voix par fait** : l'agent, le pilote, la revue et la garde alimentent le même élément au lieu d'en créer quatre. Frictions 6 à 9.
7. **Une remise datée** : une consigne périmée se retire, un merge fait par le serveur s'annonce à l'agent, un retard se voit, et le plafond du pilote ne coupe plus le relais de tes réponses. Frictions 3 et 6.
8. **Un protocole plus simple pour les agents** : un jalon par PR qui ne clôt pas la tâche, une fin unique, un plan qui suit le travail. Friction 10.
9. **Un chat court par défaut** : ce qui t'attend en tête, l'ancien replié, moins de gestes avant un lancement. Friction 11.
10. **Décider du sort du push** : le retirer, ou l'activer avec une notification par tâche au plus. Friction 12.

## 8. Limites de l'audit

- Les transcripts Codex sont moins complets que ceux de Claude. #14 n'a pas de chronologie propre ; #36 a été lue dans le transcript brut.
- Les heures des appels d'outils dans les chronologies peuvent être décalées de quelques minutes ; les lecteurs ont daté sur le transcript brut pour les cas cités.
- 20 écarts sur 190 sont marqués incertains par les lecteurs. Ceux qui sont cités ici portent la mention « à confirmer ».
- Les notes de fidélité viennent de quatre lecteurs, sans barème commun : elles donnent un ordre de grandeur.
- Personne n'a vu ton écran en direct : les durées d'affichage viennent des dates de création, de clôture et de masquage en base.
- Le chat de Nico n'a pas été lu. Ses tâches l'ont été en lecture seule, sans le contacter ni toucher à son Tao.
- Les causes citées avec un fichier et une ligne ont été relues dans le code, deux fois. Les autres sont des hypothèses à confirmer à l'étape 2.

## Annexe A. État affiché et réalité, tâche par tâche

Fidélité : jugement du lecteur sur toute la vie de la tâche, pas seulement sur l'état final. Quatre lecteurs, sans barème commun.

| Tâche | Dev | Affiché au 30/09 | Réalité | Fidélité |
|---|---|---|---|---|
| #1 | Tom | Abandonnée, fusionnée dans #22 | Livrable fait le 27/09, jamais clos | Moyenne |
| #2 | Tom | Terminée, jalon 2 « en cours » | Finie ; une consigne donnée après la fin a été exécutée sans trace | Moyenne |
| #3 | Tom | Session terminée | Finie le 27/09 ; jalon de fin refusé 3 secondes avant la réouverture | Moyenne |
| #4 | Tom | Terminée | Conforme | Bonne |
| #5 | Nico | Terminée | Tout livré ; 14 changements de main en moins de 9 heures, fin annoncée 10 heures après | Moyenne |
| #6 | Nico | Terminée | Livrée ; session absente pendant les 276 premières minutes | Mauvaise |
| #7 | Tom | Attend ta réponse, pilote arrêté | Agent inactif depuis le 29/09 à 11:18 ; PR #8 mergée ; périmètre déjà tranché | Mauvaise |
| #8 | Tom | Attend ta réponse | Finie le 28/09 ; PR #2 ouverte, à relire | Moyenne |
| #9 | Nico | Terminée | Livrée ; trois heures « en plan » sans session | Moyenne |
| #10 | Tom | Abandonnée, fusionnée dans #22 | PR #224 et #225 mergées | Moyenne |
| #11 | Tom | Abandonnée, fusionnée dans #12 | Doublon de #12 pendant 7 h 30 | Moyenne |
| #12 | Tom | En cours, main à Tom | Analyse livrée le 28/09, agent inactif | Mauvaise |
| #13 | Tom | Session terminée, jalons 3 à 9 « à faire » | Brouillon prêt, tâche finie | Moyenne |
| #14 | Nico | Abandonnée | Mission reprise sous #18 ; une session fantôme reste ouverte | Moyenne |
| #15 | Nico | Abandonnée, fusionnée dans #18 | Mission accomplie | Mauvaise |
| #16 | Nico | En cours | L'agent attend le ton et quatre arbitrages de Nico | Moyenne |
| #17 | Nico | Terminée | Conforme ; 196 minutes « en cours » après la fin | Moyenne |
| #18 | Nico | Terminée | Tout livré ; 12 heures en « point d'étape » après la fin | Moyenne |
| #19 | Tom | Terminée, 7 jalons « à faire » sur 12 | Finie | Bonne |
| #20 | Tom | En cours | PR #6 mergée, agent fini ; PR #7 ouverte, non suivie | Mauvaise |
| #21 | Tom | Terminée, jalon 5 « en cours » | PR mergée ; vérification après déploiement jamais faite | Moyenne |
| #22 | Tom | Terminée | Conforme | Moyenne |
| #23 | Tom | Merge à valider, carte de plan v3 ouverte | PR #10 ouverte, à relire ; travail fini le 29/09 | Moyenne |
| #24 | Tom | Session terminée | Tout livré le 28/09 | Moyenne |
| #25 | Tom | En cours, étape 5 sur 5 | Livrables bien au-delà du plan ; l'agent attend ta relecture (à confirmer) | Moyenne |
| #26 | Tom | En cours, pilote arrêté, carte de plan et deux questions ouvertes | Travail en cours ; PR #6 ouverte ; incident clos | Mauvaise |
| #27 | Tom | Session terminée, besoin « facturation GitHub » | Finie le 28/09 ; PR #251 ouverte | Mauvaise |
| #28 | Tom | Session terminée | Finie le 28/09 | Moyenne |
| #29 | Nico | Terminée | Conforme | Bonne |
| #30 | Tom | Attend ta réponse, jalons 2 à 5 « à faire » | PR #252, #253 et #256 mergées ; question n° 16 tranchée dans le terminal, question n° 17 sans réponse | Mauvaise |
| #31 | Tom | Merge à valider | PR #254 mergée et déployée | Mauvaise |
| #32 | Nico | Attend une réponse, pilote arrêté, étape 7 sur 7 | Maquettes livrées, besoin réel ; étape fausse ; le besoin nomme Tom au lieu de Nico | Mauvaise |
| #33 | Nico | Attend une réponse | Travail fini ; Nico a choisi de laisser le push en attente | Moyenne |
| #34 | Nico | Terminée | Conforme ; sept notifications de fin en 90 minutes | Moyenne |
| #35 | Nico | Merge à valider | PR #3 en brouillon ; le merge a échoué | Moyenne |
| #36 | Tom | En cours | Conforme | Bonne |
| #37 | Tom | Point d'étape | Conforme | Bonne |
| #38 | Tom | En cours | Conforme (cette tâche) | Bonne |

## Annexe B. Chiffres

| Mesure | Valeur |
|---|---|
| Tâches auditées | 38, du 27/09 au 30/09 |
| Écarts relevés dans les tâches | 190, dont 20 incertains |
| Frictions relevées dans le chat | 77, dont 28 remarques de Tom sur Tao |
| Fidélité de l'affichage | 6 bonnes, 22 moyennes, 10 mauvaises |
| Événements au journal des tâches | 2 789 |
| Tours du pilote de fond | 576, dont 230 conclus par « rien à faire » (Tom 78 sur 333, Nico 152 sur 243) |
| Plans confiés à Tao | 37 : 23 validés par lui, 10 corrigés, 4 validés par le développeur avant lui ; verdict en moins de 75 secondes |
| Plans envoyés au développeur | 11, dont 3 encore en attente et 3 remplacés sans verdict |
| Questions du pilote | 22 (10 à Tom, 12 à Nico), dont 4 encore ouvertes, toutes chez Tom |
| Alertes dans le chat de Tom | 102 : 46 livraisons, 35 gestes, 18 questions, 3 blocages |
| Notifications en file | 316 (218 pour Tom, 98 pour Nico), aucune envoyée |
| « Oublis » de la revue horaire | 136, dont 48 sont des messages du développeur (37 de Tom, 11 de Nico) |
| Cartes de lancement de Tom | 48 : 35 lancées, 7 remplacées, 5 écartées, 1 expirée |
| Gestes de Tom entre une demande et son lancement | 4 en médiane |
| Tâches qui ont annoncé « terminé » plus d'une fois | 17 |
