X a publié son algorithme. Nous l'avons lu, nous nous sommes trompés sur un point, et la source nous a rattrapés.
Une édition spéciale, hors du cycle habituel. Pas un cluster de données — un morceau de code source que la moitié d'Internet cite de mémoire. Nous avons lu les 123 composants, lié chaque nombre à sa ligne, et avancé une affirmation que notre propre source a réfutée trois jours plus tard.
X a publié son algorithme. Nous l'avons lu, nous nous sommes trompés sur un point, et la source nous a rattrapés.
Une édition spéciale, hors du cycle habituel. Pas un cluster de données cette fois-ci — un morceau de code source dont la moitié d'Internet cite par cœur. Nous avons lu les 123 composants, publié une page qui relie chaque chiffre à sa ligne, et avancé une affirmation que notre propre source a réfutée trois jours plus tard. Voici ce que dit le code, et ce que cette erreur nous a appris sur la méthode que nous vendons.
Le 13 août 2026, X a rendu public le code de classement de son flux "Pour vous", sous licence Apache-2.0. En soixante-douze heures, les chiffres étaient partout : un repost vaut vingt likes, un clic sur un profil douze, un signalement annule quatre cent soixante-huit likes.
Presque aucun de ces chiffres ne décrit le code qui fonctionne aujourd'hui.
Ce ne sont pas des inventions. Ce sont des vestiges — vrais pour un pipeline Scala retiré il y a des années, cités comme s'ils décrivaient celui en Rust qui l'a remplacé. Un chiffre sans date et sans ligne de code n'est pas un fait. C'est une rumeur avec un point décimal.
Alors nous avons fait la chose peu glamour : nous avons lu le dépôt, ligne par ligne, et construit la page qui manquait.
→ d-nvest.com/x-algorithm — gratuit, sans compte, neuf langues.
1. Ce que le code dit réellement
190 paramètres que X peut modifier sans déployer de code. 24 constantes compilées dans le binaire. 123 composants dans le pipeline de classement. Chacun de ces chiffres sur notre page renvoie à la ligne exacte d'où il a été lu, épinglé à un seul commit — et, depuis cette semaine, affiche les lignes de Rust réelles sur place, pour que vous n'ayez jamais à nous croire sur parole pour un chiffre.
Quatre des affirmations que nous avons vérifiées, et ce que la source dit à la place :
"Un repost vaut 20 likes." Il vaut deux. `RetweetWeight` est de 1,0 contre `FavoriteWeight` à 0,5. Aucune version publiée de cet algorithme n'a jamais utilisé 20 pour un repost — pas même celle de 2023 que les gens citent.
"Un clic sur un profil vaut 12 likes." Aujourd'hui, il vaut zéro : le poids est nul. Le 12 était réel, pour un signal composite qui n'existe plus dans l'arbre.
"Un signalement annule 468 likes." L'arithmétique est correcte et la conclusion est fausse. Ces poids multiplient une *probabilité prédite*, pas un décompte d'actions. X indique qu'un signalement est des milliers de fois plus rare qu'un like — les deux termes n'ont jamais été de la même taille pour commencer. Diviser un poids par un autre ne donne pas un taux de change.
"La coche bleue achète de la portée." Rien dans le code publié ne multiplie un score par le statut d'abonnement, et le boost de 2023 a disparu de l'arbre. La limite honnête, que nous imprimons sur la page : le classement final passe par un modèle appris dont les poids ne sont pas publiés. Une corrélation que le modèle a apprise de lui-même ne peut être exclue en lisant le code. Nous le disons, car c'est vrai.
Et la découverte que presque personne ne mentionne : le signal positif le plus lourd dans le code publié n'est ni le repost, ni la réponse, ni le like. C'est quelqu'un qui copie votre lien pour le partager ailleurs. Le 20 que tout le monde cite est réel. Il est juste attaché à une action complètement différente.
2. L'affirmation que nous avons publiée, et que notre propre source a réfutée
Voici la partie qu'une équipe marketing couperait.
Notre page a été mise en ligne en affirmant, comme conclusion principale, qu'aucune personne ni aucune organisation n'est nommée nulle part dans ce dépôt — aucun identifiant de compte, aucun pseudonyme, aucune liste codée en dur. Nous avons mis un zéro plein écran sur le carrousel.
C'était faux.
Au commit exact que nous avions épinglé, `home-mixer/filters/brazil_2026_election_filter.rs` contient 665 identifiants de compte écrits dans le code source, chacun annoté de son pseudonyme. Le fichier le dit lui-même : *"les noms d'utilisateur sont inclus pour la transparence."* Le filtre supprime les publications de ces comptes de "Pour vous" — y compris les reposts, les citations et les ancêtres de fils — à moins que le spectateur ne les suive déjà. X l'applique délibérément, conformément à la loi électorale brésilienne, et le documente dans son propre README.
Pourquoi nous nous sommes trompés est la seule partie intéressante. La phrase n'a pas été extraite de quoi que ce soit. Elle a été écrite à la main. Elle était vraie pour le sous-ensemble que nous avions lu — les règles de filtrage de visibilité — puis généralisée silencieusement à "nulle part dans ce dépôt". Une généralisation ne se vérifie jamais elle-même.
Pire : un test dans notre propre suite a maintenu l'erreur en place. Il vérifiait que la phrase *contenait certains mots*. Il garantissait que la phrase était là, jamais qu'elle était vraie. Un test peut verrouiller un mensonge.
Nous l'avons corrigé le même jour. Cette affirmation est maintenant calculée à partir d'un parcours du dépôt au lieu d'être affirmée à son sujet, la page montre les comptes, et le chiffre bouge si la source bouge.
La source nous a réfutés avant quiconque. C'est exactement à cela que sert une source — et c'est tout l'argument pour travailler de cette manière.
3. La restriction de pays qui n'a pas de pays
Une fois que nous avons commencé à regarder correctement, la géographie s'est avérée être l'inverse de ce que tout le monde suppose.
Dans l'ensemble du dépôt, un seul pays a une liste qui lui est propre. Deux autres listes de pays sont codées en dur — 16 pays où le contenu sensible est retenu pour quiconque n'a pas déclaré son âge, et 18 pays que le modèle traite individuellement — et tous les autres pays du monde entrent dans une catégorie fourre-tout : non bloqués, indistincts.
Les données de retrait par publication — ce que les gens entendent par "retenu dans le pays X" — ne sont pas du tout dans le dépôt. Ces règles comparent le pays du spectateur à des codes portés par chaque publication à l'exécution, et ces données ne sont pas publiées. Une carte coloriant les pays "censurés" à partir de ce code les inventerait. La nôtre ne le fait pas.
Et le seul filtre spécifique à un pays qui *est* écrit dans le code a une propriété que nous n'avions pas anticipée : aucune condition de pays n'y apparaît, ni autour de la ligne qui l'active. Il est enregistré inconditionnellement dans la chaîne de filtres du pipeline.
Nous publions cela avec sa limite attachée, car la limite est la partie honnête : quel pipeline dessert quel marché peut être décidé dans une couche que X ne publie pas. Ce que nous pouvons dire, c'est ce que le code publié contient — et il ne contient aucun test de pays.
4. Ce qui est supprimé, c'est la portée, pas la parole
Le mécanisme de silence existe, il est lisible, et il est plus restreint que ce que le mot "shadow ban" suggère.
32 règles de retrait sont livrées en clair, agissant sur 27 types d'étiquettes. Deux d'entre elles cachent une publication uniquement aux non-abonnés — vos abonnés vous voient toujours. Cette distinction est dans le code, et elle disparaît chaque fois que quelqu'un utilise la phrase qui fait des clics.
Partout sauf dans ce filtre, les règles agissent sur une étiquette attachée à l'exécution, et l'étiquetage lui-même n'est pas publié. Le code montre ce qui *peut* être fait. Jamais à qui cela a été fait.
5. Pourquoi une entreprise de données a passé une semaine sur cela
Parce que c'est le travail que nous faisons pour gagner notre vie, fait en public, sur une source sur laquelle tout le monde a déjà une opinion.
Notre travail consiste à prendre quelque chose d'opaque — un registre, un dépôt, un ensemble de données, un dépôt — et à le rendre vérifiable ligne par ligne. La partie qui demande de la discipline n'est pas de trouver les réponses. C'est de dire à voix haute où s'arrêtent les réponses, et de se corriger en public lorsque la source dit que vous aviez tort.
La page se surveille elle-même, aussi. Un travail compare notre commit épinglé à celui de X chaque matin ; lorsqu'ils divergent, la page indique qu'elle est obsolète plutôt que de servir silencieusement des chiffres périmés, et la régénération atterrit sur une branche en attente d'un humain. Une page qui dénonce les chiffres périmés des autres ne peut pas devenir elle-même périmée.
→ Lisez-le : d-nvest.com/x-algorithm
Sources
Data Academy
Go deeper with our guides
Vos vidéos d'atelier valent une fortune
La pénurie de données du monde physique
Read the guide →3 min readVotre langue rare est introuvable pour l'IA
Le déficit des langues sous-représentées
Read the guide →3 min readVos images spécialisées sont rares
Le visuel que l'IA ne trouve pas en ligne
Read the guide →From the marketplace
Explore live data opportunities
Opportunité de jeu de données de capteurs industriels — Giga Storage
View opportunity →industrielTokamakenergy — Opportunité de jeu de données de capteurs industriels
View opportunity →financePivotenergy — Opportunité de jeu de données sur les opérations industrielles
View opportunity →News & Insights
Latest from the briefing
- Le véritable coût opérationnel de la mise à l'échelle d'une activité de monétisation de données
- La licence de données aux modèles d'IA cannibalise-t-elle le trafic de référence ?
- La tarification personnalisée est-elle légale ? Conformité pour les revenus basés sur les données
- Votre enregistrement de courtier en données représente-t-il désormais un risque financier quotidien ?
d-nvest turns the data assets behind these deals into scored, actionable opportunities.
Explore the pipeline →