Un environnement jetable et idempotent
Le problÚme : le vrai pipeline écrit en base
Puisqu'on appelle le vrai pipeline (leçon prĂ©cĂ©dente), il Ă©crit : il crĂ©e des requĂȘtes, enregistre des lignes, peut accumuler un historique. Deux dangers immĂ©diats :
- contaminer un vrai client â jamais, au grand jamais, l'Ă©val ne doit tourner sur des donnĂ©es de production rĂ©elles ;
- contaminer ses propres mesures â si chaque exĂ©cution laisse des traces qui influencent la suivante, tes scores dĂ©rivent d'un run Ă l'autre sans que le code ait changĂ©.
La réponse : un tenant jetable à identité fixe
Le harness travaille sur un tenant dĂ©diĂ©, jetable, Ă identifiant fixe (par exemple eval-âŠ-0001). Trois propriĂ©tĂ©s le rendent sĂ»r :
- isolé : c'est un tenant à part, jamais un client. Aucune donnée réelle n'y entre.
- idempotent : la commande de setup peut ĂȘtre relancĂ©e mille fois sans effet de bord â elle amĂšne toujours la base au mĂȘme Ă©tat connu (catalogue chargĂ©, tenant prĂȘt). Pas de « ça marche seulement au premier run ».
- destructible : on peut le raser et le reconstruire à volonté. L'identifiant fixe garantit qu'on sait exactement quoi détruire.
C'est le mĂȘme contrat qu'un bon test d'intĂ©gration : un Ă©tat de dĂ©part reproductible, quoi qu'il se soit passĂ© avant.
La contamination silencieuse
Le piĂšge le plus subtil : certaines Ă©tapes apprennent. Un matcher peut mĂ©moriser ses propres choix pendant le batch et s'auto-influencer â le fichier 50 est matchĂ© diffĂ©remment du fichier 1 parce que le pipeline a « appris » entre les deux. Pour un chiffre propre, il faut pouvoir rĂ©initialiser cet Ă©tat entre deux mesures (ou le dĂ©sactiver). Sinon tu ne mesures pas ton pipeline, tu mesures ton pipeline plus l'ordre dans lequel tu as passĂ© les fichiers.
Un run d'Ă©val doit ĂȘtre une fonction pure de (code, corpus, vĂ©ritĂ©) â surtout pas de l'historique accumulĂ© pendant le run lui-mĂȘme.
Pourquoi l'éval a-t-elle besoin d'un tenant jetable dédié ?