Código abierto · leer desde la fuente

Algoritmo de X, leído desde la fuente

El 13 de agosto de 2026, X publicó los pesos de clasificación numérica que había retenido en enero. La mayoría de las cifras que circulan sobre \"el algoritmo de X\" son incorrectas, generalmente porque eran correctas para el modelo de 2023, que ya no existe. Cada número en esta página es un enlace a la línea de código fuente de la que proviene, fijado a un commit.

Repositorio xai-org/x-algorithmCommit 76843a5 (2026-10-02)Licencia Apache-2.0Parámetros sincronizados 2026-10-01T16:00:46ZDatos de la página regenerados 2026-10-02Verificado diariamente con el repositorio

182

parámetros en vivo

modificables sin un despliegue

23

constantes compiladas

requieren un cambio de código

135

componentes del pipeline

fuentes, filtros, puntuadores

12

afirmaciones verificadas

cada una contra su línea de origen

2798

cuentas mencionadas en el código

eliminadas de Para Ti a menos que las sigas

Comprobar una publicación con el código

Pegue un enlace a cualquier publicación pública. Obtendrá las reglas que realmente se le aplican —incluidas las restricciones de país que pueden ocultarla— leídas del commit fijado.

Los pesos

Lo que realmente vale cada acción

X states it runs cron scripts that set the defaults in the repository's code to be the primary production values, and aims for experiments running at 10% or more of traffic to be visible in the repository. The values below are those defaults, read at the pinned commit.

Estos son los pesos que aplica el 'scorer' — medidos, no prometidos. Antes de puntuar, `perturbed()` multiplica 25 de los 27 pesos siguientes por `(sigma * perturbation_sign(salt, user_id, head)).exp()` — el signo fijado por espectador y por 'head'. Los 2 que deja intactos son los pesos modificadores: BidirectionalFollowDwellWeightBoost, BidirectionalFollowReplyWeightBoost. `WeightPerturbationSigma` y `WeightPerturbationSalt` son 'feature switches': X puede cambiarlos sin enviar código. En el 'commit' fijado, `WeightPerturbationSigma` es 0.0, y la guarda `sigma <= 0.0` los devuelve sin cambios. Léalo en la fuente

Cada fila lleva el código del que fue leída — presioneExplicarpara desplegar las líneas reales de Rust, sin salir de la página.

AcciónPesovs un 'me gusta'Fuente
binaryMultiplies the predicted probability of a discrete action.
share via copy linkShareViaCopyLinkWeight2040×
param.rs
quoteQuoteWeight510×
param.rs
replyReplyWeight510×
param.rs
share via dmShareViaDmWeight510×
param.rs
follow authorFollowAuthorWeight48×
param.rs
shareShareWeight24×
param.rs
retweetRetweetWeight12×
param.rs
favoriteFavoriteWeight0.51×
param.rs
clickClickWeight0.30.6×
param.rs
open linkOpenLinkWeight0.20.4×
param.rs
video openVideoOpenWeight0.070.1×
param.rs
dwellDwellWeight0.050.1×
param.rs
photo expandPhotoExpandWeight0.050.1×
param.rs
quoted clickQuotedClickWeight0.050.1×
param.rs
post unexploredPostUnexploredWeight0.020×
param.rs
profile clickProfileClickWeight0—
param.rs
quoted vqvQuotedVqvWeight0—
param.rs
vqvVqvWeight0—
param.rs
not dwelledNotDwelledWeight-0.02−0×
param.rs
block authorBlockAuthorWeight-31.2−62×
param.rs
not interestedNotInterestedWeight-47.52−95×
param.rs
mute authorMuteAuthorWeight-58.8−118×
param.rs
reportReportWeight-234−468×
param.rs
continuousApplies to a quantity (watch or dwell seconds), not a probability.
cont click dwell timeContClickDwellTimeWeight0.4—
param.rs
cont dwell timeContDwellTimeWeight0.004—
param.rs
modifierNot a head weight: adds to another weight, or gates a branch.
bidirectional follow reply weight boostBidirectionalFollowReplyWeightBoost15—
param.rs
bidirectional follow dwell weight boostBidirectionalFollowDwellWeightBoost0—
param.rs

