Subprocess hang indefinito quando il comando esterno non ritorna
## Problema
Quando `COMMAND` esegue una chiamata HTTP esterna (es. `process-payment.sh` verso `PB_BASENAME`) senza timeout configurato sul client HTTP, il sottoprocesso rimane appeso indefinitamente.
Il goroutine krun che attende il sottoprocesso si blocca su `cmd.Wait()`. L'offset della partizione non viene mai committato, il consumer non avanza su quella partizione, e il backlog cresce senza limite finché il servizio non viene riavviato manualmente.
Le altre partizioni continuano a essere pollate normalmente ma la partizione bloccata accumula lag.
## Impatto
- Consumer bloccato su una partizione fino a restart manuale
- Lag crescente su quella partizione
- Nessun log di errore (il processo è vivo, solo appeso)
## Fix
Aggiungere timeout di esecuzione configurabile via `COMMAND_TIMEOUT_SECONDS` (default: 10s).
Al superamento del timeout:
1. SIGTERM al sottoprocesso
2. SIGKILL dopo 5s di grace period se ancora in esecuzione
3. Log `TIMEOUT[partition:offset]: key=... duration=...`
4. Offset non committato → messaggio riprocessato al prossimo restart
Vedi MR branch `fix/command-timeout`.
issue