Block a user
task_execute: lotto e seriale in un letterale JS con autoescape HTML → dato alterato nel DB
Riepilogo di fine task: carica le misure di tutta la versione, non del lotto/run, troncate a 500
Export CSV dal browser: nominale, tolleranze, descrizione e operatore escono vuoti
confirmCycle: se il server rifiuta /cycle lo schermo mostra comunque il ciclo chiuso
Editor annotazioni: al resize gli oggetti non vengono riscalati, il salvataggio sposta i marker
Numpad: cifre rimaste sul display si concatenano alla lettura del calibro; interi oltre 6 cifre troncati
Tolleranze: nessuna validazione d'ordine ltl ≤ lwl ≤ nominale ≤ uwl ≤ utl
API key unica per utente: un secondo login butta fuori la prima postazione, e il frontend non gestisce il 401
Produzioni: nessun ruolo né legame con la stazione; ricetta non assegnata misurabile via barcode
Impostazioni non validate: csv_delimiter sbagliato blocca la chiusura delle produzioni
Injection di formule nei CSV (export di produzione e export dal browser)
Files: un Maker cancella qualunque file sotto uploads, compresi i CSV di statistica
Misure: value accetta NaN, Infinity e fuori scala → esito «pass» poi 500
SPC: Cp/Cpk e limiti di controllo usano la sigma globale, non la within (MR-bar/d2)
README e CLAUDE.md: il Quick Start non costruisce più (sottomodulo e VISION_ENGINE_VERSION)
Visione: output NaN/None di uno strumento → TypeError non gestita (500)
seed_collaudo.py: capoturno con password di default committata, eseguibile in produzione
Visione: crash del worker a metà richiesta esce come 500 nudo
Visione: file non immagine o grafo malformato → 500 del worker, 502 senza motivo al Maker
Token CSRF scade dopo 1 ora: la pagina di misura non salva più e dice «Errore di rete»