Le compactage ne se declenchait qu'au DEBUT d'un tour, avec le contexte du
tour precedent. Le tour qui faisait franchir le seuil se terminait donc a
81% sans rien declencher : la jauge restait haute, seul le bouton manuel
apparaissait, et le compactage automatique semblait mort.
- seuil reteste a trois moments au lieu d'un : debut de tour (inchange),
PENDANT la boucle d'outils, et EN FIN de tour des que le seuil est franchi
- une compaction faite en cours de tour etait perdue : l'appelant
reconstruisait l'historique en ajoutant les messages du tour a sa copie
d'AVANT compaction. Le fil complet revenait, la jauge retombait a 43% puis
explosait a 92% au message suivant. Elle publie desormais sa nouvelle vue
(StreamEvent.NewHistory), qui REMPLACE l'historique. Meme correction pour
le filet de secours sur erreur 500 et pour le client terminal.
- la queue protegee reculait jusqu'au message `user` precedent. Pendant une
longue recherche il n'y en a aucun : la queue avalait toute la sequence
d'outils, torse vide, compaction sans effet — les pages web qui remplissent
la fenetre etaient justement celles qui etaient protegees. Elle peut
maintenant demarrer sur un `assistant`, frontiere tout aussi sure (il part
avec ses resultats d'outils). Test de regression ajoute.
- une compaction sans effet ne disait plus rien : toast explicite + une ligne
[compact] par decision dans le journal (ctx, seuil, avant/apres, changé)
UI : la mini-banniere au-dessus de la saisie doublonnait les trois points
animes de l'IA. L'indicateur existant est desormais etiquete « compactage du
contexte… » en accent, et une marque discrete reste DANS le fil a l'endroit
de la coupure — elle survit au rafraichissement, contrairement au toast.