{"stato":"ok","round":1,"codice":{"dichiarato":true,"sha":"0c4fb08e1977","sha_intero":"0c4fb08e19775914f03abd03bec8533d7b74b8d8","quando":"2026-10-22T09:01:18+00:00","ramo":"master","come":"timbrato alla costruzione dell'immagine (AGILETAV_CODICE_SHA)","limite":"dice il codice COPIATO nell'immagine: se qualcuno monta una cartella da fuori sopra disco/f53b52ad, il timbro non se ne accorge","avviato":"2026-10-22T14:23:38Z","da_quanto_s":368260},"motori":{"voce":{"motore":"agiletts","sito":"interno/c0b6350c","voce_predefinita":"valentina","lingue":["it"],"voci_delle_nostre_persone":"NON sono su questo servizio: Nadia, Iris e Alba hanno un profilo costruito dal campione committato in motori/voce/catalogo.py, e quel campione qui non c'e'","pronto":true,"salute_letta_s_fa":21.6,"versione":"AGILETTS-v0.9","modello_caricato":true,"caldo":true,"vram_libera_mib":8067,"voci":["patrizia","serena","danilo","valentina","carla_v1b","carla_v1a","carla_blend_eq","carla_blend_clara","carla_blend_warm","carla_blend_bal","cv_mature1","cv_mature2","carla_mixA","carla_mixC","carla_mixD","carla_mixb","alessia","daniele","giulia_adp","leonardo","valeria"],"scarico_a_riposo_s":0,"catalogo":{"acceso":true,"pronte":0,"persone":[{"id":"nadia-orvieti","motore":"piper:it_IT-serena-medium","pronta":false,"preparata":false,"nota":"la scheda vuole «qwen3tts» ma qui risponde «openvoice» (ripiego su «openvoice» perché nessun clonatore vero è utilizzabile qui — «qwen3tts»: mancano 11 file dei pesi (il primo: config.json) in disco/cb8564a2: esegui `AGILETAV_CLONA=1 AGILETAV_CLONA_MOTORE=qwen3tts AGILETAV_CLONA_QWEN3TTS_MODELLO=1.7b make pesi` (4,5 GB la 1.7B, 2,4 GB la 0.6B; Apache-2.0) · l'ambiente separato di Qwen3-TTS non c'è (disco/02910515): la sua torch e la sua transformers non convivono con le nostre, quindi vive in un venv suo — lo costruisce `banco/bootstrap-pod.sh` (AGILETAV_CLONA=1). Indicane un altro con AGILETAV_CLONA_QWEN3TTS_PYTHON | «chatterbox»: mancano 6 file dei pesi (il primo: ve.pt) in disco/8cd53e4e: esegui `AGILETAV_CLONA=1 AGILETAV_CLONA_MOTORE=chatterbox make pesi` (~3,3 GB, MIT) · l'ambiente separato di Chatterbox non c'è (disco/8b040edc): i suoi pin (torch 2.6, transformers 5.2) non convivono con questo ambiente, quindi vive in un venv suo — lo costruisce `banco/bootstrap-pod.sh` (AGILETAV_CLONA=1). Indicane un altro con AGILETAV_CLONA_CHATTERBOX_PYTHON. Con «openvoice» la voce prende il timbro della persona ma la cadenza resta di Piper: è la clonazione che il 7/9 il titolare ha giudicato «da sintetizzatore». Imponi comunque un motore con AGILETAV_CLONA_MOTORE). Non si ripiega su un altro clonatore senza dirlo: con un motore diverso quel campione darebbe una voce diversa da quella del catalogo, e sarebbe una terza voce che nessuno ha scelto"},{"id":"iris-calandri","motore":"piper:it_IT-serena-high","pronta":false,"preparata":false,"nota":"la scheda vuole «qwen3tts» ma qui risponde «openvoice» (ripiego su «openvoice» perché nessun clonatore vero è utilizzabile qui — «qwen3tts»: mancano 11 file dei pesi (il primo: config.json) in disco/cb8564a2: esegui `AGILETAV_CLONA=1 AGILETAV_CLONA_MOTORE=qwen3tts AGILETAV_CLONA_QWEN3TTS_MODELLO=1.7b make pesi` (4,5 GB la 1.7B, 2,4 GB la 0.6B; Apache-2.0) · l'ambiente separato di Qwen3-TTS non c'è (disco/02910515): la sua torch e la sua transformers non convivono con le nostre, quindi vive in un venv suo — lo costruisce `banco/bootstrap-pod.sh` (AGILETAV_CLONA=1). Indicane un altro con AGILETAV_CLONA_QWEN3TTS_PYTHON | «chatterbox»: mancano 6 file dei pesi (il primo: ve.pt) in disco/8cd53e4e: esegui `AGILETAV_CLONA=1 AGILETAV_CLONA_MOTORE=chatterbox make pesi` (~3,3 GB, MIT) · l'ambiente separato di Chatterbox non c'è (disco/8b040edc): i suoi pin (torch 2.6, transformers 5.2) non convivono con questo ambiente, quindi vive in un venv suo — lo costruisce `banco/bootstrap-pod.sh` (AGILETAV_CLONA=1). Indicane un altro con AGILETAV_CLONA_CHATTERBOX_PYTHON. Con «openvoice» la voce prende il timbro della persona ma la cadenza resta di Piper: è la clonazione che il 7/9 il titolare ha giudicato «da sintetizzatore». Imponi comunque un motore con AGILETAV_CLONA_MOTORE). Non si ripiega su un altro clonatore senza dirlo: con un motore diverso quel campione darebbe una voce diversa da quella del catalogo, e sarebbe una terza voce che nessuno ha scelto"},{"id":"alba-sarmenti","motore":"piper:it_IT-serena-medium","pronta":false,"preparata":false,"nota":"la scheda vuole «qwen3tts» ma qui risponde «openvoice» (ripiego su «openvoice» perché nessun clonatore vero è utilizzabile qui — «qwen3tts»: mancano 11 file dei pesi (il primo: config.json) in disco/cb8564a2: esegui `AGILETAV_CLONA=1 AGILETAV_CLONA_MOTORE=qwen3tts AGILETAV_CLONA_QWEN3TTS_MODELLO=1.7b make pesi` (4,5 GB la 1.7B, 2,4 GB la 0.6B; Apache-2.0) · l'ambiente separato di Qwen3-TTS non c'è (disco/02910515): la sua torch e la sua transformers non convivono con le nostre, quindi vive in un venv suo — lo costruisce `banco/bootstrap-pod.sh` (AGILETAV_CLONA=1). Indicane un altro con AGILETAV_CLONA_QWEN3TTS_PYTHON | «chatterbox»: mancano 6 file dei pesi (il primo: ve.pt) in disco/8cd53e4e: esegui `AGILETAV_CLONA=1 AGILETAV_CLONA_MOTORE=chatterbox make pesi` (~3,3 GB, MIT) · l'ambiente separato di Chatterbox non c'è (disco/8b040edc): i suoi pin (torch 2.6, transformers 5.2) non convivono con questo ambiente, quindi vive in un venv suo — lo costruisce `banco/bootstrap-pod.sh` (AGILETAV_CLONA=1). Indicane un altro con AGILETAV_CLONA_CHATTERBOX_PYTHON. Con «openvoice» la voce prende il timbro della persona ma la cadenza resta di Piper: è la clonazione che il 7/9 il titolare ha giudicato «da sintetizzatore». Imponi comunque un motore con AGILETAV_CLONA_MOTORE). Non si ripiega su un altro clonatore senza dirlo: con un motore diverso quel campione darebbe una voce diversa da quella del catalogo, e sarebbe una terza voce che nessuno ha scelto"},{"id":"lea","motore":"piper:it_IT-serena-medium","pronta":false,"preparata":false,"nota":"la scheda vuole «qwen3tts» ma qui risponde «openvoice» (ripiego su «openvoice» perché nessun clonatore vero è utilizzabile qui — «qwen3tts»: mancano 11 file dei pesi (il primo: config.json) in disco/cb8564a2: esegui `AGILETAV_CLONA=1 AGILETAV_CLONA_MOTORE=qwen3tts AGILETAV_CLONA_QWEN3TTS_MODELLO=1.7b make pesi` (4,5 GB la 1.7B, 2,4 GB la 0.6B; Apache-2.0) · l'ambiente separato di Qwen3-TTS non c'è (disco/02910515): la sua torch e la sua transformers non convivono con le nostre, quindi vive in un venv suo — lo costruisce `banco/bootstrap-pod.sh` (AGILETAV_CLONA=1). Indicane un altro con AGILETAV_CLONA_QWEN3TTS_PYTHON | «chatterbox»: mancano 6 file dei pesi (il primo: ve.pt) in disco/8cd53e4e: esegui `AGILETAV_CLONA=1 AGILETAV_CLONA_MOTORE=chatterbox make pesi` (~3,3 GB, MIT) · l'ambiente separato di Chatterbox non c'è (disco/8b040edc): i suoi pin (torch 2.6, transformers 5.2) non convivono con questo ambiente, quindi vive in un venv suo — lo costruisce `banco/bootstrap-pod.sh` (AGILETAV_CLONA=1). Indicane un altro con AGILETAV_CLONA_CHATTERBOX_PYTHON. Con «openvoice» la voce prende il timbro della persona ma la cadenza resta di Piper: è la clonazione che il 7/9 il titolare ha giudicato «da sintetizzatore». Imponi comunque un motore con AGILETAV_CLONA_MOTORE). Non si ripiega su un altro clonatore senza dirlo: con un motore diverso quel campione darebbe una voce diversa da quella del catalogo, e sarebbe una terza voce che nessuno ha scelto"}],"cartella":"disco/07b735a4","nota":"0 persone su 4 parlano con la loro voce sintetica; le altre con la voce Piper dichiarata nella scheda"},"motore_senza_persona":"agiletts","nota_motore":"«motore» è la voce di chi chiama senza una persona di catalogo (ripiego); le persone del catalogo parlano con la voce del blocco «catalogo» — oggi nessuna, e parlano anche loro con questa","a_prefisso":{"senza_persona":"si","persone":{"nadia-orvieti":"si","iris-calandri":"si","alba-sarmenti":"si","lea":"si"},"nota":"la strada a prefisso fa partire il disegno sulla testa del wav: vale ~2,35 s sul primo quadro. Un «no» qui e un interruttore spento danno lo stesso primo quadro, e per questo lo stato si dichiara invece di dedurlo"},"fabbisogno_mb":250,"caricabile":"si","memoria_nota":"ci sta: servono 762 MB (motore 250 + margine 512), disponibili 3669 MB","sede":"locale"},"volto":{"pronto":true,"motore":"agilevolto-rapido2","pesi":"disco/d6a7d16a","nota":"round 2 attivo — sul pod, via servo dei motori (interno/c68bf823, 148 ms, lettura di 1.2 s fa): RAPIDO2 pronto (322 px)","fps":25.0,"rilevatore_volto":"haar","round_attivo":2,"labbra":{"pronto":true,"motore":"agilevolto-rapido2","pesi":"disco/d6a7d16a","nota":"sul pod, via servo dei motori (interno/c68bf823, 148 ms, lettura di 1.2 s fa): RAPIDO2 pronto (322 px)","taratura":{"lato":322,"stabilizza":0.4,"modo":"busto","dilata":16,"sfuma":7.0,"soglia":0.5,"sotto_il_mento":0.28,"contrasto":2.0,"sigma":1.2,"seme":42,"riscalda":3,"istanze":1,"riancora":true,"composizione":"gpu","debito_max":0,"debito_risposta":-1,"posa_sul_silenzio":"auto","silenzio_rms":0.005,"silenzio_testa":0.2,"riparti_dalla_posa":true},"sede":"remoto (pod)","indirizzo":"interno/c68bf823","servo_ms":148,"letto_da_s":1.2,"sonda_viva":true},"sede":"remoto (pod)","bersaglio":{"volto_del_servizio":"agilevolto-rapido2","sta_servendo":"agilevolto-rapido2","e_ripiego":false,"nota":"sta servendo il volto di AgileTav: il modello a diffusione (ibrido RAPIDO2 — FlashHead Lite per testa e labbra, fondale e busto dallo still)"},"caricabile":"non pertinente","fabbisogno_mb":0,"memoria_nota":"gira sul pod (servo dei motori): la memoria di questa macchina non lo riguarda"},"ascolto":{"motore":"agileascolto","sito":"interno/c4595b8f","token":"presente","frequenza_richiesta":16000,"certificato":"impronta verificata su questa risposta (8E426F7377538585…)","pronto":true,"healthz":"ok","fabbisogno_mb":620,"caricabile":"si","memoria_nota":"ci sta: servono 1132 MB (motore 620 + margine 512), disponibili 3669 MB","sede":"locale"},"cervello":{"motore":"openai","sito":"https://api.mistral.ai","pesi":"","chiave":"presente","pronto":true,"modelli":["codestral-2508","codestral-latest","mistral-code-latest","mistral-code-fim-latest","glm-5-2","zai-glm-5-2","zai-glm-5-3","zai-glm-5","zai-glm-latest","zai-glm-5-3-flash","labs-leanstral-1-5-1","labs-leanstral-1-5","ministral-14b-2512","ministral-14b-latest","ministral-3b-2512","ministral-3b-latest","ministral-8b-2512","ministral-8b-latest","mistral-large-4","mistral-large-4-0","mistral-large-2512","mistral-large-latest","mistral-medium-latest","mistral-medium","mistral-medium-3-5","mistral-medium-3.5","mistral-medium-3","mistral-medium-2604","mistral-vibe-cli-latest","mistral-vibe-cli-with-tools","magistral-medium-latest","mistral-small-2603","mistral-small-latest","mistral-vibe-cli-fast","magistral-small-latest","voxtral-small-2507","voxtral-small-latest","codestral-embed","codestral-embed-2505","mistral-embed-2312","mistral-embed","mistral-moderation-2603","mistral-ocr-2512","mistral-ocr-3-0","mistral-ocr-3","mistral-ocr-latest","mistral-ocr-4","mistral-ocr-4-1","voxtral-mini-2602","voxtral-mini-latest","voxtral-mini-transcribe-3","voxtral-mini-transcribe-3-0","voxtral-mini-transcribe-realtime-2602","voxtral-mini-realtime-2602","voxtral-mini-realtime-latest","voxtral-mini-transcribe-realtime-3","voxtral-mini-transcribe-realtime-3-0","voxtral-small-transcribe-3","voxtral-small-transcribe-3-0","voxtral-mini-tts-2603","voxtral-mini-tts-latest","voxtral-mini-tts-3-0","voxtral-mini-tts-3"],"modello":"mistral-small-latest","scelta":"chiesta","verificato":"il servizio risponde e dichiara i suoi modelli","elenco_vecchio_di_s":42.1,"non_verificato":"che risponda a una domanda vera: nessuna richiesta di completamento e' stata mandata","nota":"cervello remoto «mistral-small-latest» su https://api.mistral.ai; il prompt è quello del nostro motore (qwen._istruzioni), non una copia. «pronto» qui vuol dire che il servizio risponde e dichiara i suoi modelli: NON che abbia accettato una domanda vera","fabbisogno_mb":1850,"caricabile":"si","memoria_nota":"ci sta: servono 2362 MB (motore 1850 + margine 512), disponibili 3669 MB","sede":"locale"},"vista":{"pronto":true,"motore":"agilevista/leggero-opencv","modello":"MediaPipe Face Landmarker + OpenCV (cascate di Haar + geometria)","revisione":"4.14.0","licenza":"OpenCV Apache-2.0; cascate di Haar: Intel / ETH Zürich, BSD-3; MediaPipe Face Landmarker Apache-2.0 (codice e pesi)","gb":0.004,"pesi":"3,6 MB: il bundle face_landmarker.task che il contorno delle labbra ha già — nessun peso in più per la vista","caricato":true,"dispositivo":"cpu","mediapipe":true,"haar":true,"rilevatore":"mediapipe","nota":"motore «leggero» — auto: il VLM non è in servizio (pesi assenti — la cartella dei pesi non esiste (disco/9d36527b). Esegui `AGILETAV_VISTA=1 make pesi` (4.27 GB, una volta sola).) → si usa il motore che c'è. rilevatore su CPU — MediaPipe 1.0.1 Face Landmarker pronto (face_landmarker.task, 3,6 MB); 3/3 cascate di Haar pronte, dentro opencv-python-headless. Conta le persone (0/1/2/più), vede un foglio mostrato, un documento avvicinato alla webcam e la luce; non descrive la scena e non legge nessun testo.","scelta":"leggero","preferenza":"auto","fabbisogno_mb":190,"caricabile":"si","memoria_nota":"già in memoria: non chiede altro","sede":"locale"},"clona":{"pronto":false,"motore":"openvoice-v2","pesi":"disco/66fc28e6","nota":"i sorgenti di OpenVoice non ci sono (disco/b77989a4): esegui `AGILETAV_CLONA=1 make pesi` (a runtime non si scarica niente) — ripiego su «openvoice» perché nessun clonatore vero è utilizzabile qui — «qwen3tts»: mancano 11 file dei pesi (il primo: config.json) in disco/cb8564a2: esegui `AGILETAV_CLONA=1 AGILETAV_CLONA_MOTORE=qwen3tts AGILETAV_CLONA_QWEN3TTS_MODELLO=1.7b make pesi` (4,5 GB la 1.7B, 2,4 GB la 0.6B; Apache-2.0) · l'ambiente separato di Qwen3-TTS non c'è (disco/02910515): la sua torch e la sua transformers non convivono con le nostre, quindi vive in un venv suo — lo costruisce `banco/bootstrap-pod.sh` (AGILETAV_CLONA=1). Indicane un altro con AGILETAV_CLONA_QWEN3TTS_PYTHON | «chatterbox»: mancano 6 file dei pesi (il primo: ve.pt) in disco/8cd53e4e: esegui `AGILETAV_CLONA=1 AGILETAV_CLONA_MOTORE=chatterbox make pesi` (~3,3 GB, MIT) · l'ambiente separato di Chatterbox non c'è (disco/8b040edc): i suoi pin (torch 2.6, transformers 5.2) non convivono con questo ambiente, quindi vive in un venv suo — lo costruisce `banco/bootstrap-pod.sh` (AGILETAV_CLONA=1). Indicane un altro con AGILETAV_CLONA_CHATTERBOX_PYTHON. Con «openvoice» la voce prende il timbro della persona ma la cadenza resta di Piper: è la clonazione che il 7/9 il titolare ha giudicato «da sintetizzatore». Imponi comunque un motore con AGILETAV_CLONA_MOTORE","motore_scelto":"openvoice","motore_automatico":true,"motori":["qwen3tts","chatterbox","openvoice"],"fabbisogno_mb":1200,"caricabile":"si","memoria_nota":"ci sta: servono 1712 MB (motore 1200 + margine 512), disponibili 3669 MB","sede":"locale"},"isola":{"pronto":true,"motore":"isola/energia+spettro","pesi":"","vad":{"motore":"energia","chiesto":"auto","pronto":true,"nota":"VAD a energia in numpy: nessun peso, nessuna dipendenza nuova — Silero non è utilizzabile qui (manca disco/ca614352 — `AGILETAV_ISOLA=1 make pesi`; intanto gira il VAD a energia)"},"impronte":{"motore":"spettro","chiesto":"auto","pronto":true,"nota":"impronte cepstrali in numpy (20 coefficienti, peso medio 2, soglia 0.22): nessun peso. Separano timbri diversi, NON sono un verificatore di parlante — ECAPA non è utilizzabile qui (in disco/ae01dc16 mancano embedding_model.ckpt, hyperparams.yaml, mean_var_norm_emb.ckpt, classifier.ckpt, label_encoder.txt — `AGILETAV_ISOLA=1 make pesi`)"},"finestre":{"attive":false,"finestra_s":3.0,"passo_s":1.5,"soglia":0.22,"nota":"impronta sul tratto intero: le finestre sono legate a ECAPA, perché è con esse che ne è stata misurata la soglia. Un tratto che contiene due turni attaccati resta uno solo"},"labbra":{"disponibile":true,"nota":"MediaPipe 1.0.1 Face Landmarker pronto (disco/dcb39373)","misura":"mediapipe"},"secondi_minimi":5.0,"nota":"VAD energia, impronte spettro sul tratto, labbra MediaPipe","fabbisogno_mb":60,"caricabile":"si","memoria_nota":"ci sta: servono 572 MB (motore 60 + margine 512), disponibili 3669 MB","sede":"locale"}},"coda":{"tetto_turni_contemporanei":2,"turni_in_corso":0,"posti_liberi":2,"riserva_esercizio":1,"il_prossimo_turno_pesante":"entra","riprova_fra_secondi":null,"attesa_in_coda":false,"rotte_che_prendono_un_posto":["POST /v1/sessioni/{identificativo}/parla","POST /v1/sessioni/{identificativo}/conversa"],"rotte_che_possono_dire_servo_occupato":{"POST /v1/sessioni/{identificativo}/parla":"posto_del_servizio","POST /v1/sessioni/{identificativo}/conversa":"posto_del_servizio","POST /v1/sessioni/{identificativo}/vede":"scheda_presa","POST /parla":"scheda_presa"},"nota":"i posti liberi sono una lettura di questo istante, non una prenotazione: fra questa risposta e la tua richiesta un altro cliente può prendere il posto, e allora arriva 503 servo_occupato con Retry-After. Nessuno viene messo in attesa: chi non entra riceve subito il rifiuto. Il tetto è del servizio, non della tua chiave: la quota della chiave si legge in GET /v1/chiave (minuti e turni al giorno). I posti NON sono l'unica strada per un servo_occupato: rotte_che_possono_dire_servo_occupato elenca tutte le rotte che possono darlo, con la causa accanto — posto_del_servizio (questo tetto) oppure scheda_presa (un servo che sta servendo un altro turno, che non passa da qui e quindi non si prevede da questi numeri)."},"turni":{"turni_presi":1,"smontaggi":0,"ultimo_smontaggio_ms":null,"smontaggio_piu_lento_ms":null,"finite_a_vuoto":0,"rifiutati_al_tetto":0,"ultimo_rifiuto_al_tetto":null,"nota":"questi conti sono una memoria del PROCESSO e un riavvio li azzera: 0 non vuol dire «mai», vuol dire «non da questo riavvio» (il riavvio si legge in /salute → codice). null in ultimo_smontaggio_ms e smontaggio_piu_lento_ms vuol dire «nessuno smontaggio in questo processo», che è diverso da 0 («misurato, ed è stato immediato»). LIMITE: contano i posti presi dalle rotte pesanti di /v1 (rotte_che_prendono_un_posto in coda); la scorciatoia del banco POST /parla usa la scheda ma non prende un posto, quindi non entra in questi numeri. LIMITE: lo smontaggio di un turno abbandonato chiude DOPO la risposta, quindi smontaggi, ultimo_smontaggio_ms e smontaggio_piu_lento_ms letti a finestra ancora aperta contano per DIFETTO: si rileggono a finestra CHIUSA. rifiutati_al_tetto e ultimo_rifiuto_al_tetto (UTC) contano SOLO i 503 servo_occupato al tetto del servizio — non la riserva del collaudo, non il servo del pod che si dice occupato. Da soli però non bastano a decidere un pod in più: un totale da riavvio non dice se la domanda c'è ADESSO. Il verdetto, con la sua finestra e la sua soglia, è in domanda_che_non_entra qui accanto.","domanda_che_non_entra":{"finestra_s":300,"rifiuti_nella_finestra":0,"sessioni_distinte_nella_finestra":0,"soglia_sessioni_per_un_pod_in_piu":2,"serve_un_pod_in_piu":false,"il_piu_vecchio_della_finestra":null,"rifiuti_dimenticati_per_il_tetto":0,"chi_apre_il_pod":"il broker della regia: questo servizio non ha le chiavi del fornitore e non accende niente","nota":"il verdetto guarda le SESSIONI DISTINTE respinte al tetto nella finestra, non i rifiuti: un cliente che ritenta in un ciclo fa molti rifiuti e un pod in piu' non lo servirebbe meglio, mentre due sessioni diverse sono domanda che il tetto non copre. I rifiuti della riserva del collaudo e il 503 del servo di un pod non entrano qui (sono un altro tetto), come in rifiutati_al_tetto. E' memoria del PROCESSO: un riavvio azzera la finestra, e 0 vuol dire «nessun rifiuto da questo riavvio in questa finestra», non «mai». Sopra rifiuti_dimenticati_per_il_tetto > 0 i conti della finestra sono per DIFETTO (la fila ha un tetto in memoria), e il verdetto a quel punto e' comunque vero. I conti della finestra scendono col TEMPO che passa anche se nessuno chiede niente (un rifiuto esce dalla finestra): e' il solo pezzo di /salute che cambia da se', e cambia perche' il fatto e' invecchiato, non perche' la lettura scriva. Nessun identificativo di sessione esce da qui: solo conti."}},"motori_memoria":{"fresca":true,"vecchia_di_s":0.0},"motori_remoti":{"attivo":true,"base":"","anelli":{"ascolto":"locale","cervello":"locale","voce":"locale","labbra":"remoto (pod)","clona":"locale","vista":"locale"},"sedi":{"ascolto":{"sede":"locale","indirizzo":"","nota":"gira su questa macchina"},"cervello":{"sede":"locale","indirizzo":"","nota":"gira su questa macchina"},"voce":{"sede":"locale","indirizzo":"","nota":"gira su questa macchina"},"labbra":{"sede":"remoto (pod)","indirizzo":"interno/c68bf823","raggiungibile":true,"latenza_ms":148,"errore":null,"interruttore_aperto":false,"riprova_tra_s":0.0,"interruttore_aperto_da_s":0.0,"nota":"sul servo interno/c68bf823 (148 ms)"},"clona":{"sede":"locale","indirizzo":"","nota":"gira su questa macchina"},"vista":{"sede":"locale","indirizzo":"","nota":"gira su questa macchina"}},"servi":{"http://host.docker.internal:8711":{"anelli":["labbra"],"raggiungibile":true,"latenza_ms":148,"errore":null,"letto_da_s":1.3,"interruttore":{"aperto":false,"motivo":"","riprova_tra_s":0.0,"aperto_da_s":0.0},"versione":"1.1","gpu":"NVIDIA RTX A6000, 0/46068 MB usati all'avvio"}},"un_servo_per_organo":false,"servo":{"raggiungibile":true,"latenza_ms":148,"errore":null,"letto_da_s":1.3,"sonda_viva":true,"sonda_ogni_s":3.0,"versione":"1.1","gpu":"NVIDIA RTX A6000, 0/46068 MB usati all'avvio","sequenze_aperte":0},"interruttore":{"aperto":false,"aperto_da_s":0.0,"errori_consecutivi":0,"soglia":3,"riprova_tra_s":0.0,"attesa_corrente_s":0.0,"scatti":78868,"motivo":""},"tempi_massimi_s":{"ascolto":10.0,"cervello":20.0,"clona":60.0,"labbra":40.0,"labbra_spezzone":45.0,"salute":4.0,"turno":70.0,"vista":20.0,"voce":40.0},"ripiego_volto":"rifiuto","nota":"gli anelli pesanti girano sul pod, attraverso il tunnel SSH"},"memoria":{"disponibile_mb":3669,"tetto_mb":4500,"usata_mb":915,"margine_mb":512,"guardia":"attiva","motori_rifiutati":[],"nota":"la guardia rifiuta un motore che non ci sta e lo dice, invece di farsi uccidere dal kernel a metà caricamento"},"api":{"contratto":"/v1 (POSTA §8.1)","documentazione":"/docs","guida":"/inizia","spezzoni":true,"chiavi":{"archivio_presente":true,"chiavi_attive":18,"autenticate_dall_avvio":{"chiavi_distinte":4,"riconoscimenti":151,"ultima":"2026-10-26T18:07:34.779+00:00","da_quando":"2026-10-22T14:23:38.841+00:00","nota":"chiavi riconosciute da questo avvio: il segreto di questo processo e le chiavi in archivio si parlano. Non promette niente sulle altre chiavi attive, che nessuna lettura puo' provare senza il loro valore"},"segreto_di_sviluppo":false,"nota":"in servizio"},"conti":{"presente":true,"percorso":"disco/bd459714","conti":21,"promo_attivi":3,"nota":"in servizio","utente_demo":{"presente":true,"utente":"demo","conto_id":"c_443fd57c5a95","email":"demo@agile.software","acquisto_pronto":true,"avatar_salvati":1,"nota":"in servizio"}}},"volti_delle_persone":{"registro_leggibile":true,"persone":4,"per_origine":{"fotorealistico":4},"volti":[{"id":"nadia-orvieti","volto":"nadia-orvieti.png","origine":"fotorealistico","nota":"segmind/SSD-1B · Apache-2.0 (SSD-1B, segmind; verificata alla fonte: api/models/segmind/SSD-1B, gated: false) · seme 1038 · sha256 e5fdfa9f380e…"},{"id":"iris-calandri","volto":"iris-calandri.png","origine":"fotorealistico","nota":"segmind/SSD-1B · Apache-2.0 (SSD-1B, segmind; verificata alla fonte: api/models/segmind/SSD-1B, gated: false) · seme 4021 · sha256 8f8af7540d0c…"},{"id":"alba-sarmenti","volto":"alba-sarmenti.png","origine":"fotorealistico","nota":"segmind/SSD-1B · Apache-2.0 (SSD-1B, segmind; verificata alla fonte: api/models/segmind/SSD-1B, gated: false) · seme 4033 · sha256 277f17b6459a…"},{"id":"lea","volto":"lea.png","origine":"fotorealistico","nota":"grok-imagine-image (xAI), consegnato dalla regia il 9/9/2026 · output del modello, uso consentito dai termini xAI (dichiarato dalla regia); nessun peso di terzi ridistribuito · seme None · sha256 233135817aab…"}],"nota":"tutti i volti sono i ritratti fotorealistici del registro, provenienza verificata"},"primo_disegno":{"grezzo":"16","chiesto":16,"effettivo":16,"retta":null,"buco_ms":null,"buco_tollerato_ms":200.0,"totali_primo_spezzone":null,"fonte_dei_totali":null,"piu_corto_che_si_copre":null,"stato":"attivo_senza_controllo","perche":"AGILETAV_LABBRA_RETTA non è impostata o non si legge: la retta è della MACCHINA, non del prodotto, e chi non l'ha misurata qui non deve poter far finta di averla. Senza di lei la guardia non controlla niente, per scelta"},"flusso_prima_del_prefisso":{"acceso":false,"grezzo":"","riconosciuto":false,"fonte":"costante_di_serie","costante_di_serie":false,"per_il_cliente":"leva SPENTA: il flusso si apre dopo il wav del prefisso, quindi un guasto della voce sul primo spezzone torna al cliente un 503 o un 500. Leva ACCESA: il flusso e' gia' aperto, il cliente prende 200 e lo stesso guasto diventa un avviso TurnoFallito nel diario della sessione (GET /v1/sessioni/{id}/eventi)","nota":"lo stato si DICHIARA invece di dedurlo: dopo uno scambio del container la sola prova che la leva e' spenta sarebbe stata una deduzione dal diario, e «spenta» e «non dichiarata» davano la stessa risposta (D-403)"},"ascolto_dal_vivo":{"rotta":"WS /v1/sessioni/{id}/ascolto-dal-vivo","servita":false,"rifiuto":"ascolto_dal_vivo_spento","interruttore":{"acceso":false,"grezzo":"","riconosciuto":false,"fonte":"costante_di_serie","costante_di_serie":false}}}