x algorithmopen sourcealgorithmic transparencymethodprovenance18 agosto 2026

X ha pubblicato il suo algoritmo. L'abbiamo letto, abbiamo commesso un errore e la fonte ci ha colti.

Un'edizione speciale, fuori dal solito ciclo. Non un cluster di dati — un pezzo di codice sorgente che metà di internet cita a memoria. Abbiamo letto tutti i 123 componenti, collegato ogni numero alla sua riga e pubblicato un'affermazione che la nostra stessa fonte ha smentito tre giorni dopo.

X ha pubblicato il suo algoritmo. L'abbiamo letto, abbiamo sbagliato una cosa e la fonte ci ha scoperto.

Un'edizione speciale, fuori dal solito ciclo. Non un cluster di dati questa volta — un pezzo di codice sorgente da cui metà di internet cita a memoria. Abbiamo letto tutti i 123 componenti, pubblicato una pagina che collega ogni numero alla sua riga e lanciato un'affermazione che la nostra stessa fonte ha smentito tre giorni dopo. Ecco cosa dice il codice e cosa ci ha insegnato quell'errore sul metodo che vendiamo.

Il 13 agosto 2026, X ha reso pubblico il codice di ranking alla base del suo feed "Per te", sotto licenza Apache-2.0. Entro settantadue ore, i numeri erano ovunque: un repost vale venti like, un click sul profilo dodici, una segnalazione annulla quattrocentosessantotto like.

Quasi nessuna di queste cifre descrive il codice che funziona oggi.

Non sono invenzioni. Sono avanzi — veri per una pipeline Scala dismessa anni fa, citati come se descrivessero quella Rust che l'ha sostituita. Un numero senza data e senza riga di codice non è un fatto. È una voce con un punto decimale.

Quindi abbiamo fatto la cosa poco appariscente: abbiamo letto il repository, riga per riga, e costruito la pagina che mancava.

→ d-nvest.com/x-algorithm — gratuito, nessun account, nove lingue.

1. Cosa dice effettivamente il codice

190 parametri che X può modificare senza rilasciare codice. 24 costanti compilate nel binario. 123 componenti nella pipeline di ranking. Ognuno di questi numeri sulla nostra pagina si collega alla riga esatta da cui è stato letto, fissato a un singolo commit — e, da questa settimana, mostra le righe effettive di Rust in loco, così non dovrai mai credere alla nostra parola per una cifra.

Quattro delle affermazioni che abbiamo verificato e cosa dice invece la fonte:

"Un repost vale 20 like." Vale due. `RetweetWeight` è 1.0 contro `FavoriteWeight` a 0.5. Nessuna versione pubblicata di questo algoritmo ha mai usato 20 per un repost — nemmeno quella del 2023 che la gente sta citando.

"Un click sul profilo vale 12 like." Oggi vale nulla: il peso è zero. Il 12 era reale, per un segnale composito che non esiste più nell'albero.

"Una segnalazione annulla 468 like." L'aritmetica è corretta e la conclusione è sbagliata. Quei pesi moltiplicano una *probabilità prevista*, non un conteggio di azioni. X afferma che una segnalazione è migliaia di volte più rara di un like — i due termini non sono mai stati della stessa grandezza fin dall'inizio. Dividere un peso per un altro non dà un tasso di cambio.

"Il segno blu compra visibilità." Nulla nel codice pubblicato moltiplica un punteggio per lo stato dell'abbonamento, e il boost del 2023 è sparito dall'albero. Il limite onesto, che stampiamo sulla pagina: il ranking finale passa attraverso un modello appreso i cui pesi non sono pubblicati. Una correlazione che il modello ha appreso da solo non può essere esclusa leggendo il codice. Lo diciamo, perché è vero.

E la scoperta che quasi nessuno menziona: il segnale positivo più pesante nel codice pubblicato non è il repost, la risposta o il like. È qualcuno che copia il tuo link per condividerlo altrove. Il 20 che tutti citano è reale. È solo associato a un'azione completamente diversa.

2. L'affermazione che abbiamo lanciato e che la nostra stessa fonte ha smentito

Ecco la parte che un team di marketing taglierebbe.

La nostra pagina è andata online affermando, come sua principale scoperta, che nessuna persona e nessuna organizzazione è nominata in quel repository — nessun ID account, nessun handle, nessuna lista hardcoded. Abbiamo messo uno zero a schermo intero sul carosello.

Era falso.

