Giovedì 5 novembre 2026
L’edizione di oggi
Millebit
AI · Software · QA
Il segnale, non il rumore.

Gli articoli di Millebit sono scritti con l’intelligenza artificiale a partire da fonti citate in ogni pezzo. Come lavoriamo

Sviluppo software

Tag v1.8.0 spostato, metà utenti del client Go hanno ricevuto il vecchio codice

Testo scritto con l’intelligenza artificiale a partire da una fonte citata, senza revisione umana prima della pubblicazione.

Il proxy ufficiale ha servito la vecchia versione mentre chi scaricava da GitHub ha ricevuto il nuovo e ha incontrato errori di checksum.

Illustrazione generata con l’intelligenza artificiale

Lo spostamento del tag v1.8.0 su GitHub ha diviso l’utenza in due: metà ha continuato a scaricare il codice iniziale, l’altra metà ha visto i build fermarsi con “SECURITY ERROR”1. Tutto è partito da un bug scoperto quaranta minuti dopo il rilascio: il client pubblico Go per la tracking API inviava ogni richiesta con l’header account vuoto. La fix richiedeva due righe. L’ingegnere che aveva pubblicato la release ha cancellato il tag, ha fatto il merge della correzione e ha spinto di nuovo v1.8.0 sul nuovo commit, così da evitare che restasse in circolazione una versione sbagliata1.

Per due giorni l’issue tracker ha raccolto due tipi di segnalazioni. Un gruppo diceva che v1.8.0 spediva ancora l’header vuoto. L’altro vedeva fallire i build con un mismatch di checksum e il messaggio “SECURITY ERROR”1.

La spiegazione stava nella catena di distribuzione dei moduli Go. Chi scaricava tramite proxy.golang.org otteneva il primo v1.8.0. Il proxy conserva una copia di ogni versione che serve e, in quei quaranta minuti, aveva già preso quella iniziale. La documentazione del proxy è esplicita: una release errata può restare disponibile dal mirror anche dopo la rimozione all’origine. Per il proxy, v1.8.0 coincideva con ciò che aveva già in cache, e quello ha continuato a servire1.

Chi scaricava direttamente da GitHub, perché GOPROXY era impostato su direct o perché usava un mirror interno, prendeva invece il nuovo commit. Il comando go confronta ogni modulo con il file go.sum locale e con il database di checksum su sum.golang.org. Quel database aveva registrato l’hash del primo v1.8.0. Un hash diverso con la stessa versione è esattamente ciò che il controllo deve intercettare, quindi il download veniva bloccato con l’errore di sicurezza1.

Per riunificare il comportamento, il team ha riposizionato il tag sul commit originale. Così entrambe le metà vedevano di nuovo la stessa versione. La correzione è uscita poi come v1.8.1. Nel go.mod di v1.8.1 compare una direttiva retract per v1.8.0: il comando go non seleziona quella versione quando cerca l’ultima disponibile, e go list -m -u la segnala come ritirata a chi la usa ancora1.

Dall’incidente sono nate tre misure. I tag che corrispondono al pattern v* ora sono protetti da una regola che blocca aggiornamenti e cancellazioni per chiunque, inclusi gli amministratori. La checklist di rilascio chiarisce che una versione problematica si sistema pubblicando la successiva. Il workflow di rilascio verifica che il tag in creazione non sia mai esistito prima1.

Sergey Shinder chiude con una regola pratica: una versione Go smette di appartenerti nel momento in cui qualcuno la scarica. Spostare un tag cambia il repository, non le copie già diffuse. Nelle filiere che coinvolgono proxy e database di checksum, quel gesto crea divergenze difficili da sanare con lo stesso numero di versione1.

Fonti

  1. We moved a Go release tag to fix a bug and half our users got the old code dev.to · 5 novembre 2026
Come è nato questo articolo Scritto da un sistema di intelligenza artificiale, con controlli automatici

Millebit non ha giornalisti che scrivono gli articoli: li scrive un motore editoriale basato su modelli di intelligenza artificiale, a partire dalle fonti elencate qui sopra. Prima di uscire, ogni testo passa questi controlli:

  • Rilettura. Un passaggio toglie i tic della prosa generata da un modello, come i contrasti costruiti e le frasi che annunciano invece di informare, senza toccare fatti e fonti.
  • Fedeltà alle fonti. Un passaggio dedicato toglie ogni affermazione che le fonti non sostengono. Valutazione su questo pezzo: 10/10.
  • Anti-cliché. Un filtro scarta frasi fatte, enfasi e tic della prosa artificiale: superato.
  • Giudizio editoriale. Un modello valuta il pezzo su sette criteri (apertura, chiarezza, economia, concretezza, voce, struttura, fedeltà) e sotto 7,8/10 non si pubblica. Questo articolo ha preso 8,9/10 dopo 1 revisione.

I controlli riducono gli errori ma non li eliminano: un modello può fraintendere una fonte. Per le decisioni importanti, risali alla fonte originale. Se trovi un errore, segnalacelo.

Come funziona Millebit, nel dettaglio →

Hai trovato un errore? Segnalacelo
Tipo di segnalazione

Leggiamo ogni segnalazione. Le correzioni fatte sono elencate in Correzioni. L’email, se la lasci, serve solo a risponderti.