x algorithmopen sourcealgorithmic transparencymethodprovenance18 de agosto de 2026

X publicó su algoritmo. Lo leímos, nos equivocamos en una cosa y la fuente nos corrigió.

Una edición especial, fuera del ciclo habitual. No es un clúster de datos — es un fragmento de código fuente que la mitad de internet cita de memoria. Leímos los 123 componentes, vinculamos cada número a su línea y emitimos una afirmación que nuestra propia fuente refutó tres días después.

X publicó su algoritmo. Lo leímos, nos equivocamos en una cosa y la fuente nos corrigió.

Una edición especial, fuera del ciclo habitual. Esta vez no es un clúster de datos, sino un fragmento de código fuente del que la mitad de internet cita de memoria. Leímos los 123 componentes, publicamos una página que vincula cada número con su línea y emitimos una afirmación que nuestra propia fuente refutó tres días después. Esto es lo que dice el código y lo que ese error nos enseñó sobre el método que vendemos.

El 13 de agosto de 2026, X hizo público el código de clasificación de su feed "Para ti", bajo la licencia Apache-2.0. En setenta y dos horas, los números estaban por todas partes: un repost vale veinte likes, un clic en el perfil doce, un reporte cancela cuatrocientas sesenta y ocho likes.

Casi ninguna de esas cifras describe el código que se ejecuta hoy.

No son invenciones. Son restos — ciertos para un pipeline de Scala retirado hace años, citados como si describieran el de Rust que lo reemplazó. Un número sin fecha y sin línea de código no es un hecho. Es un rumor con un punto decimal.

Así que hicimos lo poco glamuroso: leímos el repositorio, línea por línea, y construimos la página que faltaba.

d-nvest.com/x-algorithm — gratis, sin cuenta, nueve idiomas.

1. Lo que dice realmente el código

190 parámetros que X puede cambiar sin enviar código. 24 constantes compiladas en el binario. 123 componentes en el pipeline de clasificación. Cada uno de esos números en nuestra página enlaza a la línea exacta de la que se leyó, fijado a un único commit — y, desde esta semana, despliega las líneas reales de Rust en su lugar, para que nunca tenga que fiarse de nuestra palabra para una cifra.

Cuatro de las afirmaciones que comprobamos, y lo que dice la fuente en su lugar:

"Un repost vale 20 likes." Vale dos. `RetweetWeight` es 1.0 frente a `FavoriteWeight` en 0.5. Ninguna versión publicada de este algoritmo usó jamás 20 para un repost — ni siquiera la de 2023 que la gente cita.

"Un clic en el perfil vale 12 likes." Hoy vale nada en absoluto: el peso es cero. El 12 era real, para una señal compuesta que ya no existe en el árbol.

"Un reporte cancela 468 likes." La aritmética es correcta y la conclusión es errónea. Esos pesos multiplican una *probabilidad predicha*, no un recuento de acciones. X afirma que un reporte es miles de veces más raro que un like — los dos términos nunca tuvieron el mismo tamaño desde el principio. Dividir un peso por otro no da una tasa de cambio.

"El check azul compra alcance." Nada en el código publicado multiplica una puntuación por el estado de suscripción, y el impulso de 2023 ha desaparecido del árbol. El límite honesto, que imprimimos en la página: la clasificación final pasa por un modelo aprendido cuyos pesos no se publican. Una correlación que el modelo aprendió por sí solo no puede ser descartada leyendo el código. Lo decimos, porque es verdad.

Y el hallazgo que casi nadie menciona: la señal positiva más fuerte en el código publicado no es el repost, la respuesta o el like. Es alguien copiando tu enlace para compartirlo en otro lugar. El 20 que todos citan es real. Simplemente está asociado a una acción completamente diferente.

2. La afirmación que emitimos, y que nuestra propia fuente refutó

Aquí está la parte que un equipo de marketing eliminaría.

Nuestra página se publicó diciendo, como hallazgo principal, que no se nombra a ninguna persona ni organización en ningún lugar de ese repositorio — ni ID de cuenta, ni handle, ni lista codificada. Pusimos un cero a pantalla completa en el carrusel.

Era falso.

En el commit exacto que habíamos fijado, `home-mixer/filters/brazil_2026_election_filter.rs` contiene 665 IDs de cuenta escritos en el código fuente, cada uno anotado con su handle. El archivo lo dice por sí mismo: *"los nombres de usuario se incluyen para transparencia."* El filtro elimina las publicaciones de esas cuentas de "Para ti" — incluyendo reposts, citas y ancestros de hilos — a menos que el espectador ya las siga. X lo envía deliberadamente, de acuerdo con la ley electoral brasileña, y lo documenta en su propio README.