Al commit esatto che avevamo fissato, `home-mixer/filters/brazil_2026_election_filter.rs` contiene 665 ID account scritti nel codice sorgente, ognuno annotato con il suo handle. Il file lo dice stesso: *"gli username sono inclusi per trasparenza."* Il filtro rimuove i post di quegli account da "Per te" — inclusi repost, citazioni e antenati di thread — a meno che lo spettatore non li segua già. X lo distribuisce deliberatamente, in conformità con la legge elettorale brasiliana, e lo documenta nel suo README.

Perché abbiamo sbagliato è l'unica parte interessante. La frase non è stata estratta da nulla. È stata scritta a mano. Era vera per il sottoinsieme che avevamo letto — le regole di filtraggio della visibilità — e poi è stata tranquillamente generalizzata a "ovunque in questo repository". Una generalizzazione non si verifica mai da sola.

Peggio: un test nella nostra suite ha fissato l'errore. Ha verificato che la frase *contenesse certe parole*. Ha garantito che la frase fosse lì, mai che fosse vera. Un test può bloccare una bugia.

L'abbiamo corretta lo stesso giorno. Quell'affermazione è ora calcolata da una traversata del repository invece che affermata su di esso, la pagina mostra gli account e il numero si sposta se la fonte si sposta.

La fonte ci ha smentito prima di chiunque altro. È esattamente a questo che serve una fonte — ed è l'intero argomento per lavorare in questo modo.

3. La restrizione del paese che non ha un paese al suo interno

Una volta che abbiamo iniziato a guardare seriamente, la geografia si è rivelata l'opposto di ciò che tutti presumono.

Nell'intero repository, esattamente un paese ha una sua lista. Altre due liste di paesi sono hardcoded — 16 paesi dove i contenuti sensibili vengono omessi a chiunque non abbia dichiarato un'età, e 18 paesi che il modello tratta individualmente — e ogni altro paese sulla terra rientra in una categoria generica: non bloccato, indistinto.

I dati di rimozione per post — la cosa a cui la gente si riferisce quando dice "omesso nel paese X" — non sono affatto nel repository. Queste regole confrontano il paese dello spettatore con codici portati da ogni post al momento dell'esecuzione, e quei dati non sono pubblicati. Una mappa che colora i paesi "censurati" da questo codice li starebbe inventando. La nostra no.

E l'unico filtro specifico per paese che *è* scritto nel codice ha una proprietà che non ci aspettavamo: nessuna condizione di paese appare in esso, né intorno alla riga che lo attiva. È registrato incondizionatamente nella catena di filtri della pipeline.

Pubblichiamo questo con il suo limite allegato, perché il limite è la parte onesta: quale pipeline serve quale mercato può essere deciso in uno strato che X non pubblica. Quello che possiamo dire è ciò che il codice pubblicato contiene — e non contiene alcun test di paese.

4. Ciò che viene rimosso è visibilità, non parola

Il meccanismo di silenzio esiste, è leggibile, ed è più ristretto di quanto la parola "shadow ban" suggerisca.

32 regole di rimozione sono distribuite chiaramente, agendo su 27 tipi di etichette. Due di esse nascondono un post solo ai non follower — i tuoi follower ti vedono ancora. Questa distinzione è nel codice, e scompare ogni volta che qualcuno cerca la frase che fa click.

Ovunque tranne in quel filtro, le regole agiscono su un'etichetta allegata al momento dell'esecuzione, e l'etichettatura stessa non è pubblicata. Il codice mostra cosa *può* essere fatto. Mai a chi è stato fatto.

5. Perché un'azienda di dati ha passato una settimana su questo

Perché è il lavoro che facciamo per vivere, fatto in pubblico, su una fonte sulla quale tutti hanno già un'opinione.

Il nostro lavoro è prendere qualcosa di opaco — un registro, un deposito, un dataset, un repository — e renderlo verificabile riga per riga. La parte che richiede disciplina non è trovare le risposte. È dire ad alta voce dove le risposte si fermano, e correggersi in pubblico quando la fonte dice che si era sbagliati.

La pagina si guarda anche da sola. Un lavoro confronta il nostro commit fissato con quello di X ogni mattina; quando divergono, la pagina dice di essere indietro piuttosto che servire silenziosamente cifre obsolete, e la rigenerazione finisce su un branch in attesa di un umano. Una pagina che denuncia i numeri obsoleti degli altri non può diventare obsoleta essa stessa.

→ Leggilo: 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 ha pubblicato il suo algoritmo. L'abbiamo letto, abbiamo commesso un errore e la fonte ci ha colti. | d-nvest