Wiki / 4 di 7
Una verifica vuota non è una verifica superata
L'elenco dei guasti è vuoto solo se qualcuno ha controllato. «Non abbiamo visto nulla» e «non c'è nulla» sono due frasi diverse.
L'aritmetica che mente
La verifica «nessun componente critico è guasto» è costruita come un elenco di guasti: se è vuoto, va tutto bene. Ma può essere vuoto per due ragioni: perché si è controllato senza trovare nulla, oppure perché non si è controllato affatto. Il quantificatore logico «tutti» su un insieme vuoto è vero; è proprio questa aritmetica scolastica a trasformare silenziosamente «non abbiamo controllato» in «va tutto bene».
Lo abbiamo misurato sul nostro sistema: tre verifiche dichiaravano «superata» da una macchina che non vedeva nessuno degli elementi che avrebbero dovuto esaminare. Tre spie verdi che non dicevano nulla.
L'esemplare catturato più di recente: il nostro stesso cancello di verifica è fallito all'interno ma è uscito con codice "superato" - la pulizia finale sovrascriveva il verdetto. A tradirlo non è stato un allarme ma la riga finale di successo mancante. Ora la regola: un codice di uscita verde senza prova visibile di successo non è "superato".
La correzione circoscritta
Un insieme vuoto di elementi dà ancora «superata»: se nessuno ha promesso un'esecuzione quotidiana, nessuno può essere in ritardo e non occorre controllare.
Solo un insieme vuoto di elementi esaminati dà «non accertato»: gli elementi esistono, ma nessuno è stato interrogato. Distinguere questi due tipi di vuoto rappresenta metà dell'intera onestà del sistema.
Lo stesso difetto nelle persone
Una checklist cartacea ha lo stesso difetto: una spunta non sa invecchiare verso «va ancora tutto bene». Quattro voci chiuse della nostra checklist di rilascio si sono rivelate false il giorno della verifica, ma continuavano a risultare chiuse. Per questo la checklist non è più un gate: lo stato del rilascio viene ricalcolato dalla macchina ogni volta, rispetto a questo commit.