Sachin Malhotra, ingénieur chez Anthropic, raconte comment l'entreprise a dû refondre son service de test impact analysis sous la pression du codage agentique. Le point de départ est une chaîne de chiffres : les ingénieurs livrent en moyenne huit fois plus de code par trimestre qu'entre 2021 et 2025, Claude en écrit 80 % et intervient largement dans la revue et l'approbation des PR, le nombre de tests a été multiplié par dix à effectifs quasi constants. Le produit de tout cela est une multiplication par vingt-cinq des jobs CI en six mois. Écrire du code n'est plus la contrainte ; une fois la revue accélérée, c'est la CI qui encaisse.

Le service repose sur deux composants déterministes qui doivent rester synchronisés : un listener, qui enregistre les résultats de chaque exécution, et un selector, qui lit cet historique pour décider quels tests s'exécutent sur chaque PR. Tenir un historique par test imposait un écrivain unique, donc un processus unique, donc l'impossibilité de sharder horizontalement. Le mode de défaillance est le retard du listener : vingt minutes suffisent à laisser des dizaines de milliers de mises à jour non appliquées, ce qui déclenche des investigations inutiles, laisse des tests instables bloquer des merges, et empêche un test corrigé ou ajouté de s'exécuter.

20 minutes of listener lag can translate into tens of thousands of test updates not being applied

— Sachin Malhotra , claude.com

Trois correctifs se succèdent, dont la durée de vie s'effondre : doubler les cœurs tient soixante-dix jours ; sharder par package — le listener n'avait pas besoin d'un écrivain unique global mais d'un par package, et Claude en a écrit le code — tient vingt-neuf jours ; les redémarrages quotidiens tiennent moins d'un jour. Entre-temps, une session longue dans une version interne de Claude Tag surveille le service et alerte au-delà de cinquante mille jobs de retard ; elle plaide la refonte pendant des mois, l'équipe préfère la rustine.

La refonte donne au service un magasin de données en mémoire. Chaque worker listener traite n'importe quel résultat, l'ajoute à un journal et repart sans rien conserver : sans état, donc scalable horizontalement. Un consommateur séparé agrège le journal en historique par test toutes les quelques secondes. Plus coûteux à exploiter, mais scalable et profilable. Trois semaines pour un ingénieur, contre un trimestre un an plus tôt.

Les leçons tiennent en quatre règles : anticiper l'exponentielle et supposer une charge vingt-cinq fois supérieure dans deux trimestres, dimensionner la v0 pour dix à vingt fois l'échelle perçue, instrumenter les services pour qu'ils servent d'yeux et d'oreilles à Claude, et garder l'état hors du processus dès le départ.