La agrupación en binario, continuo y modificador es nuestra — the weights struct and each field's use in vm-ranker/scoring/value_model.rs. X no publica esa taxonomía; los separamos porque solo los binarios son comparables entre sí.

Establezca una probabilidad predicha para cada acción y observe su contribución a la puntuación. Aquí solo se ofrecen los pesos que multiplican una probabilidad; esa es la aritmética que el código realmente realiza.

0% → 0.000
0% → 0.000
0% → 0.000
0% → 0.000
0% → 0.000
0% → 0.000
0% → 0.000
0% → 0.000
Suma ponderada0.000

Por qué no hay un \"equivalente a 'me gusta'\" aquí: Weights multiply a predicted probability, not an engagement count. Dividing one weight by another does not yield an exchange rate between actions.

Verificación de afirmaciones

Números que todos repiten, verificados contra el código

No son invenciones. La mayoría eran cifras precisas para el clasificador principal que Twitter publicó en 2023, un pipeline de Scala que desde entonces ha sido reemplazado. Siguieron circulando después de que lo que describían dejó de existir.

Cada afirmación a continuación incluye las búsquedas que la respaldan — el patrón, los archivos, el recuento — para que pueda ejecutarlas usted mismo contra el commit fijado. Nunca verá una aquí que nos contradiga: si lo hiciera, esta página fallaría en la construcción en lugar de publicar la frase que desmiente.

Contradicted by the source

“Un repost vale 20 veces un 'me gusta'.”

RetweetWeight es 1.0 y FavoriteWeight es 0.5, por lo que un repost tiene el doble de peso que un 'me gusta' — no veinte veces.

De dónde viene: Ninguna versión publicada del algoritmo usó 20. El ranker pesado de 2023 también ponderó el retweet en 1.0 frente al favorito en 0.5.

Was true, of an older version

“Una respuesta vale 27 veces un 'me gusta' (o 13.5 veces).”

ReplyWeight es 5.0 frente a FavoriteWeight 0.5, es decir, diez veces — y cuarenta veces entre seguidores mutuos, porque BidirectionalFollowReplyWeightBoost añade 15.0 al peso de la respuesta para publicaciones originales entre cuentas que se siguen mutuamente.

De dónde viene: Ambas cifras fueron reales, para un modelo que ya no existe: el ranker pesado de 2023 publicó 27 el 31-03-2023, luego 13.5 el 05-04-2023. Describen un pipeline de Scala reemplazado por el actual de Rust.

Was true, of an older version

“Los clics en tu perfil valen 12 veces un 'me gusta'.”

ProfileClickWeight es 0.0. Un clic en el perfil no contribuye en nada a la puntuación ponderada.

De dónde viene: 12.0 fue el peso de 2023 para `good_profile_click` — una señal compuesta diferente (abrir un perfil Y luego dar 'me gusta' o responder). El modelo actual tiene un encabezado de clic de perfil simple, ponderado a cero.

No such parameter exists

“Un marcador vale 10 'me gusta' — los marcadores son la señal más fuerte.”

No hay peso de marcador en param.rs, por lo que los marcadores no entran en la puntuación ponderada en absoluto. Sin embargo, no son invisibles: bookmark_count se hidrata en cada candidato como una característica del modelo, y ClientTweetBookmark cuenta como una interacción positiva en el historial del espectador. Leído, pero sin ponderar.

De dónde viene: La actualización de Scala de 2025 declaró un parámetro home_mixer_model_weight_bookmark — con un valor predeterminado de 0.0. Ninguna versión publicada lo ponderó jamás en 10.

Lo que buscamos, en el commit fijado

  • No hay peso de marcador en param.rs

    bookmark · 2 archivos · 0 coincidencias

  • bookmark_count se hidrata en cada candidato como una característica del modelo

    bookmark_count · 1 archivo · 5 coincidencias

  • ClientTweetBookmark cuenta como una interacción positiva en el historial del espectador

    ClientTweetBookmark · 1 archivo · 1 coincidencia

