Elenco progetti (sintesi)
file confermato fino a Progetti_Lavoro (non confermati del tutto)agg. 2026-08-28Agente Residente openclaw/ELENCO_PROGETTI.mdELENCO PROGETTI E ATTIVITÀ — v2
⚠️ SUPERATO NELLA STRUTTURA — 2026-08-28. Questo file racconta la vecchia
organizzazione a 5 categorie-cartella del vault. Dal 28/08 i progetti vivono su
cinque livelli — categoria → progetto → sezione → sottosezione → fase → task —
con obiettivo, goal e stato a ogni livello, e in quattro categorie decise da
Ettore (Infrastruttura agentica · Gestionali · Strumenti interni · Impresa) più un
Cantiere che è un parcheggio, non un'area di lavoro.
La struttura completa, coi contenuti, sta inmateriale condiviso/_storico_progetti/PROGETTI_2026-08-28_struttura_5_livelli.md
ed è caricata nella stanza Progetti di CATPIT, che resta la fonte-verità.
Finché la narrativa qui sotto non viene riscritta, per lo stato reale si guarda CATPIT.
Indice
- Riassunto
- Cosa cambia rispetto alla v1
- 00_CONTESTO
- 01_SISTEMA_PERSONALE
- 01_STRUMENTI_di_LAVORO
- 02_CONOSCENZA · Nota operativa — Metodo OpenClaw (preludio ai Progetti di Lavoro)
- 03_PROGETTI_di_LAVORO
- Bisogni trasversali
- Discrepanze da chiudere (decisioni aperte)
Riassunto
Indice dei progetti di Hector, nato dal confronto fra le due lettere personali
(maggio/giugno 2026) e la v1, e poi arricchito con lo stato reale di ogni progetto.
Tiene la struttura a 5 categorie-cartella del vault («procederemo con la struttura
presente»). Rispetto alla prima stesura, questa versione recepisce le decisioni prese:
struttura a 5 categorie confermata, Kavita adottata per libri/fumetti, gestione
dei documenti voluminosi assorbita in Homelab (RAG + NotebookLM locale), **Macchina
Arrotolatrice rinviata**. Le sezioni dai Progetti di Lavoro in poi sono ancora in via di
conferma.
Cosa cambia rispetto alla v1
- WE Green non è più duplicato: voce unica in
02_CONOSCENZA, richiamata (non ripetuta) dai progetti aziendali. - App Homelab aggiornate allo stato reale: Jellyfin, Immich, Navidrome, nocoDB e Kavita (libri/manga/pdf) installate; audiolibri e gallerie percorsi ancora da configurare.
- Struttura confermata: si tiene la suddivisione in 5 categorie-cartella del vault.
- Gestione "large documents" assorbita nel ramo Homelab come DB di conoscenza personale (RAG) + NotebookLM/AnythingLM locale per chattare con file e libri voluminosi.
- Macchina Arrotolatrice rinviata: progetto svuotato, si comincerà più avanti.
- Recepita la lettura di giugno che inquadra Galleria + Strumenti + Jarvis sotto l'ombrello "Homelab_V1 / Sistemi Personali" (senza spostare le cartelle).
- Aggiunta la Nota operativa sul metodo OpenClaw come preludio ai Progetti di Lavoro.
1. 00_CONTESTO
*Cartella di contesto e archivio (lettere personali, recap, materiali storici).
Non contiene progetti attivi: è il riferimento da cui derivano tutti gli altri.*
Attenzione (nota di giugno): in 00_CONTESTO_Archives molte cose non sono state
riviste → possono essere obsolete o incorrette.
2. 01_SISTEMA_PERSONALE
Lettura di giugno: questi tre + gli Strumenti sono visti come un unico ramo
"Sistemi Personali / Homelab_V1".
01_SISTEMA_PERSONALE · Galleria Personale (Homelab)
Vedere comodamente tutto ciò che ho sugli HD e creare dataset di ispirazione.
- App già installate su Docker: Jellyfin (film/serie), Immich (foto/video), Navidrome (musica), nocoDB (tabelle/DB), Kavita (libri, manga, pdf) queste app permettono la visualizzazione dei contenuti sugli HD tramite -gallerie: foto/video, film e serie TV, musica, libri e fumetti -mancano:audiolibri (da configurare — censiti il 02-08: 23 opere, 131 ore, 1,6 GB; poca roba, il lavoro lì è acquisire, non riordinare), percorsi motociclistici e naturalistici + dove dormire
- Censire i contenuti degli HD per categoria censiti: musica libri film e serie TV (02-08-2026: 290 film 639 GB + 30 serie / 1.024 episodi 392 GB) immagini (02-08-2026: 104.259 file, 369 GB, 575 cartelle) video personali (02-08-2026: 4.359 file, 197,6 GB, 43 cartelle) audiolibri (02-08-2026: 23 opere, 238 tracce, 131 ore, 1,6 GB) mancano: niente — il censimento copre tutte le categorie che esistono come dati ➡️ script ripetibili + scheda:
MD_DB_v1\01_SISTEMA_PERSONALE_homelab\Censimento_HD\CENSIMENTO_HD.md(CSV/MD inCensimento_HD\out\). 1.600 GB censiti su cinque categorie. Da decidere: promuovere i_v2dentroDATASETs/(sostituisconoDS_film_Real.csv, 256 righe con percorsi in parte morti) → q045; che fare dei 133 GB di registrazioni di gaming 2016-17 che occupano il 67% dei video personali in 78 file → q046. Restano: ripulire ~15 GB di doppioni film, le 8 cartelle-film vuote e i 34 doppioni iPhone (~359 MB), arricchire i 120 film senza anno. - Dataset di ispirazione: libri, film, musica, arte, luoghi completati libri, film, musica; mancano arte e percorsi questi dataset vivono in "C:\Users\Ettore\Claude\Projects\MD_DB_v1\01_SISTEMA_PERSONALE_homelab\DATASETs"
- Pulire e arricchire i dataset "Real" (libri, serie TV)
- Creare una automazione che automatizza lo scraping da facebook per estrarre i titoli delle canzoni che passano per la trasmissione Radio di Radio3 "Battiti" (indicati sulla pagina quotidianamente), e inserirla in un DataSet personale per ampliare ulteriormente i consigli
- Automatizzare ricerca e download di film, serie, libri, musica (no illegale)
- creazione di un DataBase di conoscenza personale (vedere sotto), visualizzabile da me (file MD + Obsidian) o utilizzabile dall'AI (RAG)
- NotebookLM (AnythingLM like) locale per chattare con file, PDF, libri di grandi dimensioni nota: il secondo può essere una funzione del primo, non per forza devono essere attività separate, ma mentalmente le vivo così
01_SISTEMA_PERSONALE · Vita Organizzata
Gestire in modo più automatico pasti, impegni e lavoro.
- DB dei pasti + automazione lista spesa e ricette, con calendario completato il dataset delle ricette, che vive in "C:\Users\Ettore\Claude\Projects\MD_DB_v1\01_SISTEMA_PERSONALE_homelab\DATASETs" manca: lista ingredienti collegata alle ricette, lista delle mie ricette preferite, automazione che su richiesta di plan pasti fa domande sulla dispensa, sceglie delle ricette, crea la lista della spesa con l'elenco delle ricette, produce il piano dei pasti per la settimana, chiuede se aggiungere a google tasks e se generare il piano dei pasti in tabella stampabile
- 🍽️ Pianificatore Pasti — 🟢 app consegnata (14-07) da Archimede, branch
feat/pianificatore-v1da mergiare + validare. Spazio:01_SISTEMA_PERSONALE_homelab/Pianificatore_Pasti/(porta 8820). Estrae N ricette/settimana con filtri categoria/pasto, preferite, lista spesa aggregata, export MD/CSV, stampa; 500 ricette dal ricettario. CATPIT: a12/a13 (→ In corso). - Gestione impegni (questo da sviluppare in seguito quando l'agente personale sarà avviato)
Gestione lavoro [verrà probabilmente preso in carico dall'agente residente sul pc]
01_SISTEMA_PERSONALE · Jarvis (Assistente Personale AI - Agente residente locale - Openclaw + sviluppo locale)
Assistente collegato al MINI-PC che lavora in sintonia con l'utente (Hector), aiutandolo a organizzare il lavoro e a svilupparlo e svolgerlo
- Definire scope e architettura
- In attesa: progetto importante ma non ancora pronto a iniziare
- (Nota: non presente come progetto su Airtable, solo nel vault.)
01_SISTEMA_PERSONALE · Agente Investimenti (delegato)
Agente semi-autonomo che gestisce la parte tattica/attiva degli investimenti: analizza i dati 3 volte al giorno e invia su Telegram report con suggerimenti operativi azionabili; Ettore esegue su Trade Republic.
- Stato: 🟠 in impostazione (02-07-2026): affidato al nuovo agente residente Creso. Struttura a livelli in
Agente Residente openclaw/Agente_3_Creso/(exAgente_Investimenti/; 01_agente … 07_operazioni_e_valutazione). Design:Agente Residente openclaw/Agente_3_Creso/05_contesto_progetto/PROGETTO_Agente_Investimenti_delegato.md - Conoscenza di base:
MD_DB_v1/02_CONOSCENZA/.../A3_investimenti_mercati(11 schede + progetto_trading) - Autonomia L2 (agente propone, Ettore esegue); primo mese in demo interna (posizioni finte + P&L vs benchmark)
- Primo traguardo: agente autonomo, 3 report/giorno su Telegram (08/14/20), orizzonte mensile
- Universo: 100 strumenti proposti (
Agente_3_Creso/03_dati_mercato/watchlist_100.md), da validare su TR - Dashboard: app Next.js dedicata (≠ CATPIT)
- Imparentato con → Jarvis (stesso runtime OpenClaw + subagenti)
- ✅ Creato su Airtable (record
recw1DuKj7yKHAvHJ, tabella Progetti)
01_SISTEMA_PERSONALE · Miniprogetti e guide
Contenitore di guide pratiche fai-da-te e how-to personali (piccoli progetti home-made e schede su temi specifici). Ogni guida è un'attività.
- Stato: 🟠 avviato (29-06-2026). Spazio:
MD_DB_v1/01_SISTEMA_PERSONALE_homelab/Miniprogetti_e_guide/(indice inREADME.md) - Pipeline per guida: MD → immagini → TeX → PDF finale; formato scheda da standard "metodo Ettore" (indice + riassunto + frontmatter + fonti)
- Canale Discord dedicato agli aggiornamenti di sviluppo: #miniprogetti (id 1521228059263369386)
- Immagini (strumenti per l'agente): foto personali (Immich/HD) → immagini CC (Wikimedia Commons/Openverse via
web_fetch) → generazione AI (image_generate) per diagrammi/illustrazioni →web_search(Brave) per individuare candidati. Crediti+licenza tracciati inimg/CREDITI.md. - Cron di sviluppo (ATTIVO dal 17-07): job
miniprogetti-sviluppo-autonomo— ogni giorno 09:00 Europe/Rome Romeo fa il quadro, sceglie un miniprogetto/guida, lo sviluppa in autonomia e pubblica un report in #miniprogetti (8 campi). Pattern:systemEventsusessionTarget=main. ⚠️ Il loop costruisce ma non sempre riallinea CATPIT/ELENCO (riconciliati a mano il 21-07: Bonsai/Sciroppi/Pane/Fermentati/Resina risultavano "da avviare" pur essendo fatti) — da irrobustire. - Attività (una per guida):
- 🧼 Sapone fatto in casa — 🟢 chiusa (testo + foto CC con crediti + PDF impaginato; variante strutto da guanciale/pancetta)
- 🪴 Erbe e piante domestiche — 🟢 chiusa (ex "Guida personale alle piante"; scheda per pianta + diagramma + PDF). Agg. 20-07 (v1.1): aggiunta scheda "Monstera in acqua / semi-idro" (nutrienti a 1/4, ossigeno, cambio acqua, LECA, passaggio a terra) + voce diagnosi; PDF rigenerato
- 🌳 Bonsai — 🟢 chiusa (auto-costruita dal loop 20-07: guida completa per iniziare — 4 pilastri, scelta albero, interno/esterno, annaffiatura, terriccio/vaso, rinvaso, potatura, filatura, calendario, costi, errori, glossario; diagrammi SVG + PDF)
- 🍹 Sciroppi estivi — 🟢 chiusa (auto-costruita 18-07: metodo base, sciroppi frutta/erbe, conservazione, usi; diagramma SVG + PDF)
- 🎨 Vernici epossidiche — decorare gli occhiali — 🟢 chiusa (guida pilota: prep montatura, mascheratura lenti, miscela/colore, strati sottili, cura 24-72 h; foto CC + diagramma + PDF). Uso scelto: decorazione montature; piccoli oggetti; 2 resine Amazon
- 🧪 Resina epossidica — guida all'uso — 🟢 chiusa (dosaggio, miscelazione, colata, gestione bolle, tempi di cura; PDF impaginato)
- 🎨 Resina epossidica colorata — decorare — 🟢 chiusa (costruita 23-07 su richiesta di Ettore; distinta dalla base e da "occhiali": coloranti — pigmenti/mica/tint/alcohol ink —, regola della dose 5–6% in peso, tecniche petri/geode/onda/river/inclusioni/colata a strati/gioielli, fisica delle celle, sigillatura del poroso, finitura, difetti del colore, progetto guidato "sottobicchieri geode"; diagramma SVG + PDF impaginato)
- 🌿 Cannabis CBD: coltivazione — da avviare (guida; attività lecita — CBD/canapa)
- 🍞 Pane e lievito madre — 🟢 chiusa (auto-costruita: gestione lievito madre, impasto, lievitazione, cottura; diagramma SVG + PDF)
- 🥬 Fermentati (crauti, kimchi, kombucha) — 🟢 chiusa (senza latticini; salamoia, fermentazione, sicurezza, tempi; diagramma SVG + PDF)
- 🕯️ Candele di cera di soia — 🟢 chiusa (auto-costruita dal loop 23-07: perché la soia, la regola d'oro di sicurezza, attrezzatura, ingredienti/dosi, le 3 temperature che contano, procedura passo-passo, scelta dello stoppino, fragrance load, stagionatura, prima accensione e "memoria", difetti; diagramma SVG "3 temperature" + PDF impaginato)
- 🧳 Organizza Viaggi — 🟢 consegnata e live (v2 + potenziamento Fase C+D, 23-07) (design Romeo → build Archimede, verifica Romeo). Spazio:
01_STRUMENTI_di_LAVORO/Organizza_Viaggi/(repo git, branch main; merge56e38a1). Oltre all'organizzatore (countdown, itinerario, trasporti, alloggi, documenti, budget, valigia+template, note) ha il motore "Esplora" in-app (Claude Messages API +web_search): mete storiche/naturalistiche, dove mangiare, vita notturna, eventi nel periodo, generazione "storia dei luoghi"; mappa Leaflet (con SRI) + calendario. Potenziamento v2 (23-07): vista stampa/PDF + export HTML statico, backup/restore ZIP, undo eliminazioni, guard concorrenza 409, tab bar wrap (10 sezioni sempre visibili), filtro viaggi, versioning Storia, cambio valuta manuale; meteo Open-Meteo predisposto ma SPENTO (attende OK Ettore). Test 64/64 + verifica adversariale SA-3 33/33. Chiave Anthropic dalla Cassaforte (keys.env; launcher mappaTRAVEL_APP_ANTH_KEY→ANTHROPIC_API_KEY; modello defaultclaude-haiku-4-5). Locale:8810, esposta via Tailscale:8444. CATPIT: a48 (p02). Aperti: classificazione (miniprogetto vs Life OS); autostart app da irrobustire (era spenta il 23-07 mattina). - ⬇️ Video downloader YouTube/Instagram — 🟢 funzionante (app, non guida). Spazio:
01_STRUMENTI_di_LAVORO/Video_Downloader/. Dashboard locale (porta 8799): URL → Analizza → formato (MP4/1080p/720p/MP3) → Download con barra. Motoreyt-dlp.exeself-contained +ffmpegdi sistema; zero dipendenze pip. Uso = copia privata (confermato da Ettore). YouTube pieno; Instagram best-effort (pubblici; per privati servono i cookie). Testato end-to-end. - 🔐 Cassaforte Chiavi — 🟢 consegnata e attiva (app infrastrutturale, non guida; build Archimede 14-07). Spazio:
01_STRUMENTI_di_LAVORO/Cassaforte_Chiavi/(repo git). Gestore locale delle API key: store unico.openclaw/secrets/keys.env(dotenv, fuori git), CRUD dal telefono via Tailscale tailnet-only (:8445), valori mascherati, gate PIN. I launcher delle app caricanokeys.envnell'ambiente. Always-on via cartella Startup (al logon). CATPIT: a49 (p03). Agg. 22-07: valutazione avvio headless completata (docs/VALUTAZIONE_AVVIO_HEADLESS.md→ raccomandata: auto-logon fleet-wide condizionato a BitLocker; attende scelta di Ettore). Da confermare: classificazione (miniprogetto vs infrastruttura). - 🧬 Life OS — 🟡 v1 costruita (20-07) + Fase D verde (23-07) + fase B preparata (25-07) (design/build Romeo). App cruscotto personale (p02), non guida. Spazio:
01_SISTEMA_PERSONALE_homelab/Life_OS/(Python stdlib, porta 8870 — spostata dalla 8860 il 24-07, Archimede). 10 stanze: Home, Calendario ibrido Google, Progetti (read-only da CATPIT), Pasti (link Pianificatore:8820), Finanze, Salute, Note, Abitudini, Liste, Documenti. Store JSON con backup.bak. Calendario: store locale = master, eventi confermati → Google Calendar (hect.ai.office@gmail.com) via OAuth da configurare (scaffold onesto: senza token non finge). Fase D · Check (23-07): smoke test end-to-end 38/38 verde (tests/smoke_life_os.py; rerun verde su 8870 il 25-07). Fase B · preparazione sblocco gate (25-07, notturna S11):RISPOSTE_PROPOSTE__domande_definizione.md(7 domande già decise di fatto dalla v1 + 5 bivi con raccomandazione → a Ettore basta un "ok a tutto"/correzioni) +GUIDA_OAuth_Google_Calendar.md(ricerca verificata: device flow senza scope Calendar → flusso Desktop/loopback, app "In production" per evitare token a 7 giorni, scope minimocalendar.events); porta tailnet proposta 8457 (la:8454ipotizzata è di Dash Creso). Connettore Google Calendar scritto e collaudato (30-07, sessione fable-5, verifica Romeo): il pezzo più costoso è chiuso prima di avere le credenziali —app/google_calendar.py(flusso OAuth Desktop/loopback, scope minimocalendar.events, salvataggio e refresh automatico del token, creazione evento sul calendario primario: con ora → 60 min, senza ora → all-day) provato contro un finto server Google: 27/27 test nuovi + 38/38 smoke esistente, solo stdlib (nessuna dipendenza da installare),app/data/intatta. Coperti i casi brutti (token scaduto, autorizzazione revocata, quota superata, rete assente): in tutti l'app dice la verità — evento confermato in locale e non marcato come sincronizzato. Senza credenzialiverificarisponde "connettore non configurato" invece di fingere. Corretto un errore della guida: con lo scopecalendar.eventsnon si possono elencare i calendari → la verifica legge un evento dal primario. 💶 €0. Da confermare due default: durata evento 60 min e fuso Europe/Rome fisso nel codice. CATPIT: a51 (p02; fix path corrotto intask_details). ⏸️ Gate Ettore: metterecredentials.json(client OAuth "App desktop") inLife_OS/app/data/google/(cartella già creata) →python app/google_calendar.py autorizza→verifica→ poi OK al dossier risposte → tailnet:8457+ autostart → PIN. Da confermare: classificazione (app personale p02 vs shell p15).
01_SISTEMA_PERSONALE · Piattaforma / Shell condivisa (Life OS)
Consolidare le dashboard del minipc (CATPIT, Life OS, Dash Creso) in una piattaforma personale: dashboard switchabili e coerenti da una shell condivisa + design system comune. Principio: curare non accumulare (90% commodity adottata, 10% proprio).
- Stato: 🟢 roadmap Fase 1-4 istruita (07-08/07); GATE aperti sull'integrazione nel vivo. Spazio:
Agente Residente openclaw/materiale condiviso/Piattaforma_Dashboard/. CATPIT: p15 (task a43-a45). Istruita da Romeo con Ettore, eseguita da Archimede. - Fase 1 —
CATALOGO.md+REFERENCE_BASE.md: inventario unificato (4 app custom, artefatti, 5 voci n8n, 17 container Docker, 7 pattern) + 5 cloni reference read-only (shadcn-ui, dashboard-starter, ghostfolio, mealie, n8n-workflows). ✅ - Fase 2 —
SHELL_CONTRACT.md(monorepo Turborepo shell+moduli, manifest di aggancio, design system, auth/data-layer, domande D1-D7) +shell-prototype/(Next 16, build verde). ⏸️ GATE: integrazione nel vivo attende le risposte di Ettore alle D1-D7 + OK Romeo. - Fase 3 —
CATPIT_HARDENING.md: test suite CATPIT 154/154 verdi (mergiata sul branch attivo; 23-07 +13 smoke HTTP rotte API; 24-07 +15:/api/appsCRUD+seed+.bake validazione disession-notes/artefatti/skills) + piano di refactoring 3b. ⏸️ GATE 3b: refactoring attende OK esplicito. - Fix a54 — una domanda non blocca più sempre il task che cita — 🟡 codice pronto 2026-07-30, non ancora live. Il difetto trovato nel
loop-vf-2(lib/richieste.ts: iltask_idcitato veniva aggiunto abloccaanche passandoblocca:[]) è il motivo per cui la coda di un progetto risultava vuota e i giri autonomi finivano a scrivere test su lavoro già fatto. Ora l'API rispetta la dichiarazione, con default prudente: se nessuno dice niente si blocca come prima — il non-blocco è una scelta esplicita, mai una dimenticanza. Suite 247/247 verdi su 21 file;richieste.jsonreale non toccato (l'agente ha lavorato su un vault temporaneo, verificato da Romeo). Aggiornata la guidaCOME_SI_SCRIVE_UNA_RICHIESTA.md; il badge "blocca N task" ora conta giusto e sparisce sulle non bloccanti. ⚠️ Cambio di comportamento su dati esistenti: alcune richieste scritte a mano citano un task conbloccavuoto — prima potevano sbloccarsi per sbaglio rispondendo a un'altra domanda, ora restano ferme finché non si risponde proprio a loro. ⏸️ Manca per andare live: build + riavvio di CATPIT su `:3010` (e il commit). CATPIT: a54 (p15, In corso). Piccola aggiunta UI in coda: etichetta bloccante/non-bloccante sulla card. - Fase 4 —
HORIZON_CONSTRAINTS.md: vincoli imposti da Life OS / Dash Creso come guardrail per le fasi 2-3. - Imparentato con → OpenClaw / Infrastruttura Agentica (p03), CATPIT, Dashboard Creso.
3. 01_STRUMENTI_di_LAVORO
01_STRUMENTI_di_LAVORO · Libreria Strumenti (Homelab_V1)
Schede d'uso degli strumenti del sistema (riferimento, non progetto operativo).
- Schede: scrittura MD, Docker, Claude, Cowork, Claude Code, context/prompt engineering, Brave, n8n, Obsidian, LaTeX, workflow JSON n8n, Skills, openclaw, minipc
- Manca: guida a git
01_STRUMENTI_di_LAVORO · Automazioni & Agenti AI
Libreria riusabile di automazioni n8n + agenti capaci di creare automazioni + automazioni per uso personale
- ✅ Lista candidate ranked (valore × sforzo) + roadmap primi 3 workflow decisa il 23-07-2026 →
n8n/LIBRERIA_lista-candidate.md. Ordine: #1 Digest news→Telegram (~90% fatto, manca solo pubblicazione — attende OK), #2 Airtable→Telegram (✅ costruito il 25-07: JSON importabile + scheda inn8n/automazioni/airtable_to_telegram/, non pubblicato — attende import/ attivazione in n8n Cloud), #3 Immagini→Galleria (bivio sorgente Drive/disco da sciogliere). - Partire da workflow piccoli e utili
- Mr Kapable (agente Telegram + Airtable + ricerca Brave/Perplexity): realizzato a inizio percorso, da riprendere con scope ridotto dopo i 3 mattoni base
- Automazioni mancanti: stencil, poster, immagini tattoo (cut + draw), news, video motivazionali del mattino, gestione vita (tabelle + connettori + agenti)
01_STRUMENTI_di_LAVORO · Script X Web
Suite di script + app locale per estrarre contenuti dal web e comporli in PDF (fumetti/manga), con filtro pubblicità.
- Stato: 🟢 funzionante e in uso (agg. 09-07-2026). Spazio: app promossa a cartella propria
MD_DB_v1/01_STRUMENTI_di_LAVORO/Manga_Downloader/(dashboard + motore + dataset MD). L'estrattore libri resta inEstrattori app py/estrattore-libri/. (Vecchio path `estrattore-immagini-pdf/` svuotato con puntatore; backup `.zip` accanto.) - Script:
manga2pdf.py(immagini di una pagina → PDF, filtro ads, modalità "a striscia" e "reader");scarica_tutti.py(batch capitoli, con resume);scarica_opp_volumi.py/scarica_manga_opp.py(onepiecepower: un PDF per volume/capitolo, sotto-capitoli inclusi, legge la struttura dalla pagina — link relativi);estrai_lista_manga.py(catalogo completo ~2015 titoli). - App locale
dashboard_app.py: pagina web con Top 30 consigliati (copertine MAL + voti), catalogo consultabile, Scan capitoli/volumi e Download con barra di avanzamento, "apri cartella" e ri-aggancio del job. Avvio da doppio clic conAvvia_Manga_Downloader.bat. Dal 09-07-2026 il catalogo (2014 titoli) è letto dal dataset MD localeLISTA_MANGA_completa.md(offline, istantaneo; scraping live solo come fallback). - Guida
COME_USARLO.md; prompt riutilizzabili per creare app simili inEstrattori app py/PROMPT_creare_app_estrattore.md(+ variante libri da fonti legali inestrattore-libri/). - Testato su dandadanscanita.org e onepiecepower.com.
- ✅ Creato su Airtable (record
recWmfFF7i6b5HWs8, tabella Progetti).
4. 02_CONOSCENZA
02_CONOSCENZA · Study System (gestionale dello studio) — p17
Un'app sola che governa il ciclo del materiale di studio: cosa c'è → cosa manca → quanto lavorarlo → studiare con ripasso programmato.
- Stato 2026-08-21 (sera): costruita e in servizio. Catena di 8 anelli in un giorno (task a84-a91, tutti Fatto): decisioni revisionate, metro dei 14 corsi + indice WE Green, app Python stdlib a stanze (Materiale, Copertura, Lavorazione, Piano, Studio), ripasso FSRS (
py-fsrs, unica dipendenza), Docker. Containerstudy-systemsu 127.0.0.1:8891 (healthy, restart automatico), materiale montato in sola lettura (F: università + vault), 111/111 test. Indice reale: 4.787 file / 40,5 GB. Copertura media 75% su 20 ambiti; l'app si apre sulla domanda "cosa manca?" coi corsi dal meno coperto. Repo git proprio inMD_DB_v1\01_SISTEMA_PERSONALE_homelab\Study_System\. - Dal 25-08-2026 i tre campi sono sottoprogetti veri dentro p17 (CATPIT,
sottoprogetti.csv): s06 Conoscenza/KnoBase (2 task, resta in Obsidian: l'app guarda, non riscrive), s07 WEGreen (1 task, obiettivo: PDF rimontato), s08 Università (3 task, materiale grezzo su F:). I vecchi progetti p05, p07 e p06 sono archiviati: restano come storia, il lavoro vive qui. I 9 task del gestionale (a84-a92) restano appesi al progetto, fuori dai sottoprogetti. - Aperte a Ettore (non bloccanti): q084 esposizione tailnet · q085 quali corsi contano davvero · q086 il disco F: resta attaccato?
#### s06 · Conoscenza — KnoBase (ex p05, sottoprogetto di Study System)
Costruire a strati una knowledge base espandibile, gestita come grafo in Obsidian.
Completamente Definita la parte di costruzione automatica con Claude Cowork
Trovi tutto nella cartella "C:\Users\Ettore\Claude\Projects\MD_DB_v1\02_CONOSCENZA"
- Stato 2026-07-25: i 3 argomenti pilota di a08 sono completi — Docker (già presente), n8n/automazione flussi (
2_A_5/02_automazione_flussi_n8n.md) e prompt engineering (2_A_3/01_prompt_engineering.md), scritti con ricerca web su fonti primarie e template rispettato. KB a 50 schede; catalogo libri rigenerato (430 libri, 32 risorse); README di disciplina allineati. - Pendenti: PDF/TeX delle 2 nuove schede (pandoc+xelatex non installati sulla macchina) e la scelta del prossimo blocco (schede figlie K8s/CI-CD e ML/RAG, oppure riattivare le attività programmate per ramo).
#### s07 · WEGreen (ex p07, sottoprogetto di Study System)
Rivedere e riorganizzare da capo i documenti del corso Work Experience Green, fatto bene.
- Materiale Presente
- Manca eseguire la rielaborazione (estrarre testo e immagini, inserire in struttura file TeX in cartelle personali, generare PDF) (task da affidare a cowork)
- Selezionare e ripulire i documenti utili
- Decidere come strutturare i file finali (MD → TeX → PDF) con indice e fonti
- (Voce unica: i progetti aziendali la richiamano, non la duplicano.)
#### s08 · Università (ex p06, sottoprogetto di Study System)
Riordinare e rielaborare il materiale per riprendere a studiare.
- Definire la struttura dell'archivio per materia e fonte, programmare costruzione
- Importante: decidere come elaborare appunti e libri già in memoria
- Materie: Topografia, Analisi 2, Meccanica dei Fluidi, Scienza delle Costruzioni, Geotecnica, Idrologia, Tecnica delle Costruzioni
- Raccogliere e organizzare: Syllabus per argomenti dei corsi nel dettaglio, libri, materiale dei professori, appunti personali, appunti dei compagni, materiale online, esami ed esercizi di esempio, esami passati
Nota operativa — Metodo OpenClaw (preludio ai Progetti di Lavoro)
NOTA IMPORTANTE
Questa Sezione è del tutto variabile, perchè adesso inizierò a lavorare con OpenClaw;
Gli obiettivi sono:
dal lato utente (io):
- voglio poter visualizzare i progetti come su airtable, (quindi tabelle con progetti, attività, sottoattività, ecc) ma anche con grafici di avanzamento, domande aperte per progetto, attività mancanti ecc.
- avviare un processo con openclaw chiedendo di lavorare su un progetto. L'agente deve fare domande, ragionare sullo sviluppo, mantenere tutto organizzato. Utilizzerà Cowork di anthropic, che anch'esso lavora direttamente sulle cartelle del computer, per generare tutti i file (MD, TeX, PDF, JSON, ecc) che richiede lo sviluppo di un progetto.
- L'agente di OpenClaw vede le cartelle di lavoro sul computer, ha accesso a AirTable, e ha accesso alle finestre del desktop (con cui usa Cowork); questo di fatto lo porta a ragionare ai progetti dall'alto, facendo riferimento all'utente per lo sviluppo.
5. 03_PROGETTI_di_LAVORO
03_PROGETTI_di_LAVORO · Bar Flavia
Supporto completo al Bar Flavia (es. per Ale), in 4 blocchi.
- Documenti di contesto: storia, concept, offerta, clientela target
- Documenti di conoscenza: gestione e suddivisione compiti, ristorazione, merce/prodotto, gestione fiscale
- Organizzazione attuale: ruoli, turni, obiettivi di incasso, stagionalità, eventi
- Marketing/branding: automazione flyer, post pubblicitari serate, pubblicità prodotti
03_PROGETTI_di_LAVORO · Sistemi & DB Aziendali
DB e sistemi per le aziende. CATPIT: p09.
- Rete delle aziende del vicentino — pipeline dati attivata 🟢 2026-07-24 (sessione autonoma notturna, Romeo). Catena completa:
.md(Dataset_Vicenza_500) →genera_csv.py→ CSV →aziende-loader→ Postgres `aziende` (7 tabelle + 4 viste: 230 ateco, 500 top500, 100 gruppi, 500 indice, 935 vicenza1000, 233 settori, 162 metalmeccanica) → dashboard :8765 su sorgente Postgres (verifica: conteggi API + screenshot). Fix:genera_csv.pypuntava alla cartella pre-riordino03_LAVORO_AZIENDA(vuota) e scriveva gli interi come1.0; il container dashboard (17-06) montava la cartella svuotata → serviva dati vuoti, ricreato dal compose Postgres. CATPIT: a20. Aperto (gate Ettore): registrare `aziende` in Metabase (UI admin, 2 min — `GUIDA_Metabase_NocoDB.md` Passo 1) + Question/Dashboard; opzionale NocoDB. - Rete delle PMI del nord Italia
- KB di alto livello per aziende
- DB dei report di sostenibilità (RdS) + automazione RdS
- DB dei processi produttivi
- Collegato a → `Study System · s07 WEGreen` (materiale Francesco/Alessandro)
03_PROGETTI_di_LAVORO · Studio Tattoo & Arte
Pipeline tattoo/arte come prospettiva di guadagno (priorità medio-alta).
- Estrarre le immagini di tatuaggi dagli HD
- Creare la galleria
- Automatizzare il crop delle immagini
- Automatizzare la creazione di stencil e disegni pronti
- Produrre poster vendibili dai fumetti (poster e tattoo su base DB)
- Automazione "edit image": Airtable riceve immagine → la trasforma
03_PROGETTI_di_LAVORO · Video Factory (Canali AI)
Pipeline di produzione video AI su più canali. CATPIT: p11.
- Canale pilota: Ambientale (news)
- Canali: Ambientale (conoscenza), CuteCarnage, Everybody Dancing, Sport, Chill Beats, Miniband
- Il primo fotogramma di MapZoom — e i due difetti che c'erano dietro — 🟢 consegnato 2026-08-07 (giro
loop-vf-13, Romeo). MapZoom era l'ultimo dei cinque archetipi mai arrivato a un fotogramma: il selettore sapeva sceglierlo, il compositore comporlo, il test era verde, e nessuno l'aveva mai visto — perché nessun pack reale dichiarageografia. Gli ho dato le coordinate esatte che il test dava per buone (x 0.5, y 0.083, scale 1.9, «Arctic Ocean») e ho renderizzato. Con sette cancelli verdi, due difetti. (1) La banda stampava 11 dove il claim dice 10,9 —decimali: 0fisso dentro unMath.round(): sono le stesse due righe che il 06-08 facevano uscire 11 dal grafico a barre e il 04-08 facevano uscire 21 da DataLowerThird, cioè il difetto per cui esiste G6. Corretto in due moduli su tre, era sopravvissuto nel terzo perché quel terzo non si era mai visto. E la lezione ricorrente torna per la quinta volta, sempre uguale: la domanda su un controllo non è se funziona, è su quale documento sta guardando — G6 scriveva[OK] a schermo "10.9" fedele a 10.9e diceva il vero, perché guarda il pack; il piano dichiaravadecimals: 1, corretto anche lui; era il template a buttarlo via, e fra il campo del piano e il pixel non guardava nessuno. Un gate che certifica un numero che lo schermo non mostra è peggio di un gate assente, perché rassicura. (2) Il 34% superiore dello schermo era NERO: sopra il Polo Nord la carta finisce e non c'è immagine; sotto si vedeva il Mediterraneo, e il pin «Arctic Ocean» cadeva sul Mare di Norvegia. Un video sull'Artico che mostra l'Europa — l'errore del video 1, in un caso che il video 1 non copriva. Non è gusto: la porzione di mappa visibile si calcola dalle costanti del template (1/scalein altezza), e se il riquadro esce da[0,1]si vede il fondo — due divisioni. OrainquadraturaDentroLaMappa()le fa e MapZoom non è ammissibile quando sfora. La conseguenza vera non è un dettaglio di implementazione: su carta equirettangolare i domini polari non hanno inquadratura valida — per far rientrare l'Artico servirebbescale ≥ 6,02, che lascia 17 gradi di longitudine, mezzo Mare di Barents per un dato da 10,9 milioni di km²; Antartide 8,33 e 12 gradi. O si esce dall'immagine, o non si mostra il dominio: terza via non c'è, quindi l'archetipo si rifiuta e lo dice → q060. Intanto il pack artico ripiega su DataLowerThird, che è l'archetipo con cui il video 4 fu montato a mano: la divergenza segnalata ieri si è chiusa da sola. La regola provata fuori dal caso che l'ha generata: 7 geografie misurate (bocciate Artico e Antartide, dentro Amazzonia, Europa, Mediterraneo e l'Artico allo zoom minimo) e nuovo caso C1-bis che pretende *il rifiuto sui due poli e l'ammissione su un dominio temperato — una regola che bocciasse tutto passerebbe la metà sbagliata del test. Il vecchio C1 usava le coordinate polari ed era verde: è quello il punto. Provato: due render guardati con gli occhi (`out/_sonda-mapzoom-arctic.mp4` il difetto, `out/_prova-mapzoom-decimali.mp4` la correzione: `10.9`, `5,796` intero, `+1.28` col prefisso, letti sul fotogramma) + tutte e cinque le suite verdi. Non provato, e detto: che l'inquadratura stia dentro la mappa non garantisce che copra il dominio — la geometria sa dire se si vede il fondo, non se si vede la cosa giusta; nessun pack reale dichiara ancora `geografia`, quindi finché l'anello 1 non la compila MapZoom resta scegliibile solo a mano; la vista di apertura (mondo intero, bande nere per costruzione) è hardcoded e non è mai stata decisa davvero. Doc: §8octies in `F3__CATENA_AUTOMATICA.md`. 💶 €0 (agosto: 0 su 500). CATPIT: a55* (p11). - L'anello 3: il piano si monta da solo, e la scelta dell'archetipo si sa spiegare — 🟢 consegnato 2026-08-06 (giro
loop-vf-12, Romeo). Fino a ieriscrivi_piano.mjssapeva comporre un archetipo, DataLowerThird, e lo componeva sempre: non un default, ma un'assenza di scelta travestita da default — il video 5 (due indici in serie) e il video 2 (un confronto fra due perimetri) sono usciti con la stessa identica grammatica. Ora la scelta è una funzione del pack, con cinque compositori e una motivazione scritta per ognuno dei cinque archetipi, ammessi o scartati:--spiegamostra la scelta e le quattro alternative col loro perché. L'ordine non è un gusto — MapZoom e SplitCompare dicono qualcosa in più del numero (dove, e in rapporto a cosa), quindi vengono per primi ma con condizioni dure; DataLowerThird viene per ultimo perché non afferma niente oltre ai dati, ed è il posto giusto dove ricadere. La regola più severa è quella sulla mappa e viene dritta dal video 1: MapZoom si sceglie solo se il pack dichiarageografiacon coordinate, mai dedotte dal nome del dominio — il 05-08 la mappa inquadrava tutto il Sud America per un dato di nove stati brasiliani, e la geografia non sta nei numeri, quindi nessun cancello poteva vederlo. Quattro difetti trovati montando davvero (nessuno dei 5 video usa barre o mappe: erano codice mai eseguito che si credeva funzionante, etest_anello3.mjsmonta ogni pack in tutte le grammatiche che regge, non solo in quella scelta). (1) G8/G9 ciechi sulle barre: cercavano l'etichetta inlabel, ma le barre hannoname— ed ènameche il template stampa. Conseguenza doppia e dei due tipi peggiori: G8 bocciava qualunque SplitCompare, anche perfetto, e G9 accusava quegli stessi numeri di non avere un claim — un gate che accusa il claim per un proprio limite di lettura, la stessa famiglia del PDF del 05-08. (2) Il grafico a barre arrotondava:Math.round()condecimali: 0fisso, quindi 10,9 → 11 e il +0,56 °C del video 2 → +1. È il difetto per cui esiste G6, sopravvissuto in un modulo che nessun video aveva toccato: dato verificato, video falso. (3) Il confronto che non si sapeva nominare — e questo l'ha mostrato solo il fotogramma, a sette cancelli su sette verdi: i pannelli erano etichettati colperiododei claim, ma i due claim del video 2 hanno lo stesso periodo e differiscono per perimetro → a schermo, sopra e sotto il divisore, la stessa identica parola: «GIUGNO 2026». Due pannelli con la stessa etichetta non sono un confronto. Ora l'asse si legge dai claim (prima il tempo, poi il perimetro) e se nessuno dei due li distingue, SplitCompare non è ammissibile. (4) L'archetipo forzato esplodeva invece di dire perché. Terza soglia scritta a memoria e sbagliata, dopo lo 0,5 della musica: avevo fissato «26 caratteri» per l'etichetta di un pannello "perché non va a capo" — renderizzando due etichette limite, «TEMPERATURA DELL'ARIA GLOBAL» (28, con spazi) va a capo e resta dentro, mentre «ABCDEFGHIJKLMNOPQRSTUVWXYZ» (26, una parola sola) esce: a sforare non è l'etichetta lunga, è la parola lunga. Provato:test_anello3.mjs(5 pack reali × ogni grammatica che reggono; MapZoom e SplitCompare su casi costruiti; i cinque confini che escludono SplitCompare uno per uno; i decimali letti dalla lingua del canale su 8 casi) + le quattro suite precedenti tutte verdi + un render vero di SplitCompare — il primo mai montato — guardato con gli occhi, musica misurata a −23,8 dB. Non provato, e detto: i pannelli sono due rettangoli vuoti perché clip non ne abbiamo (l'archetipo usa mezza grammatica); MapZoom non è mai stato renderizzato perché nessun pack reale dichiarageografia. 💶 €0 (agosto: 0 su 500). CATPIT: a55 (p11). - I due video mai passati dal cancello — e le tre cose che la catena non sapeva fare — 🟢 consegnato 2026-08-05 (giro
loop-vf-11, Romeo). I VIDEO 1 e 2 sono di luglio, anteriori al formato claim-pack: le loro cifre avevano la verifica umana del dossier e G1-G13 su di loro non avevano mai girato. Scritti i due pack a posteriori dalle fonti primarie, senza aggiustare nulla per farli passare. Per arrivarci la catena ha dovuto imparare due cose che ignorava. (1) Non sapeva leggere un PDF. La fonte del video 1 è una nota tecnica INPE:stripHtmlla riceveva come 438 KB di binario, nessuna cifra compariva, e G1 avrebbe risposto "la citazione NON compare nella fonte" — cioè bocciato un video corretto accusando il claim invece del proprio lettore, la forma peggiore fra quelle viste (non un cancello che tace: un cancello che accusa). Nuovoautomazione/testo_pdf.mjs, zero dipendenze (zlib di Node — una libreria PDF è un parser di formato ostile su file scaricati dalla rete, cioè superficie d'attacco da vettare) e fail-closed: un PDF scansionato non produce testo → INDECIDIBILE, mai OK. Il video 1 è l'occasione, non il punto: INPE, WMO, IPCC, EEA pubblicano in PDF e quella classe di fonti era fuori portata senza che nessuno lo sapesse. (2) Non sapeva leggere i numeri di una fonte non inglese. La nota INPE è in portoghese e scrive5.796 km²= cinquemilasettecentonovantasei; il verificatore capiva 5,796 e bocciava un claim esatto per "valore_fonte e valore non coincidono". È "la cifra cambia con la lingua" (31-07) un anello più a monte: lì cambiava la lingua del canale, qui quella della fonte. Nuovo campofonte_formato_numero, opt-in di proposito: dimenticarlo costa un BOCCIATO visibile, non un OK falso. (3) G9 guardava mezzo schermo — terza volta. Sul video 1 G9 ha correttamente bocciato i 13.038 km² della barra 2021, e nello stesso fotogramma, a caratteri più grandi di tutto il resto, c'era "Il trend: −55% dal picco del 2021" — un nostro calcolo, in nessun bollettino, e nessun gate ha detto niente: G9 cerca gli oggetti con unvaluenumerico, una caption è una stringa. La promessa "nessuna cifra a schermo senza citazione" non era sbagliata, era vuota su metà dello schermo. Nuovo gate G13 (le cifre con unità o segno nei testi devono avere un claim; perimetro stretto apposta: date, sigle come ERA5/C3S, anni e latitudini non sono misure). La lezione del giorno prima ha pagato subito: provato G13 su tutti e cinque i video prima di crederci, bocciava i video 3, 4 e 5 — approvati — con 21 "percentuali" a testa, che erano i gradienti CSS dibroll[].gradient. Identico al difetto di G12 del 04-08: giusta nel caso in cui è nata, falsa altrove.test_g13.mjs18/18. Verdetti. Video 2: 12 gate verdi su 13, boccia solo G4 sull'ultima card "L'Europa si scalda più in fretta" per un dato di Europa occidentale — è la stessa scorciatoia che il dossier del 28-07 aveva già corretto nell'apertura e che era sopravvissuta nella chiusura; quale riscrittura è scelta editoriale → q058. Video 1: bocciato su cinque punti (G5 fonte di 282 giorni, G7 perimetro mai dichiarato, G9, G13, G3) e non recuperabile: PRODES esce una volta l'anno e il video è stato montato nove mesi dopo. Guardando il fotogramma a 17 s il difetto di G7 è peggiore del log — la mappa inquadra tutto il Sud America per un dato di nove stati brasiliani. Detto senza giri: il primo video del canale non era una notizia, era un test di template → q059. 🎵 Musica misurata in un render vero, non sul file:inspiredeporch-swing-days-fastermontate su un piano reale e misurate convolumedetect→musicVolume0.27 e 0.25 danno −25/−26 dB, allineati al plateau del catalogo; lo 0,5 stimato a memoria era sbagliato di ~5,5 dB. Dichiarato anche ciò che resta scoperto: il loop musicale non si esercita mai con questa libreria (traccia più corta 2:02, video più lungo 28 s), quindi non è verificato. Suite: 17/17 · contatore verde · 32/32 · 18/18. 💶 €0 (agosto: 0 su 500). CATPIT: a55 e a52 (p11, Bloccato su Ettore). - Libreria template Remotion (Canale Ambientale) — 🟢 consegnata 2026-07-22 (build sessione fable-5, verifica Romeo). Spazio:
MD_DB_v1/03_PROGETTI_di_LAVORO/Video_Factory/Canale_Ambientale_News/montaggio_remotion/(Remotion 4.x, 9:16 1080×1920 30fps). 5 archetipi render + thumbnail verificati (ffprobe): EnvShort, DataLowerThird (b-roll + banda dato/fonte), SplitCompare (2 pannelli + barChart), KineticStatCard (tipografia cinetica + stat card glass), MapZoom (Ken Burns su mappa + pin + lower-third). Font unico Archivo via@remotion/google-fonts(pesi 100–900, gratis). Mappa public domain NASA Blue Marble inpublic/map-world.jpg. Catalogo d'uso + forma dei piani JSON inMODELLI_VIDEO.md. 💶 Costo €0 (asset locali, subagenti su sonnet, nessuna API a pagamento). CATPIT: a50 (p11). - L'anello 2 messo alla prova su una fonte mai vista — tre difetti a cancelli verdi — 🟢 consegnato 2026-08-02 (giro
loop-vf-7, Romeo). Il video è il sottoprodotto: il risultato del giro sono i difetti. Candidato preso dall'anello 1 dal vivo e scelto apposta fuori dal caso su cui le regole erano nate: NOAA CPC — ENSO Diagnostic Discussion del 09/07/2026 (ente diverso da Copernicus, formato diverso — pagina fissa.shtml— tema diverso). Prima uscita: undici cancelli verdi, verdetto OK, testi a schermo illeggibili — "El Niño strengthened over the past month", "was +1.2°C", e una caption troncata a "increased [Fig". (1) Entità HTML nominate.stripHtmlne decodificava cinque (nbsp amp lt gt quot) più quelle numeriche: Copernicus serve UTF-8 vero, NOAA serveñe°, quindi il difetto non poteva emergere finché l'unico ente era Copernicus. E non era estetico: G1 confronta la citazione col testo ripulito, quindi una citazione corretta scritta in UTF-8 — come la scriverebbe una persona o il modello cloud — non si ritrovava nella fonte e veniva bocciata. Un falso positivo del cancello, la classe di difetto che fa spegnere i gate. Chiuso condecodeEntita()a una passata sola (la catena di.replace()fa doppia decodifica:&lt;diventava<, cioè fa dire alla fonte ciò che non dice) su tabella di nomi, così un'entità sconosciuta resta visibile invece di sparire in silenzio; applicata anche in lettura dalla cache, perché le copie archiviate a luglio contengono ancora le entità e altrimenti un video montato offline e uno montato online seguirebbero due regole diverse. (2) Terza copia della stessa primitiva.cerca_notizie.mjsaveva un propriodecodeEntitacon tabella più piccola e una propria lettura di cache: dopo la correzione l'estrattore proponeva ancora citazioni con dentro°che il cancello — ormai corretto — non ritrovava più. Divergevano proprio nel file che in testa dichiara di importare `norm`/`stripHtml` per non divergere. Ora la primitiva è una sola. Nel mezzo il cancello ha bocciato il mio stesso claim-pack costruito sul candidato vecchio: comportamento giusto — si rigenera il candidato, non si corregge il pack a mano. (3) Frasi spezzate dalle abbreviazioni.split(/(?<=[.!?])\s+/)taglia dentro[Fig. 1] .e produce cocci. Il danno grosso non è il coccio a schermo, che si vede: è 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 (20 frasi fuori prima, 13 dopo). Chiuso confrasiDelTesto(). Corretto ancheproduci.mjs, che passava a Remotion il path del piano com'era e si rompeva dopo gli undici cancelli — il momento peggiore, perché sembra un difetto del piano. VIDEO 5:out/enso-july-2026.mp4(1080×1920, 13,2 s, 396 frame, audio −23,4 dB) — indice Niño-3.4 a +1,2 °C, Niño-1+2 a +2,7 °C, fonte NOAA CPC 09/07/2026, dodici cancelli verdi, su gradienti. Primo video da un ente non Copernicus. 💶 €0. CATPIT: a55 (p11, In corso). - Il dossier FONTI_DATI si genera dal claim-pack — 🟢 consegnato 2026-08-02 (giro
loop-vf-7, Romeo).automazione/dossier.mjs: il markdown esce dal pack, e gli esiti dei gate sono ricalcolati al momento della scrittura, non ricopiati. Ricopiare a mano un dato già verificato è il modo più stupido di introdurre un errore in una catena costruita per non averne — e il dossier è proprio il documento che qualcuno leggerebbe per controllare. Provato su video 5 e sul video 4 già 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 c'è: 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 è emersa una quinta cosa: l'omogeneità dichiarava "omogenei" confrontando due caselle vuote (il pack NOAA non ha né dataset né baseline perché la pagina non li scrive) — "uguale a nulla" non è "uguale", ed è la trappola del video 3; ora il dossier scrive che l'omogeneità non è dimostrata. File inMD_DB_v1/…/Canale_Ambientale_News/dossier_fonti/. 💶 €0. CATPIT: a55 (p11). - Il canale passa all'inglese: codice sotto git, G10 e il primo video EN — 🟢 consegnato 2026-07-31 (giro
loop-vf-5, Romeo). Tre cose, in ordine di conseguenza. (1) q026 eseguita:montaggio_remotion/è stato spostato nel repo git (materiale condiviso/Video_Factory/montaggio_remotion/); nel vault restano i documenti e i tre dossier indossier_fonti/, con un puntatoremontaggio_remotion__DOVE_E_FINITO.md. Il vault non è un repository: il codice dei gate viveva in copia unica, senza storia e senza ritorno indietro. Percorsi già relativi → nessuna correzione, verificato con la suite e con un render completo. Fuori da git solopublic/eout/(~125 MB di media ri-ottenibili). (2) q025 (inglese) aveva due conseguenze tecniche che non si vedevano. La cifra cambia con la lingua:10.9all'italiana è10,9, e la regola di formattazione stava intheme.tse 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 è una sola (src/formato_numero.mjs, importata dai template e dal cancello) e c'è il gate G10, che pretende la stessa lingua in pack e piano — un piano senzalangrenderizza in italiano, quindi con un pack inglese viene bocciato invece di uscire sbagliato. Un gate testuale è scritto in una lingua: il vocabolario di G4/G7 era quasi tutto italiano, quindi passando all'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, poi chiuso con termini inglesi tenuti a livello di frase (vietarearcticda solo boccerebbe un hook legittimo, e un gate che boccia il lavoro buono viene spento). Casi: 11/11. (3) VIDEO 4, il primo in inglese e il primo nato da un candidato dell'anello 1:out/arctic-sea-ice-june-2026.mp4(1080×1920, 26 s, 780 frame, audio −21,9 dB) — ghiaccio marino artico giugno 2026: 10.9 milioni di km², 5% sotto la media 1991-2020, sesto valore più basso in 48 anni di satelliti; fonte C3S del 02/07/2026, dieci gate verdi. Il fatto più vendibile — "sixth-lowest" — non può diventare una cifra a schermo: G1 pretende il valore dentro la citazione e lì c'è la parola "sixth", non il numero; resta una caption. ⚠️ Limite trovato guardando i fotogrammi: il contatore anima da 0 al valore, quindi a 12 s il fermo immagine legge "2 %" mentre il dato è 5 % — G9 protegge il piano, non i frame intermedi, e con gli interi piccoli i valori di passaggio sembrano statistiche vere. Da decidere al prossimo giro. 💶 €0. CATPIT: a55 (p11, In corso). - Verifica automatica dei dati — il "cancello" prima del montaggio — 🟢 consegnato 2026-07-30 (giro
loop-vf-4, Romeo). Fase F3, il lavoro che q011 chiede davvero: oggi l'unico anello automatico è il montaggio, quindi 20-30 video/mese è aritmeticamente fuori portata. Spazio:…/montaggio_remotion/automazione/—verifica_claim.mjs(gate G1-G7),produci.mjs(G8-G9, e mette il cancello davanti aremotion render),fonti_primarie.json(allowlist di enti primari),dominio_ampliamenti.json(regole di perimetro),casi_test/+test_verificatore.mjs,claim_pack/(formato di riferimento), doc `F3__CATENA_AUTOMATICA.md`. Scelta d'impianto: la catena non parte dalle notizie per poi verificarle — parte dai bollettini degli enti primari, così la classe di errore peggiore (un numero che l'ente non ha mai pubblicato) non può nascere; e nessun gate chiede a un LLM se un dato è giusto: tutti confrontano stringhe con il testo scaricato dall'ente. Metro misurato: 9/9 casi reali — i video approvati passano e i cinque errori intercettati a mano il 28-29/07 (dominio "Europa" per Europa occidentale · i 20,98 °C inesistenti della stampa · tre valori non confrontabili ·Math.round()che stampava 21 invece di 20,86 · fonte non primaria) sono bocciati ognuno dal gate giusto. Fail-closed verificato (fonte illeggibile →INDECIDIBILE, maiOK). G8/G9 chiudono la falla che avrebbe reso tutto teatro — il claim-pack è una dichiarazione, il piano JSON è ciò che si vede: G9 non ammette a schermo nessuna cifra priva di citazione, non "nessuna cifra importante" (provati con manomissione deliberata del piano: render mai partito). Due lezioni: un falso positivo è pericoloso quanto un falso negativo (la prima G4 bocciava una caption corretta del video 3 → separati G4 "non affermare un perimetro più ampio" e G7 "il perimetro sta accanto al numero"); e il grado sono due caratteri — la stessa pagina C3S usa°(U+00B0, simbolo) eº(U+00BA, che Unicode classifica come lettera), che faceva fallire G1 su un video valido. 💶 €0. Restano: scelta della notizia (anello 1) e generatore dei testi — quest'ultimo dopo q025, unico pezzo dipendente dalla lingua. CATPIT: a55 (p11, In corso). - Automazione di scripting — notizia → scelta del template → piano JSON — 🟢 costruita 2026-07-30 (sessione dedicata fable-5, verifica Romeo). È l'anello 2 della catena F3, nella sua parte template-aware: il pezzo davvero mancante non era "scrivere il testo" (l'Editor di F1 EN lo fa già), ma il ponte fra la notizia e i 5 template — nessuno finora sceglieva l'archetipo né produceva i suoi campi. Workflow n8n "VF · Scripting → Piano template" (
Kuuu3geNw7F2yHke, n8n Cloud hectorai, INATTIVO, 7 nodi, nessuna credenziale inline), costruito come sub-workflow richiamabile (Execute Workflow Trigger con 14 input tipizzati) invece che dentro F1: si testa da solo, se si rompe si rompe solo lui, e lo possono chiamare sia F1 sia F2 — che infatti non sono stati toccati. Basic LLM Chain, non un Agent (compito one-shot, nessuno strumento da usare); Output Parser Structured con JSON Schema manuale (~7,5 KB) che copre i campi di tutti e 5 i template, letti dal codice insrc/*.tsx(sourcedi KineticStatCard,decimals/prefixdei counter,panelsesattamente 2,focusx/y/scale) + autoFix con secondo modello riparatore; `claude-sonnet-5` su entrambi i nodi. Il pezzo che conta è il Code node di post-validazione, non il prompt: il valore a schermo deve essere identico aldato_valorein input (il modello non può introdurne di suoi), le coordinate x/y della mappa sono ricalcolate dai lat/lon e non delegate all'aritmetica del modello, glisrcche non sono URL vengono azzerati (niente path inventati),audioSrc/musicSrcforzati anull(trappola nota del merge Remotion) — stesso principio dei 9 gate: ai dati non risponde un LLM. Provato senza spendere un centesimo: piano d'esempio costruito sui dati già 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. 💶 €0. ⚠️ Nota di contesto: il mandato prevedeva timing raffinati via Whisper, ma con q008 voce e Whisper sono caduti — i tempi del piano sono di fatto quelli finali. Restano a carico di Ettore: agganciare la credenziale Anthropic ai 2 nodi dalla UI e dare l'OK al test con una notizia campione (consuma API, pochi centesimi). Da estendere il video-worker `/produce`, che conosce solo EnvShort — oppure si usa il percorso locale `produci.mjs`, già template-aware e col cancello davanti. CATPIT: a55 (p11). - Anello 1 — censimento delle fonti + estrazione automatica del claim-pack — 🟢 consegnato 2026-07-30 (sessione dedicata, verifica Romeo). Chiude la metà mancante di F3: prima il cancello sapeva bocciare un dato, ma qualcuno doveva ancora andare a prenderlo a mano. Spazio:
…/montaggio_remotion/automazione/—fonti_primarie.jsonesteso (allowlist G2 intatta + 12 bollettini censiti con ente/URL/formato/lingua/cadenza/cosa pubblica/come si cita + 7 fonti scartate col motivo, perché 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. Fonti attive: C3S (bulletin + news), CAMS, CMEMS, NSIDC, NOAA CPC ENSO, NOAA GML, NASA ×2, EEA, IEA, Eurostat. Run reale 30-07 (12 fonti interrogate): 10 pronte · 1 da datare · 10 fuori tema · 50 scartate (32 per G5 troppo vecchie, 18 senza alcun numero con unità); 40 voci non esaminate per i tetti dichiarati — scritto nel resoconto, non nascosto. Aggancio ai gate dimostrato e non affermato: dal candidato C3S "ghiaccio marino artico giugno 2026" (10,9 milioni di km²) è stato costruito un claim-pack riempiendo solo i campi che l'estrattore lascianull→verifica_claim.mjsOK 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, ma il cancello ricontrolla tutto da capo: 0 host fuori allowlist sopravvissuti, 0 citazioni su 67 prive del proprio valore, e i 20,98 °C inventati dalla stampa non compaiono — non perché filtrati, perché non stanno in nessuna pagina dell'elenco.verifica_claim.mjstoccato solo per esportarenorm/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, 9/9 casi ripassati dopo la modifica. Quattro cose imparate dal run, che valgono più del codice: (1) metà 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) → tre formatirss/atom,indice-html,pagina-fissa; (2) "non so quando" ≠ "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 → 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 è fermata (feed vivo, ultima voce 15-10-2025, intitolata "Sea Ice Today services reduced") e Copernicus Marine è ferma al 18-07-2025 — le fonti muoiono in silenzio, e un'automazione che non lo nota pesca dal passato. 💶 €0 (nessuna API a pagamento, nessun modello chiamato dallo script). CATPIT: a55 (p11, In corso). Quattro decisioni aperte per Ettore: `ec.europa.eu` in allowlist (unico dominio più ampio del suo ente) · insegnare a G2 il percorso dell'URL e non solo l'hostname (serve per INPE/PRODES, che vive su `gov.br`) · come datare i bollettini C3S · se il filtro tematico deve continuare a separare senza buttare. - Terzo video reale — primo SENZA materia visiva — 🟢 consegnato 2026-07-29 (giro
loop-vf-3, Romeo). Archetipo DataLowerThird (terzo dei cinque, dopo MapZoom e KineticStatCard): "Oceano, giugno 2026", 1080×1920, 28 s, render verificato (ffprobe 840 frame,volumedetect−21,7 dB = non muto, frame controllati a vista). Dati tutti dallo stesso bollettino Copernicus C3S del 09/07/2026, così da essere omogenei fra loro: SST media di giugno sull'oceano extra-polare (60°S–60°N) = 20,86 °C, record per il mese di giugno, +0,01 °C su giugno 2024; l'aria globale è invece solo seconda (+0,56 °C sulla media 1991-2020). DossierFONTI_DATI__oceano_giugno_2026.md+ pianosrc/data-lower-third-oceano-giugno-2026-plan.json+out/data-lower-third-oceano-giugno-2026.mp4+ thumb. 💶 €0. Nessuna clip usata: le uniche in repo sono di foresta e la notizia è oceanica — usarle sarebbe stato semanticamente falso — quindi ho aggiuntobroll[].gradiental template e l'ho girato su soli gradienti. Ne segue che esiste una classe di video immune al collo di bottiglia della materia visiva (q024) e strutturalmente a costo zero; il limite è editoriale (monotonia), non economico. ⚠️ Difetto grave intercettato:DataLowerThirdfacevaMath.round()sul contatore → 20,86 °C sarebbe finito a schermo come 21 °C, un dato falso; è lo stesso difetto corretto suKineticStatCardil 28-07 e mai propagato (aggiuntidecimals/prefix). 🎵 Misurate le ultime due tracce musicali:healingparte dal silenzio digitale (−82,5 dB) ed è la terza inservibile su uno short → restano 2 tracce utili su 6, entrambe scure: oggi manca una musica adatta a una buona notizia (secondo collo di bottiglia, €0 da risolvere). CATPIT: a52 (p11). - Primo video reale con dati verificati — 🟢 consegnato 2026-07-24 (sessione autonoma notturna, Romeo). Archetipo MapZoom: "Amazzonia — deforestazione PRODES 2025", 1080×1920, 20 s, render verificato (ffprobe + frame estratti). Dati verificati su fonte primaria: INPE/PRODES 2025 = 5.796 km² persi (ago 2024–lug 2025), −11,08% vs 2024 (6.518 km²), 4° anno di calo, picco 2021 = 13.038 km² (barChart nel finale); fonte citata in video ("INPE · PRODES 2025"). Dossier fonti
FONTI_DATI__amazzonia_prodes_2025.md+ pianosrc/map-zoom-amazzonia-prodes-2025-plan.json+out/map-zoom-amazzonia-prodes-2025.mp4+ thumb; catalogo aggiornato (sezione "Piani di produzione" inMODELLI_VIDEO.md). 💶 €0. CATPIT: a52 (p11, Bloccato su Ettore). Musica risolta (q008 → layer musica consegnato 2026-07-27); aperti (gate Ettore): flusso di pubblicazione e prossimo video = altra notizia, altro archetipo. ⚠️ Rifinito il 2026-07-28: il video era uscito muto (−91 dB — il piano è anteriore al layer musica); aggiuntiaudioSrc: null+musicSrc: deep-hazee ri-renderizzato con l'inviluppo verificato. - Secondo video reale — altro archetipo, con musica — 🟢 consegnato 2026-07-28 (loop notturno
loop-vf-2, Romeo). Archetipo KineticStatCard: "Giugno 2026 — l'Europa occidentale non era mai stata così calda", 1080×1920, 24 s / 720 frame, render + thumbnail verificati. Dati da fonte primaria: bollettino Copernicus C3S/ECMWF del 09/07/2026 (dataset ERA5) — Europa occidentale +3,06 °C sulla media giugno 1991-2020 (20,74 °C, record assoluto, batte giugno 2025) contro +0,56 °C di anomalia globale sulla stessa base (16,54 °C, secondo giugno più caldo); chiusura "l'Europa si scalda più in fretta" sostenuta dall'European State of the Climate 2025 (≈2× la media globale dagli anni '80). Fonte citata a schermo, musica Ossuary 1 - A Beginning (CC BY 4.0, attribuzione obbligatoria in descrizione). DossierFONTI_DATI__giugno_2026_europa_record.md+ pianosrc/kinetic-giugno-2026-europa-record-plan.json+out/kinetic-giugno-2026-europa-record.mp4+ thumb. 💶 €0. CATPIT: a52. ⚠️ Errore di accuratezza intercettato prima del render definitivo: l'apertura diceva "Mai così caldo in Europa" — falso, il record è dell'Europa occidentale (l'Europa nel complesso è seconda, dietro giugno 2019). Corretta in "Europa occidentale: mai così caldo". 4 difetti della libreria corretti nello stesso giro (tutti generici, valgono per ogni video futuro): (1) i numeri non erano in italiano e divergevano fra template (3.06col punto;13.038accanto a5796nello stesso grafico) →formatIt()unica insrc/theme.ts, usata daGraphic,MapZoomeDataLowerThird; (2) KineticStatCard non sapeva stampare la fonte → camposource+stat.decimals/stat.prefix(senza,+3,06sarebbe stato arrotondato a3,1); (3)clipA/clipDavevano le bande nere incorporate (contenuto 560 px su 720) e a tutto schermo comparivano come barre → ritagliate, originali inpublic/_originali/; (4) il video 1 era muto (sopra). Scoperta riusabile sulla musica:impact-lentoelong-note-twopartono dal silenzio digitale e salgono solo dopo 8-14 s → inservibili su uno short, anche se la loro media sui primi 24 s sembra normale; colonna "attacco" aggiunta aMUSICA.md, la traccia si sceglie sui primi secondi. - Layer musica nella pipeline di render — 🟢 consegnato 2026-07-27 (esecuzione Archimede, coordinamento Romeo; QA indipendente 5/5). Conseguenza operativa di q008 (solo musica + testo, niente voce): la musica passa da sottofondo sotto il parlato a unico audio del video. Nuovo
src/Music.tsxcondiviso da tutti e 5 gli archetipi — volume unico 0,75 (i vecchi 0,12/0,25 erano tarati per stare sotto una voce), fade-in 1,2 s / fade-out 1,5 s, loop automatico per le tracce più corte del video. Corretti 2 bug:SplitComparedichiaravaaudioSrc/musicSrcma non renderizzava alcun `<Audio>` (ogni piano con musica usciva muto) eKineticStatCardignoravamusicSrc. Libreriapublic/music/= 6 tracce Kevin MacLeod/incompetech CC BY 4.0 (licenza verificata alla fonte: YouTube monetizzato consentito con attribuzione in descrizione, blocco di credito pronto inMUSICA.md). 💶 €0. Verifiche: typecheck pulito, demo rese su 2 archetipi (out/demo-musica-*.mp4), inviluppo misurato convolumedetect(silenzio −91 dB senza musica; fade-in −45→−25 dB; fade-out −48 dB), loop di una traccia da 4 s su video da 12 s senza buchi, non-regressione sul video reale MapZoom (1080×1920, 600 frame, invariato). CATPIT: a52. ⚠️ Trappola documentata:--propsfa merge superficiale suidefaultProps→ per spegnere la voce serve"audioSrc": nullesplicito, togliere la chiave non basta.
03_PROGETTI_di_LAVORO · Rapology (collab Martino)
Scripting e automazione di YouTube Shorts (commentary Rap/Hip-Hop, focus Eminem) per il canale [Rapology](https://www.youtube.com/@Rapology.M), in collaborazione con Martino. Formato: voice-over AI alternato a clip reali.
- Stato: 🟠 in impostazione (avvio 03-07-2026). Spazio:
Agente Residente openclaw/materiale condiviso/progetti_collab_martino/. CATPIT: p14 (task a42). - Metodo: mini-corso di scrittura recuperato (
RAPOLOGY__Scripting_Mini-course.md) → system prompt "cervello" (PROMPT__Rapology_Script_Engine.md). - Pipeline n8n (import manuale, output EN, motore gpt-4o): 5 (spunti) → 2 (idee) → 3 (espansione) → 1 (Script Engine) → 4 (Clip Finder). #1 e #4 caricati live in n8n ma INATTIVI; #5 Competitor Monitor = scaffold (servono channelId). Parte fragile: il Clip Finder non vede i video reali, propone solo cosa cercare.
- Materiale community: 7 template "clip miner" scaricati +
ANALISI.mdincommunity_clip_miners/;YouTube_Scraping_Toolbox__merged.json. - Redirect di Ettore (08/07): le automazioni pipeline risultavano troppo simili/poco utili → priorità alle automazioni davvero utili: trovare i video sorgente + estrarre le trascrizioni. (Thread aperto, non ancora ripreso.)
03_PROGETTI_di_LAVORO · Macchina Arrotolatrice
Segnaposto — progetto da avviare più avanti. Contenuto da definire quando si comincerà.
6. Bisogni trasversali
- Gestione "large documents": definire un sistema per vettorializzare, analizzare e riformulare documenti di grandi dimensioni (molti libri, anche voluminosi). Tocca sia Homelab (mole dati HD) sia la KB. Da progettare.
- Metodo di lavoro (
26_06_PROCESSO_LAVORO_METODO_v1): ogni file con estensione MD (+ TeX/PDF se da leggere), sempre indice + riassunto + nome/data/versione in cima + fonti in fondo; flusso Richiesta → Prompt → Esecuzione nel WS giusto, ciclo PDCA.
7. Discrepanze da chiudere (decisioni aperte)
Chiuse in questa versione: Macchina Arrotolatrice (rinviata) · struttura a 5 categorie
(confermata) · Kavita per libri/fumetti (adottata) · large documents (assorbita in Homelab).
Ancora aperte:
- Homelab: configurare audiolibri e le gallerie percorsi (moto/natura + dove dormire).
- Allineamento Airtable: su Airtable non esiste il progetto Jarvis; valutare se crearlo.
- Progetti di Lavoro: la sezione 5 e seguenti sono ancora da confermare nel dettaglio.
Changelog
- 2026-08-25 — Conoscenza, WEGreen e Università non sono più progetti a sé: sono sottoprogetti di Study System (p17). Lo diceva già il testo di p17 («copre i tre campi di conoscenza»), ora è vero anche nei dati: nascono
s06Conoscenza/KnoBase,s07WEGreen,s08Università insottoprogetti.csv; i 6 task (a08, a09 · a15 · a24, a25, a26) passano a p17 col loro ramo — la sigla NON si tocca perché nei dati vale come nome breve del ramo, non del progetto; p05, p07 e p06 restano archiviati (soft-delete, nessuna riga cancellata) con la nota di assorbimento nell'obiettivo; le 3 richieste che li citavano (q051, q053, q054) sono riagganciate a p17. Stesso schema del 24/08 per p16 → s02. Study System passa da 0 task aperti a 6. Backup.bak.20260825-studysysteminCATPIT_vault\_backup\; script della migrazione inCATPIT_vault\_scripts_tmp\. (Romeo) - 2026-08-21 (sera) — Study System (p17) · costruito e messo in servizio in un giorno, catena di 8 anelli (a84-a91). Dalla richiesta di Ettore delle 12:07 all'app in produzione: decisioni (Romeo) → revisione Fable → metro dei 14 corsi → 4 anelli di costruzione Sonnet → Docker → revisione finale Fable. L'anello 8 ha trovato un difetto sostanziale a container "sano": la Copertura in Docker dichiarava "metro assente" per tutti i 14 corsi (METRO_DIR risolveva a un percorso inesistente dentro il container) — dimostrazione che dichiarato ma non dimostrato = non fatto vale anche per un healthcheck verde. Corretto con una riga d'ambiente (il metro si legge dal vault già montato read-only, resta correggibile a mano senza rebuild); ora 20/20 ambiti col metro, media 75%, e l'app si apre sulla Copertura (la domanda dei dieci secondi: "cosa mi manca da studiare?"). 111/111 test, ciclo FSRS provato dal vivo su carta da fonte vera, scritture sul materiale rifiutate dal kernel. Aperte q084/q085/q086 (non bloccanti). Referto:
Study_System\REFERTO_FINALE_2026-08-21.md, commit84f7eab. (Archimede) - 2026-08-16 (sera) — Refine CATPIT, passaggio 4: riscritti i contenuti dei 16 progetti e dei 50 task attivi (Romeo). Le pagine rifatte da Archimede nei passaggi 1-3 mostravano meglio dei campi scritti male: questo passaggio li riempie. Prima/dopo, misurato coi dati veri: task senza prossima azione 17 → 0 (senza quel campo un task non entra in coda: era lavoro invisibile), prossime azioni che l'app classifica come verbale 11 → 0 (la peggiore era da 3.616 caratteri), task senza scheda di dettaglio 39 → 0, task pronti per la coda 32 → 48 su 49 (l'unico fuori è
a57, bloccato da q042). Ogni progetto ora risponde a quattro domande in dieci secondi — di cosa si tratta, a che punto è, cosa manca, cosa serve da Ettore — e ogni task ha obiettivo, criterio di fatto verificabile, dove stanno i file e cosa è già stato provato. I verbali non sono stati buttati: stanno in coda alle note sotto--- diario ---, con l'etichetta di dove stavano. Due difetti dei dati corretti strada facendo: 23 sottotask scritti con la chiave sbagliata o senza identificativo (l'app li mostrava come «undefined» e non si potevano spuntare:a08,a50,a52) e cinque trattini corrotti da una vecchia scrittura. `a54` chiuso: il fix era in funzione da settimane e il task diceva ancora «resta il riavvio». Prova negativa: lo strumento che applica le modifiche rifiuta la patch prima di scrivere se una prossima azione va a capo o supera i 160 caratteri — la stessa soglia con cui giudica l'app (lib/campo-testo.ts), non una inventata. Nate due richieste: q074 (due task già fatti da chiudere) e q075 (doppione della skillcatpit-dev). ⚠️ Detto e non nascosto: questo file contiene ancora voci narrative da 4.000 caratteri — è lo stesso difetto appena corretto in CATPIT, e la sua riscrittura è un lavoro a parte. Referto completo:materiale condiviso\Sviluppo_Sistema_Agentico\REFERTO_2026-08-16_refine_CATPIT.md; snapshot_storico_progetti/ELENCO_PROGETTI_2026-08-16.md. (Romeo) - 2026-08-06 (mattina) — Video Factory (p11) · l'ANELLO 3: dal claim-pack verificato al piano montato, sui 5 archetipi (a55). Giro
loop-vf-12. Fino a ieri il compositore conosceva un archetipo e lo usava sempre: non un default, un'assenza di scelta travestita da default. Ora la scelta è una funzione del pack — cinque compositori, cinque condizioni scritte, e una motivazione per ogni archetipo ammesso o scartato (--spiega). MapZoom e SplitCompare vengono per primi perché affermano qualcosa in più del numero; DataLowerThird per ultimo perché non afferma niente. MapZoom solo con `geografia` dichiarata nel pack, mai dedotta: è la lezione del video 1, dove la mappa inquadrava tutto il Sud America per un dato di nove stati. Quattro difetti trovati montando davvero i due archetipi che nessun video aveva mai usato — codice mai eseguito che si credeva funzionante: G8/G9 ciechi sulle etichette delle barre (cercavanolabel, il template stampaname: bocciavano qualunque SplitCompare corretto e accusavano i suoi numeri di non avere un claim), il grafico che arrotondava (10,9 → 11 e +0,56 → +1: è il difetto per cui esiste G6, sopravvissuto in un modulo mai toccato), i due pannelli con la stessa identica etichetta — «GIUGNO 2026» sopra e sotto, visto solo sul fotogramma con sette cancelli verdi, perché il confronto del video 2 è per perimetro e non per tempo — e l'archetipo forzato che esplodeva invece di dire perché. Terza soglia scritta a memoria e sbagliata (dopo lo 0,5 della musica): a uscire dallo schermo non è l'etichetta lunga, è la parola lunga, e si vede solo renderizzandola. Provato contest_anello3.mjs(ogni pack in tutte le grammatiche che regge, non solo in quella scelta) + le 4 suite precedenti verdi + un render vero guardato con gli occhi (musica −23,8 dB). Non provato e detto: pannelli vuoti senza clip, MapZoom mai renderizzato perché nessun pack dichiarageografia. 💶 €0 (agosto: 0 su 500). Allineati CATPIT (a55, backupattivita.csv.bak) e ELENCO; snapshot_storico_progetti/ELENCO_PROGETTI_2026-08-06.md. (Romeo) - 2026-08-05 (notte) — Video Factory (p11) · i VIDEO 1 e 2 passati al cancello per la prima volta, e tre cecità della catena chiuse (a55/a52). Giro
loop-vf-11. I due video di luglio erano anteriori al formato claim-pack: i gate su di loro non avevano mai girato. Scritti i pack a posteriori dalle fonti primarie. Per farlo sono emerse due cose che la catena non sapeva fare — leggere un PDF (la nota INPE arrivava come 438 KB di binario: G1 avrebbe bocciato un video corretto accusando il claim invece del proprio lettore; nuovotesto_pdf.mjs, zlib di Node, nessuna dipendenza, fail-closed) e leggere i numeri di una fonte non inglese (il5.796portoghese valeva 5,796; nuovo campofonte_formato_numero, opt-in) — e una terza, la più grave: G9 guardava mezzo schermo. Bocciava i 13.038 km² della barra e non vedeva il −55% scritto più grande di tutto il resto, perché cerca i campi numerici e non le parole: terza volta che un gate parla di un documento diverso da quello che finisce a schermo. Nuovo G13, provato su tutti e cinque i video prima di spedirlo — e infatti bocciava i video 3, 4 e 5 sui gradienti CSS, esattamente il difetto di G12 del giorno prima. Verdetti: video 2 bocciato solo da G4 (la scorciatoia "Europa"/"Europa occidentale" già corretta in apertura e sopravvissuta in chiusura → q058); video 1 bocciato su cinque punti e non recuperabile — fonte di 282 giorni, e a vista la mappa mostra tutto il Sud America per un dato di nove stati brasiliani: non era una notizia, era un test di template (→ q059). 🎵musicVolumediinspiredeporch-swingmisurati in due render veri (0.27 / 0.25 → −25/−26 dB): lo 0,5 stimato a memoria era sbagliato di ~5,5 dB. Dichiarato non verificato il loop musicale (condizione irraggiungibile con la libreria attuale). Suite: 17/17, contatore verde, 32/32, 18/18. 💶 €0 (agosto: 0 su 500). Allineati CATPIT (a55, backupattivita.csv.bak) e ELENCO; snapshot_storico_progetti/ELENCO_PROGETTI_2026-08-05_vf-video1e2-al-cancello.md. (Romeo) - 2026-08-02 (sera, seconda parte) — Homelab (p01) · censiti gli audiolibri: il censimento degli HD è completo (a03). Chiusa l'ultima categoria che mancava, e con essa tutto il censimento: 1.600 GB su cinque categorie. Audiolibri: 23 opere, 238 tracce, 131,2 ore di ascolto, 1,6 GB, zero tracce con durata illeggibile. Per un audiolibro il numero che conta non sono i MB ma le ore, quindi lo script legge durata e bitrate dai metadati (
Shell.Application, colonne 27/28, unaNameSpaceper cartella in cache). Il quadro è secco: una sola opera vale il 95% delle ore (Harry Potter 1-7 letto da Stephen Fry, 199 tracce, 124h 36m) e il resto sono 22 fiabe da 10-25 minuti l'una. Harry Potter sta a 24 kbps — ecco perché 124 ore entrano in 1,3 GB: ascoltabile, ma qualità da telefono contro i 105-147 kbps delle fiabe. La conclusione utile per il progetto non è di pulizia: 1,6 GB contro 639 GB di film significa che lì il lavoro è acquisire, non riordinare, e la domanda da fare a Ettore è quali audiolibri vuole. Trovato per strada un buco che falsava il censimento in silenzio:Get-ChildItem -Pathtratta le parentesi quadre come wildcard, e la cartellaHarry Potter … [MP3]risultava vuota senza dare errore — lo script usava già-LiteralPathovunque, ma la diagnosi è annotata nella scheda perché è il tipo di errore che non si vede nei risultati. Segnalato anche cheFiabe Audioè mista: 7 PDF (fra cui un Fromm da 118 MB, quasi metà della categoria in peso) e 2.rarmai aperti. Scheda a v3, CATPIT a03 e ELENCO riallineati. (Romeo) - 2026-08-02 (sera) — Homelab (p01) · censiti i video personali: 78 file valgono due terzi dello spazio (a03). Anello 6 della catena di recupero. Chiusa l'ultima categoria video che mancava (
F:\Archivio\Video_3000x190): 4.359 video, 197,6 GB, 43 cartelle, con il censimento portato a 1.598 GB su quattro categorie. Impalcatura nuova dentro gli stessi due script (censimento_hd.ps1 -Cosa video, sempre in sola lettura): i video personali sono file, non opere, quindi si aggregano per cartella come le immagini invece di normalizzarne il titolo; la data si legge prima dal nome (VID_20170812_…) e solo in mancanza dal filesystem, perché le copie fra dischi riscrivonoLastWriteTimee falsavano l'anno; i doppioni si cercano su nome + dimensione in byte, cioè copia certa e non somiglianza. Il risultato che conta non era prevedibile a memoria: 78 file — l'1,8% — occupano il 67% dello spazio (133 GB di registrazioni di gaming 2016-17: Call of Duty Advanced Warfare, GTA V, Battlefield 1, RUST), mentre dieci anni di vita filmata col telefono stanno in 64 GB; dentro c'è anche una cartella annidata quasi omonima (45 GB duplicati per errore di copia). Trovati inoltre 34 gruppi di doppioni iPhone (~359 MB, tutti fraVideo_Iphone_2024e2025) e due file con date impossibili nel nome (1995 e 2043): non un errore del parser, l'orologio del telefono era sballato alla ripresa. Verificato che nessun video è rimasto fuori: i 326 file esclusi sono thumbnail.jpg/.bmpe un.m4a, 139 MB. Aperta q046 (non bloccante) sui 133 GB — raccomandazione: spostarli in una collezione "Gaming" fuori dalla galleria personale, perché il problema non è lo spazio ma il materiale mescolato ai video di famiglia. Prossima azione autonoma di a03: audiolibri. (Romeo) - 2026-08-02 (pomeriggio) — Homelab (p01) · censiti film e immagini sugli HD (a03). Il censimento per categoria era fermo a musica e libri. Ora ci sono anche film e serie (290 film / 639 GB, 30 serie / 1.024 episodi / 392 GB, contro le 256 righe del vecchio
DS_film_Real.csvche non distingueva film da serie e portava percorsi in parte morti) e le immagini (104.259 file, 369 GB, 575 cartelle, 22 estensioni). Due script ripetibili in sola lettura (censimento_hd.ps1,genera_md.ps1) più la schedaCENSIMENTO_HD.mdinMD_DB_v1\01_SISTEMA_PERSONALE_homelab\Censimento_HD\. Quattro cose emerse dal censimento e non dai ricordi: 11 gruppi di doppioni (~15 GB recuperabili, stessi film su E e su F), 8 cartelle-film vuote rimaste dal riordino precedente (i film sono stati appiattiti col prefissoanimaz_), `IMGs_Tattoo` che non è una cartella di immagini (352 immagini contro 1.041.js.downloaddi pagine web salvate — riguarda a27), e 11.762 RAW Nikon da decidere prima di darli a Immich. Restano fuori i video personali (Video_3000x190) e gli audiolibri. Nessun file esistente è stato sostituito: i_v2vivono accanto ai vecchi e la promozione inDATASETs/attende l'OK di Ettore. - 2026-08-04 (notte) — Video Factory (p11) · il cancello nuovo provato fuori dal caso in cui era nato, ed era sbagliato su meta’ degli archetipi (a55). Giro
loop-vf-10. G12 (piano = template) era nato il 03/08 su un solo incidente, e la tabella che lo governa era stata scritta a memoria: a memoria era giusta esattamente sui due archetipi di quell’incidente e sbagliata sugli altri due, in entrambe le direzioni. KineticStatCard non ha nessun campostat: leggecards[]— quindi ogni piano veniva bocciato per “mancastat”, che nessun piano puo’ avere: falso positivo totale, e il video 2 gia’ montato e approvato oggi non ripassava il suo stesso cancello (un gate che boccia il lavoro buono viene spento alla seconda volta). SplitCompare non stampa numeri dapanels(che porta solo immagini ed etichette) ma dacompare.bars[]: falso negativo, un piano senzacomparepassava e a schermo restavano le barre di esempio 10 / 4. E poiche’cardsecomparenon erano nemmeno 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. Tutto provato eseguendo la versione precedente di `produci.mjs` estratta da git sui piani veri — non per ragionamento. Rimedio, che non e’ “correggere la tabella”:test_g12.mjs(32/32) la confronta a ogni run con i due documenti che governano davvero l’immagine — la destrutturazione dei props insrc/*.tsxe ildefaultPropsdi ogniCompositioninRoot.tsx— e cade se un sesto archetipo entra in Root.tsx senza essere registrato. Inoltreproduci.mjsnon era importabile (partiva il render al soloimport), quindi chi voleva provare i suoi cancelli era costretto a copiarli: quinta occorrenza della stessa trappola, chiusa con la guardia CLI. Quante erano le strade per una cifra inventata (punto b): tutti e cinque i piani di esempio contengono numeri (21.1 °C · 17 % · 421 ppm · 10 e 4 M/anno · 10 M ha · 10 000 km²), e ognuno va in onda se il piano vero omette quel campo; prima di oggi due erano raggiungibili a dodici cancelli verdi. Ripasso dei video 1, 2 e 3 col loro--template: coerenti, nessun rimontaggio; catena completa ri-eseguita verde su video 3, 4 e 5; fotogrammi del video 2 guardati a vista (+3,06 °C e +0,56 °C, etichetta e fonte al loro posto). ⚠️ Buco che resta: i video 1 e 2 non hanno claim-pack (anteriori al formato) — su di loro G1-G9 non hanno mai girato. Musica (secondo collo di bottiglia, sciolto): il catalogo incompetech e’ interrogabile senza login (pieces.json, 1442 brani confeel); filtrate le Bright/Uplifting, 6 candidate 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: entra in dissolvenza). Libreria utile su uno short: da 2 tracce, entrambe scure, a 7 — di cui 5 positive. 💶 €0 (agosto: 0 su 500;COSTI.mdricostruito con intestazione e consuntivo, era rimasto una riga sola). Allineati CATPIT (a55: corretta anche la colonnapriorita, che conteneva il testo della prossima azione) eF3__CATENA_AUTOMATICA.md(§8quinquies); snapshot_storico_progetti/ELENCO_PROGETTI_2026-08-04_vf-g12-fuori-dal-caso.md. Lezione: una regola nata su un caso solo va provata fuori da quel caso, o non e’ una regola: e’ la descrizione di un incidente. (Romeo) - 2026-08-03 (notte) — Video Factory (p11) · i cancelli hanno detto sì a un video sbagliato (a55). Giro
loop-vf-9. Il sospetto lasciato aperto il 02/08 era fondato, e sotto ce n'era uno peggiore: tre difetti, tutti a cancelli verdi, tutti della stessa forma — un controllo che parla di un documento diverso da quello che finisce a schermo. (1) Il numero cercato come sottostringa. G1 verificava il valore con unincludessul testo normalizzato, enorm()cancella i segni insieme alla punteggiatura. Provato su pagine reali già infonti_cache/: la frase C3S «monthly values reaching 3-5°C above average» (ondata di calore) faceva estrarre all'anello 1 un dato di −5 °C — il trattino dell'intervallo entrava nella cattura come segno meno — e il pack costruito su quel dato passava sette cancelli verdi, con G1 che scriveva «-5 trovato verbatim»: non taceva soltanto, mentiva nel motivo. E un pack che dichiara −0,5 su una fonte NOAA che scrive +0,5 passava, perché doponorm()le due stringhe sono identiche: su un'anomalia il segno è il dato, ed era la falsificazione più economica che la catena permettesse. Chiuso con una primitiva sola usata da G1, da G6 e dall'estrattore — non ricopiata, perché il 02/08 la terza copia di una primitiva aveva prodotto un estrattore che proponeva ciò che il cancello bocciava. La regola boccia la contraddizione del segno, non l'omissione innocua (dichiarare1.2ciò che la fonte scrive+1.2resta lecito), con un caso di test a guardia: un cancello che boccia il lavoro buono viene spento dopo due volte. (2) Il segno che non arriva allo spettatore. Ora G6 pretende che, se la fonte firma il valore, lo firmi anche lo schermo — regola meccanica, non chiede di sapere se il valore è un'anomalia. Il pack del video 5 senza correzione risultava BOCCIATO. (3) Il difetto grosso, trovato guardando un fotogramma. Il video 5 era montato con--template EnvShortpassando un piano che dichiara i numeri inlowerThirds, ma EnvShort non legge `lowerThirds`: legge `graphics`. Quindi, a dodici cancelli verdi, i due numeri verificati non sono mai comparsi e — poiché il merge dei--propsè superficiale — al posto del campo mancante è rimasto quello disample-plan.json, cioè il contatore d'esempio «Record sea-surface temperature 21.1 °C»: al secondo 3,2 la banda leggeva 14.1 °C, un numero che non sta in nessuna fonte, in nessun claim e in nessun piano. G8/G9 non potevano vederlo: leggono il piano, dove i numeri giusti c'erano. La promessa di G9 — «nessuna cifra a schermo senza citazione dietro» — non era sbagliata, era vuota. Da qui G12 (piano = template): il piano non dichiara numeri dove quel template non guarda, e dichiara esplicitamente ogni campo numerico che il template legge, anche vuoto — un campo assente non è vuoto, è il default della composizione; è la trappola già nota peraudioSrc, salvo che qui il default non è silenzio, è una cifra. Consegne: 5 casi di test scritti prima delle correzioni (4 fallivano, 1 è la guardia anti-falso-positivo) → 17/17; guardia CLI acerca_notizie.mjs, che senza scatenava il crawl completo a ogni import — ed è il motivo per cui le sue primitive non erano mai state provate; video 5 rimontato conDataLowerThird(out/enso-july-2026.mp4, 13,2 s, −23,4 dB) e per la prima volta mostra davvero +1.2 °C e +2.7 °C, fotogrammi guardati a vista; sezione trappole dei due dossier compilata a mano su pagine terze (ENSO: il valore è il Niño-3.4 settimanale, non l'ONI che è una media mobile su 3 mesi a base trentennale mobile — e dal PNS 26-05 l'indice ufficiale NOAA non è più nemmeno l'ONI ma il RONI; ghiaccio: extent ≠ area (soglia 15%, NSIDC) e soprattutto «sixth-lowest» nella stessa pagina vale anche per l'Antartide, mentre il rango è molto più volatile del valore — giugno 2025, con 0,1 M km² in più, classificava secondo);dossier.mjsora conserva una sezione 4 già compilata invece di sovrascriverla. Verificato: 17/17,test_contatoreverde,tscpulito, video 3 e 4 approvati non toccati da nessuna regola nuova, estrattore riprovato dal vivo. 💶 €0 (agosto: 0 su 500). Allineati CATPIT (a55, backupattivita.csv.bak) eF3__CATENA_AUTOMATICA.md(§8quater, tabella a 12 gate); snapshot_storico_progetti/ELENCO_PROGETTI_2026-08-03_vf-segno-e-template.md. Lezione: la domanda su un controllo non è se funziona, è su quale documento sta guardando. (Romeo) - 2026-08-02 (mattina) — Video Factory (p11) · l'anello 2 provato su una fonte mai vista, e il dossier che si genera da solo (a55). Giro
loop-vf-7. Candidato preso dall'anello 1 dal vivo e scelto fuori dal caso su cui le regole erano nate (NOAA CPC — ENSO, 09/07/2026): undici cancelli verdi, verdetto OK, e testi a schermo illeggibili. Tre difetti distinti. (1)stripHtmldecodificava cinque entità HTML: Copernicus serve UTF-8 vero, NOAA serveñ/°, quindi il difetto non poteva emergere finché l'unico ente era Copernicus — e non era estetico, perché G1 bocciava una citazione corretta scritta in UTF-8 (falso positivo del cancello). Chiuso con una decodifica a passata sola su tabella di nomi, applicata anche in lettura dalla cache. (2)cerca_notizie.mjsaveva una terza copia della stessa primitiva e una propria lettura di cache: divergevano nel file che dichiara di importarle per non divergere. Nel mezzo il cancello ha bocciato il mio stesso claim-pack: comportamento giusto. (3) lo split delle frasi tagliava dentro[Fig. 1], e il danno grosso non erano i cocci a schermo ma la regola della finestra, che misura la vicinanza in frasi e su una fonte frammentata smetteva di raggiungere le frasi vere — un controllo che tace invece di sbagliare. VIDEO 5 (out/enso-july-2026.mp4, 13,2 s, dodici gate verdi, primo da un ente non Copernicus). Consegnato anche `automazione/dossier.mjs`: il FONTI_DATI si genera dal pack con i gate ricalcolati, provato anche sul video 4 già approvato; la sezione trappole resta deliberatamente vuota (un vuoto dichiarato si compila, una frase generata si crede), e l'omogeneità non dichiara più "omogenei" confrontando due caselle vuote. ⚠️ Resta aperto e non provato: la banda mostra1.2 °Cmentre la fonte dice+1.2 °C— su un'anomalia il segno è parte del dato, e un'anomalia negativa senza segno sarebbe un video falso a cancelli verdi; la sonda è stata inconcludente e non la dichiaro provata: è il primo lavoro del prossimo giro. Verificato: 12/12 casi (il dodicesimo scritto prima della correzione, e falliva),test_contatoreverde,tscpulito, fotogrammi guardati a vista. 💶 €0 (agosto: 0 su 500). Allineati CATPIT (a55, backupattivita.csv.bak) eCOSTI.md; snapshot_storico_progetti/ELENCO_PROGETTI_2026-08-02_vf-anello2-fonte-nuova.md. (Romeo) - 2026-08-01 (ora di pranzo) — Video Factory (p11) · il contatore che mentiva, e un generatore di testi che non può inventare (a55). Giro
loop-vf-6. (A) Il contatore. Chiuso il difetto trovato guardando i frame il 31/07 (a 12 s si leggeva "2 %" per un dato del 5 %), ma non con la soglia sul valore che sembrava ovvia: quella è arbitraria e sbaglia i casi di confine. Ciò che rende pericoloso un fotogramma non è quanto è piccolo il numero, è per quanto tempo un numero falso resta immobile a schermo. Regola insrc/contatore.mjs: nessuna cifra falsa ferma oltre 100 ms (dieci cambi al secondo — sotto si legge come movimento, sopra come dato); se il conteggio non ce la fa, non si anima e la cifra vera si vede dal primo fotogramma. Tre scoperte applicandola: 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; il ritardo di partenza di 130 ms era esso stesso un riposo su cifra falsa (130 ms di "0" fermo, con etichetta e fonte già leggibili), trovato dalla misura e non dall'occhio; e il difetto c'era anche in un video italiano approvato (il0,01del video 3 restava a "0,00" per quasi mezzo secondo). Nuovo gate G11 +test_contatore.mjs, che riproduce il difetto col calcolo vecchio e legge i sorgenti dei template — perché il modo naturale di rimettere in circolo il difetto non è cambiare il modulo, è scriverne un altro. 11 cancelli verdi,tscpulito, i 3 video italiani rirenderizzati senza regressioni, fotogramma a 12 s riguardato con gli occhi. (B) Anello 2 in versione locale (automazione/scrivi_piano.mjs): dal claim-pack ai testi e al piano, €0 e zero chiamate esterne. Il criterio non è scrivere bene ma non poter affermare ciò che la fonte non dice, quindi l'anello non scrive: sceglie, verbatim, e le sole trasformazioni 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 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 vicine alla citazione che G1 ha già verificato: il bollettino ha una sezione artica e una antartica con le stesse formule, e arctic è una sottostringa di antarctic) e verso (niente direzione opposta al dato, salvo che la frase porti entrambe, perché allora è un confronto). Annotato il principio: un selettore può permettersi di essere più severo di un cancello — scartare una frase buona costa una frase, un gate che boccia lavoro buono viene spento. Sul video 4 la prima caption generata è 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 più asciutto di un modello — è il pavimento, non il soffitto, e resta la rete di sicurezza a costo zero quando arriverà la versione cloud. 💶 €0 (agosto: 0 su 500). Allineati CATPIT (a55, backupattivita.csv.bak), docF3__CATENA_AUTOMATICA.md(§8bis chiusa, §8ter nuova, §10); snapshot_storico_progetti/ELENCO_PROGETTI_2026-08-01_vf-contatore-anello2.md. (Romeo) - 2026-07-31 (mattina) — Video Factory (p11) · il canale passa all'inglese, e il cancello se ne accorge (a55). Giro
loop-vf-5. Eseguita q026: il codice del montaggio è ora sotto git nel repo agenti, nel vault restano i documenti. Poi le due conseguenze tecniche di q025 (inglese), entrambe invisibili a occhio: la formattazione dei numeri dipende dalla lingua (10.9≠10,9) ed esisteva in due copie — una nei template e una dentro il gate G8 — cioè il modo silenzioso di verificare una cifra e montarne un'altra; unificata insrc/formato_numero.mjs+ nuovo gate G10 sulla coerenza di lingua fra pack e piano. E il vocabolario di G4/G7 era in italiano: in inglese il gate del perimetro avrebbe smesso di scattare senza dirlo — dimostrato con un caso di test scritto prima della correzione (un video EN che dice "The entire Arctic is melting" su un dato di solo ghiaccio marino passava tutto), poi chiuso; 11/11 casi, nessun falso positivo sul video EN corretto. Prodotto il video 4, primo in inglese e primo nato da un candidato dell'anello 1 (ghiaccio marino artico, 26 s, dieci gate verdi). Trovato guardando i frame un limite di G9: protegge il piano, non i fotogrammi intermedi del contatore (a 12 s si legge "2 %" per un dato del 5 %). 💶 €0. Allineati CATPIT (a55),DIARIO.md, docF3__CATENA_AUTOMATICA.md(§5bis, §8bis),.gitignore; snapshot_storico_progetti/ELENCO_PROGETTI_2026-07-31_vf-inglese.md. (Romeo) - 2026-07-30 (pomeriggio) — Tre task in parallelo, tutti a costo zero: anello 1 della Video Factory · connettore Google Calendar di Life OS · fix delle Richieste in CATPIT. Mezz'ora di finestra prima del reset usata per lanciare tre lavori non gated, così nessuno si fermasse ad aspettare una risposta. (a55, p11 — anello 1) Censite 12 fonti primarie (+7 scartate col motivo) e scritto l'estrattore che ne ricava i candidati: run reale su 12 fonti → 10 pronte, 1 da datare, 10 fuori tema, 50 scartate, e un claim-pack costruito dal candidato C3S sul ghiaccio artico che passa tutti e sette i gate pre-render. Il punto non è il codice ma quattro cose che solo il run reale insegna: metà degli enti primari non ha RSS e chi ce l'ha spesso non ci mette i bollettini; "non so quando" non è "troppo vecchio" (il bollettino C3S sulla temperatura, la fonte del canale, non pubblica una data — dedurla dallo slug sarebbe stato inventarla, quindi esiste un mucchio da datare); G1 garantisce che la citazione esista, non che sia leggibile (un banner cookie di Eurostat era finito dentro una citazione); e le fonti muoiono in silenzio — NSIDC Sea Ice Today è ferma a ottobre 2025, Copernicus Marine a luglio 2025. Nessuna logica di gate toccata (solo tre funzioni esportate invece di duplicate: due normalizzazioni che divergono sono un modo silenzioso di verificare una cosa e montarne un'altra), 9/9 casi ripassati. (a51, p02) Scritto e collaudato per intero il collegamento a Google Calendar prima di avere le credenziali — OAuth Desktop/loopback, refresh del token, casi brutti coperti (token scaduto, autorizzazione revocata, quota, rete assente) e in tutti l'app dice la verità invece di fingere la sincronizzazione: 27/27 test nuovi + 38/38 smoke, solo stdlib. A Ettore resta un solo gesto:
credentials.jsonnella cartella già creata. (a54, p15) L'API delle Richieste ora rispettablocca:[]con default prudente — il non-blocco è una scelta esplicita, mai una dimenticanza: è il difetto che faceva apparire vuote le code e mandava i giri autonomi a scrivere test su lavoro già fatto. 247/247 verdi su 21 file,richieste.jsonreale non toccato; ⏸️ manca build + riavvio su `:3010` per andare live. Verifiche fatte da Romeo, non prese a referto: rerun delle tre suite, claim-pack ripassato al cancello (12/12), verbatim10.9ritrovato nelle pagine scaricate infonti_cache/, cartelle dati reali intatte. 💶 €0 su tutti e tre. Allineati CATPIT (a51/a54/a55: stato, prossima azione, note; backupattivita.csv.bak) e questo ELENCO; snapshot_storico_progetti/ELENCO_PROGETTI_2026-07-30.md. Aperte 4 decisioni sull'anello 1 (allowlistec.europa.eu, G2 sul percorso URL per INPE/PRODES, come datare i bollettini C3S, filtro tematico) e il pannello di gestione della Video Factory: non esiste e non è mai stato iniziato — verificato nel vault e nel repo — quindi va deciso se farlo come stanza di CATPIT (raccomandato) o app separata, e cosa deve gestire. (Romeo) - 2026-07-30 (sera) — Video Factory (p11) · automazione di scripting (F3, anello 2, a55). Sessione dedicata fable-5. Costruito il ponte fra la notizia e i 5 template: sub-workflow n8n `Kuuu3geNw7F2yHke` ("VF · Scripting → Piano template", inattivo, 7 nodi, nessuna credenziale inline) che prende una notizia strutturata (14 input tipizzati), sceglie l'archetipo e produce il piano JSON coi campi esatti di quel template. Perché così: modulo a sé e non dentro F1 (F1/F2 restano intatti e testabili); Chain e non Agent perché il compito è one-shot; schema JSON manuale ricavato leggendo il codice dei template +
autoFix. Il valore non sta nel prompt ma nel validatore: il numero a schermo deve coincidere con quello in input, le coordinate della mappa sono ricalcolate dai lat/lon e non affidate al modello, i path non-URL azzerati,audioSrc/musicSrcanull— coerente con la regola dei 9 gate (ai dati non risponde un LLM). Provato a costo zero: piano d'esempio sui dati già verificati del video 2 e render riuscito (24 s). 💶 €0. Restano a Ettore la credenziale Anthropic sui 2 nodi e l'OK al test con notizia vera; resta tecnicamente l'estensione del video-worker/produce(conosce solo EnvShort). Aggiornata la nota e la prossima azione di a55 in CATPIT; backupattivita.csv.bak.20260730-scripting. (Romeo) - 2026-07-30 (notte) — Video Factory (p11) · la verifica dei dati diventa meccanica (F3, a55). Giro
loop-vf-4. Costruito e provato il cancello che sta fra i dati e il montaggio: nove gate inmontaggio_remotion/automazione/, conproduci.mjsdavanti aremotion render(se i controlli non passano, il render non viene invocato affatto). Il ragionamento prima del codice: su tutti e tre i video prodotti il controllo umano sulla fonte primaria ha intercettato un errore vero — quindi automatizzare la produzione senza automatizzare quel controllo non accelera il canale, lo trasforma in una macchina che pubblica video falsi in scala, l'unico errore non recuperabile per un canale che vive di credibilità. Da qui il ribaltamento della catena: si parte dai bollettini degli enti, non dalle notizie, così un numero che l'ente non ha mai pubblicato non può nascere; e nessun gate delega il giudizio a un modello. Risultato misurato: 9/9 casi reali (i video approvati passano; i cinque errori del 28-29/07 bocciati ognuno dal gate giusto), fail-closed verificato. G9 è il gate più severo: nessuna cifra a schermo senza citazione dietro. Due lezioni annotate: il falso positivo è pericoloso quanto il falso negativo (un gate che boccia il lavoro buono viene spento) e il grado sono due caratteri Unicode diversi nella stessa pagina C3S, uno dei quali è classificato come lettera. Allineati piano (v0.6, F3 in corso),DIARIO.md,COSTI.md(luglio €0,00 su 500, 3 video / 0 pubblicati) e CATPIT (a55 In corso, prossima azione scritta). Restano l'anello 1 (scelta notizia) e il generatore dei testi, quest'ultimo dopo q025. Snapshot_storico_progetti/ELENCO_PROGETTI_2026-07-30_vf-verificatore.md. (Romeo) - 2026-07-29 (notte) — Video Factory (p11) · piano riallineato + terzo video, senza materia visiva. Giro
loop-vf-3. (a11, chiuso)02_piano_sviluppo.mdportato alla v0.5: era fermo al 24-06 e descriveva un canale che non esiste più (voce TTS, avatar presentatore, montaggio su API cloud a pagamento, budget ~100 €). Riallineato ai paletti q008-q014: eliminati i tre anelli audio (TTS → Whisper → sync), montaggio corretto in Remotion self-host, budget 500 € solo canale Ambientale, pubblicazione marcata gate q012, roadmap riordinata attorno a cosa manca per automatizzare (F0-F6) invece che a cosa manca per fare un video; copia della v0.4 inmateriali/_storico/. (a52) Consegnato il video 3 su archetipo DataLowerThird: oceano extra-polare a 20,86 °C a giugno 2026 (record del mese, +0,01 °C su giugno 2024) contro l'aria globale +0,56 °C, solo seconda — tre dati dallo stesso bollettino C3S, per essere confrontabili. €0. È il primo video del canale senza alcuna materia visiva (solo gradienti): dimostra che esiste una classe di video immune a q024 e a costo strutturalmente nullo. ⚠️ Intercettato un difetto grave: il contatore diDataLowerThirdarrotondava all'intero (20,86 → 21), lo stesso difetto già corretto suKineticStatCarde mai propagato — quando si ripara un modulo di formattazione vanno controllati tutti i template che ne hanno una copia. Documentate tre trappole sui dati (i 20,98 °C delle testate italiane non esistono nei comunicati Copernicus; 20,86 è per coincidenza sia media mensile sia dato giornaliero; i 21,0 °C di Copernicus Marine vengono da un altro modello e non sono confrontabili) → regola nuova: due numeri nello stesso video devono venire dallo stesso dataset e periodo. Scoperto che la libreria musicale è più povera del previsto: 2 tracce utilizzabili su 6. Aperta q025 (lingua): il piano dichiarava il canale in inglese, i tre video sono in italiano — divergenza mai dichiarata, e ogni video nella lingua sbagliata è lavoro da rifare. Snapshot_storico_progetti/ELENCO_PROGETTI_2026-07-29_vfvideo3.md. (Romeo) - 2026-07-28 (notte) — Video Factory (p11) · secondo video reale + igiene della libreria. Giro
loop-vf-2. Consegnato il video 2 su archetipo KineticStatCard (diverso dal MapZoom del primo): "Giugno 2026 — l'Europa occidentale non era mai stata così calda", 24 s, dati dal bollettino Copernicus C3S del 09/07/2026 (+3,06 °C Europa occ. contro +0,56 °C globale, stessa base 1991-2020), fonte a schermo, musica CC BY. €0. Intercettato prima del render definitivo un errore di accuratezza (l'apertura generalizzava "in Europa" un record che è dell'Europa occidentale). Corretti 4 difetti della libreria, tutti generici: numeri non italiani e incoerenti fra template →formatIt()unica intheme.ts;KineticStatCardnon stampava la fonte → camposource(+decimals/prefixper le anomalie);clipA/clipDcon bande nere incorporate → ritagliate; il video 1 era muto (piano anteriore al layer musica) → musica aggiunta e ri-renderizzato. Scoperto che 2 tracce su 6 partono dal silenzio e non si possono usare su uno short (colonna "attacco" inMUSICA.md). Aperta q024 sul vero collo di bottiglia: la materia visiva (i 2 video girano sulle stesse 4 clip di foresta; raccomando gli archivi public domain NASA/ESA/Copernicus prima di aprire account a pagamento). Aperto anche un difetto di CATPIT come task a54 (p15): l'API delle richieste blocca sempre il task citato, anche quando la richiesta dichiara che il lavoro prosegue — è ciò che fa apparire vuota la coda p11 e spegnerebbe il loop. Snapshot_storico_progetti/ELENCO_PROGETTI_2026-07-28_vfvideo2.md. (Romeo) - 2026-07-27 (mezzogiorno) — Video Factory (p11) · layer musica: chiusura e QA (Archimede). A valle del giro mattutino, Archimede ha completato ed eseguito la QA indipendente del layer musica (opzione B):
Music.tsxcondiviso validato, overridemusicVolume/musicFadeIn/musicFadeOutda piano, 5/5 verifiche —tsc0 errori; render musica su SplitCompare + KineticStatCard;ffprobe(1080×1920@30, stream AAC); inviluppo fade reale (plateau −2,5 dB, loop senza buchi né re-fade); non-regressione amazzonia SSIM 1.000 (originale non sovrascritto) — sezione Musica unica inMODELLI_VIDEO.md(con ⚠️ merge props) + nota volume nelREADME. 6 tracce Kevin MacLeod CC BY 4.0 (attribuzione obbligatoria,MUSICA.md), €0. Regola nuova: piani di produzione senza voce → `"audioSrc": null` esplicito (il merge superficialeinputProps↔defaultPropsdi Remotion v4 faceva ereditarevoice.mp3ai render di test → falsi "bug";--propsnon è rotto). Chiarito un cortocircuito di identità Romeo↔Archimede (un doppio run credeva a un conflitto a quattro mani): nessuna doppia scrittura, un solo esecutore (Archimede). Riallineo fonte-verità (Romeo): nota dia52inattivita.csvaggiornata (musica consegnata; restano Video 2 + pubblicazione), ELENCO rifinito (statoa52= Bloccato su Ettore, attribuzione esecutore). Note:out/già ripulito dai render di test fuorvianti; i nomi_qa-music-*.mp4del report non sono su disco (evidenza neidemo-musica-*.mp4+_qa-map-zoom-amazzonia-regression.mp4). Backupattivita.csv.bak.20260727-a52music. (Romeo) - 2026-07-27 (mattina) — Video Factory (p11) · layer musica + strato costi/business planning. Primo giro del loop
loop-vf-1. Eseguita la conseguenza tecnica di q008 (musica + testo, niente voce):src/Music.tsxcondiviso dai 5 archetipi (volume 0,75, fade 1,2/1,5 s, loop automatico), 2 bug corretti (SplitComparenon suonava affatto,KineticStatCardignoravamusicSrc), libreriapublic/music/con 6 tracce CC BY 4.0 verificate alla fonte +MUSICA.md, sezione Musica inMODELLI_VIDEO.md. Creato `Video_Factory/COSTI.md` — lo strato di project management/business planning chiesto da Ettore: regole di spesa (tetto 2 €/video su clip AI, abbonamenti e account = sempre sua decisione), registro spese (luglio: €0), costo per video e proiezione mensile. Conclusione del business plan: i 500 €/mese non sono raggiungibili con questi paletti — nello scenario peggiore (30 video/mese tutti con clip AI al tetto) si arriva a ~60 €, il 12%; la decisione q008 ha eliminato l'unico costo fisso ricorrente. Il vincolo non è il denaro: sono i gate manuali e la qualità non misurata. CATPIT:a52(sottotask voiceover/musica chiuso da q008 + layer musica), prossima azione scritta sua52ea11. Delega ad Archimede tentata e bloccata dai permessi (sessions_spawnconsentito solo sumain): codice eseguito da Romeo; Archimede è però intervenuto in parallelo sugli stessi file aggiungendo il pontemusicPropsFromPlane la QA del loop. 💶 €0. Snapshot_storico_progetti/ELENCO_PROGETTI_2026-07-27_vfmusica.md. (Romeo) - 2026-07-26 (notte) — CATPIT (p15, nuovo task a53): stanza Richieste + coda dei task + stato "Bloccato su Ettore". Chiusi i tre buchi che facevano girare a vuoto i loop notturni (diagnosi del 25/07): (1) coda — nuova vista in
/tasksche mostra pronti (non fatto · non bloccato · con prossima azione scritta), bloccati su Ettore e non pronti: è da lì che i loop pescano, e a coda vuota il loop manda le domande invece di inventarsi lavoro; (2) stanza `/richieste` — storeCATPIT_vault\richieste.json+ API/api/richieste, risposta in-app con opzioni consigliate, raggruppamento per progetto, badge live in sidebar; (3) stato "Bloccato su Ettore" assegnato e tolto in automatico dall'API (risposta → il task torna "In corso" se nessun'altra richiesta lo blocca). Migrate 11 richieste reali daQUADERNO_AGENTI\PER_ETTORE_azioni.md(ora superato) più i bivi Video Factory. Build ok, suite 184/184, round-trip blocco→risposta→sblocco verificato su a10. Regola scritta inAGENTS.md. Commit556fb7e. Snapshot precedente inmateriale condiviso/_storico_progetti/ELENCO_PROGETTI_2026-07-26_richieste.md(Romeo). - 2026-07-25 (S12) — KnoBase (p05/a08): completati i 3 argomenti pilota. Create in sessione autonoma le 2 schede mancanti —
02_automazione_flussi_n8n.md(2_A_5) e01_prompt_engineering.md(2_A_3) — con ricerca web verificata (fonti: docs/blog n8n, Wikipedia, Sifted, arXiv, promptingguide.ai); Docker già esistente. README di disciplina aggiornati, catalogo libri rigenerato (430 libri / 50 schede), CATPIT a08 allineato (sottotask + prossima azione; backup.bak.20260725-a08kb, riparato anche il carattere corrotto nel workspace di a08). Pendenti: PDF (pandoc assente). Snapshot in_storico_progetti/ELENCO_PROGETTI_2026-07-25_kbpilota.md(Romeo). - 2026-07-25 (notte, 01:00) — Life OS (p02, a51) · fase B preparata: dossier risposte + guida OAuth (sessione autonoma notturna S11, Romeo): il prossimo passo dichiarato di a51 era interamente gated su Ettore (risposte DOMANDE, OAuth, tailnet, PIN) → preparato lo sblocco dei gate senza toccarli. Creati
Life_OS/RISPOSTE_PROPOSTE__domande_definizione.md(7 domande già decise di fatto dalla v1, 5 bivi veri con raccomandazione; risposta possibile con un solo "ok a tutto") eLife_OS/GUIDA_OAuth_Google_Calendar.md(ricerca su doc Google verificata: device flow non supporta lo scope Calendar → flusso Desktop/loopback con fallback copia-URL, app "In production" per evitare la scadenza token a 7 giorni, scope minimocalendar.events; percorsi attesi dal codice:app/data/google/). Porta tailnet proposta 8457 (verificata libera; la 8454 ipotizzata è di Dash Creso), locale confermata 8870. Non-regressione: smoke 38/38 rerun su 8870. Riparato in CATPIT il path corrotto di a51 intask_details.json(bug heredoc\01→\x01del 24-07) +attivita.csvprossima-azione aggiornata (backup.bak.20260725-a51gateprep). Snapshot_storico_progetti/ELENCO_PROGETTI_2026-07-25_lifeosB.md. (Romeo) - 2026-07-24 (sera, 20:00) — Piattaforma (p15, a45) · +15 smoke test copertura rotte (sessione autonoma 5h, Romeo): estesa la suite di hardening CATPIT senza toccare il runtime. Nuovi
catpit/tests/apps.test.ts(5 — rotta/api/apps, la galleria app/dashboard della Piattaforma: seed al primo accesso, CRUD, validazione 400, backup `apps.json.bak` prima di ogni riscrittura) ecatpit/tests/routes-extra.test.ts(10 — rami di validazione 400 disession-notes/artefatti/skills, esercitati solo sui percorsi che rifiutano l'input prima di qualsiasi chiamata esterna: nessun webhook colpito, nessuna skill copiata). Non-regressione verificata: baseline 139 → 154/154 verdi sufeat/catpit-mappe.CATPIT_HARDENING.mdaggiornato (rischi aperti: percorsi positivi delle rotte a forte dipendenza esterna restano su build+prova manuale; nodo branch mappe→master annotato). CATPIT a45 (note +task_details; backup.bak.20260724-a45apps). Snapshot_storico_progetti/ELENCO_PROGETTI_2026-07-24_p15apps.md. GATE 3b (refactoring) e GATE Fase 2 (D1-D7) restano in attesa di Ettore. (Romeo) - 2026-07-24 (notte, 05:00) — Sistemi & DB Aziendali (p09) · pipeline dati → Postgres attivata (sessione autonoma notturna 5h, Romeo): eseguito il Passo 0 della
GUIDA_Metabase_NocoDB.mdche era fermo — DBaziendeera vuoto e la dashboard :8765 serviva dati vuoti da settimane (container del 17-06 montava03_LAVORO_AZIENDA/Dataset, svuotata dal riordino vault). Fix agenera_csv.py(ROOT a 5 livelli + pathDataset_Vicenza_500+ interi senza.0, backup.bak.20260724), CSV rigenerati (2660 righe),aziende-loadereseguito (7 tabelle + 4 viste, conteggi esatti), dashboard ricreata dal compose in modalità Postgres e verificata (API + screenshot: KPI €48,67 mld, 46 settori). Aggiornati README loader (path) e CATPIT a20 (note, prossima azione, nuova vocetask_details; backup.bak.20260724-a20pipeline). Resta per Ettore: registrareaziendein Metabase (2 min, guida Passo 1) → poi Question/Dashboard. Snapshot_storico_progetti/ELENCO_PROGETTI_2026-07-24_p09pipeline.md. (Romeo) - 2026-07-24 (notte) — Video Factory (p11) · primo video reale con dati verificati (sessione autonoma notturna 5h, Romeo): consegnato "Amazzonia — deforestazione PRODES 2025" su archetipo MapZoom (1080×1920, 20 s, €0, render + ffprobe + verifica visiva su frame). Dati da fonte primaria INPE/PRODES (nota tecnica 2025 + conferma consolidata feb 2026): 5.796 km² ago24–lug25, −11,08% vs 2024, 4° anno di calo, picco 2021 13.038 km²; fonte citata in video. Nuovi file:
FONTI_DATI__amazzonia_prodes_2025.md,src/map-zoom-amazzonia-prodes-2025-plan.json,out/map-zoom-amazzonia-prodes-2025.mp4+thumb, sezione "Piani di produzione" inMODELLI_VIDEO.md(con 2 accorgimenti anti-overlap per i piani MapZoom). CATPIT: nuova attività a52 (p11, In corso, sottotask video1 ✅ / voiceover-musica e pubblicazione = gate Ettore) + nota a50; backup.bak.20260724-a52vfvideo. Snapshot_storico_progetti/ELENCO_PROGETTI_2026-07-24_vfvideo1.md. ⚠️ MD_DB_v1 non è git: piano/dossier/video restano su disco; commit di questa riga nel repo Agente Residente (branchfeat/catpit-mappe). (Romeo) - 2026-07-23 — Miniprogetti (a39, p01) · riallineamento + nuova guida "Resina colorata" (Romeo, su richiesta Ettore in #miniprogetti). (1) Candele di cera di soia — costruita dal loop delle 09:03 ma non riallineata: portata a 🟢 chiusa in README indice, ELENCO e CATPIT (sottotask s11 spuntato). (2) Nuova guida "Resina epossidica colorata — decorare" costruita end-to-end:
Miniprogetti_e_guide/Resina_colorata_decorazioni/(.md+ diagramma SVGn01_scala_colore_tecniche+CREDITI.md+ PDF 218 KB viabuild_guida.mjs). Distinta dalla guida base (uso generale) e da "Vernici/occhiali": coloranti (pigmenti/mica/tint/alcohol ink), regola della dose ~5–6% in peso, 7 tecniche (petri, geode, onda, river, inclusioni, colata a strati, gioielli), fisica delle celle, sigillatura del poroso, finitura, difetti del colore, progetto guidato "sottobicchieri geode". CATPIT a39: nota → 10 guide completate, sottotask s11+s12 spuntati, prossima_azione aggiornata; backup.bak.20260723-resinacolorata. ⚠️ MD_DB_v1 non è git (le guide restano su disco); il commit di questa riga è nel repo Agente Residente. In coda: proposta "alza il tiro" (upgrade miniprogetti a progetti a fasi). (Romeo) - 2026-07-23 (mattina) — Life OS (a51, p02) · Fase D · Check: smoke test end-to-end 38/38 verde (sessione autonoma 5h, T2, Romeo). La v1 (10 stanze,
life_os.pyporta 8860, costruita 20-07) era collaudata solo a mano: aggiuntotests/smoke_life_os.py(solo stdlib) che avvia il server reale su porta effimera con data-dir e `progetti.csv` finti (nessun dato reale toccato) ed esercita ogni rotta:GET /HTML,/api/bootstrap,/api/progetti(CATPIT read-only: esclude archiviati + ordina), CRUD sulle 8 collezioni, upsert-update conservativo, conferma evento (Google onesto:ok=False+motivo, non finge), delete, 404 su rotta/collezione ignota, backup.bak. Zero modifiche al runtime. CATPIT: nuova attività a51 (p02) In corso +task_details; backup.bak.20260723-a51lifeos. Snapshot_storico_progetti/ELENCO_PROGETTI_2026-07-23_lifeos.md. ⚠️ MD_DB_v1 non è git: app+test restano su disco (non versionati lì); il commit di questa riga è nel repo Agente Residente (branchfeat/catpit-mappe). Gate Ettore invariati: DOMANDE_definizione, OAuth, tailnet, PIN. (Romeo) - 2026-07-23 (notte→mattina) — App Organizza Viaggi (a48, p02) · Potenziamento v2 Fase C+D mergiato su main (T3 "vai avanti e dormi", build Archimede su fable-5, verifica Romeo): 9 commit atomici (uno per voce, con test verdi — modalità anti-timeout) fusi in
maincon merge56e38a1(--no-ff). Voci: vista stampa/PDF (/stampa/<id>) + export HTML statico autocontenuto, backup/restore ZIP (whitelist+cap 20/5MB,.bakpreservati), undo eliminazioni (toast Annulla 6s), guard concorrenza 409 (tokenmodificatoa ms), tab bar wrap (10 sezioni sempre visibili anche mobile), filtro viaggi live, igiene (SRI su Leaflet, categorie unificate server-side, versioning Storia), cambio valuta manuale (totale sempre in €). Meteo Open-Meteo solo predisposto e SPENTO (METEO_ATTIVO=False,/api/meteo→503; attende OK Ettore); fuori perimetro cambio valuta automatico e condivisione via rete. Verifica Romeo (indipendente): suitetest_app.py64/64 rieseguita, merge56e38a1sumain, working tree pulito, app HTTP 200 su :8810; verifica adversariale SA-3 33/33 (XSS stampa, zip malevoli→400, 409, valuta). CATPIT a48 → Fatto (note +task_details); backup.bak.20260723-a48viaggiv2; snapshot_storico_progetti/ELENCO_PROGETTI_2026-07-23_viaggiv2.md. ⚠️ Aperti: autostart app da irrobustire (era spenta il 23-07 mattina, riavviata da Archimede); attivazione meteo su OK Ettore. - 2026-07-23 (notte) — Piattaforma (p15, a45) · smoke test rotte API CATPIT (sessione autonoma notturna S02, Romeo): chiuso il rischio aperto di
CATPIT_HARDENING.md— nuovocatpit/tests/routes.test.tscon 13 smoke test HTTP sulle rotte vault-backed (/api/projects,/api/tasks,/api/subtasks,/api/agents/status; handler invocati conNextRequestsu vault temporaneo). Verificata anche la non-regressione post-lavori mappe: suite totale 89/89 verdi sufeat/catpit-mappe. Nessun tocco al codice runtime. CATPIT a45 aggiornato (note +task_details); backup.bak.20260723-a45smoke. GATE 3b (refactoring) e GATE Fase 2 (D1-D7) restano in attesa di Ettore. - 2026-07-22 (sera) — Cassaforte Chiavi (a49, p03) · valutazione avvio headless completata (sessione autonoma notturna S01, Romeo): documento decisionale
Cassaforte_Chiavi/docs/VALUTAZIONE_AVVIO_HEADLESS.mdcon stato verificato (app attiva :8811/:8445, avvio via Startup, auto-logon assente, ultimo boot 21-07) e 4 opzioni confrontate. Trovato che il buco è di flotta: 12 app in Startup restano giù dopo un riavvio non presidiato. Raccomandata B (auto-logon Sysinternals, condizionato a BitLocker attivo — da verificare con admin); ripiego C (task ONSTART per le sole app critiche). Nessuna modifica di sistema eseguita: attende scelta di Ettore. CATPIT a49 aggiornato (prossima_azione + note +task_details); backup.bak.20260722-a49. - 2026-07-22 — Video Factory · libreria template Remotion consegnata (Canale Ambientale): 5 archetipi render 1080×1920 verificati ffprobe (EnvShort, DataLowerThird, SplitCompare, KineticStatCard, MapZoom) + font unico Archivo (
@remotion/google-fonts) + mappa public domain NASA Blue Marble inpublic/. Costo €0. Fonte-verità: CATPIT nuovo task a50 (p11, stato Fatto, 7 sottotask spuntati) +task_details; backup.bak.20260722-vftemplates. ELENCO: sezione Video Factory ampliata. Build da sessione dedicata fable-5; verifica su disco + riallineamento (Romeo). Aperto: piani demo con dati segnaposto (es. MapZoom Amazzonia) da sostituire con fonti reali prima dei video di produzione. - 2026-07-21 — Riconciliazione tracciamento guide (il loop autonomo costruiva senza allineare la fonte-verità): 8 guide su disco confermate reali; marcate chiuse in CATPIT
a39(sottotask s3 Bonsai, s4 Sciroppi + aggiunti s6 Vernici, s7 Resina, s8 Pane, s9 Fermentati; +s10 Cannabis CBD, s11 Candele come da-fare) e in ELENCO (Bonsai/Sciroppi/Pane/Fermentati → chiuse, aggiunta Resina). Aggiornata la voce "Cron di sviluppo" (ora ATTIVO, da irrobustire sull'auto-allineamento). Backup.bak.20260721-reconcile; snapshot in_storico_progetti/ELENCO_PROGETTI_2026-07-21.md(Romeo). - 2026-07-20 — Guida "Erbe e piante domestiche" → v1.1: aggiunta la scheda "Monstera in acqua / semi-idro" (perché in bottiglia la Monstera sopravvive ma non cresce: nutrienti a 1/4, ossigeno/cambio acqua, LECA, o passaggio a terra) + voce in "Problemi comuni";
versione/aggiornatobumpati, PDF rigenerato conbuild_guida.mjs. Fonte-verità: CATPITa39sottotask s2 annotato; snapshot ELENCO in_storico_progetti/ELENCO_PROGETTI_2026-07-20.md(Romeo). - 2026-07-18 — Allineamento fonte-verità dei deliverable recenti (richiesto da Ettore + regola resa permanente in memoria): CATPIT aggiornato —
a12/a13(Pianificatore Pasti) → In corso (consegnato da Archimede, branch da mergiare); aggiunti a48 App Organizza Viaggi v2 (p02) e a49 Cassaforte Chiavi (p03) con relativitask_details; backup.bak.20260718-align. ELENCO: Organizza Viaggi → consegnata e live (v2, motore Esplora), aggiunta Cassaforte Chiavi, aggiornato Pianificatore Pasti. ⚠️ Aperto: classificazione delle mini-app (miniprogetto vs Life OS/infrastruttura) da confermare con Ettore. Snapshot in_storico_progetti/ELENCO_PROGETTI_2026-07-18.md(Romeo). - 2026-06-29 — file reso fonte di verità ufficiale: nome stabilizzato in
ELENCO_PROGETTI.md; snapshot della versione precedente in_storico_progetti/ELENCO_PROGETTI_2026-06-27.md; cartella messa sotto git; consolidate le copie sparse. - 2026-06-29 — aggiunto progetto `01_SISTEMA_PERSONALE · Miniprogetti e guide` (guide fai-da-te/how-to; pilota = Sapone). Creato spazio
MD_DB_v1/01_SISTEMA_PERSONALE_homelab/Miniprogetti_e_guide/e canale Discord #miniprogetti. Cron di sviluppo solo documentato (non attivo). Snapshot precedente in_storico_progetti/ELENCO_PROGETTI_2026-06-29.md. - 2026-07-02 — avvio assetto multi-agente: create le cartelle di lavoro
Agente_1_Romeo/,Agente_2_Archimede/(office: codice, repo, CATPIT, UI, security) eAgente_3_Creso/(investimenti; rinomina diAgente_Investimenti/, riferimenti aggiornati anche inCATPIT_vault/docs_index.json). Ruolo del file aggiornato: sintesi narrativa, fonte di verità = dati CATPIT. Snapshot precedente in_storico_progetti/ELENCO_PROGETTI_2026-07-02.md. - 2026-07-02 (sera): riordino cartella radice - design investimenti in Agente_3_Creso/05_contesto_progetto, sessione 27/06 in Chat/, script pixel in KB_Sprite/scripts/, test-repos in Archivio/ (Romeo).
- 2026-07-04 — aggiunto progetto `01_STRUMENTI_di_LAVORO · Script X Web` (suite di script + app locale per estrarre contenuti dal web → PDF; onepiecepower/dandadan; filtro pubblicità). Creato su Airtable (record
recWmfFF7i6b5HWs8, tabella Progetti). Spazio:MD_DB_v1/01_STRUMENTI_di_LAVORO/Estrattori app py/. - 2026-07-13 (8) — Riordino cartelle radice → `materiale condiviso/` (riordino voluto da Ettore, prima non committato): 7 cartelle condivise (
Chat/,KB_Sprite/+SPRITE.md,KB_Fix_Tecnici/,Piattaforma_Dashboard/,Sviluppo_Sistema_Agentico/,_storico_progetti/,progetti_collab_martino/) spostate inmateriale condiviso/;Security_Checks/spostata inAgente_2_Archimede/. Ricollegati tutti i riferimenti vivi:CATPIT_vault/task_details.json(a42/a43/a44),agent_schedules.json(KB_Sprite),docs_index.json(rigenerato), codice app (catpit/lib/security.ts,agenda/page.tsx),00_MAPPA_CARTELLE.md, i README/indici degli agenti,.gitignoree i pointerSpazio:di p14/p15. Cronbartolomeo-security-checkgià allineato (Romeo). - 2026-07-14 — Organizza Viaggi (nuova app): Romeo ha progettato (brief + prompt in
01_STRUMENTI_di_LAVORO/Organizza_Viaggi/, cartelle create) e delegato il build ad Archimede su fable 5 (sessioneagent:archimede:mainpinnata suclaude-fable-5; task consegnato via sessions_send). Build in corso. Al riallineo fonti a consegna pensa Romeo (Romeo). - 2026-07-13 (7) — Video Downloader avvio automatico:
schtasksdava "Accesso negato" (serve elevazione) → usata la via senza admin, cartella Startup dell'utente conVideoDownloader.vbs(lancio nascosto viapythonw --no-browser). Parte a ogni login, indipendente dalla sessione agente; iltailscale serve :8443è già persistente. Disattivare = eliminare il.vbs. Testato (avvia l'app, HTTP 200) (Romeo). - 2026-07-13 (6) — Video Downloader fix compatibilità iPhone: i reel Instagram arrivavano in VP9 (iOS non lo decodifica → nero + solo audio). Aggiunto: preferenza H.264 nella selezione (
-S vcodec:h264) + step automatico che riconverte in H.264/AAC solo se il video non è già h264 (_ensure_h264, ffmpeg; salta gli audio-only). Corretto anche un bug ffprobe (formanp=1rifiutata da ffprobe 8.1 → usarenoprint_wrappers=1:nokey=1). I 2 file VP9 già scaricati riconvertiti in h264. Testato (Romeo). - 2026-07-13 (5) — Video Downloader: esposto sul tailnet via
tailscale serve --https=8443→https://mini-it12.tailc565d5.ts.net:8443; aggiunta funzione "Salva sul dispositivo" (endpoint/api/filecon Content-Disposition + guard anti-traversal suVideo_scaricati/) per scaricare il file anche su telefono/dispositivi esterni via Tailscale. Testato end-to-end. ⚠️ Persistenza: il processo lanciato dalla sessione agente non sopravvive al turno/riavvio → serve un auto-start (Scheduled Task) da valutare (Romeo). - 2026-07-13 (4) — Video Downloader (app) costruito e funzionante: dashboard locale in
01_STRUMENTI_di_LAVORO/Video_Downloader/(video_dl_app.py, stdlib, zero pip). Motoreyt-dlp.exeself-contained (v2026.07.04) +ffmpegdi sistema. URL → analizza → formato (MP4/1080p/720p/MP3) → download con barra; output inVideo_scaricati/. Uso = copia privata. Testato end-to-end (probe + download+merge di un video di prova, poi rimosso). YouTube pieno, Instagram best-effort. Launcher.bat+COME_USARLO.md(Romeo). - 2026-07-13 (3) — Vernici epossidiche avviata e chiusa in giornata (metodo PDCA): guida pilota decorare gli occhiali da vista con resina epossidica. Creato spazio
Miniprogetti_e_guide/Vernici_epossidiche/(.md+img/con diagramma SVG + 3 foto CC +CREDITI.md+ PDF impaginato viabuild_guida.mjs). Scope: montature, piccoli oggetti, 2 resine Amazon. Prossimo in coda: app Video downloader (uso = copia privata) (Romeo). - 2026-07-13 (2) — Miniprogetti: aggiunti in backlog 6 nuovi item — guide Vernici epossidiche, Cannabis CBD coltivazione, Pane e lievito madre, Fermentati, Candele di cera di soia; app Video downloader YouTube/Instagram (motore tipo yt-dlp; da inquadrare ToS+copyright). Registrazione formale in CATPIT alla partenza di ciascuno (fase A). Aggiornato
README.mddello spazio (Romeo). - 2026-07-13 — Miniprogetti: riallineate le fonti alla realtà. Sapone ed Erbe e piante domestiche segnate 🟢 chiuse (guide pilota completate: testo + immagini + PDF impaginato); restano da avviare Bonsai e Sciroppi estivi. Aggiornati indice
README.mddello spazio e questa scheda. Snapshot inmateriale condiviso/_storico_progetti/ELENCO_PROGETTI_2026-07-13.md(Romeo). - 2026-07-09 — Manga Downloader promosso ad app con cartella propria: spostato da
estrattore-immagini-pdf/(svuotato + puntatore, backup.zip) a01_STRUMENTI_di_LAVORO/Manga_Downloader/. Cablato il dataset MD localeLISTA_MANGA_completa.mdcome fonte del catalogo indashboard_app.py(get_catalog()legge i 2014 titoli offline; scraping live come fallback). Verificato end-to-end (/api/catalog→ 2014). Snapshot precedente in_storico_progetti/ELENCO_PROGETTI_2026-07-09.md(Romeo). - 2026-07-09 — riallineamento CATPIT dai dati reali: aggiunto progetto `p15` Piattaforma / Shell condivisa (Life OS) (task a43-a45) con sezione narrativa; aggiunta la sezione Rapology (p14), prima assente nell'ELENCO; aggiornato il task a42 allo stato reale (pipeline MVP + workflow live inattivi + redirect di Ettore su automazioni utili) con relativo
task_details; corretta la label di Archimede inagents_status.json(era "test cron one-shot a28");aggiornato:portato a 2026-07-09. Backup.bak.20260709-*dei CSV/JSON toccati. (Romeo)