# MEMORY — Adrian Stato operativo — thread aperti, sistema corrente, pattern riconosciuti. Letto SEMPRE a inizio sessione (passo esplicito in `CLAUDE.md`), aggiornato a fine sessione. Tenuto volutamente corto — lo storico vive in [archivio/Adrian/adrian_state_storico.md](../archivio/Adrian/adrian_state_storico.md), l'indice completo dell'archivio in [archivio/_i_archivio.md](../archivio/_i_archivio.md). *Questo file è letto sempre, non su rilevanza — per questo va tenuto corto (limite ~24KB). Una riga per entry, dettaglio nei file di topic linkati. Se una sezione smette di essere "corrente", va spostata nello storico, non lasciata invecchiare qui.* ## Stato operativo corrente (servizi attivi, home Linux) - **Conoscenza tecnica dettagliata su servizi/infrastruttura Nave vive in `gemello-nave` (11/09/2026)** — tutti i servizi meccanici Nave-esclusivi ormai fisicamente dentro `gemello-nave/` (`gate-watch`, `inbox-watch`, `madre-watch`, `flotta-diagnostics`, `config-backups`, `gmail-check`, `monitor-consumo-istanze`, script backup/rete, `secrets/`) più `expert-domotica` — **consultare `gemello-nave` (`SendMessage`) prima di rispondere su questo dominio**, non ricostruire da fonti proprie. Riferimento diretto: `gemello-nave/archivio/conoscenza-nave.md`. Stessa regola già ferma per gli esperti, estesa qui — vedi `archivio/Adrian/feedback/feedback_consultare_esperto_prima_di_rispondere.md`. - Comunicazione Mauro↔Adrian: solo Claude app (`/remote_control`, ponte verso questa sessione VSCode) — Telegram/cockpit smantellati (confermato 06/08/2026) - **`gemello-ufficio` non è MAI verificabile via `ListAgents`/`SendMessage` (dal 07/09, secondo account)** — solo mailbox (`scripts/slave-mailbox/mailbox.log`/`mailbox_to_gemello_ufficio.log`, `Monitor` armato a inizio sessione). Non un check istantaneo come per gli altri peer. Errore ricorrente da non ripetere: [[feedback_gemello_ufficio_no_listagents]]. - **`gemello-nave` (11/09/2026, `--bg` sempre viva dallo stesso pomeriggio)**: sentinella persistente, Monitor interno sulla mailbox (non più `trigger/watch.py` esterno, decommissionato), triage `check_job_health:`/`logbook:`/`gmail-check:`/`gate-watch:` in autonomia (handoff completo, mai contatto diretto con Mauro), + risponde a domande sincrone sul dominio tecnico Nave (vedi sopra), mediando anche verso `expert-domotica` quando serve. Dettaglio: Thread aperti sotto, `archivio/Adrian/progetti/project_gemello_nave_bg.md`. Storico smantellamenti (Elon/vault/cockpit): `CHANGELOG.md` + `archivio/Adrian/progetti/project_alleggerimento_elon.md`. ## Pending architetturale (idee parcheggiate, non urgenti) - **(04/09) Push mobile (`PushNotification`) non arriva sul telefono di Mauro** — diagnosticato, probabile bug noto della piattaforma, non un problema nostro. Usare `/remote_control` nel frattempo, riprovare tra qualche settimana. Dettaglio: storico. - Tassonomia istanze secondarie: dettaglio completo in `CLAUDE.md` (Ecosistema). **Non ancora fatto**: `servizio-query` (idea, non costruita). **(06/09) `sottosentinella` eliminata dalla tassonomia** (criterio fondamenta-vs-impalcatura, mai istanziata) — non riproporla senza un caso concreto. - Guardrail da non riproporre: ChatGPT sganciato (12/08); Caddy path-based routing scartato (07/08, finché i servizi esposti non crescono). - **(24/08→05/09) Due routine `RemoteTrigger` attive** (report settimanale, coerenza SecondBrain) — notificano Mauro non Adrian, possono bypassarlo via `PushNotification` se non vietato nel prompt. Dettaglio: storico, `project_scatola_llm_wrapper.md`. - **(30/08) Estendere `expert-data` a `mcp-query`/Claude.ai** (non solo Adrian) richiederebbe risposta sincrona dentro la chiamata MCP, non `SendMessage` — salto architetturale diverso, non tentato. Riapre la domanda su dove sta la logica, sotto. - **(10/09) `ImdbUpdate` — split Nave/Ufficio, idea da tenere a mente, non decisa**: la pipeline ha due fasi separabili — download+DuckDB→`imdb.parquet` (puro Python, portabile, ~15min, il grosso del tempo) vs export Access (`pyodbc`/ODBC, Windows-only, ~5-8min). Si potrebbe far girare la fase 1 su Nave e pushare solo il parquet a Ufficio, che farebbe solo lo step Access — ridurrebbe l'esposizione Ufficio a un pacchetto pesante (5GB temp) via Dropbox. Nata da un fallimento reale del job (`RUN.bat non riconosciuto`, 04/09) ma probabile solo un glitch di sync, non un problema di carico/durata — lo split non l'avrebbe necessariamente prevenuto. Mauro: "teniamola a mente solo come possibilità per adesso", non implementare senza rilancio esplicito. - **(10/09) Usare la VPS "Avamposto" (Hetzner CX22, ~6€/mese) per delegare script puramente meccanici** (no LLM/agenti residenti — solo cron/systemd, stesso principio "orologio vs giudizio") — idea generale, non un caso specifico. Vincolo noto: CX22 ha RAM limitata (~4GB), già impegnata da Caddy/WireGuard/fail2ban per `query.privcloud.dev` — da verificare con un test reale la RAM libera prima di caricarci compute pesante (es. la fase DuckDB di `ImdbUpdate`, che da sola vuole 2-4GB). Possibile vantaggio: banda datacenter per download pesanti (es. dataset IMDb ~5GB) rispetto alla connessione di casa. Mauro: "segnamocelo come possibilità generale di valutare", nessun caso concreto ancora deciso. ## Priorità prossime settimane - [ ] **gate-ufficio — chiudere il ciclo**: `gate-ufficio` sostituisce Frank, 6/6 job migrati (04/09) — dettaglio completo/aggiornato: `archivio/Mauro/lavoro/lavoro-python-ecosistema/schedulatore-job-status.md` (unica fonte, non duplicare qui). **(09/09 sera) `osservatorio_report` confermato girato con successo** (run reale via `run_job.py`, exit 0). Restano da vedere: `imdb_update` (ancora fallito, alert dell'hook stasera), esito reale `gemma_report` (recuperato dopo l'incidente Caffeine, vedi storico — da riconfermare). Poi: decommissioning `PYTHON/Frank/` — non prima di cicli reali confermati su tutti. - [ ] Fix canale secondario DVB-T (item #5 in `flussi-expert.md`) — non urgente, precisato 12/08. - [ ] mcp-query — due domande strategiche non urgenti (sola-lettura vs esecuzione; tenuta della divisione logica-in-Claude.ai/server-meccanico). Dettaglio: `sandbox/mcp-query/CLAUDE.md`. ## Thread aperti (davvero aperti, non storico) - **(11/09) Albero di instradamento a due referenti chiuso lato Nave, `gemello-nave` `--bg` sempre viva in produzione, gap "esperti co-locati" trovato e chiuso stessa sera** — dettaglio completo spostato in storico: `archivio/Adrian/adrian_state_storico.md` (sezione "11/09/2026 sera"). - **(11/09) Canvas standardizzazione tassonomia — quasi chiuso**: servizi meccanici Nave-esclusivi consolidati in `gemello-nave/`, `expert-domotica` spostata lì. **Resta aperto**: `expert-data`/ `expert-flussi` (candidati sotto `gemello-ufficio`, salto di meccanismo non un semplice `git mv`) e `PYTHON/` come "aka" di `gemello-ufficio`. Dettaglio: `archivio/Adrian/progetti/project_gemello_nave.md`. - **(11/09) `outlook_filtro` sospeso, Outlook Ufficio in resync — da riattivare quando torna normale**: Outlook bloccato da giorni in una sincronizzazione massiva dopo spostamenti email recenti (temuto rischio di loop). `gemello-ufficio` ha disabilitato il job in `schedule.json` (entry rinominata `_disabled_outlook_filtro_20260911`, `cron: null` — un semplice rename non bastava, lo scheduler dispatcha su cron/command non sul nome). Diagnosi successiva (senza intervenire): Outlook non è bloccato, sta lavorando attivamente (.ost in crescita, CPU/rete attivi), solo lento per il volume. Nessuna azione finché Mauro non chiede di riattivarlo. - **(10/09→11/09) Gap: un riavvio macchina Ufficio uccide scheduler+Monitor insieme, nessuno se ne accorge finché non scatta un alert** — diverso dal "PC spento la notte" già accettato. Due manifestazioni reali già osservate (backup falliti/morti a metà, job non partiti). Proposta di `gemello-ufficio` (autostart scheduler), non ancora valutata. Non urgente. Narrativa completa: `archivio/Adrian/progetti/project_servizi_meccanici.md`. - **(09/09) Push server OTT nel Linker MyICR — design fragile, non urgente**: `ott_sheet.py::_carica_file()` pubblica `ott.parquet` su `I:\...` fire-and-forget, la UI mostra successo prima che il push sia confermato, un fallimento logga solo un warning senza segnale UI. Causa sospetta di un problema reale della settimana scorsa (dati non pubblicati per i colleghi) — run del 09/09 andato a buon fine su tutti i livelli. Mauro: tenerlo in coda, non urgente. - **(05/09→06/09) Manca un obiettivo comune/roadmap condivisa** — domanda di fondo (libertà reale vs sistema come progetto con una fine) ancora senza risposta di Mauro, non riproporla, aspettare che emerga da sola. Narrativa completa (discorsiva apposta): `archivio/Adrian/ progetti/project_roadmap_condivisa.md`. - **(07/09) Bug ancora aperto**: `outlook_filtro` dichiara sempre successo anche a connessione Outlook fallita. Narrativa: `archivio/Adrian/progetti/project_servizi_meccanici.md`. (Il gap "scheduler dipende da sessione aperta" imparentato è stato riconfermato e ampliato il 10/09 — vedi la entry dedicata sopra, "riavvio macchina uccide scheduler+Monitor insieme".) - **(03/09→11/09) Idea `expert-myicr` (quarto esperto)** — discussione più ampia sullo standard generale per la classe "esperti" ancora aperta. Canvas: `archivio/Adrian/progetti/project_expert_myicr.md` (standard generale: `project_standard_esperti.md`). - **`gemello-ufficio` validato su lavoro reale** (elenco casi in storico/canvas, ultimo: filtro Outlook 3 categorie live 09/09 sera) — incidente Caffeine dello stesso giorno recuperato in giornata (dettaglio: storico). **(09/09 sera) Scouting "email↔trattative nel tempo" fatto**: nessuno strumento nuovo necessario, approccio raccomandato = indice entità→email + query cronologica + passo LLM periodico con confidenza dichiarata (pattern Fellegi-Sunter/Splink per gli agganci incerti). Ancora aperto: relazione con `expert-myicr`, disegno ingestione email taggate `ADRIAN`, bridge mailbox su secondo abbonamento (vedi Pattern). Canvas: `archivio/Adrian/progetti/project_expert_lavoro.md`. - **(28/08→10/09) PowerBricks — carrello query + join visuale fatti**, gap noti confermati (nessuna aggregazione Emesso, nessuna logica derivata Diritti). **Da riprendere**: modale di dettaglio per riga (regge un solo dominio 1:molti alla volta). **(10/09) Due idee nuove registrate**: carrello con query pubbliche/private (catalogo condiviso colleghi, serve prima un concetto di owner/scope) e query "SQL diretto" nel carrello per casi troppo complessi per i blocchi (senza esplicitare l'uso di un LLM, prefisso visivo "SQL" nel nome) — quest'ultima anche come segnale di roadmap su cosa promuovere a blocco vero. Direzione di fondo: PyQt6 smantellato se Tabulator regge alla prova, non ancora verificato su uso prolungato. Appunti: `archivio/Mauro/lavoro/lavoro-python-ecosistema/PowerBricks-appunti.md` / `PowerBricks.md`. - **(26/08) Arduino UNO R3 (kit Elegoo, lista in `archivio/Mauro/arduino-kit.md`) — Blink e Fotoresistore validati**, toolchain headless (`arduino-cli`) funzionante. Gotcha breadboard riutilizzabile in Pattern sotto. Mauro ha anche un tester digitale (non ancora usato). Piano a gradini: fotoresistore ✅ → **DHT11 temperatura/umidità (prossimo passo)** → LCD1602. ## Pattern riconosciuti - **(11/09) Principio "chi contiene è referente" usato per delegare un permesso di scrittura**: un subordinato può editare la configurazione di un altro solo se quest'ultimo è fisicamente contenuto nella sua cartella (eccezione puntuale nel CLAUDE.md, non un'apertura generale) — usato per sbloccare `gemello-nave` su `expert-domotica/CLAUDE.md` (gap "esperti co-locati": rispondeva con testo di turno invece di `SendMessage`, bloccava un chiamante cross-session). Dettaglio/caso reale: storico, sezione "11/09/2026 sera". Da verificare (non ancora fatto): se lo stesso bug riguarda anche `expert-data`/`expert-flussi`. - **(08/09) Modello di delega a `gemello-ufficio` validato sul campo**: Adrian scrive una spec precisa → `gemello-ufficio` implementa/verifica visivamente (display reale, non headless) e salva senza commit → Adrian revisiona e committa (repo `adrian` senza remote, sync solo Dropbox anche su `.git` — commit da due macchine rischierebbe conflitto). **Direttiva di Mauro**: delegare compiti via via più complessi/lunghi, non fermarsi a micro-task — anche per il consumo quota molto più basso di `gemello-ufficio`. Dettaglio: `archivio/Adrian/progetti/project_expert_lavoro.md`. - **PC ufficio spento di notte / VPN non attiva → buchi log e backup falliti sono attesi**, non anomalie da diagnosticare: dettaglio in `gemello-nave/archivio/conoscenza-nave.md`. - **(11/09) Non "correggere" gli alert `backup` su file `~$*.xlsx`/`~$*.xlam` bloccati (lock Excel, `exit_code=3`, snapshot comunque completo)** — deciso da Mauro: quei lock segnalano anche chi/cosa sta lavorando attivamente sui documenti al momento dello snapshot, informazione collaterale voluta. Non un bug da fixare, non riproporre l'esclusione. - **(03/09) Due sistemi di schedulazione distinti, non mescolarli**: "sistema Nave" (cron locali — backup, mirror, `gemello-nave/logbook/collect_logs.py`, spostata dentro `gemello-nave/` l'11/09) vs "ufficio" (`schedule.json`/`gate-ufficio`, job PC ufficio). Qualunque cosa riguardi "cosa fa il PC ufficio" vive nel repo `gate-ufficio`, non in `logbook/`. - **(07/09) Bridge mailbox per `gemello-ufficio` — costruito, NON ancora stabile**: protocollo mailbox a due code + `Monitor` come risveglio. Tre guasti trovati e corretti la stessa sera (sync Dropbox senza allarme, zombie `Monitor`, permessi Bash resettati) — **in validazione**, non chiudere finché non regge una giornata reale senza intervento. Dettaglio: `project_bridge_mailbox_gemello_ufficio.md`. - **(30/08) Mauro preferisce container (esperti/sentinelle) ai subagenti custom** — meno chiari, fonte di confusione. Default per nuove competenze di dominio: esperto/sentinella, non subagente. Dettaglio: `archivio/Adrian/feedback/feedback_no_subagenti_preferenza_container.md`. - **(03/09) Non installare nulla di nuovo su Ufficio se evitabile** — Node.js scartato (Direzione Sistemi rimuove attivamente Task Scheduler/autostart; baricentro operativo va su Nave, non su Ufficio). Principio guida generale: preferire meccanismi che non richiedono nuovi tool installati lì. - **Playwright per verificare prototipi Flask+pywebview anche da Nave headless**: importa l'app Flask direttamente (bypassa pywebview), pilota via Playwright. Attenzione con MediaTrack (sync DB reale): forzare `MYICR_DEV_MODE=1`, solo pagine read-only. Dettaglio: `sandbox/powerbricks/CLAUDE.md`. - Solo **Chrome** installato su Nave (v150) — Firefox disinstallato, nessun binario nonostante pacchetti lingua orfani. - **Non generare screenshot proattivamente per UI a Mauro** — lui ha accesso diretto all'app reale, più veloce di aspettare uno screenshot. Solo su richiesta esplicita. - **Mai credenziali vere incorporate in pagine di login "di comodo"** — vedi [feedback_auth_page_no_secret_leak](Adrian/feedback/feedback_auth_page_no_secret_leak.md). - `archivio/Mauro/diario/_i_diario.md` è indice dinamico — un diff lì si committa normalmente, mai lavoro sospeso. - Il Monitor va avviato PRIMA di leggere i messaggi utente, altrimenti rischio di saltarne uno. **Un solo Monitor su `mailbox.log`, mai due** — causa radice trovata e skill corretta l'11/09 (`pgrep` prima di armare), vedi Thread aperti sopra. - **(10/09) Il risveglio di un Monitor non è mai davvero "a costo zero"**: il processo shell che aspetta non chiama il modello, ma il turno che genera quando trova qualcosa paga piena ricostruzione della cache se il gap dall'ultimo turno supera il TTL (~5 min) — stesso meccanismo che aveva fatto esplodere `sentinella-gmail-personale`. Osservato in diretta su questa stessa sessione (lunga, contesto accumulato). Dettaglio: `archivio/Adrian/progetti/project_gemello_nave.md`. - **(10/09) Su un dominio con esperto dedicato, consultarlo prima di rispondere — non ricostruire/indovinare**: regola fissata in `CLAUDE.md` v2.02 dopo una quasi-recidiva reale (risposta sbagliata sullo stato di `expert-domotica` letta da un file solo in parte, invece di interrogare l'esperto). Dettaglio: `archivio/Adrian/feedback/feedback_consultare_esperto_prima_di_rispondere.md`. - **(10/09) `CLAUDE.md` può accumulare narrativa storica come `MEMORY.md`** — stesso pattern già noto per `gate-ufficio/CLAUDE.md` (controllato dall'hook). Potato oggi (v2.03). Da valutare: estendere il controllo dimensione dell'hook anche a `CLAUDE.md`/`ADRIAN.md`, non ancora fatto. - **Gotcha tecnici stabili di infrastruttura Nave (Guacamole, Caddy, rclone, WireGuard, Flask/pywebview, foto .heic, permessi UID Docker, SSD con LBA danneggiati)**: raccolti in `gemello-nave/archivio/conoscenza-nave.md` (spostati da qui il 31/08 per tenere corto questo file). - **Un cron che scrive il proprio "tutto ok" può smettere di scrivere senza apparire come errore** — caso reale (07/09, risolto): `check_job_health.py` fermo dal 05/09 per un venv mai creato, dettaglio in storico. - **(06/09) Il controllo "alive" di `slave_sentinel_ensure.sh` non rileva un account bloccato da rate limit settimanale** — verifica solo che il processo esista, non che lavori davvero. `last_check.txt` fermo è il segnale giusto per accorgersene, ma la diagnosi resta manuale. Dettaglio/caso reale: storico. - **(05/09, riconfermato) I connettori MCP cloud (Gmail/Calendar/Drive) non si caricano in `claude -p` (slave `avvia_slave.sh`), solo in `claude --bg`** — dettaglio: `archivio/Adrian/riferimento/claude-cli-headless.md`, sezione "Bug connettori MCP cloud in `-p`". - **`@gate`** = promemoria al volo (come `processa-promemoria`). **`@inbox` smantellato (29/08)**: `inbox-documenti/` processa da sola entro 30s — dal 04/09 via `servizio-inbox-watch` (meccanico) + slave one-shot, non più una sentinella persistente — non più responsabilità di una sessione interattiva, non riproporre il trigger manuale. - **`@gate`/promemoria: invocare sempre lo Skill esplicitamente**, mai a memoria — dettaglio `archivio/Adrian/feedback/feedback_skill_promemoria_esplicita.md`. - **Commit senza conferma se tutti i file sono `.md` in `archivio/`/`memory/`** — altrimenti chiedere sempre prima. Dettaglio: `archivio/Adrian/feedback/feedback_commit_automatico_archivio.md`. - Il mirror SecondBrain è anche un controllo incrociato utile — sintesi esterne (Claude.ai) hanno fatto emergere thread mai tracciati, vale la pena verificarle. - **(27/08) Posso leggere/modificare Artifact pubblicati su claude.ai** (tool Artifact: list/read/publish), non le conversazioni normali; capacità `mcp` di un Artifact vuole il nome pulito del connettore (es. `"mcp-query"`), non il prefisso `claude_ai_...` dei miei tool — dettaglio `archivio/Adrian/riferimento/artifact-claude-ai.md`. - **CLI Claude Code headless senza login interattivo** — ricetta pronta, non rifare la scoperta: `archivio/Adrian/riferimento/claude-cli-headless.md`. - **Cancellare metà di una coppia andata/ritorno in un tunnel file-based senza coordinamento rompe l'idempotenza** — causa reale di una doppia esecuzione job il 02/09 (narrazione: `archivio/Adrian/adrian_state_storico.md`, sessione 02/09). Vale per qualunque tunnel futuro con lo stesso pattern. - **(09/09) `RemoteTrigger` one-shot non è un buon canale per farsi consegnare testo da un chiamante headless**: due run cloud (Opus, account `gemello-ufficio`) bloccati identicamente — il modello converge su pubblicare un Artifact anche col prompt che lo vieta esplicitamente, resta appeso al permesso mai approvato. `get_run_log` non aiuta a recuperare (tronca ogni evento, non solo il totale). Servirebbe repo con `Write`+commit/push, o pre-approvazione Artifact — nessuno dei due tentato. Dettaglio: `archivio/Adrian/progetti/project_expert_lavoro.md` (Report 3). - **Altri gotcha tecnici stabili** (CronCreate/RemoteTrigger, bash `&` non sopravvive, Arduino/breadboard, contaminazione ambientale Windows da shell bash): `gemello-nave/archivio/conoscenza-nave.md`. - **(11/09) Checklist per ogni futuro spostamento fisico di cartella/servizio**, emersa dai tre bug trovati durante il consolidamento `gemello-nave`: (1) `grep` esplicito del nome della cartella vecchia in tutto il resto del codice prima di dichiararlo "fatto" — un path assoluto hardcoded può continuare a funzionare e nascondere una migrazione a metà (caso `gmail-check`/`msg_venv`); (2) verificare che lo script non giri **anche su Ufficio** prima di spostarlo sotto `gemello-nave` — non basta "meccanico + Nave-side oggi" (caso `archivio-raw-conversazioni`, salvato in tempo); (3) una cartella alimentata da un'app esterna con path fisso (es. scan-to-folder di Dropbox) resta dove sta anche se il demone che la processa si sposta (caso `inbox-documenti/`). Dettaglio completo: `archivio/Adrian/progetti/project_gemello_nave.md`.