--:--:--
torna a Tasks
progetto · VidFac Video Factory

VF · Automatizzare la scelta della notizia e il testo a schermo (fase F3)

In corsoAlta
Prossima azione

Chiudere il buco fra piano e pixel: un cancello che confronti i decimali dichiarati nel piano con quelli stampati a schermo (il difetto e uscito tre volte).

Note

La catena automatica della Video Factory (fase F3): scegliere la notizia, verificare il dato, comporre il piano di montaggio. Tre anelli su quattro esistono — censimento delle fonti primarie, 13 cancelli di verifica davanti al render, composizione del piano con scelta motivata…

continua a leggere (4654 parole)

La catena automatica della Video Factory (fase F3): scegliere la notizia, verificare il dato, comporre il piano di montaggio. Tre anelli su quattro esistono — censimento delle fonti primarie, 13 cancelli di verifica davanti al render, composizione del piano con scelta motivata dell'archetipo. Tutti e cinque gli archetipi sono arrivati almeno una volta a un fotogramma. Regola d'impianto: nessun cancello chiede a un modello se un dato e giusto, tutti confrontano stringhe col testo scaricato dall'ente. --- diario --- [era in «prossima azione»] PROSSIMA AZIONE: (1) MapZoom RENDERIZZATO per la prima volta il 07-08 (loop-vf-13): era l'ultimo dei cinque archetipi mai arrivato a un fotogramma. Con SETTE gate verdi sono usciti due difetti. (a) La banda stampava 11 dove il claim dice 10,9: 'decimali: 0' fisso dentro un Math.round() in MapZoom.tsx — la TERZA istanza dello stesso difetto (G6/DataLowerThird il 04-08, grafico a barre il 06-08), sopravvissuta nell'unico modulo che non si era mai visto. G6 diceva il vero guardando il pack, e il piano dichiarava decimals:1 corretto: era il TEMPLATE a buttarlo via, e fra il campo del piano e il pixel non guardava nessuno. Quinta volta che la domanda giusta su un controllo non e' se funziona ma SU QUALE DOCUMENTO STA GUARDANDO. (b) Il 34% superiore dello schermo NERO: sopra il Polo Nord la carta finisce, il pin 'Arctic Ocean' cadeva sul Mare di Norvegia e sotto si vedeva il Mediterraneo — un video sull'Artico che mostra l'Europa, cioe' l'errore del video 1 in un caso che il video 1 non copriva. (2) CORRETTI entrambi: MapZoom.tsx ora legge decimals e prefix dal piano (verificato sul fotogramma su tre formati: 10.9, 5,796 intero, +1.28 col prefisso); nuova funzione inquadraturaDentroLaMappa() in scrivi_piano.mjs rende MapZoom inammissibile quando la camera esce da [0,1] — geometria calcolabile dalle costanti del template, due divisioni, non gusto. Provata FUORI dal caso che l'ha generata: 7 geografie misurate (bocciate Artico e Antartide, dentro Amazzonia/Europa/Mediterraneo), e caso C1-bis in test_anello3.mjs che pretende il rifiuto sui due poli E l'ammissione su un dominio temperato — una regola che bocciasse tutto passerebbe la meta' sbagliata del test. Il vecchio C1 usava le coordinate polari ed era verde: e' quello il punto. Tutte e cinque le suite verdi. Doc: paragrafo 8octies in F3__CATENA_AUTOMATICA.md; sonda in claim_pack/_sonde/sonda-mapzoom-arctic.json; render in out/_sonda-mapzoom-arctic.mp4 (il difetto) e out/_prova-mapzoom-decimali.mp4 (la correzione). (3) CONSEGUENZA APERTA, richiesta q060: sulla carta equirettangolare i domini POLARI non hanno inquadratura valida (per l'Artico servirebbe zoom >= 6,02, che lascia 17 gradi di longitudine; Antartide 8,33 e 12 gradi). Il ghiaccio artico e' ricorrente nei bollettini C3S, quindi MapZoom oggi non si usa mai proprio sul tema piu' frequente del canale; proposta A = seconda mappa a proiezione polare, public domain, costo 0. Intanto il pack artico ripiega su DataLowerThird, cioe' l'archetipo con cui il video 4 fu montato a mano: quella divergenza si e' chiusa da sola. (4) DA FARE ORA: nessun pack REALE dichiara ancora il campo geografia — finche' l'anello 1 (cerca_notizie.mjs) non lo compila, MapZoom resta un archetipo scegliibile solo a mano. E il limite va detto: la geometria sa dire se si vede il fondo, NON se si vede la cosa giusta; che l'inquadratura copra il dominio resta una scelta editoriale da guardare a occhio. (5) Restano scoperti: G3 chiede una nota a schermo anche quando il confronto fra anni e' gia' scritto sotto le barre; G13 non vede i numeri NUDI nei testi; il loop musicale non ha una prova che giri da sola; i pannelli di SplitCompare restano vuoti finche' non ci sono clip; la vista di apertura di MapZoom (mondo intero, scale 0.282, bande nere per costruzione) e' hardcoded e non e' mai stata decisa davvero. (6) Bloccate su Ettore: q058 (chiusura video 2), q059 (video 1), q060 (mappa polare), le 4 vecchie decisioni (ec.europa.eu in allowlist, G2 sul percorso URL, come datare i bollettini C3S, filtro tematico lasco) e la credenziale Anthropic da agganciare ai 2 nodi n8n Kuuu3geNw7F2yHke. Creato il 2026-07-29 (loop-vf-3) come conseguenza diretta del piano riallineato v0.5, fase F3. E' IL lavoro che q011 chiede davvero: Ettore ha chiesto 20-30 video/mese ma 'prima si costruisce l'automazione completa'. Oggi l'unico anello automatico e' il montaggio (Remotion): la scelta della notizia, la verifica del dato e la scrittura dei testi sono al 100% manuali, quindi il ritmo e' strutturalmente irraggiungibile a prescindere da quanti video-test produciamo. NON dipende da risposte di Ettore: e' lavoro pronto anche a q024/q025 aperte. Il punto piu' delicato non e' generare il testo (facile) ma VERIFICARE il dato senza intervento umano: i tre video prodotti hanno richiesto ogni volta un controllo sulla fonte primaria che ha intercettato errori reali (il dominio 'Europa' vs 'Europa occidentale' il 28-07; i 20,98 C inesistenti e i tre valori non confrontabili il 29-07). Un'automazione che salti quel controllo produce video falsi in scala: il criterio di 'fatto' di questo task e' che il controllo resti, non che sparisca. | GIRO loop-vf-4 (2026-07-30, notte): costruito e PROVATO il cancello di verifica, il pezzo che il task indicava come piu rischioso. Cartella montaggio_remotion/automazione/: verifica_claim.mjs (gate G1-G7), produci.mjs (G8-G9, mette il cancello DAVANTI a remotion render), fonti_primarie.json (allowlist enti), dominio_ampliamenti.json (regole di perimetro), casi_test/casi.json + test_verificatore.mjs, claim_pack/video-03 come formato di riferimento, doc F3__CATENA_AUTOMATICA.md. IMPOSTAZIONE: ribaltata la catena - non si parte dalle notizie per poi verificare, si parte dai bollettini degli enti primari, cosi la classe di errore piu grave (un numero che l ente non ha mai pubblicato) non puo nascere. Nessun gate chiede a un LLM se un dato e giusto: tutti confrontano stringhe col testo scaricato dall ente. RISULTATO MISURATO: 9/9 casi reali - i 2 video approvati passano, e i 5 errori veri intercettati a mano il 28 e 29-07 (dominio Europa vs Europa occidentale, 20,98 C inesistenti, valori non confrontabili, Math.round che stampava 21 invece di 20,86, fonte non primaria) sono bocciati OGNUNO DAL GATE GIUSTO. Fail-closed verificato: senza rete e senza copia locale esce INDECIDIBILE exit 2, non passa. G8/G9 provati con manomissione deliberata del piano del video 3 (valore cambiato + numero orfano aggiunto): bocciati entrambi, render mai partito. DUE COSE IMPARATE: (1) la prima versione di G4 bocciava la caption REALE del video 3 (Mai un giugno cosi caldo per il mare) che il dossier aveva giudicato corretta - un falso positivo e pericoloso quanto un falso negativo, perche un gate che boccia il lavoro buono viene spento; da qui la separazione G4 (vieta di affermare un perimetro piu ampio) / G7 (pretende il perimetro nell etichetta del numero); (2) la stessa pagina C3S scrive il grado con DUE caratteri diversi, U+00B0 simbolo e U+00BA che Unicode classifica come LETTERA: sopravviveva alla normalizzazione e faceva fallire G1 su un video corretto. Trovato solo perche i casi di test sono i video veri contro la pagina vera. G9 e il gate a cui tengo di piu: nessuna cifra a schermo senza citazione dietro - non le cifre importanti, nessuna. RESTANO: anello 1 (scelta notizia dai bollettini) e anello 2 (generatore testi, dopo q025 perche e l unico pezzo che dipende dalla lingua e si rifarebbe). Costo 0 euro. | GIRO scripting (2026-07-30, sessione fable-5): costruito l ANELLO 2 nella sua parte template-aware. Workflow n8n ''VF - Scripting -> Piano template'' id Kuuu3geNw7F2yHke su n8n Cloud hectorai, INATTIVO, 7 nodi, nessuna credenziale inline. Sub-workflow richiamabile (Execute Workflow Trigger, 14 input tipizzati) che prende una notizia strutturata, SCEGLIE il template fra i 5 e produce il PIANO JSON con i campi esatti di quel template. Scelte: Basic LLM Chain e non Agent (compito one-shot, niente tool); Output Parser Structured con JSON Schema manuale di 7,5 KB che copre tutti e 5 i template verificati sul codice in src/*.tsx (source di KineticStatCard, decimals/prefix dei counter, panels esattamente 2, focus x/y/scale) + autoFix con secondo modello fixer; claude-sonnet-5 su entrambi i nodi. Code node di post-validazione: il valore a schermo DEVE essere uguale al dato_valore in input (il modello non puo introdurne di suoi), x/y della mappa ricalcolati dai lat/lon in input e non delegati all aritmetica del modello, src non-URL azzerati, audioSrc/musicSrc forzati a null (trappola nota), contratto {ok,template,plan} senza eccezioni. PROVATO SENZA SPENDERE: sample plan src/_scripting-sample-plan.json costruito sui dati gia verificati del video 2 (Copernicus C3S/ERA5, +3,06 C) e RENDERIZZATO, out/_scripting_sample_test.mp4 24 s - i campi extra del piano non disturbano Remotion. Zero chiamate API. Copia del workflow in automazione_n8n/. F1 EN e F2 non toccati. NOTA DI CONTESTO: il mandato v1 prevedeva timing raffinati da Whisper, ma con q008 voce e Whisper sono caduti - i tempi del piano sono di fatto quelli finali, il campo timing resta ''stimato'' perche best-effort. RESTA: credenziale Anthropic da agganciare a mano ai 2 nodi in UI (prerequisito di Ettore), test con notizia campione non lanciato perche consuma API, e il video-worker /produce che conosce solo EnvShort - per gli altri 4 template va esteso o si usa il percorso locale produci.mjs coi 9 gate, che e gia template-aware. Costo 0 euro. | GIRO anello 1 (2026-07-30, T2): costruito l'ANELLO 1 - censimento fonti + estrazione automatica del claim-pack dai bollettini degli enti primari. File in montaggio_remotion/automazione/: fonti_primarie.json esteso (allowlist G2 intatta + 12 bollettini censiti con ente/URL/formato/lingua/cadenza/cosa pubblica/come si cita + 7 fonti scartate col motivo, perche' il giro a vuoto non si rifa' due volte), cerca_notizie.mjs (645 righe, zero dipendenze), notizie_candidate.json (output del run reale), claim_pack/_candidati/ghiaccio-artico-giugno-2026.json. verifica_claim.mjs toccato SOLO per esportare norm/stripHtml/SOGLIA_FRESCHEZZA_GG: l'estrattore le importa invece di copiarle - due normalizzazioni che divergono sono un modo silenzioso di verificare una cosa e montarne un'altra. Nessuna logica di gate cambiata. FONTI: 12 attive (C3S bulletin + news, CAMS, CMEMS, NSIDC, NOAA CPC ENSO, NOAA GML, NASA x2, EEA, IEA, Eurostat), 7 scartate. RUN REALE 30-07 (12 fonti): 10 pronte, 1 da datare, 10 fuori tema, 50 scartate (32 per G5 troppo vecchie, 18 senza alcun numero con unita'); 40 voci non esaminate per i tetti dichiarati, scritto nel resoconto e non nascosto. AGGANCIO AI GATE DIMOSTRATO: dal candidato C3S ghiaccio marino artico giugno 2026 (10,9 milioni di km2) costruito un claim-pack riempiendo solo i campi che l'estrattore lascia null -> verifica_claim.mjs OK su tutti e sette i gate pre-render (G8/G9 dipendono dal piano di montaggio = anello 2). L'estrattore ripassa G1/G2/G5 a monte come pre-filtro, il cancello ricontrolla comunque tutto da capo: 0 host fuori allowlist sopravvissuti, 0 citazioni su 67 prive del proprio valore, i 20,98 C inventati dalla stampa non compaiono - non perche' filtrati, perche' non stanno in nessuna pagina dell'elenco. VERIFICATO DA ROMEO: test_verificatore.mjs 9/9 come atteso dopo la modifica, il claim-pack candidato passa 12 controlli su 12, il verbatim '10.9' esiste davvero nelle pagine scaricate in fonti_cache/. QUATTRO COSE IMPARATE DAL RUN, che valgono piu' del codice: (1) meta' degli enti primari non ha RSS e chi ce l'ha spesso non ci mette i bollettini - il feed C3S contiene workshop, i bollettini mensili stanno in un indice separato: da qui i tre formati rss/atom, indice-html, pagina-fissa; (2) 'non so quando' non e' 'troppo vecchio' - il bollettino mensile C3S sulla temperatura, LA fonte del canale, non espone alcuna data di pubblicazione: buttarlo era sbagliato, dedurla dallo slug sarebbe stato inventarla, quindi esiste il mucchio 'da datare'; (3) G1 garantisce che la citazione esista, non che sia leggibile - su Eurostat un banner cookie era finito dentro una citazione e sarebbe passato; (4) NSIDC Sea Ice Today si e' fermata (feed vivo, ultima voce 15-10-2025 intitolata 'Sea Ice Today services reduced') e Copernicus Marine e' ferma al 18-07-2025. Costo 0 euro: nessuna API a pagamento, nessun modello chiamato dallo script, nessuna pubblicazione, nessun render. | RISPOSTE DI ETTORE DEL 2026-07-30 (via stanza Richieste, nessuna richiesta piu' aperta): q025 LINGUA = INGLESE (opzione B, 'come diceva il piano di giugno') -> i 3 video prodotti sono in italiano: da decidere se si ridoppiano/rifanno i testi o se restano come test interni. q024 MATERIA VISIVA = 'il sistema deve poter usare tutti gli strumenti che servono, poi si sceglie in base al risultato' -> archivi public domain E clip AI a pagamento entrambi ammessi, resta il tetto di 2 euro/video su clip AI e la scelta si fa sul risultato. q026 VERSIONAMENTO = opzione A: spostare il codice del montaggio nel repo Agente Residente (gia' sotto git) e lasciare nel vault solo i documenti. q022 CHI SCRIVE IL CODICE = Archimede solo app gestionali/di sistema, NON la programmazione dentro i singoli task di progetto. | GIRO loop-vf-5 (2026-07-31, mattina): eseguita q026 - montaggio_remotion spostato nel repo git (materiale condiviso/Video_Factory/montaggio_remotion), nel vault restano documenti + dossier_fonti/ + puntatore montaggio_remotion__DOVE_E_FINITO.md; fuori da git solo public/ e out/ (125 MB di media). Percorsi degli script gia' relativi: trasloco senza correzioni, verificato con la suite e con un render completo. DUE CONSEGUENZE TECNICHE DI q025 (inglese), nessuna delle due visibile a occhio: (1) la CIFRA cambia con la lingua (10.9 vs 10,9) e la regola di formattazione stava in theme.ts E in una seconda copia dentro produci.mjs, quella con cui G8 decide cosa crede che lo spettatore veda - due copie della stessa regola sono la falla del claim-pack rientrata dalla finestra; ora la regola e' una sola (src/formato_numero.mjs, importata dai template via theme.ts e dal cancello) e c'e' il GATE G10: pack e piano devono dichiarare la stessa lingua, un piano senza lang renderizza in italiano quindi con un pack inglese viene BOCCIATO invece di uscire sbagliato. (2) un gate testuale e' scritto in una lingua: dominio_ampliamenti.json era quasi tutto italiano, quindi in inglese G4 AVREBBE SMESSO DI SCATTARE SENZA DIRLO - un video EN che afferma 'The entire Arctic is melting' su un dato di solo ghiaccio MARINO passava tutti i gate. Buco provato con un caso di test scritto PRIMA della correzione e lasciato agli atti, poi chiuso con termini inglesi tenuti a livello di FRASE (vietare 'arctic' da solo boccerebbe un hook legittimo e un gate che boccia il lavoro buono viene spento). Casi di test 11/11, nessun falso positivo. VIDEO 4, primo in inglese e primo nato da un candidato dell'anello 1: out/arctic-sea-ice-june-2026.mp4, 1080x1920, 26 s, 780 frame, audio -21,9 dB, ghiaccio marino artico giugno 2026 = 10.9 milioni di km2, 5% sotto la media 1991-2020, sesto valore piu' basso in 48 anni; fonte C3S 02-07-2026, dieci gate verdi. Il fatto piu' vendibile ('sixth-lowest') NON puo' diventare una cifra a schermo perche' G1 pretende il valore dentro la citazione e li' c'e' la parola 'sixth': resta una caption. LIMITE TROVATO GUARDANDO I FOTOGRAMMI: il contatore anima da 0 al valore, a 12 s il fermo immagine legge '2 %' mentre il dato e' 5 % - G9 protegge il PIANO, non i frame intermedi, e con gli interi piccoli i valori di passaggio sembrano statistiche vere. Costo 0 euro. | GIRO loop-vf-6 (2026-08-01, ora di pranzo): due consegne. (A) IL CONTATORE CHE MENTIVA. Il difetto del video 4 (a 12 s il frame legge '2 %' per un dato del 5 %) e' chiuso, ma non con la soglia sul valore che sembrava ovvia: quella e' arbitraria e sbaglia i casi di confine. Cio' che rende pericoloso un fotogramma non e' quanto e' piccolo il numero, e' PER QUANTO TEMPO un numero falso resta immobile. Regola in src/contatore.mjs: nessuna cifra falsa ferma oltre 100 ms (dieci cambi al secondo: sotto e' movimento, sopra e' dato); se il conteggio non ce la fa, non si anima e la cifra vera si vede dal primo fotogramma. Tre scoperte applicandola: (1) l'amplificatore vero era la durata PROPORZIONALE alla banda (fino al 50%: su 7 s, mezzo secondo per ogni valore falso) e per giunta incoerente fra template - ora 900 ms fissi per tutti; (2) il ritardo di partenza di 130 ms era esso stesso un riposo su cifra falsa (130 ms di '0' fermo con etichetta e fonte gia' leggibili): trovato dalla MISURA, non dall'occhio, perche' prima di toglierlo tutte le cifre dei 4 video risultavano non animabili; (3) il difetto c'era anche in un video italiano APPROVATO - il 0,01 del video 3 restava a '0,00' per quasi mezzo secondo. Le tre copie del conteggio (Graphic, DataLowerThird, MapZoom) piu' i numeri del grafico a barre ora chiamano un modulo solo. Nuovo gate G11 + test_contatore.mjs che riproduce il difetto col calcolo vecchio (700 ms di riposo, '2 %' a 12 s), verifica le 10 cifre vere dei 4 video e LEGGE I SORGENTI dei template per impedire che un template nuovo si ricopi il conteggio a mano - perche' il modo naturale di rimettere in circolo il difetto non e' cambiare il modulo, e' scriverne un altro. Verificato: 11 cancelli verdi su video 3 e 4, tsc pulito, i 3 video italiani rirenderizzati senza regressioni, fotogramma a 12 s guardato con gli occhi (ora legge 5 %). (B) ANELLO 2 IN VERSIONE LOCALE: automazione/scrivi_piano.mjs, dal claim-pack ai testi e al piano JSON, zero euro e zero chiamate esterne. Il criterio non e' che scriva bene ma che non possa affermare cio' che la fonte non dice, quindi non SCRIVE: SCEGLIE. Caption verbatim dalla fonte primaria, sole trasformazioni che TOLGONO testo. LA COSA IMPORTANTE IMPARATA: il verbatim non basta. Prima versione, cancelli tutti verdi, uscita hook 'Sea ice cover was above average in much of the Pacific sector' e una caption sui mari di Amundsen e Ross - ogni parola verbatim dal bollettino C3S, ma il dato a schermo diceva 5% SOTTO la media e due mari su tre erano ANTARTICI. Nessuna frase falsa, un video falso: MENTIRE PER SELEZIONE. Chiuso con due regole strutturali: FINESTRA (solo le frasi a +/-3 dalla citazione che G1 ha gia' verificato: il bollettino ha una sezione artica e una antartica con le stesse formule, e 'arctic' e' una sottostringa di 'antarctic') e VERSO (niente direzione opposta al dato, salvo che la frase porti entrambe, perche' allora e' un confronto). Piu': nessuna misura con unita' che non sia un claim verificato, e niente note di metodo ('The anomalies are expressed as a percentage...' era finita in caption alla seconda prova: frase vera, finestra giusta, e a schermo un video che spiega la legenda invece della notizia). Principio annotato: un SELETTORE puo' permettersi di essere piu' severo di un CANCELLO, perche' scartare una frase buona costa una frase, mentre un gate che boccia lavoro buono viene spento dopo due volte. Sul claim-pack del video 4 la prima caption generata e' LA STESSA scritta a mano; il piano passa tutti e undici i cancelli e monta (out/_anello2-arctic-auto.mp4, 21,8 s, audio -22 dB). Limite dichiarato: stile piu' asciutto di un modello - e' il pavimento, non il soffitto, e resta la rete di sicurezza a costo zero quando arrivera' la versione cloud. Costo 0 euro. | GIRO loop-vf-7 (2026-08-02, mattina): PROVATO L'ANELLO 2 SU UNA FONTE MAI VISTA, ed e' li' che si e' rotto - il video e' il sottoprodotto, il risultato del giro sono i difetti. Candidato scelto dall'anello 1 dal vivo: NOAA CPC ENSO Diagnostic Discussion del 09-07-2026 - ente diverso da Copernicus, formato diverso (pagina fissa .shtml), tema diverso (El Nino, non ghiaccio marino). PRIMA USCITA: undici cancelli verdi, verdetto OK, e i testi a schermo ILLEGGIBILI - hook 'El Ni&ntilde;o strengthened over the past month', caption 'was +1.2&deg;C', e una terza caption troncata a 'increased [Fig'. TRE DIFETTI DISTINTI, tutti a cancelli verdi. (1) ENTITA HTML NOMINATE: stripHtml ne decodificava CINQUE (nbsp amp lt gt quot) piu' quelle numeriche; Copernicus serve UTF-8 vero, NOAA serve &ntilde; e &deg;, quindi il difetto non poteva emergere finche' l'unico ente era Copernicus. E NON era un difetto estetico: G1 confronta la citazione col testo ripulito, quindi una citazione CORRETTA scritta in UTF-8 vero - come la scriverebbe una persona o il modello cloud - non si ritrovava nella fonte e veniva BOCCIATA. Un falso positivo del cancello, cioe' la classe di difetto che fa spegnere i gate. Chiuso con decodeEntita() a UNA passata sola (la catena di replace fa doppia decodifica: &amp;lt; diventava '<', cioe' fa dire alla fonte cosa non dice) su una tabella di NOMI, cosi' un'entita' sconosciuta resta visibile invece di sparire in silenzio; applicata anche in LETTURA dalla cache, perche' le copie archiviate a luglio contengono ancora le entita' e altrimenti un video montato offline e uno montato online seguirebbero due regole diverse. (2) TERZA COPIA DELLA STESSA PRIMITIVA: cerca_notizie.mjs aveva un proprio decodeEntita locale con tabella piu' piccola E una propria lettura di cache, quindi dopo la correzione l'estrattore proponeva ancora citazioni con dentro &deg; che il cancello - ormai corretto - non ritrovava piu'. Le due strade divergevano proprio nel file che in testa dichiara di importare norm/stripHtml per non divergere. Ora la primitiva e' una sola, importata. Nel mezzo il cancello ha bocciato il MIO claim-pack costruito sul candidato vecchio: comportamento giusto, si rigenera il candidato invece di correggere il pack a mano. (3) FRASI SPEZZATE DALLE ABBREVIAZIONI: split(/(?<=[.!?])\s+/) taglia dentro '[Fig. 1] .' e produce cocci ('1] .') e code ('[Fig'). Il danno grosso non e' il coccio a schermo, che si vede: e' che la regola della FINESTRA - la difesa contro il mentire per selezione, nata il 01-08 - misura la vicinanza IN FRASI, quindi su una fonte che si frammenta le tre frasi attorno alla citazione diventano tre cocci di punteggiatura e la finestra smette di raggiungere le frasi vere. Un controllo che TACE invece di sbagliare: sembrava funzionare, e su questa fonte non guardava piu' niente (20 frasi fuori prima, 13 dopo). Chiuso con frasiDelTesto(), che non taglia su abbreviazioni note, iniziali puntate e code di rimando, piu' la rimozione dei riferimenti a figura dalle caption. (4) Corretto anche produci.mjs: passava a Remotion il path del piano com'era, e con cwd=REPO un '../src/piano.json' si rompeva DOPO che tutti gli undici cancelli erano passati - il momento peggiore, perche' sembra un difetto del piano; ora i path si riconducono a REPO, relativi e non assoluti (il percorso assoluto contiene spazi e su Windows shell:true lo spezza). VIDEO 5: out/enso-july-2026.mp4, 1080x1920, 396 frame / 13,2 s, audio -23,4 dB, indice Nino-3.4 a +1,2 C e Nino-1+2 a +2,7 C, fonte NOAA CPC 09-07-2026, dodici cancelli verdi, montato su gradienti (la notizia e' pacifica e le clip in repo sono di foresta). Primo video da un ente NON Copernicus. Costo 0 euro. CONSEGNA (b) DOSSIER AUTOMATICO: automazione/dossier.mjs genera il FONTI_DATI markdown dal claim-pack, con gli esiti dei gate RICALCOLATI al momento della scrittura invece che ricopiati - ricopiare a mano un dato verificato e' il modo piu' stupido di introdurre un errore in una catena fatta per non averne, e il dossier e' proprio il documento che qualcuno leggerebbe per controllare. Provato su video 5 E sul video 4 gia' approvato, per non tararlo su un caso solo. SCELTA DICHIARATA: la sezione TRAPPOLE non viene generata e resta una checklist vuota - nei dossier 2 e 3 quella sezione era la parte di valore ('20,98 C non esiste nelle fonti primarie') e nasceva dall'aver guardato ALTRE pagine e averle scartate, informazione che nel pack non esiste; riempirla di frasi plausibili produrrebbe un documento che SEMBRA una verifica. Un vuoto dichiarato si compila, una frase generata si crede. Scrivendo il primo dossier e' emersa una QUINTA cosa: l'omogeneita' dichiarava 'omogenei' confrontando due caselle VUOTE (il pack NOAA non ha ne' dataset ne' baseline perche' la pagina non li scrive) - 'uguale a nulla' non e' 'uguale', ed e' esattamente la trappola del video 3; ora il dossier scrive che l'omogeneita' NON e' dimostrata e va verificata a mano. VERIFICATO: 12/12 casi del verificatore (il dodicesimo scritto PRIMA della correzione, e falliva), test_contatore verde, tsc pulito, fotogrammi guardati a vista (El Nino e +1.2C ora corretti a schermo), ffprobe e volumedetect sul render. RESTA APERTO E NON PROVATO: la banda mostra '1.2 C' mentre la citazione dice '+1.2 C' - su un'anomalia il segno e' parte del dato, e un'anomalia NEGATIVA mostrata senza segno sarebbe un video falso a cancelli verdi. La sonda tentata il 02-08 e' stata inconcludente (la citazione di prova non apparteneva alla pagina interrogata) e NON la dichiaro provata: e' il primo lavoro del giro successivo. | GIRO loop-vf-10 (2026-08-04, notte): G12 provato FUORI dal caso in cui e' nato, ed era sbagliato su meta' degli archetipi. La tabella CAMPI_NUMERICI_DEL_TEMPLATE era stata scritta a memoria: giusta su EnvShort e DataLowerThird (i due del video 5), SBAGLIATA sugli altri due. KineticStatCard non ha nessun campo 'stat': legge 'cards[]' - falso positivo TOTALE, ogni piano bocciato, il video 2 gia' approvato non ripassava il suo stesso cancello. SplitCompare non stampa numeri da 'panels' (solo immagini) ma da 'compare.bars[]' - falso negativo: un piano senza 'compare' passava e a schermo restavano le barre di esempio 10/4. E poiche' 'cards' e 'compare' non erano fra i campi noti, numeri scritti li' mentre il template non li legge passavano lisci: il difetto del video 5 sull'archetipo dove G12 non guardava. Provato eseguendo la versione precedente di produci.mjs estratta da git sui piani veri, non per ragionamento. RIMEDIO: tabella corretta + test_g12.mjs (32/32) che la confronta a ogni run con i due documenti che governano l'immagine (destrutturazione dei props in src/*.tsx e defaultProps in Root.tsx) e cade se un sesto archetipo entra senza essere registrato; produci.mjs reso importabile (guardia CLI) perche' non lo era e chi voleva PROVARE i gate era costretto a copiarli - quinta occorrenza della stessa trappola. INVENTARIO (punto b): tutti e 5 i piani di esempio hanno numeri (21.1 C, 17%, 421 ppm, 10 e 4 M/anno, 10 M ha, 10000 km2): ognuno e' una cifra che il merge superficiale manda in onda se il piano omette il campo. RIPASSO video 1/2/3 col loro --template: coerenti, NESSUN RIMONTAGGIO; catena completa ri-eseguita verde su video 3, 4, 5; fotogrammi del video 2 guardati a vista (+3,06 e +0,56 C). BUCO CHE RESTA: video 1 e 2 non hanno claim-pack, G1-G9 su di loro non hanno mai girato. MUSICA (punto c): collo di bottiglia sciolto - il catalogo incompetech e' interrogabile senza login (pieces.json, 1442 brani con 'feel'), 6 candidate Bright/Uplifting scaricate e misurate all'attacco, 5 prese (Infinite Perspective la piu' piatta a -20,1 dB costanti, Northern Glade, Autumn Day, Inspired, Porch Swing Days) e 1 scartata (Equatorial Complex, -42,5 dB a 0 s). Libreria utile su uno short da 2 tracce entrambe scure a 7, di cui 5 positive. Costo 0. | 05-08 (loop-vf-11): scritti a posteriori i claim-pack dei VIDEO 1 e 2, gli unici due che non erano mai passati dai gate. Per farlo la catena ha dovuto imparare due cose che non sapeva fare: leggere un PDF (la nota INPE arrivava come 438 KB di binario e G1 avrebbe bocciato un video corretto accusando il claim — nuovo automazione/testo_pdf.mjs, zlib di Node, nessuna dipendenza, fail-closed su PDF scansionati) e leggere i numeri di una fonte non inglese (il "5.796" portoghese valeva 5,796 — nuovo campo fonte_formato_numero, opt-in). Nuovo gate G13: le cifre con unita' o segno dentro i TESTI a schermo devono avere un claim. Nasce dal video 1, dove G9 bocciava i 13.038 della barra e non vedeva il "-55%" scritto piu' grande di tutto il resto: terza volta che un gate guarda un documento parziale. Provato su tutti e cinque i video PRIMA di crederci e bocciava i video 3, 4 e 5 (i gradienti CSS sono pieni di percentuali): corretto, test_g13.mjs 18/18. Verdetti: video 2 bocciato solo da G4 (difetto vero, stessa scorciatoia Europa/Europa occidentale gia' corretta in apertura e sopravvissuta in chiusura); video 1 bocciato da G5+G7+G9+G13+G3, e G5 non e' aggiustabile (fonte di 282 giorni) — non era una notizia, era un test di template. Fotogramma guardato: la mappa mostra tutto il Sud America per un dato di nove stati brasiliani. Musica: inspired e porch-swing-days-faster montate in due render veri e misurate con volumedetect — musicVolume 0.27 e 0.25 danno -25/-26 dB, allineati al catalogo; lo 0,5 stimato a memoria era sbagliato di ~5,5 dB. Suite: 17/17, contatore verde, 32/32, 18/18.

Sottotask
0/4
  • Cancello sui decimali: confrontare il campo del piano con quello che il template stampa
  • Anello 4: generare i testi a schermo dal claim-pack (in inglese)
  • Agganciare la credenziale ai 2 nodi n8n del workflow di scripting
  • Decidere la vista di apertura di MapZoom, oggi cablata nel codice
WorkSpace di riferimento

Agente Residente openclaw\materiale condiviso\Video_Factory\montaggio_remotion

Contesto di riferimento

Obiettivo: portare la produzione di un video da manuale ad automatica dalla notizia al render, senza che nessuno debba controllare i numeri a mano. Criterio di fatto: un video esce dal comando di produzione con tutti i cancelli verdi, senza che io abbia scritto a mano il…

continua a leggere (136 parole)

Obiettivo: portare la produzione di un video da manuale ad automatica dalla notizia al render, senza che nessuno debba controllare i numeri a mano. Criterio di fatto: un video esce dal comando di produzione con tutti i cancelli verdi, senza che io abbia scritto a mano il claim-pack ne scelto l'archetipo. Oggi manca l'anello che scrive i testi. Dove: Agente Residente openclaw\materiale condiviso\Video_Factory\montaggio_remotion\automazione\ (documento di riferimento: F3__CATENA_AUTOMATICA.md). Gia provato: 13 cancelli scritti e provati su 9 casi reali; PDF e numeri non inglesi risolti; G13 sulle cifre nei testi; scelta dell'archetipo motivata; inquadratura della mappa verificata sui poli. Restano scoperti: il loop musicale non ha una prova che giri da sola, i pannelli di confronto sono vuoti finche non ci sono clip, la vista di apertura della mappa e cablata e non e mai stata decisa.

Prompt di avvio

da definire

Programmazione di svolgimento

da definire

LIVE
1 AGENTE AL LAVORO ora · Archimede: chat Webchat (sessione principale)26 task in corso su 16818 progetti monitoratiHomelab · Censire HD e creare gallerie dei contenutiHomelab · RAG + NotebookLM locale per documenti voluminosiKB · Costruzione KB (template + 3 argomenti pilota)KB · Obsidian: setup e usoVita · Automazione piano pasti (dispensa→ricette→spesa→piano)Vita · Lista ingredienti collegata a ricette + preferite77 sessioni registrate1 AGENTE AL LAVORO ora · Archimede: chat Webchat (sessione principale)26 task in corso su 16818 progetti monitoratiHomelab · Censire HD e creare gallerie dei contenutiHomelab · RAG + NotebookLM locale per documenti voluminosiKB · Costruzione KB (template + 3 argomenti pilota)KB · Obsidian: setup e usoVita · Automazione piano pasti (dispensa→ricette→spesa→piano)Vita · Lista ingredienti collegata a ricette + preferite77 sessioni registrate