Che cosa misuriamo
Un buon risultato non coincide con il maggior numero di modifiche. La suite comprende casi da migliorare e testi da lasciare invariati.
- assenza di fatti, numeri, citazioni ed entità inventate;
- conservazione di polarità, modalità, causalità, condizioni ed eccezioni;
- riduzione dei tic quando sono davvero presenti;
- correttezza grammaticale e rispetto del registro;
- assenza di over-editing su prosa già buona e testo funzionale.
Un testo può essere più elegante e fallire lo stesso, se trasforma un “potrebbe” in un “è” o aggiunge una causa non presente.
Struttura della suite
| Split | Casi | Uso |
|---|---|---|
| Dev | 40 | Casi osservati durante lo sviluppo. Servono a verificare il comportamento noto. |
| Held-out | 6 | Set corrente: #14, #16, #31, #32, #33 e #46. Il #46 ha sostituito il #15 il 29 luglio 2026, dopo che il #15 era stato usato per tarare la guardia sul testo operativo. |
Il manifest assegna a ogni caso un genere, uno split e un livello di conservazione: exact, minimal, semantic, improve, mixed o advice.
Runner fail-closed
Per ogni caso, il runner inietta la skill, salva la risposta dell'editor e chiede a un secondo modello di valutarla contro aspettative esplicite. Poi ricalcola il passaggio dalle singole aspettative.
Ogni esecuzione conserva
- copie della skill, della suite e del manifest usati;
- SHA-256 dei contenuti, separati dallo stato Git;
- prompt, output, aspettative e risposta grezza del giudice;
- modelli, versioni degli strumenti e durata;
- verdetto ricalcolato e numero di invenzioni rilevate.
Che cosa significa fail-closed
Un tipo permissivo, una cardinalità errata o un verdetto incompleto non diventano un passaggio. Il runner segnala l'errore. Resta comunque dipendente dalla qualità delle aspettative dichiarate.
Riferimenti 2.14.0 e 2.15.x
La misura di riferimento (luglio 2026) osserva ogni caso tre volte per braccio, con la stessa suite e lo stesso giudice: modello senza skill contro skill 2.15.1. Editor Sonnet, giudice Opus.
| Su 3 run per caso | Senza skill | Con skill 2.15.1 |
|---|---|---|
| Passaggi per run (verdetti validi) | 16–20 su 27 | 26–27 su 27 |
| Invenzioni totali | 9 | 1 |
| Casi dall'esito instabile | 8 su 27 | 1 su 27 |
Risultato osservato
La skill non alza soltanto la media (18,0 contro 26,7): stabilizza il comportamento. Senza skill il modello oscilla su 8 casi e inventa sotto pressione; con la skill il verdetto è quasi deterministico. Le righe perse per limiti di sessione o giudice malformato restano errori dichiarati, mai promossi a passaggi.
La misura storica a quattro bracci (nucleo, skill completa, candidata; una osservazione per caso, prima delle ricalibrazioni del giudice) resta negli artefatti 2.14.0. Il vecchio set held-out produsse 5 su 6 al primo giro e 6 su 6 al gate, ma includeva il #15: quel caso motivò una modifica della guardia e da allora vale come regressione, non come prova di generalizzazione. Sui cinque casi storici non contaminati l'esito del gate fu 5 su 5; il nuovo #46 non è ancora stato misurato. Nell'instradamento su tre giri, a skill attiva il riferimento atteso viene aperto in 14 righe valide su 14; a oscillare è l'attivazione dei due prompt di confine (2 su 3 e 1 su 3).
Come leggere i risultati
- Un giro pulito non prova la generalizzazione. È un segnale su pochi casi pubblici, con una sola osservazione per cella.
- Il giudice è un LLM. Può essere incoerente, indulgente o troppo severo.
- Le aspettative definiscono il passaggio. Un comportamento non previsto può sfuggire al ricalcolo.
- Gli output non sono deterministici. Servono più run per stimare la stabilità.
- La naturalezza richiede persone. Il confronto cieco umano resta necessario per le qualità fini.
Per questo il progetto parla di risultato osservato e non di accuratezza complessiva della skill.
Riprodurre un run
Servono Node, il CLI claude autenticato e accesso ai modelli configurati.
node evals/run.mjs --validate-onlynode evals/run.mjs --split held-out --label nuovo-heldoutI run ordinari restano ignorati da Git. Per una release si versionano soltanto gli artefatti scelti, insieme a una nota sui limiti.