Misurare senza raccontarsela.

Gli eval servono a trovare regressioni e falsi positivi. Non trasformano un giudizio linguistico in una certezza matematica.

Schema runner 340 casi dev6 casi held-out

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

SplitCasiUso
Dev40Casi osservati durante lo sviluppo. Servono a verificare il comportamento noto.
Held-out6Set 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.

Apri il manifest e la suite canonica.

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 casoSenza skillCon skill 2.15.1
Passaggi per run (verdetti validi)16–20 su 2726–27 su 27
Invenzioni totali91
Casi dall'esito instabile8 su 271 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).

Esamina gli artefatti di riferimento

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-only
node evals/run.mjs --split held-out --label nuovo-heldout

I run ordinari restano ignorati da Git. Per una release si versionano soltanto gli artefatti scelti, insieme a una nota sui limiti.

Documentazione completa del runner.