Por qué nos equivocamos es la única parte interesante. La frase no se extrajo de nada. Se escribió a mano. Era cierta para el subconjunto que habíamos leído — las reglas de filtrado de visibilidad — y luego se generalizó silenciosamente a "en cualquier lugar de este repositorio". Una generalización nunca se auto-verifica.

Peor aún: una prueba en nuestra propia suite fijó el error en su lugar. Comprobó que la frase *contenía ciertas palabras*. Garantizaba que la frase estaba ahí, nunca que fuera verdadera. Una prueba puede bloquear una mentira.

Lo corregimos el mismo día. Esa afirmación ahora se calcula a partir de un recorrido del repositorio en lugar de afirmarse sobre él, la página muestra las cuentas y el número se mueve si la fuente se mueve.

La fuente nos refutó antes que nadie. Eso es exactamente para lo que sirve una fuente — y es todo el argumento para trabajar de esta manera.

3. La restricción de país que no tiene país

Una vez que empezamos a mirar correctamente, la geografía resultó ser lo opuesto a lo que todo el mundo asume.

En todo el repositorio, exactamente un país tiene una lista propia. Otras dos listas de países están codificadas — 16 países donde el contenido sensible se retiene de cualquiera que no haya declarado una edad, y 18 países que el modelo trata individualmente — y todos los demás países del mundo caen en una categoría general: no bloqueados, indistintos.

Los datos de eliminación por publicación — lo que la gente quiere decir cuando dice "retirado en el país X" — no está en el repositorio en absoluto. Esas reglas comparan el país del espectador con códigos que cada publicación lleva en tiempo de ejecución, y esos datos no se publican. Un mapa que colorea países "censurados" a partir de este código los estaría inventando. El nuestro no.

Y el único filtro específico de país que *está* escrito en el código tiene una propiedad que no esperábamos: ninguna condición de país aparece en él, ni alrededor de la línea que lo activa. Se registra incondicionalmente en la cadena de filtros del pipeline.

Publicamos eso con su límite adjunto, porque el límite es la parte honesta: qué pipeline sirve a qué mercado puede decidirse en una capa que X no publica. Lo que podemos decir es lo que contiene el código publicado — y no contiene ninguna prueba de país.

4. Lo que se elimina es alcance, no discurso

La maquinaria de silenciamiento existe, es legible y es más limitada de lo que sugiere la palabra "shadow ban".

32 reglas de eliminación se envían de forma clara, actuando sobre 27 tipos de etiquetas. Dos de ellas ocultan una publicación solo a los no seguidores — tus seguidores todavía te ven. Esa distinción está en el código, y desaparece cada vez que alguien recurre a la frase que genera clics.

En todas partes excepto en ese filtro, las reglas actúan sobre una etiqueta adjunta en tiempo de ejecución, y el etiquetado en sí no se publica. El código muestra lo que *se puede* hacer. Nunca a quién se le hizo.

5. Por qué una empresa de datos pasó una semana en esto

Porque es el trabajo que hacemos para ganarnos la vida, hecho en público, sobre una fuente sobre la que todo el mundo ya tiene una opinión.

Nuestro trabajo es tomar algo opaco — un registro, una presentación, un conjunto de datos, un repositorio — y hacerlo verificable línea por línea. La parte que requiere disciplina no es encontrar las respuestas. Es decir en voz alta dónde terminan las respuestas, y corregirse a uno mismo en público cuando la fuente dice que te equivocaste.

La página también se vigila a sí misma. Un trabajo compara nuestro commit fijado con el de X cada mañana; cuando divergen, la página dice que está desactualizada en lugar de servir silenciosamente cifras obsoletas, y la regeneración aterriza en una rama esperando a un humano. Una página que denuncia los números obsoletos de otras personas no puede volverse obsoleta ella misma.

→ Léelo: d-nvest.com/x-algorithm

Get the next analysis

One deep-dive per edition on where valuable data is hiding — the evidence, the sources, and who would pay for it. No noise.

One email per edition. Unsubscribe any time. We never share your address.

From the marketplace

Explore live data opportunities

Browse datasets by sector & use-case
Found this useful? Share it

d-nvest turns the data assets behind these deals into scored, actionable opportunities.

Explore the pipeline →
X publicó su algoritmo. Lo leímos, nos equivocamos en una cosa y la fuente nos corrigió. | d-nvest