Right numbers, wrong reading

“Un reporte cancela 468 'me gusta' (−234.0 ÷ 0.5).”

La aritmética es correcta y la conclusión sigue siendo errónea. Los pesos multiplican una PROBABILIDAD PREDECIDA, no un recuento de acciones. X afirma que la probabilidad base de un reporte es más de mil veces menor que la de un 'me gusta', por lo que dividir un peso por otro no da una tasa de cambio entre acciones.

De dónde viene: Este no está obsoleto — es una mala interpretación de números correctos, y aparece incluso en páginas que publican la tabla correcta. X añadió una advertencia explícita al respecto en su propio README el 14-08-2026.

No such parameter exists

“La velocidad de interacción cuenta 1000×, la autoridad del autor 50×, la actualidad 22×.”

No existe ningún parámetro con nombre para velocidad, autoridad o actualidad en param.rs. La edad no es un peso en absoluto, es un corte estricto: AgeFilter elimina cualquier publicación con más de MAX_POST_AGE, una constante compilada de 48 horas. Nada multiplica la puntuación de una publicación por su frescura.

Lo que buscamos, en el commit fijado

  • No existe ningún parámetro nombrado para velocidad, autoridad o actualidad en param.rs

    velocity|authority|recency · 1 archivo · 0 coincidencias

  • AgeFilter descarta cualquier publicación anterior a MAX_POST_AGE

    AgeFilter::new\(.*MAX_POST_AGE · 1 archivo · 1 coincidencia

Contradicted by the source

“Un grupo coordinado puede enterrar tu publicación mediante informes masivos o bloqueos masivos.”

X aborda esto directamente en los comentarios de param.rs, y el mecanismo que describe es verificable: el modelo predice TU probabilidad de una acción, por lo que las recomendaciones son personalizadas; los informes de una brigada afectan principalmente lo que se recomienda a personas similares a esa brigada. Y una interacción solo cuenta si ocurre en una publicación servida en la línea de tiempo de inicio: navegar directamente a una publicación, por ejemplo, desde un chat grupal, no tiene impacto en la clasificación.

De dónde viene: Una inferencia razonable a partir de los pesos negativos muy grandes, que los pesos por sí solos no respaldan.

Lo que buscamos, en el commit fijado

  • X aborda esto directamente en los comentarios de param.rs

    recommendations are personalized · 1 archivo · 1 coincidencia

Was true, of an older version

“X publicó el código pero retuvo los pesos de clasificación por razones de seguridad.”

Verdadero para la versión de enero de 2026, falso desde el 13 de agosto de 2026. Los valores numéricos predeterminados ahora están en param.rs, y X afirma que los scripts cron los mantienen iguales a los valores de producción principales.

De dónde viene: Informes precisos de la caída de enero de 2026, nunca actualizados después de agosto.

Lo que buscamos, en el commit fijado

  • X afirma que los scripts cron los mantienen iguales a los valores de producción primarios

    cron scripts that set the defaults · 1 archivo · 1 coincidencia

Contradicted by the source

“Las publicaciones que contienen enlaces externos son clasificadas a la baja.”

En el código de clasificación publicado, OpenLinkWeight es POSITIVO en 0.2 y se aplica incondicionalmente; abrir un enlace es recompensado. Los enlaces solo se penalizan a través de etiquetas de seguridad como MALICIOUS_URL y DO_NOT_AMPLIFY, que se refieren al destino, no a la acción de enlazar.

Lo que buscamos, en el commit fijado

  • Los enlaces son penalizados solo a través de etiquetas de seguridad como MALICIOUS_URL

    MALICIOUS_URL · 7 archivos · 1 coincidencia

  • … y DO_NOT_AMPLIFY

    DO_NOT_AMPLIFY · 7 archivos · 1 coincidencia

Contradicted by the source

“Una marca de verificación pagada compra un impulso en la clasificación.”

No existe ningún multiplicador premium, verificado o de suscripción en param.rs, y ningún re-puntuador de este tipo aparece en los puntuadores publicados. El código de 2023 sí incluía uno — multiplicadores de 4.0 en la red y 2.0 fuera de la red para autores con verificación Azul — y ha desaparecido del árbol actual. Límite honesto: Phoenix es un modelo aprendido cuyos pesos no se publican, por lo que una correlación aprendida no puede excluirse leyendo el código.

De dónde viene: La pipeline Scala de 2023 realmente aplicó un multiplicador de 4.0 / 2.0 para la verificación Azul.

Lo que buscamos, en el commit fijado

  • No existe ningún multiplicador premium, verificado o de suscripción en param.rs

    premium|verified|subscription · 1 archivo · 0 coincidencias

  • ningún reevaluador de este tipo aparece en los evaluadores publicados

    premium|verified|subscription · 8 archivos · 0 coincidencias

Contradicted by the source

“X ahora publica solicitudes de eliminación gubernamentales en su repositorio de código abierto, y Brasil es el único país listado.”

El repositorio publica el MECANISMO de aplicación, nunca una solicitud. Las reglas que eliminan una publicación para los espectadores en un país restringido — LegalTakedown y LocalLawsTakedown — leen un motivo que contiene el código de país, pero ese motivo se obtiene en tiempo de ejecución de un servicio no publicado, y el tipo que lo contiene (TakedownReason) se define en un 'crate' ausente del repositorio. X también publica la infraestructura alrededor de ese tipo, en Scala: un filtro de lectura 'gizmoduck' que elimina las eliminaciones no aplicadas antes de que una lectura regrese, una columna y transformación del Servicio de Entidades de Tweets que recupera los motivos de eliminación de una publicación, y los trabajos internos que convierten esos motivos en las etiquetas que se muestran a una cuenta sobre sí misma. Así, las estructuras Thrift que lo contienen — Takedowns { country_codes, takedown_country_reasons } — son leídas por código publicado, en 3 archivos: `takedowns/gizmoduck/RedactUnenforcedTakedownsFilter.scala`, `takedowns/tweet-entity-service/TakedownReasonsTransform.scala`, `under-the-hood/scalding/UthPctdAccountTakedownEventsJob.scala`. Lo que eso añade es más MECANISMO, no una solicitud: en el 'commit' fijado, ningún código de país está escrito junto a un motivo de eliminación fuera de los 'test fixtures' — los únicos códigos de dos letras que el código de eliminación contiene son `xx`, `xy`, los centinelas mundiales que la fuente nombra, que significan 'en todas partes' y son lo opuesto a un país. Y el método que solicitaría esos códigos al Servicio de Entidades de Tweets bajo su propio nombre, get_takedown_country_codes, no aparece en ninguna parte del repositorio. Brasil es algo completamente diferente: una lista codificada de 2795 cuentas reportadas al Tribunal Electoral, obtenida del conjunto de datos de candidatos públicos, eliminadas de 'Para Ti' para todos los espectadores a nivel mundial a menos que sigan la cuenta — sin ninguna condición de país, lo cual es lo opuesto a cómo funciona una eliminación legal aquí. Límite honesto: un repositorio sin un país codificado no es una plataforma sin eliminaciones por país. Las solicitudes existen; viven fuera del repositorio, agregadas, en el Centro de Transparencia y el informe DSA.

De dónde viene: La propia publicación de X del 14 de agosto anunció dos cosas: los pesos de clasificación y el filtro electoral de Brasil. Musk lo citó al día siguiente en 61 caracteres — "Cualquier censura requerida por los gobiernos ahora es claramente visible" — sin nombrar el repositorio, ni las solicitudes, ni los países; la prensa lo vinculó a un aviso para el usuario que fue anunciado, no implementado. Las palabras "solicitudes" y "en el algoritmo de código abierto" aparecen juntas por primera vez en una cuenta agregadora.

Lo que buscamos, en el commit fijado

  • La infraestructura Scala publicada lee las estructuras de retirada Thrift — Takedowns { country_codes, takedown_country_reasons }

    \bTakedowns\b|\btakedownCountryReasons\b · 43 archivos · 15 coincidencias

Contradicted by the source

“Silenciar una palabra clave oculta cada publicación que la contiene.”

Una palabra clave silenciada no es una sola regla. El servicio de línea de tiempo publicado lo aplica con 2 filtros que no leen el mismo texto: ViewerMutedKeywordFilter, registrado en phoenix_candidate_pipeline.rs, lo compara con tweet_text; FollowingViewerMutedKeywordFilter, registrado en reverse_chron_posts_pipeline.rs, lo compara con ancestor_texts, quoted_tweet_text y tweet_text. Los campos que solo algunos de ellos leen — ancestor_texts y quoted_tweet_text — son escritos por conversation_gap_ancestor_hydrator.rs, quote_hydrator.rs y quoted_post_text_hydrator.rs, registrados en phoenix_candidate_pipeline.rs, phoenix_scores_pipeline.rs y reverse_chron_posts_pipeline.rs. Una 'pipeline' que no ejecuta esos 'hydrators' nunca los llena: allí el texto de una publicación citada o ancestral no solo no se lee, sino que está ausente. Más allá de la línea de tiempo, el motor de reglas de filtrado de visibilidad — la capa que puede ocultar una publicación dondequiera que aparezca — contiene ViewerMutesAuthor (Mutes) y ViewerMutesRetweets (MuteRetweets), y ninguna regla cuya decisión lea una palabra clave. El único resultado de palabra clave silenciada que este repositorio nombra, MatchesMutedKeyword, aparece exactamente 1 vez — en graphql_results.rs — y solo a la izquierda de un 'match arm' que lo mapea a una etiqueta intersticial. Nada aquí lo decide; lo que lo haga no está publicado. Dos límites honestos. Este repositorio es el servicio que construye una línea de tiempo: lo que hace el silenciamiento en las notificaciones o en la búsqueda se decide en otro lugar, en código que X no publica, y una ausencia aquí es una ausencia del repositorio, no del producto. Y no le decimos qué pestaña sirve cada 'pipeline' — ese cableado atraviesa varias capas, y un mapeo que no podemos extraer limpiamente es un mapeo que no publicamos.

De dónde viene: Silenciar es una única configuración en el producto, por lo que se interpreta como una única regla que se aplica en todas partes. El código publicado muestra algo más limitado: una palabra clave silenciada se aplica mientras se ensambla una línea de tiempo, y los filtros que la aplican no leen todos el mismo texto — por lo que una publicación puede contener la palabra en un lugar que ningún filtro en esa ruta jamás examina.

El pipeline

Lo que le sucede a una publicación, en orden

Las fuentes candidatas producen publicaciones, los hidratadores adjuntan características, los filtros pueden eliminar una publicación por completo, los puntuadores solo pueden moverla. Cada nodo enlaza a su archivo. Los bordes declaran cómo los derivamos: leídos del código, dados por la estructura del directorio o, en su punto más débil, emparejados por nombre.

Por país

Qué cambia según desde dónde se lea

Dos listas de países deciden qué cambia según desde dónde se lee, y no significan lo mismo. Una retiene contenido sensible de los espectadores que no han declarado su edad. La otra simplemente decide qué países el modelo puede distinguir; cualquier otro país se convierte en "otro", lo cual no es una restricción, solo un punto ciego. Cada tarjeta a continuación indica de dónde se lee su propia lista: una constante que aplica el código, o un valor predeterminado que un parámetro en tiempo de ejecución puede reemplazar.

…

Haz clic en un país en rosa para leer las cuentas que este código nombra allí, una por una. En todo el repositorio, exactamente un país tiene una lista así.

Cómo se verifica esto: "todo el repositorio" se verifica en todo el repositorio, no en un solo idioma: cada archivo bajo el commit fijado se lee, y se encuentra una lista de cuentas nombradas por su FORMA — un @handle escrito en una línea de comentario, inmediatamente seguido por el ID numérico de la cuenta. Esa forma no depende de Rust, así que el día que la misma lista se publique en otro idioma, la compilación lo indicará en lugar de que la página quede en silencio.

2798 cuentas se nombran directamente en el código fuente, por ID numérico y por identificador. Todo lo demás en la ruta de aplicación actúa sobre una etiqueta adjunta en tiempo de ejecución, y esa etiqueta no se publica.

Brazil — 2795 cuentas nombradas en el código

IDs de usuario reportados al Tribunal Electoral para las elecciones de Brasil 2026.

Filtro de las elecciones de Brasil 2026 Art. 28 § 1º-A de la Resolución Electoral n.º 23.610: Los proveedores de aplicaciones que utilizan un sistema de recomendación para los usuarios deben excluir de los resultados los canales y perfiles reportados al Tribunal Electoral según los términos del § 1º de este artículo y, excepto en casos de promoción pagada, el contenido publicado en ellos. https://dadosabertos.tse.jus.br/dataset/candidatos-2026
2795
cuentas escritas en el código fuente, por ID y por identificador
a menos que sigas
sus publicaciones, republicaciones, citas y ancestros de hilos se eliminan de Para Ti — a menos que el espectador ya siga la cuenta
sin prueba de país
ninguna condición de país, mercado o ubicación aparece en el filtro o donde está registrado

⚠ Ninguna condición de país, mercado o ubicación aparece en el archivo de filtro o alrededor de la línea que lo registra. Esa es una declaración sobre el código publicado; qué canal sirve a qué mercado puede decidirse en una capa que X no publica.

52 cuentas adicionales se nombran en este archivo y NO se filtran — el código explica por qué cada una se dejó intacta: 44 × “@… no se encontró cuenta activa.”; 8 × “Creemos que la cuenta @… reportada por el candidato no es la cuenta real del candidato, por lo que actualmente no la estamos filtrando.” Así, 2847 cuentas nombradas se contabilizan aquí, 2795 de ellas realmente filtradas.

Registrado en el pipeline el home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:391

  • @madeleinelacsko
  • @nanacachen
  • @renildo
  • @VladimirAlves
  • @renatoroseno
  • @pedro_lupion
  • @erasintetica
  • @soninhafrancine
  • @AecioNeves
  • @tatyanavaleria
  • @ClariceChacon
  • @rosilenedf
  • @raulchristiano
  • @Rafael_Parente
  • @RicardoFabrizio
  • @marlonluz
  • @eduardopinheiro
  • @falcaopatos
  • @diegotavares
  • @RubinhoDivi
  • @depmariomotta
  • @depchinaglia
  • @Sen_Cristovam
  • @marcelvanhattem
  • @lgmbrasilia
  • @nilvanferreira
  • @DelioPinheiro
  • @RafaellMilas
  • @chagasvieira
  • @GabrielSouza_RS
  • @Pimenta13Br
  • @fabriziomeller
  • @rigotto
  • @gustavotutuca
  • @camasao50
  • @radiovaldo
  • @euserafimcorrea
  • @merisio
  • @rafangeli
  • @pauloteixeira13
  • @crismonteirosp
  • @ManuelaDavila
  • @tomioyano
  • @CintyaMuniz
  • @rodrigolimamdh
  • @Biango
  • @samiabomfim
  • @profsta
  • @Jfelippeneto
  • @depguibismarck

2745 cuentas más están en esta lista

Deje un correo electrónico para abrir la lista completa aquí, y le avisaremos cuando cambie — el seguimiento diario ya compara nuestro commit fijado con el suyo.

Para ser claros: esta lista es pública. Reside en un repositorio Apache-2.0, y puede leer el mismo archivo de forma gratuita — home-mixer/filters/brazil_2026_election_filter.rs. El correo electrónico compra conveniencia aquí, no acceso.

Los ID numéricos en el archivo están ofuscados — el repositorio lo indica. Los identificadores no lo están.

3 cuentas más se nombran sin país asociado.
ThunderServiceImplthunder/thunder_service.rs:30
3
cuentas escritas en el código fuente, por ID y por identificador
a menos que sigas
sus publicaciones, republicaciones, citas y ancestros de hilos se eliminan de Para Ti — a menos que el espectador ya siga la cuenta
sin prueba de país
ninguna condición de país, mercado o ubicación aparece en el filtro o donde está registrado

⚠ Ninguna condición de país, mercado o localización aparece en el archivo de filtro o alrededor de la línea que lo registra. Esa es una declaración sobre el código publicado — qué pipeline sirve a qué mercado puede decidirse en una capa que X no publica.

Todas las 3 cuentas, en orden de origen

  • @grok
  • @gork
  • @products

Los ID numéricos en el archivo están ofuscados — el repositorio lo indica. Los identificadores no lo están.

Esta lista se reproduce de un repositorio público Apache-2.0, que establece que los identificadores se incluyen por transparencia. Informamos lo que hace el código. No respaldamos, verificamos ni juzgamos los informes que colocaron ninguna cuenta aquí.

Retiradas gubernamentales

El mecanismo está publicado. Las solicitudes, no.

El repositorio distribuye las reglas que ocultan una publicación a los lectores en un país que lo solicitó. No distribuye ninguna solicitud ni ningún país: el motivo que lleva el código de país se obtiene en tiempo de ejecución de un servicio que X no publica.

0

solicitudes de retirada publicadas en el repositorio

0

países asociados a una

2

reglas que actúan sobre un motivo de retirada

Cómo se cuenta esto: cada archivo en el repositorio se escanea en tiempo de compilación — no solo los de Rust, porque la infraestructura de retirada también reside en Scala, y una ausencia medida donde la cosa ya no está no es una ausencia. El código de prueba se elimina en dos escalas — los archivos que un padre declara `#[cfg(test)] mod …;` se excluyen, y en el resto el cuerpo `#[cfg(test)]` se corta — y lo que se busca es un código de país escrito junto a un motivo de retirada. Los códigos de dos letras que la propia fuente nombra a nivel mundial (`xx`, `xy`) significan 'en todas partes' en lugar de un país: se apartan y se enumeran públicamente. La compilación falla si este número deja de ser cero — la afirmación anterior no puede quedar obsoleta por sí misma.

De dónde proviene el país: el tipo que lo contiene, TakedownReason, no está definido en ningún archivo de este repositorio; se importa de xai_core_entities, un "crate" que no está publicado aquí.

Y el método que obtendría los países de una retirada, get_takedown_country_codes, no aparece en ninguna parte del repositorio. La interfaz existe en el lado de X; el código publicado nunca la llama.

Lea esto correctamente: un repositorio sin un país codificado no es una plataforma sin retiradas por país. Las solicitudes existen — viven fuera de este repositorio, agregadas por país y por semestre en los informes de transparencia de X, nunca aviso por aviso. Lo que se mide aquí es lo que dice el código, no lo que hace la empresa.

Método y límites

Lo que esta página no puede decirte

El modelo no es el código

Los pesos anteriores se aplican a las probabilidades producidas por Phoenix, un transformador aprendido cuyos parámetros entrenados no se publican. La lectura del código no puede descartar una correlación que el modelo aprendió por sí mismo.

Algunas cosas se retienen

X afirma que retiene las plantillas de prompt de Grox LLM y algunas reglas de aplicación, para reducir la manipulación. El código del clasificador y el motor de reglas están publicados; el texto del prompt no.

Nadie puede verificar lo que se ejecuta

X dice que los scripts cron mantienen estos valores predeterminados iguales a los valores de producción, y que los experimentos por encima de aproximadamente el 10% del tráfico deberían ser visibles aquí. Ambas son afirmaciones sobre un sistema que nadie fuera de X puede observar.

Los nombres de los parámetros y los extractos de código se mantienen en inglés: citan el código fuente, y un identificador traducido deja de coincidir con la línea que cita. Las comprobaciones de reclamaciones se traducen — los identificadores dentro de ellas se dejan textualmente.

Por qué una empresa de datos construyó esto

Este es el método que vendemos, aplicado a una fuente sobre la que todos discuten: tomar algo opaco, convertirlo en un gráfico donde cada valor lleva la línea de la que proviene, y negarnos a publicar un número que no podamos citar. Hacemos lo mismo para la contratación pública, la financiación de la investigación y los datos de empresas.