Riferimenti
--:--:--
08

Riferimenti

I documenti di riferimento del sistema. Sola lettura, letti live dal disco. Si parte dal Metodo di lavoro.

Criterio dell'elenco: i documenti stanno in gruppi per mestiere, non in ordine di nome né di data. I gruppi nascono chiusi e dicono quanti documenti contengono; quello del documento che stai leggendo si apre da solo, e come li lasci li ritrovi. Dentro un gruppo l'ordine è quello in cui uno nuovo deve aprirli, e non è alfabetico.

Elenco progetti (sintesi)

file confermato fino a Progetti_Lavoro (non confermati del tutto)agg. 2026-08-28Agente Residente openclaw/ELENCO_PROGETTI.md

ELENCO 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 in
materiale 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
  1. 00_CONTESTO
  2. 01_SISTEMA_PERSONALE
  3. 01_STRUMENTI_di_LAVORO
  4. 02_CONOSCENZA · Nota operativa — Metodo OpenClaw (preludio ai Progetti di Lavoro)
  5. 03_PROGETTI_di_LAVORO
  6. Bisogni trasversali
  7. 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 in Censimento_HD\out\). 1.600 GB censiti su cinque categorie. Da decidere: promuovere i _v2 dentro DATASETs/ (sostituiscono DS_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-v1 da 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/ (ex Agente_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 in README.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 in img/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: systemEvent su sessionTarget=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: coltivazioneda 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; merge 56e38a1). 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 mappa TRAVEL_APP_ANTH_KEYANTHROPIC_API_KEY; modello default claude-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. Motore yt-dlp.exe self-contained + ffmpeg di 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 caricano keys.env nell'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 minimo calendar.events); porta tailnet proposta 8457 (la :8454 ipotizzata è 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 minimo calendar.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 credenziali verifica risponde "connettore non configurato" invece di fingere. Corretto un errore della guida: con lo scope calendar.events non 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 in task_details). ⏸️ Gate Ettore: mettere credentials.json (client OAuth "App desktop") in Life_OS/app/data/google/ (cartella già creata) → python app/google_calendar.py autorizzaverifica → 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 1CATALOGO.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 2SHELL_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 3CATPIT_HARDENING.md: test suite CATPIT 154/154 verdi (mergiata sul branch attivo; 23-07 +13 smoke HTTP rotte API; 24-07 +15: /api/apps CRUD+seed+.bak e validazione di session-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: il task_id citato veniva aggiunto a blocca anche passando blocca:[]) è 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.json reale non toccato (l'agente ha lavorato su un vault temporaneo, verificato da Romeo). Aggiornata la guida COME_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 con blocca vuoto — 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 4HORIZON_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 in n8n/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 in Estrattori 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 con Avvia_Manga_Downloader.bat. Dal 09-07-2026 il catalogo (2014 titoli) è letto dal dataset MD locale LISTA_MANGA_completa.md (offline, istantaneo; scraping live solo come fallback).
  • Guida COME_USARLO.md; prompt riutilizzabili per creare app simili in Estrattori app py/PROMPT_creare_app_estrattore.md (+ variante libri da fonti legali in estrattore-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. Container study-system su 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 in MD_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-loaderPostgres `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.py puntava alla cartella pre-riordino 03_LAVORO_AZIENDA (vuota) e scriveva gli interi come 1.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 dichiara geografia. 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,9decimali: 0 fisso dentro un Math.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.9 e diceva il vero, perché guarda il pack; il piano dichiarava decimals: 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/scale in altezza), e se il riquadro esce da [0,1] si vede il fondo — due divisioni. Ora inquadraturaDentroLaMappa() 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 servirebbe scale ≥ 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 ieri scrivi_piano.mjs sapeva 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: --spiega mostra 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 dichiara geografia con 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, e test_anello3.mjs monta ogni pack in tutte le grammatiche che regge, non solo in quella scelta). (1) G8/G9 ciechi sulle barre: cercavano l'etichetta in label, ma le barre hanno name — ed è name che 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() con decimali: 0 fisso, 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 col periodo dei 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 dichiara geografia. 💶 €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: stripHtml la 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). Nuovo automazione/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 scrive 5.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 campo fonte_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 un value numerico, 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 di broll[].gradient. Identico al difetto di G12 del 04-08: giusta nel caso in cui è nata, falsa altrove. test_g13.mjs 18/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 templateq059. 🎵 Musica misurata in un render vero, non sul file: inspired e porch-swing-days-faster montate su un piano reale e misurate con volumedetectmusicVolume 0.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 in public/map-world.jpg. Catalogo d'uso + forma dei piani JSON in MODELLI_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&ntilde;o strengthened over the past month", "was +1.2&deg;C", e una caption troncata a "increased [Fig". (1) Entità HTML nominate. stripHtml ne decodificava cinque (nbsp amp lt gt quot) più quelle numeriche: Copernicus serve UTF-8 vero, NOAA serve &ntilde; e &deg;, 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 con decodeEntita() a una passata sola (la catena di .replace() fa doppia decodifica: &amp;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.mjs aveva un proprio decodeEntita con tabella più piccola e una propria lettura di cache: dopo la correzione l'estrattore proponeva ancora citazioni con dentro &deg; 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 con frasiDelTesto(). Corretto anche produci.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 in MD_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 in dossier_fonti/, con un puntatore montaggio_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 solo public/ e out/ (~125 MB di media ri-ottenibili). (2) q025 (inglese) aveva due conseguenze tecniche che non si vedevano. La cifra cambia con la lingua: 10.9 all'italiana è 10,9, e la regola di formattazione stava in theme.ts e in una seconda copia dentro `produci.mjs` — quella con cui G8 decide cosa crede che lo spettatore veda. Due copie della stessa regola sono la falla del claim-pack rientrata dalla finestra: ora la regola è 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 senza lang renderizza 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 (vietare arctic da 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 a remotion 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, mai OK). 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 in src/*.tsx (source di KineticStatCard, decimals/prefix dei counter, panels esattamente 2, focus x/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 al dato_valore in 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, gli src che non sono URL vengono azzerati (niente path inventati), audioSrc/musicSrc forzati a null (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.json esteso (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 lascia nullverifica_claim.mjs OK su tutti e sette i gate pre-render (G8/G9 dipendono dal piano di montaggio = anello 2). L'estrattore ripassa G1/G2/G5 a monte come pre-filtro, 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.mjs toccato solo per esportare norm/stripHtml/SOGLIA_FRESCHEZZA_GG (l'estrattore le importa invece di copiarle: due normalizzazioni che divergono sono un modo silenzioso di verificare una cosa e montarne un'altra) — nessuna logica di gate cambiata, 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 formati rss/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). Dossier FONTI_DATI__oceano_giugno_2026.md + piano src/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 aggiunto broll[].gradient al 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: DataLowerThird faceva Math.round() sul contatore → 20,86 °C sarebbe finito a schermo come 21 °C, un dato falso; è lo stesso difetto corretto su KineticStatCard il 28-07 e mai propagato (aggiunti decimals/prefix). 🎵 Misurate le ultime due tracce musicali: healing parte 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 + piano src/map-zoom-amazzonia-prodes-2025-plan.json + out/map-zoom-amazzonia-prodes-2025.mp4 + thumb; catalogo aggiornato (sezione "Piani di produzione" in MODELLI_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); aggiunti audioSrc: null + musicSrc: deep-haze e 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). Dossier FONTI_DATI__giugno_2026_europa_record.md + piano src/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.06 col punto; 13.038 accanto a 5796 nello stesso grafico) → formatIt() unica in src/theme.ts, usata da Graphic, MapZoom e DataLowerThird; (2) KineticStatCard non sapeva stampare la fonte → campo source + stat.decimals/stat.prefix (senza, +3,06 sarebbe stato arrotondato a 3,1); (3) clipA/clipD avevano le bande nere incorporate (contenuto 560 px su 720) e a tutto schermo comparivano come barre → ritagliate, originali in public/_originali/; (4) il video 1 era muto (sopra). Scoperta riusabile sulla musica: impact-lento e long-note-two partono 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 a MUSICA.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.tsx condiviso 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: SplitCompare dichiarava audioSrc/musicSrc ma non renderizzava alcun `<Audio>` (ogni piano con musica usciva muto) e KineticStatCard ignorava musicSrc. Libreria public/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 in MUSICA.md). 💶 €0. Verifiche: typecheck pulito, demo rese su 2 archetipi (out/demo-musica-*.mp4), inviluppo misurato con volumedetect (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: --props fa merge superficiale sui defaultProps → per spegnere la voce serve "audioSrc": null esplicito, 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.md in community_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:

  1. Homelab: configurare audiolibri e le gallerie percorsi (moto/natura + dove dormire).
  2. Allineamento Airtable: su Airtable non esiste il progetto Jarvis; valutare se crearlo.
  3. Progetti di Lavoro: la sezione 5 e seguenti sono ancora da confermare nel dettaglio.


Changelog

  • 2026-08-25Conoscenza, 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 s06 Conoscenza/KnoBase, s07 WEGreen, s08 Università in sottoprogetti.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-studysystem in CATPIT_vault\_backup\; script della migrazione in CATPIT_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, commit 84f7eab. (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 skill catpit-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 (cercavano label, il template stampa name: 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 con test_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 dichiara geografia. 💶 €0 (agosto: 0 su 500). Allineati CATPIT (a55, backup attivita.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; nuovo testo_pdf.mjs, zlib di Node, nessuna dipendenza, fail-closed) e leggere i numeri di una fonte non inglese (il 5.796 portoghese valeva 5,796; nuovo campo fonte_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). 🎵 musicVolume di inspired e porch-swing misurati 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, backup attivita.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, una NameSpace per 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 -Path tratta le parentesi quadre come wildcard, e la cartella Harry Potter … [MP3] risultava vuota senza dare errore — lo script usava già -LiteralPath ovunque, ma la diagnosi è annotata nella scheda perché è il tipo di errore che non si vede nei risultati. Segnalato anche che Fiabe Audio è mista: 7 PDF (fra cui un Fromm da 118 MB, quasi metà della categoria in peso) e 2 .rar mai 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 riscrivono LastWriteTime e 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 fra Video_Iphone_2024 e 2025) 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/.bmp e 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.csv che 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 scheda CENSIMENTO_HD.md in MD_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 prefisso animaz_), `IMGs_Tattoo` che non è una cartella di immagini (352 immagini contro 1.041 .js.download di 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 _v2 vivono accanto ai vecchi e la promozione in DATASETs/ 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 campo stat: legge cards[] — quindi ogni piano veniva bocciato per “manca stat”, 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 da panels (che porta solo immagini ed etichette) ma da compare.bars[]: falso negativo, un piano senza compare passava e a schermo restavano le barre di esempio 10 / 4. E poiche’ cards e compare non erano 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 in src/*.tsx e il defaultProps di ogni Composition in Root.tsx — e cade se un sesto archetipo entra in Root.tsx senza essere registrato. Inoltre produci.mjs non era importabile (partiva il render al solo import), 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 con feel); 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.md ricostruito con intestazione e consuntivo, era rimasto una riga sola). Allineati CATPIT (a55: corretta anche la colonna priorita, che conteneva il testo della prossima azione) e F3__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 un includes sul testo normalizzato, e norm() cancella i segni insieme alla punteggiatura. Provato su pagine reali già in fonti_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é dopo norm() 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 (dichiarare 1.2 ciò che la fonte scrive +1.2 resta 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 EnvShort passando un piano che dichiara i numeri in lowerThirds, 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 di sample-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 per audioSrc, 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 a cerca_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 con DataLowerThird (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: extentarea (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.mjs ora conserva una sezione 4 già compilata invece di sovrascriverla. Verificato: 17/17, test_contatore verde, tsc pulito, video 3 e 4 approvati non toccati da nessuna regola nuova, estrattore riprovato dal vivo. 💶 €0 (agosto: 0 su 500). Allineati CATPIT (a55, backup attivita.csv.bak) e F3__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) stripHtml decodificava cinque entità HTML: Copernicus serve UTF-8 vero, NOAA serve &ntilde;/&deg;, 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.mjs aveva 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 vereun 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 mostra 1.2 °C mentre 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_contatore verde, tsc pulito, fotogrammi guardati a vista. 💶 €0 (agosto: 0 su 500). Allineati CATPIT (a55, backup attivita.csv.bak) e COSTI.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 in src/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 (il 0,01 del 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, tsc pulito, 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, backup attivita.csv.bak), doc F3__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.910,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 in src/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, doc F3__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.json nella cartella già creata. (a54, p15) L'API delle Richieste ora rispetta blocca:[] 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.json reale 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), verbatim 10.9 ritrovato nelle pagine scaricate in fonti_cache/, cartelle dati reali intatte. 💶 €0 su tutti e tre. Allineati CATPIT (a51/a54/a55: stato, prossima azione, note; backup attivita.csv.bak) e questo ELENCO; snapshot _storico_progetti/ELENCO_PROGETTI_2026-07-30.md. Aperte 4 decisioni sull'anello 1 (allowlist ec.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/musicSrc a null — 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; backup attivita.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 in montaggio_remotion/automazione/, con produci.mjs davanti a remotion 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.md portato 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 in materiali/_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 di DataLowerThird arrotondava all'intero (20,86 → 21), lo stesso difetto già corretto su KineticStatCard e 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 in theme.ts; KineticStatCard non stampava la fonte → campo source (+ decimals/prefix per le anomalie); clipA/clipD con 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" in MUSICA.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.tsx condiviso validato, override musicVolume/musicFadeIn/musicFadeOut da piano, 5/5 verifichetsc 0 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 in MODELLI_VIDEO.md (con ⚠️ merge props) + nota volume nel README. 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 superficiale inputPropsdefaultProps di Remotion v4 faceva ereditare voice.mp3 ai render di test → falsi "bug"; --props non è 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 di a52 in attivita.csv aggiornata (musica consegnata; restano Video 2 + pubblicazione), ELENCO rifinito (stato a52 = Bloccato su Ettore, attribuzione esecutore). Note: out/ già ripulito dai render di test fuorvianti; i nomi _qa-music-*.mp4 del report non sono su disco (evidenza nei demo-musica-*.mp4 + _qa-map-zoom-amazzonia-regression.mp4). Backup attivita.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.tsx condiviso dai 5 archetipi (volume 0,75, fade 1,2/1,5 s, loop automatico), 2 bug corretti (SplitCompare non suonava affatto, KineticStatCard ignorava musicSrc), libreria public/music/ con 6 tracce CC BY 4.0 verificate alla fonte + MUSICA.md, sezione Musica in MODELLI_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 su a52 e a11. Delega ad Archimede tentata e bloccata dai permessi (sessions_spawn consentito solo su main): codice eseguito da Romeo; Archimede è però intervenuto in parallelo sugli stessi file aggiungendo il ponte musicPropsFromPlan e 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 /tasks che 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` — store CATPIT_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 da QUADERNO_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 in AGENTS.md. Commit 556fb7e. Snapshot precedente in materiale 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) e 01_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") e Life_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 minimo calendar.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 in task_details.json (bug heredoc \01\x01 del 24-07) + attivita.csv prossima-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) e catpit/tests/routes-extra.test.ts (10 — rami di validazione 400 di session-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 su feat/catpit-mappe. CATPIT_HARDENING.md aggiornato (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.md che era fermo — DB aziende era vuoto e la dashboard :8765 serviva dati vuoti da settimane (container del 17-06 montava 03_LAVORO_AZIENDA/Dataset, svuotata dal riordino vault). Fix a genera_csv.py (ROOT a 5 livelli + path Dataset_Vicenza_500 + interi senza .0, backup .bak.20260724), CSV rigenerati (2660 righe), aziende-loader eseguito (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 voce task_details; backup .bak.20260724-a20pipeline). Resta per Ettore: registrare aziende in 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" in MODELLI_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 (branch feat/catpit-mappe). (Romeo)
  • 2026-07-23Miniprogetti (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 SVG n01_scala_colore_tecniche + CREDITI.md + PDF 218 KB via build_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.py porta 8860, costruita 20-07) era collaudata solo a mano: aggiunto tests/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 (branch feat/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 main con merge 56e38a1 (--no-ff). Voci: vista stampa/PDF (/stampa/<id>) + export HTML statico autocontenuto, backup/restore ZIP (whitelist+cap 20/5MB, .bak preservati), undo eliminazioni (toast Annulla 6s), guard concorrenza 409 (token modificato a 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): suite test_app.py 64/64 rieseguita, merge 56e38a1 su main, 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 — nuovo catpit/tests/routes.test.ts con 13 smoke test HTTP sulle rotte vault-backed (/api/projects, /api/tasks, /api/subtasks, /api/agents/status; handler invocati con NextRequest su vault temporaneo). Verificata anche la non-regressione post-lavori mappe: suite totale 89/89 verdi su feat/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.md con 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-22Video 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 in public/. 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-21Riconciliazione 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-20Guida "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/aggiornato bumpati, PDF rigenerato con build_guida.mjs. Fonte-verità: CATPIT a39 sottotask s2 annotato; snapshot ELENCO in _storico_progetti/ELENCO_PROGETTI_2026-07-20.md (Romeo).
  • 2026-07-18Allineamento 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 relativi task_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) e Agente_3_Creso/ (investimenti; rinomina di Agente_Investimenti/, riferimenti aggiornati anche in CATPIT_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 in materiale condiviso/; Security_Checks/ spostata in Agente_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, .gitignore e i pointer Spazio: di p14/p15. Cron bartolomeo-security-check già allineato (Romeo).
  • 2026-07-14Organizza 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 (sessione agent:archimede:main pinnata su claude-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: schtasks dava "Accesso negato" (serve elevazione) → usata la via senza admin, cartella Startup dell'utente con VideoDownloader.vbs (lancio nascosto via pythonw --no-browser). Parte a ogni login, indipendente dalla sessione agente; il tailscale 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 (forma np=1 rifiutata da ffprobe 8.1 → usare noprint_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=8443https://mini-it12.tailc565d5.ts.net:8443; aggiunta funzione "Salva sul dispositivo" (endpoint /api/file con Content-Disposition + guard anti-traversal su Video_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). Motore yt-dlp.exe self-contained (v2026.07.04) + ffmpeg di sistema. URL → analizza → formato (MP4/1080p/720p/MP3) → download con barra; output in Video_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 via build_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.md dello spazio (Romeo).
  • 2026-07-13Miniprogetti: 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.md dello spazio e questa scheda. Snapshot in materiale condiviso/_storico_progetti/ELENCO_PROGETTI_2026-07-13.md (Romeo).
  • 2026-07-09Manga Downloader promosso ad app con cartella propria: spostato da estrattore-immagini-pdf/ (svuotato + puntatore, backup .zip) a 01_STRUMENTI_di_LAVORO/Manga_Downloader/. Cablato il dataset MD locale LISTA_MANGA_completa.md come fonte del catalogo in dashboard_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-09riallineamento 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 in agents_status.json (era "test cron one-shot a28"); aggiornato: portato a 2026-07-09. Backup .bak.20260709-* dei CSV/JSON toccati. (Romeo)
LIVE
nessun agente al lavoro · ultima attività 14 min fa26 task in corso su 16918 progetti monitoratiHomelab · Censire HD e creare gallerie dei contenutiHomelab · RAG + NotebookLM locale per documenti voluminosiKB · Costruzione KB (template + 3 argomenti pilota)KB · Obsidian: setup e usoVita · Automazione piano pasti (dispensa→ricette→spesa→piano)Vita · Lista ingredienti collegata a ricette + preferite78 sessioni registratenessun agente al lavoro · ultima attività 14 min fa26 task in corso su 16918 progetti monitoratiHomelab · Censire HD e creare gallerie dei contenutiHomelab · RAG + NotebookLM locale per documenti voluminosiKB · Costruzione KB (template + 3 argomenti pilota)KB · Obsidian: setup e usoVita · Automazione piano pasti (dispensa→ricette→spesa→piano)Vita · Lista ingredienti collegata a ricette + preferite78 sessioni registrate