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.
Prove con modelli diversi
Le istruzioni della skill sono utilizzabili con diversi LLM; i risultati dipendono dal modello e dal modo in cui l'interfaccia fornisce istruzioni e riferimenti. Le prove storiche sotto usano Claude. Nel settembre 2026 abbiamo eseguito anche prove con GPT Terra 5.6, Sol 6 e Luna 6, con ruoli e risultati separati.
Nel controllo finale mirato, Sol ha ottenuto 18 risposte conformi su 22 secondo il giudice automatico. La rilettura dell'assistente conserva quattro output non conformi. Queste prove non sono una valutazione umana indipendente e non misurano Qwen, DeepSeek o tutti gli altri LLM. Protocollo, output e limiti delle prove GPT.
Struttura della suite
| Split | Casi | Uso |
|---|---|---|
| Dev | 69 | 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. Dalla 2.19.1 distingue textOk (fedeltà e livello di intervento) da responseOk (note, consulenza e formato). Per passare devono essere veri entrambi, insieme a tutte le aspettative, senza contenuti inventati.
Il contratto del giudice ha una propria impronta SHA-256. I risultati storici riportati sotto usavano il criterio precedente, che contava anche spiegazioni editoriali corrette come invenzioni: non sono confrontabili con i nuovi pass rate senza rigiudicare entrambi i bracci con lo stesso contratto.
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.