Cantieri aperti: differenze tra le versioni

[versione verificata][versione verificata]
WikiBot (discussione | contributi)
handoff automatico
WikiBot (discussione | contributi)
handoff automatico
 
(8 versioni intermedie di uno stesso utente non sono mostrate)
Riga 7: Riga 7:


== Cantieri attivi ==
== Cantieri attivi ==
=== audit_marcoparet_non_conformi ===
=== geo-loop ===
''Aggiornato 2026-09-14 05:30 UTC'' — dominio: pillar
''Aggiornato 2026-09-14 23:23 UTC'' — dominio: marcoparet.com


; Obiettivo : portare a standard le pagine non conformi su marcoparet: [7177, 7170, 7150, 7178, 7134, 7127, 7121, 7119, 7116, 7110, 7094, 7075, 7062, 7046, 7068, 155, 7052, 7051, 153, 289, 7018, 6999, 5101, 6989, 6983, 6968, 6925, 6966, 6950, 6938, 6934, 6918, 6886, 6828, 6895, 6751, 6818, 6815, 6747, 5998]
; Obiettivo : Loop di miglioramento visibilita AI (GEO) a CICLO DI 3 GIORNI (approvato da Marco 15/09): giorno 0 misura+diagnosi, giorno 1 azioni in bozza, giorno 3 ri-misura+confronto. Base: /opt/wikibox/misura_pillar.py e state/misura_*.json
; Vincoli in vigore :
; Vincoli in vigore :
* mai riscrivere: arricchire
* Pubblicazioni solo Marco. Registrare sempre i domini citati. Estendere misura_pillar.py, non creare benchmark nuovi.
* pubblicazione solo via pubblica_pillar.py --ok-marco
; Fatto (con prova) :
* 15/09: letta serie 14/08-14/09. Bin1 (GPT/Gemini/Mistral puri) 0/24 costante. Bin2 Perplexity 14/40 brand, 23/40 rif, in salita. Reperibili su domande di definizione (11/12), assenti su domande di mercato (3/20). Buco: mesmerismus definizione 0/5 in tutte le lingue. Non misurati: ChatGPT Search, piano free.
* 15/09: serie 14/08-14/09 letta. Bin1 puri 0/24 costante
* Perplexity 14/40 brand 23/40 rif. Forti su definizione (11/12), assenti su mercato (3/20)
* buco mesmerismus/definizione 0/5. Non misurati ChatGPT Search e piano free.
; Prossimo passo :
; Prossimo passo :
* python3 /home/claudeuser/scripts/audit_pubblicate.py --sito marcoparet --correggi --pid 7177 7170 7150 7178 7134 7127 7121 7119 7116 7110 7094 7075 7062 7046 7068 155 7052 7051 153 289 7018 6999 5101 6989 6983 6968 6925 6966 6950 6938 6934 6918 6886 6828 6895 6751 6818 6815 6747 5998
* 1) /opt/wikibox/geo_diagnosi.py deterministico: ultimo misura_*.json -> geo_gap_<data>.json + riga wiki Cantieri. 2) cron misura+diagnosi ogni 3 gg (0 7 */3 * *), file misura_<data>.json invariato. 3) geo_azioni.py -> bozze in fabbrica pillar, mai publish. 4) ChatGPT Search piano free in MODELLI_B2. 5) geo_confronto.py: azioni tenute/scartate su 2 misure consecutive (6 gg). Budget <2 USD per ciclo.


=== bench-regole-0914 ===
=== si-1-automiglioramento ===
''Aggiornato 2026-09-14 05:15 UTC'' &mdash; dominio: -
''Aggiornato 2026-09-14 23:19 UTC'' &mdash; dominio: VM / infrastruttura


; Obiettivo : Benchmark iterativo delle regole vs finali di Marco; trovare la configurazione migliore
; Obiettivo : Fatto quando: SI-1 adotta da solo miglioramenti verificati e si vede, nei numeri, che i fallimenti calano. Pipeline sulla VM: reviewer -> researcher -> proposer (inventario) -> tester (sandbox) -> promoter (snapshot+rollback) -> Reflect gate -> misura.
; Vincoli in vigore :
; Vincoli in vigore :
* Script /home/claudeuser/scripts/benchmark_regole.py (dataset|valuta|ottimizza|stato)
* read-only cc-rescue
* stato in /home/claudeuser/pillars/benchmark_regole/ (dataset.json, risultati.jsonl, config_*.json, STATO.txt). Punteggio = 0.6 giudice sonnet (vs finale Marco) + 0.25 lessicale + 0.15 gate deterministico. Tetto spesa per run --budget_usd
* auto_code_roots = self_improvement + hermes
* ottimizza oltre 2 USD richiede OK di Marco. Il registro ha 1176 regole (Marco ne cita 1700: verificare depositi non caricati). Solo coppie con note di Marco per default (--tutte per le altre)
* CODE_PATCH non automatico (approvazione di Marco)
* backup e marcatore EVOLUZIONE=SI-1 su ogni modifica
; Fatto (con prova) :
; Fatto (con prova) :
* 14/09: script installato
* 10/09 07:00 UTC: cron SI1_ORCHESTRATOR presente (27 */4, flock). Corse 00:27 e 04:27 morte per timeout bq CLI 120s (VM load 24, 23 bq in coda). Patch si_common.bq: client python google-cloud-bigquery + fallback CLI 300s x2 (test 3.7s vs timeout). pilot.py: guardia --help (prima --help lanciava un ciclo intero: bump config v3->v4 involontario ma idempotente). Job si1_ciclo_forzato_20260910 lanciato e passato oltre la raccolta casi. Safe Mode via HTTP: /safe/status ok, /safe/snapshot -> gs://isicnv-command-center-routes/safe_mode/snapshots/20260910T070934Z.tgz verificato
* catena piano bench-regole-0914 lanciata (dataset -> valuta base tetto 2 USD -> stato)
* 10/09 08:47 UTC: REFLECT installato (reflect.py + reflect_gate.py). Gate in coda a orchestrator.py (EVOLUZIONE=SI-1-REFLECT-GATE): rc!=0 impedisce la conclusione del ciclo. Prova: due run consecutivi stesso digest a75a1350e174 e stesso sha (stato IDENTICO), gate rc=0, log in logs/reflect.jsonl. Prima passata: 50 esiti, 20 PARZIALE, 30 IGNOTO, 2 findings, 0 blocker. Wiki ops SI-1_Reflect creata, Cantieri aperti aggiornato.
* 14/09: Marco: una pagina sola per restare nel budget -> job bench_regole_ottimizza_1pag (persuadere naturalmente, 12 giri, tetto 1.8 USD)
* 10/09: REFLECT v2 attivo. reflect.py scrive proposta + state/reflect_context.md + un learning per finding
* gate deterministico normalizzato sulla finale
* proposer.py inietta il contesto (EVOLUZIONE=SI-1-REFLECT-CONTEXT, riga 15)
* classifica per coppie selezionate
* reflect_gate.py verifica digest, sha documento e sha contesto ed e agganciato in coda a orchestrator.py riga 33 (dopo once()). Soglie in config.json chiave reflect (window 50, finding 3, blocker 5). PROVE: run x2 IDENTICO stesso digest a75a1350e174
* 14/09: regole_deterministiche.py (21 elementi: correzioni a valle + controlli) integrato nel benchmark (det_dopo)
* --window 40 da digest diverso 1d631c043cf8
* su Persuadere: base 69.8 -> migliore senza det 84.5 -> det+chirurgo 86.2
* log spostato -> rc=2
* Doc risultati+pagine: https://docs.google.com/document/d/1kIPZUElTp1wxwWp7gHdKBYStxQilguL28kyS5ULnDMo/edit
* contesto alterato -> rc=2
* ripristinato -> rc=0. Prima passata: 50 esiti, 20 PARZIALE, 30 IGNOTO, 2 findings AVVISO (famiglia mcpchatgpt: many_events, long_interactive), 2 learning. Wiki ops SI-1_Reflect aggiornata.
* 10/09 10:30: diagnosi log (123 esiti, 84 sessioni fantasma, 95 senza causa, 24 proposte con 0 promosse) e quattro correttivi. reviewer.py: _cause_extra (EVOLUZIONE=SI-1-CAUSE-ENRICH) con cause da metriche e da testo eventi. proposer.py: vincolo target = percorso assoluto sotto self_improvement/ o hermes/. Nuovi pending_digest.py (digest + archiviazione oltre 7 giorni) e rotate_logs.py (sopra 1MB, tiene 5), lanciati a fine ciclo da orchestrator.py (EVOLUZIONE=SI-1-MANUTENZIONE) prima del gate e senza bloccarlo. PROVE: _cause_extra su 4 casi corretto
* digest 21 pendenti 0 archiviate
* rotate nessun file sopra soglia
* gate rc=0. Wiki: SI-1_Reflect + SI-1_Qualità_dei_dati_e_manutenzione.
* 11/09: security_gate.py (regole deterministiche + parere modello, fail closed, log logs/security.jsonl) e tester.py (sandbox /tmp/si1_test, replace/patch, py_compile, test_cmd allowlist) agganciati in promoter.process in questo ordine: sicurezza, tester, decisione con pending_reason, apply_file_change per PROMPT_TUNE/CODE_PATCH con snapshot+rollback. proposer vincolato a forma eseguibile (replace/patch/test_cmd). pending_digest mostra il motivo. PROVE: esperto su proposta reale = BASSO
* proposta costruita T0 score 99 che abbassa judge_min_score e allarga i tipi automatici = ALTO, PENDING_HUMAN security_hold, config intatta. Tester sulle 44 pendenti: bocciate per target fuori radice/inesistente/parametri descrittivi. Corse cron 20:27 e 08:27 con MANUTENZIONE e GATE_REFLECT PASSATO
* 00:27 e 04:27 cadute per timeout ledger, gia reso non bloccante (SI-1-LEDGER-NONBLOCCANTE). Wiki ops: SI-1_Tester_e_Gate_di_sicurezza.
* 11/09: tester.py installato e agganciato al promoter (EVOLUZIONE=SI-1-TESTER): test FAIL -> AUTO_REJECTED con motivo
* pending_reason esplicito
* apply_file_change promuove PROMPT_TUNE/CODE_PATCH con snapshot+sha+rollback
* proposer vincolato a forma eseguibile (replace/patch/test_cmd). Prova sulle 47 pendenti: 47 FAIL non applicabili. E2E: proposta sintetica promossa, snapshot 20260911T141342Z_e2e_tester_prova (prima promozione mai avvenuta)
* negativo respinto
* test_cmd con operatori shell rifiutato. pending_digest invia Telegram alle 08:27 (SI-1-DIGEST-TELEGRAM). Keepalive cc-rescue-keepalive ogni 10 min su /health
* learning cc-rescue registrato. Wiki ops: SI-1_Tester.
* 11/09: tester.py agganciato al promoter (EVOLUZIONE=SI-1-TESTER): FAIL -> AUTO_REJECTED con motivo
* pending_reason esplicito
* apply_file_change promuove PROMPT_TUNE/CODE_PATCH con snapshot+sha+rollback
* proposer vincolato a forma eseguibile. 47 pendenti provate: 47 FAIL non applicabili. E2E: proposta sintetica promossa, snapshot 20260911T141342Z_e2e_tester_prova (prima promozione mai avvenuta). Digest Telegram 08:27. Keepalive cc-rescue-keepalive. Wiki ops SI-1_Tester.
* 11/09 22:30: scoperto che dalle 07:47 del 10/09 il cron SI-1 girava su isicnv-secondary senza credenziali GCP (/home/claudeuser/.gcp vuoto): ogni corsa USCITA 1 su bq. Le due copie di self_improvement erano divergenti: allineati sul secondary tester.py, promoter.py, proposer.py, pending_digest.py, security_gate.py (backup in backups/). Cron riportato sulla VM con migra_cron.py --rollback 206 (VM riga 206 attiva, secondary 0). Lanciata corsa manuale di verifica con lo stesso flock.
* 14/09: prime 3 promozioni reali approvate da Marco (release 20260914T2252/2253/2253) su hermes/matching_engine.py e hermes/instructions.py, file compila e importa. Nuovo misura.py (SI-1-MISURA): confronta 72h prima/dopo ogni promozione su tasso di fallimento e passi medi, verdetto MIGLIORA/PEGGIORA/NEUTRA/DATI INSUFFICIENTI, output in state/effetto_promozioni.json|.md e logs/misura.jsonl, agganciato a fine ciclo. Riferimento di partenza: 0.802 di fallimento su 81 esiti, 1.46 passi medi. Ciclo fallito ora avvisa su Telegram con hostname (SI-1-CICLO-FALLITO) e notifier corretto per i messaggi senza proposte (SI-1-AVVISO-LIBERO). Wiki ops SI-1_Reflect aggiornata.
; Provato ed escluso :
* tool MCP safe_* non testabili da questa chat (connettore non caricato): la via HTTP con X-API-Key e equivalente e verificata
; Prossimo passo :
; Prossimo passo :
* con budget di Marco: job.py --run "python3 /home/claudeuser/scripts/benchmark_regole.py ottimizza --giri 8 --budget_usd 6" --id bench_regole_ottimizza_4pag (4 coppie con note) poi benchmark_regole.py report
* fra 72h: python3 /home/claudeuser/self_improvement/misura.py e leggere state/effetto_promozioni.md — i tre verdetti devono uscire da DATI INSUFFICIENTI
* se PEGGIORA, rollback dalla release corrispondente


=== r103_giudice_ko ===
=== si1-fallback-pubblicazione ===
''Aggiornato 2026-09-13 21:20 UTC'' &mdash; dominio: infrastruttura
''Aggiornato 2026-09-14 22:56 UTC'' &mdash; dominio: pubblicazione / infrastruttura


; Obiettivo : R103 riprendi_chat - giudice dalla VM: KO glm-5.2: HTTP Error 401: Unauthorized | da media: KO glm-5.2: HTTP Error 401: Unauthorized. Il giudice non risponde da nessuna macchina: e' l'AIGW o la chiave. Cantiere r103_giudice_ko.
; Obiettivo : Fatto quando: una pubblicazione su HostGator che fallisce per blocco SSH prosegue da sola su un percorso alternativo, senza che Marco se ne accorga. Origine: proposta SI-1 [85] 'Add GitHub Actions fallback to task_ledger' (12/09), oggi solo descrittiva.
; Vincoli in vigore :
* il target task_ledger e fuori da auto_code_roots: la modifica va scritta a mano o spostata dentro self_improvement/hermes
* serve un PAT GitHub (segreto: chiederlo a Marco, non inventarlo)
; Fatto (con prova) :
* proposta generata e valutata 85 dal giudice
* ferma perche descrittiva e su target fuori perimetro
; Prossimo passo :
; Prossimo passo :
* cd /home/claudeuser/sovra && python3 -c "import riprendi_chat as r
* 1) trovare nel codice di pubblicazione il punto dove il fallimento SSH HostGator diventa errore (grep -rn ssh /home/claudeuser/scripts/*publish* *hostgator*)
* print(r.modelli())
* 2) decidere dove sta il fallback
* print(r.esamina('prova'))"
* 3) trasformare la proposta in un replace ancorato e passarla dal tester


=== audit_neurolinguistic_non_conformi ===
=== si1-indicizzazione-gsc ===
''Aggiornato 2026-09-13 21:07 UTC'' &mdash; dominio: pillar
''Aggiornato 2026-09-14 22:56 UTC'' &mdash; dominio: SEO / monitoraggio


; Obiettivo : portare a standard le pagine non conformi su neurolinguistic: [197, 4300, 11818, 11780, 11804, 479, 776, 3640, 3639, 3637, 4293, 4292, 3633, 3162, 4289, 4288, 11505, 4287, 4286, 3628, 2, 136, 146, 168, 303, 482, 65, 3627, 531, 535, 609, 621, 644, 682, 696, 872, 927, 1025, 1089, 1119]
; Obiettivo : Fatto quando: lo stato di indicizzazione delle pagine pubblicate e visibile senza controlli manuali, e un calo viene segnalato da solo. Origine: proposta SI-1 [90] 'Integrate Google Search Console Indexing Status Monitoring' (12/09), il punteggio piu alto mai dato dal giudice.
; Vincoli in vigore :
; Vincoli in vigore :
* mai riscrivere: arricchire
* integra API esterna: credenziali GSC, quota, job nuovo
* pubblicazione solo via pubblica_pillar.py --ok-marco
* non e un cambio da un rigo. Le pagine nuove partono comunque dai dati GSC reali (regola pillar)
; Fatto (con prova) :
* proposta generata e valutata 90
* ferma perche descrittiva e di tipo CODE_PATCH su target fuori perimetro
; Prossimo passo :
; Prossimo passo :
* python3 /home/claudeuser/scripts/audit_pubblicate.py --sito neurolinguistic --correggi --pid 197 4300 11818 11780 11804 479 776 3640 3639 3637 4293 4292 3633 3162 4289 4288 11505 4287 4286 3628 2 136 146 168 303 482 65 3627 531 535 609 621 644 682 696 872 927 1025 1089 1119
* 1) verificare se esiste gia un accesso GSC funzionante sulla VM (grep -rn searchconsole /home/claudeuser/scripts | head)
* 2) se si, scrivere un job che legge lo stato di indicizzazione delle ultime pagine e lo scrive in BigQuery
* 3) solo dopo, la segnalazione automatica


=== pipeline_mancanti_censimento ===
=== prova-pipeline-v2-0914 ===
''Aggiornato 2026-09-13 21:01 UTC'' &mdash; dominio: pipeline
''Aggiornato 2026-09-14 13:02 UTC'' &mdash; dominio: -


; Obiettivo : creare le pipeline mancanti piu richieste: sistema, mercurio, resta, stato, modo
; Obiettivo : Pagina di prova con Pipeline v2 (ipnosi non verbale) approvata da Marco e integrata nella fabbrica
; Vincoli in vigore :
; Fatto (con prova) :
* ogni pipeline: script + riga registro (descrizione, trigger) + wiki ops + test
* 14/09: Doc in Per pagine https://docs.google.com/document/d/1BRZuJtqX_5Ov-HqjlK2MCylL2wqjRrj7PATS9lNExSA/edit?usp=drivesdk
* strato 2-3 via prova_v2_run.py
* falsi positivi M104.2 (chi guarda / ricorda spesso) e H2Q che conta H1+indice+FAQ+note
; Prossimo passo :
; Prossimo passo :
* leggere /home/claudeuser/pillars/censimento/censimento_20260913.json e il Doc
* 1) correzioni di Marco sul Doc -> benchmark_regole.py valuta
* partire dal primo cluster
* 2) regole_deterministiche.py: M104.2 con controllo del modo verbale, H2Q solo sugli H2 veri
* 3) fabbrica.py: prompt di stesura = Fasi 5-24 della v2, strati 2-3 a valle
 
=== espressioni-pipeline ===
''Aggiornato 2026-09-14 10:59 UTC'' &mdash; dominio: -
 
; Obiettivo : Pipeline iterativa DB espressioni per tema (sguardo, estasi, magnetismo, influence, toucher, volonte, clairvoyance): motore scripts/espressioni_extract.py + espressioni_export_sheet.py + coda espressioni_pipeline.py; temi in scripts/espressioni_temi.json; stato in espressioni_db/<tema>/pipeline.json e registro.json; job espressioni-coda-1_run in corso; estasi-db_run in corso (estasi_db/). Per un tema nuovo: aggiungere voce al json e lanciare job.py --run "python3 /home/claudeuser/scripts/espressioni_pipeline.py --coda <slug>"


=== capoufficio_agente_risolve ===
=== audit_marcoparet_non_conformi ===
''Aggiornato 2026-09-12 14:10 UTC'' &mdash; dominio: -
''Aggiornato 2026-09-14 05:30 UTC'' &mdash; dominio: pillar


; Obiettivo : Marco 11/09: il 90% degli avvisi CAPOUFFICIO deve essere risolto da un agente, non finire in chat
; Obiettivo : portare a standard le pagine non conformi su marcoparet: [7177, 7170, 7150, 7178, 7134, 7127, 7121, 7119, 7116, 7110, 7094, 7075, 7062, 7046, 7068, 155, 7052, 7051, 153, 289, 7018, 6999, 5101, 6989, 6983, 6968, 6925, 6966, 6950, 6938, 6934, 6918, 6886, 6828, 6895, 6751, 6818, 6815, 6747, 5998]
; Vincoli in vigore :
; Vincoli in vigore :
* reversibile: backup .bak_* accanto a ogni file toccato
* mai riscrivere: arricchire
* pubblicazione solo via pubblica_pillar.py --ok-marco
; Prossimo passo :
* python3 /home/claudeuser/scripts/audit_pubblicate.py --sito marcoparet --correggi --pid 7177 7170 7150 7178 7134 7127 7121 7119 7116 7110 7094 7075 7062 7046 7068 155 7052 7051 153 289 7018 6999 5101 6989 6983 6968 6925 6966 6950 6938 6934 6918 6886 6828 6895 6751 6818 6815 6747 5998
 
=== bench-regole-0914 ===
''Aggiornato 2026-09-14 05:15 UTC'' &mdash; dominio: -
 
; Obiettivo : Benchmark iterativo delle regole vs finali di Marco; trovare la configurazione migliore
; Vincoli in vigore :
* Script /home/claudeuser/scripts/benchmark_regole.py (dataset|valuta|ottimizza|stato)
* stato in /home/claudeuser/pillars/benchmark_regole/ (dataset.json, risultati.jsonl, config_*.json, STATO.txt). Punteggio = 0.6 giudice sonnet (vs finale Marco) + 0.25 lessicale + 0.15 gate deterministico. Tetto spesa per run --budget_usd
* ottimizza oltre 2 USD richiede OK di Marco. Il registro ha 1176 regole (Marco ne cita 1700: verificare depositi non caricati). Solo coppie con note di Marco per default (--tutte per le altre)
; Fatto (con prova) :
; Fatto (con prova) :
* capoufficio_watch.py reso host-aware (check+heal via ssh su media/secondary dove i cron sono migrati il 10/09
* 14/09: script installato
* backup .prima_hostaware_11set)
* catena piano bench-regole-0914 lanciata (dataset -> valuta base tetto 2 USD -> stato)
* registry: finance_cassa heal_timeout_s=660, marcoparet_autoheal host=secondary
* 14/09: Marco: una pagina sola per restare nel budget -> job bench_regole_ottimizza_1pag (persuadere naturalmente, 12 giri, tetto 1.8 USD)
* /var/log/isicnv creato su media e secondary
* gate deterministico normalizzato sulla finale
* 9 monitor in RECOVERY
* classifica per coppie selezionate
* A) watch host-aware (check+heal via ssh su media/secondary). B) CAUSA DEI CANTIERI MAI LAVORATI: guardia.py e' migrata su media il 10/09 ma li' gsutil era anonimo (401) -> vedeva 0 handoff
* 14/09: regole_deterministiche.py (21 elementi: correzioni a valle + controlli) integrato nel benchmark (det_dopo)
* risolto con gcloud auth activate-service-account media-worker per claudeuser (ora vede i 465 handoff, watch_* compresi). C) Telegram differito: cantiere subito, avviso a Marco solo se lo stesso problema resiste avvisa_dopo_cicli (default 4 ~1h)
* su Persuadere: base 69.8 -> migliore senza det 84.5 -> det+chirurgo 86.2
* recovery solo se avvisato. D) heal_auto: monitor fermo senza heal_cmd -> rilancio del suo cron sulla macchina giusta. Backup: capoufficio_watch.py.prima_hostaware_11set / .prima_differito_11set
* Doc risultati+pagine: https://docs.google.com/document/d/1kIPZUElTp1wxwWp7gHdKBYStxQilguL28kyS5ULnDMo/edit
* 11/09: la guardia su media girava come root senza credenziali e scriveva 0 handoff: cron spostato a claudeuser (backup /root/crontab.bak_guardia_11set), gate GATE_ARCHIVIO_VUOTO in guardia.py (zero letto = guasto, Telegram ogni 6h)
* scoperti due archivi (state/cantieri delle chat vs plans/handoff degli agenti): ponte_cantieri.py in cron ogni 30 min con gate-prima sul comando
* commessa.py chiudi rifiuta gli handoff in prosa senza job (GATE_HANDOFF_PARCHEGGIO, off con touch /home/claudeuser/sessions/GATE_HANDOFF_OFF)
* primo giro guardia in corso su 465 cantieri
* 11/09: watch host-aware
* guardia su media con credenziali
* Telegram differito (avvisa_dopo_cicli)
* heal_auto. 12/09 notte: (a) heal a raffica fermato: heal_ogni_min default 120 (finance_daily_sync girava ogni 15 min su media e mandava 'step falliti paypal' a ogni giro)
* (b) log_clean su log mai scritto = OK (argo_watch.log e cassa_check.log non esistevano perche' /var/log/isicnv mancava fino al 11/09 13:37)
* (c) CAUSA della perdita credenziali su media: il cron marcopi fa 'gcloud config set account 424757051842-compute@...' e rende gsutil anonimo -> guardia cieca e PayPal token illeggibile
* blindato con ~/.boto (gs_service_key_file=media-worker.json) + pass_credentials_to_gsutil=false: gsutil funziona qualunque sia l'account attivo. Backup: capoufficio_watch.py.prima_throttle_12set
* 12/09 pom: (E) firma stabile dei problemi (numeri->#): prima i cicli si azzeravano a ogni giro e i monitor con heal non avvisavano mai. (F) terzo stato PERSISTENTE: dopo 2 avvisi singoli (avvisa_dopo_cicli, poi riavvisa_dopo_cicli=8) il monitor tace e finisce nel riepilogo giornaliero delle 07 UTC, un solo messaggio
* recovery e nuovi guasti restano immediati. Backup capoufficio_watch.py.prima_riepilogo_12set. (G) token GSC: gsc-admin e token-searchconsole revocati (guardiano_token.py li vede dal 11/09)
* creato scripts/gsc_token.py con ripiego su token-informazionicorsi-gsc + mappatura sc-domain->URL-prefix con piu dati
* gate_pagina_protetta e sat_gsc_sync adattati (bak_gsc_12set)
* sat_gsc_sync senza --replace
* righe polyvagal ripristinate da /tmp/gsc.jsonl del 11/09 (BQ gsc_queries: 9994 righe, 40 siti)
; Prossimo passo :
; Prossimo passo :
* (1) Marco deve rigenerare token-gsc-admin.json (account proprietario delle sc-domain marcoparet, neurolinguistic, polyvagal*): finche non lo fa i siti polyvagal restano fermi al 11/09. (2) verificare domani dopo le 07:10 UTC il riepilogo (monitors/watch_riepilogo_ultimo.txt) e che il primo alert reale porti avvisi=1 in watch_state.json. (3) restano i punti 1-4 del 12/09 notte
* con budget di Marco: job.py --run "python3 /home/claudeuser/scripts/benchmark_regole.py ottimizza --giri 8 --budget_usd 6" --id bench_regole_ottimizza_4pag (4 coppie con note) poi benchmark_regole.py report


=== allievi_360_pipeline ===
=== r103_giudice_ko ===
''Aggiornato 2026-09-12 13:25 UTC'' &mdash; dominio: finanza
''Aggiornato 2026-09-13 21:20 UTC'' &mdash; dominio: infrastruttura


; Obiettivo : Tabella ALLIEVI canonica + riconciliazione totale (Marco 12/09). La ricerca allievi deve girare in background per ore
; Obiettivo : R103 riprendi_chat - giudice dalla VM: KO glm-5.2: HTTP Error 401: Unauthorized | da media: KO glm-5.2: HTTP Error 401: Unauthorized. Il giudice non risponde da nessuna macchina: e' l'AIGW o la chiave. Cantiere r103_giudice_ko.
; Fatto (con prova) :
; Prossimo passo :
* 12/09: (a) riconcilia_cassa.py a 4 strati + pagatori_alias (cron 07:35)
* cd /home/claudeuser/sovra && python3 -c "import riprendi_chat as r
* (b) allievo_360.py: motore di ricerca deterministico su una persona o su un PLACEHOLDER (dal piano rate risale al pagatore: chi ha versato quelle cifre in quelle date, +checkin per costo, +contratti, +Salsina, +Gmail isicnv)
* print(r.modelli())
* fonti gia' in BigQuery: isicnv_contacts.zoom_participants, streak_boxes_daily, contatti_master (con note_crm), emails_master, staff_inbox_raw
* print(r.esamina('prova'))"
* isicnv_finance.allievi_master (person_id, tot_versato, saldo), allievi_checkins, allievi_contratti, allievi_pagamenti, transactions_multianno, contabilita_salsina, anagrafica_unificata (29.125 righe). Job in corso: allievo360_ignoti_0912 (5 placeholder + DCS Grandi Eventi), report in /home/claudeuser/reports/allievo360/
 
* allievo_360.py operativo. IDENTIFICATI: placeholder 64B0DBC00A2A = MONICA CARBE immobilaffari@gmail.com
=== audit_neurolinguistic_non_conformi ===
* placeholder A87F93215573 = FRANCESCO MARCIELLO gurufranc@gmail.com (Wise MARCIELLO FRANCESCO PAOLO)
''Aggiornato 2026-09-13 21:07 UTC'' &mdash; dominio: pillar
* D.C.S. GRANDI EVENTI = CLAUDIA PANI pani.claudia@gmail.com. Tutti e tre inseriti in pagatori_alias. REGOLA DI MARCO: marcoparet@gmail.com si interroga via MCP Gmail SOLO quando isicnv@gmail.com non ha dati. SCOPERTA: le notifiche Wise di incasso arrivano a informazionicorsi@gmail.com (terza casella, fonte di riconciliazione non ancora usata). CORREZIONE: ily1975@gmail.com e' Ilaria Polidori (IPCA), NON Cristiana Morroni: anagrafica_unificata ha rumore sui nomi da streak
 
* allievo_360.py operativo
; Obiettivo : portare a standard le pagine non conformi su neurolinguistic: [197, 4300, 11818, 11780, 11804, 479, 776, 3640, 3639, 3637, 4293, 4292, 3633, 3162, 4289, 4288, 11505, 4287, 4286, 3628, 2, 136, 146, 168, 303, 482, 65, 3627, 531, 535, 609, 621, 644, 682, 696, 872, 927, 1025, 1089, 1119]
* identificati e messi in pagatori_alias: 64B0DBC00A2A=MONICA CARBE immobilaffari@gmail.com, A87F93215573=FRANCESCO MARCIELLO gurufranc@gmail.com, D.C.S. GRANDI EVENTI=CLAUDIA PANI pani.claudia@gmail.com. Regola: marcoparet@gmail.com via MCP Gmail solo se isicnv non ha dati. GRUPPI+SITI: creato gruppi_e_siti.py (job gruppi_siti_0912 in corso) che ricostruisce i gruppi Google dai messaggi isicnv verso *@googlegroups.com e legge i permessi dei 100+ Google Sites
; Vincoli in vigore :
* carica isicnv_finance.google_gruppi, google_gruppi_membri, google_sites_accessi. ACCERTATO: i permessi Drive dei Sites contengono SOLO staff (isicnv, marcoparet, informazionicorsi, isicnvstaff, sulzina02, venetomarketinglab, studiointramentis) - gli allievi NON compaiono li': l'accesso allievi passa dai gruppi (es. advanced-level-2019-2020@googlegroups.com, advanced-course@, cours-avanc@) usati per le convocazioni di lezione. Quindi il match corso<->allievo si fa gruppo<->nome del sito, non dai permessi
* mai riscrivere: arricchire
* GRUPPI: gruppi_membri_scrape.py legge i membri da groups.google.com col profilo admin julesdupotet (/home/claudeuser/.config/chrome-jules, copiato in chrome-jules-scrape a ogni giro
* pubblicazione solo via pubblica_pillar.py --ok-marco
* Playwright NON ha il suo chromium, si usa executable_path=/usr/bin/google-chrome
* DISPLAY=:1 via VNC gia' attivo). Caricati in isicnv_finance.google_gruppi_membri_admin. WORKER: allievi_360_worker.py macina la worklist (1.844 persone da pagamenti+gruppi+Salsina+check-in, dal piu' recente indietro), un contatto alla volta, finestra 6h, stato in /home/claudeuser/monitors/allievi360_state.json, ripristinabile
* cron */20 con flock lo riprende se cade. Log /home/claudeuser/logs/allievi360.log
; Prossimo passo :
; Prossimo passo :
* (1) a scrape finito, incrociare google_gruppi_membri_admin con allievi_pagamenti: chi e' in un gruppo-corso senza pagamenti = moroso vero
* python3 /home/claudeuser/scripts/audit_pubblicate.py --sito neurolinguistic --correggi --pid 197 4300 11818 11780 11804 479 776 3640 3639 3637 4293 4292 3633 3162 4289 4288 11505 4287 4286 3628 2 136 146 168 303 482 65 3627 531 535 609 621 644 682 696 872 927 1025 1089 1119
* chi paga e non e' in nessun gruppo = accesso mai dato
* (2) mappare gruppo->sito->corso usando i nomi (advanced-course/cours-avanc/advanced-level-2019-2020 = ADVANCED
* mesmerismus-online + course-alicante/new-york/australia = MESMERISMUS
* formazione-online---master-ipnosi---italia = MASTER IT
* ultimate-path(+franais) = ULTIMATE)
* (3) FASE 2: da allievi_360 costruire la tabella allievi_master estesa
* (4) placeholder AC4B36231C82 a DeepSeek


=== riconciliazione_cassa ===
=== pipeline_mancanti_censimento ===
''Aggiornato 2026-09-12 10:14 UTC'' &mdash; dominio: finanza
''Aggiornato 2026-09-13 21:01 UTC'' &mdash; dominio: pipeline


; Obiettivo : Marco: ogni entrata deve avere la sua ragione; pipeline a 4 strati + entrate non attribuite
; Obiettivo : creare le pipeline mancanti piu richieste: sistema, mercurio, resta, stato, modo
; Fatto (con prova) :
; Vincoli in vigore :
* creato /home/claudeuser/scripts/riconcilia_cassa.py (4 strati: incasso diretto -> movimento bancario con ALIAS pagatore -> foglio contabilita Salsina -> Gmail isicnv con --gmail). Creata tabella isicnv_finance.pagatori_alias, primo alias D AMICO PATRIZIA = GIUSEPPE MORANA. Filtro anti-rumore su giroconti/payout/cashback. Cron 07:35 UTC, report in /home/claudeuser/reports/riconciliazione_AAAAMMGG.txt. Primo giro: 19 rate, 16 spiegate, 3 non pagate (tutte PLACEHOLDER), 11 entrate non attribuite
* ogni pipeline: script + riga registro (descrizione, trigger) + wiki ops + test
* riconcilia_cassa.py attivo (cron 07:35 UTC, report in /home/claudeuser/reports/). 12/09 verifica di Marco 'gli italiani regolari sono allievi': CONFERMATA. Aggiunto strato anagrafica_unificata: le entrate orfane sono divise in A) allievo censito senza piano rate e B) sconosciuto. Bug trovato: le query bq erano troncate a 3000 righe e l'anagrafica ne ha 29.125 -> ora 200.000 per quella query. Risultato: 9 entrate su 11 sono allievi noti (Marzocchi 668/mese, Grappi 713/mese, Morroni 212/mese, Rozza 300, Strohmaier 490), 2 sconosciute (Viramontes Molina 500, D.C.S. Grandi Eventi 300)
; Prossimo passo :
; Prossimo passo :
* (1) creare il piano rate per Marzocchi Marzio (ghenshiro@gmail.com), Grappi Paola (paolagrappi.anemos121@gmail.com), Morroni Cristiana (ily1975@gmail.com): pagano ogni mese la stessa cifra ma non hanno piano ne' riga nel foglio Salsina
* leggere /home/claudeuser/pillars/censimento/censimento_20260913.json e il Doc
* (2) chiedere a Salsina chi sono GERARDO VIRAMONTES MOLINA (500 del 08/09) e D.C.S. GRANDI EVENTI (300 del 07/09)
* partire dal primo cluster
* (3) ROZZA EROS in anagrafica ha l'email dell'agenzia VMK Lab (lead.clienti@vmklab.it): anagrafica da correggere
* (4) i 5 PLACEHOLDER (21 righe, 5.258 EUR) restano senza nome


=== chat-s20260911-si1secondary-qqnl4c ===
=== capoufficio_agente_risolve ===
''Aggiornato 2026-09-12 00:00 UTC'' &mdash; dominio: chat_riprese
''Aggiornato 2026-09-12 14:10 UTC'' &mdash; dominio: -


; Obiettivo : Completare il deploy SI-1: riparare il crash gcloud (credenziali rotte), installare in cron la copia dell'orchestrator su secondary e produrre la consegna verificabile D1
; Obiettivo : Marco 11/09: il 90% degli avvisi CAPOUFFICIO deve essere risolto da un agente, non finire in chat
; Vincoli in vigore :
; Vincoli in vigore :
* gate=auto
* reversibile: backup .bak_* accanto a ogni file toccato
* non chiedere a Marco
* verifica prima di dichiarare fatto
; Fatto (con prova) :
; Fatto (con prova) :
* chat S20260911-si1secondary-qqnl4c chiusa senza prova
* capoufficio_watch.py reso host-aware (check+heal via ssh su media/secondary dove i cron sono migrati il 10/09
* contesto ricostruito da riprendi_chat
* backup .prima_hostaware_11set)
; Prossimo passo :
* registry: finance_cassa heal_timeout_s=660, marcoparet_autoheal host=secondary
* 1|Diagnosticare il crash gcloud riportato nel messaggio umano non letto ('Credentials' object has no attribute 'private_key_id')|gcloud info --run-diagnostics
* /var/log/isicnv creato su media e secondary
* gcloud auth list
* 9 monitor in RECOVERY
* gcloud config list
* A) watch host-aware (check+heal via ssh su media/secondary). B) CAUSA DEI CANTIERI MAI LAVORATI: guardia.py e' migrata su media il 10/09 ma li' gsutil era anonimo (401) -> vedeva 0 handoff
* 2|Ripristinare le credenziali gcloud (re-auth interattiva o service account)|SERVE MARCO: gcloud auth login (richiede browser/OTP)
* risolto con gcloud auth activate-service-account media-worker per claudeuser (ora vede i 465 handoff, watch_* compresi). C) Telegram differito: cantiere subito, avviso a Marco solo se lo stesso problema resiste avvisa_dopo_cicli (default 4 ~1h)
* alternativa non interattiva: gcloud auth activate-service-account --key-file=<chiave> se disponibile sul sistema
* recovery solo se avvisato. D) heal_auto: monitor fermo senza heal_cmd -> rilancio del suo cron sulla macchina giusta. Backup: capoufficio_watch.py.prima_hostaware_11set / .prima_differito_11set
* 3|Installare la copia dell'orchestrator SI-1 nel crontab di secondary, replicando la voce '27 */4' gia' attiva sulla VM|su secondary: crontab -e e aggiungere la riga '27 */4 <comando orchestrator SI-1>' identica a quella della VM
* 11/09: la guardia su media girava come root senza credenziali e scriveva 0 handoff: cron spostato a claudeuser (backup /root/crontab.bak_guardia_11set), gate GATE_ARCHIVIO_VUOTO in guardia.py (zero letto = guasto, Telegram ogni 6h)
* 4|Verificare la schedulazione su entrambe le macchine e l'esecuzione dell'orchestrator|crontab -l su VM e su secondary (voce '27 */4' per SI-1 presente)
* scoperti due archivi (state/cantieri delle chat vs plans/handoff degli agenti): ponte_cantieri.py in cron ogni 30 min con gate-prima sul comando
* controllare log/ultima esecuzione dell'orchestrator
* commessa.py chiudi rifiuta gli handoff in prosa senza job (GATE_HANDOFF_PARCHEGGIO, off con touch /home/claudeuser/sessions/GATE_HANDOFF_OFF)
* 5|Produrre la consegna verificabile D1 (output crontab -l di VM e secondary + log esecuzione) e chiudere la chat con prova di completamento|aggiornare il GIORNALE con END verificato e D1 consegnato al posto di 'D1 MANCA'
* primo giro guardia in corso su 465 cantieri
* 11/09: watch host-aware
* guardia su media con credenziali
* Telegram differito (avvisa_dopo_cicli)
* heal_auto. 12/09 notte: (a) heal a raffica fermato: heal_ogni_min default 120 (finance_daily_sync girava ogni 15 min su media e mandava 'step falliti paypal' a ogni giro)
* (b) log_clean su log mai scritto = OK (argo_watch.log e cassa_check.log non esistevano perche' /var/log/isicnv mancava fino al 11/09 13:37)
* (c) CAUSA della perdita credenziali su media: il cron marcopi fa 'gcloud config set account 424757051842-compute@...' e rende gsutil anonimo -> guardia cieca e PayPal token illeggibile
* blindato con ~/.boto (gs_service_key_file=media-worker.json) + pass_credentials_to_gsutil=false: gsutil funziona qualunque sia l'account attivo. Backup: capoufficio_watch.py.prima_throttle_12set
* 12/09 pom: (E) firma stabile dei problemi (numeri->#): prima i cicli si azzeravano a ogni giro e i monitor con heal non avvisavano mai. (F) terzo stato PERSISTENTE: dopo 2 avvisi singoli (avvisa_dopo_cicli, poi riavvisa_dopo_cicli=8) il monitor tace e finisce nel riepilogo giornaliero delle 07 UTC, un solo messaggio
* recovery e nuovi guasti restano immediati. Backup capoufficio_watch.py.prima_riepilogo_12set. (G) token GSC: gsc-admin e token-searchconsole revocati (guardiano_token.py li vede dal 11/09)
* creato scripts/gsc_token.py con ripiego su token-informazionicorsi-gsc + mappatura sc-domain->URL-prefix con piu dati
* gate_pagina_protetta e sat_gsc_sync adattati (bak_gsc_12set)
* sat_gsc_sync senza --replace
* righe polyvagal ripristinate da /tmp/gsc.jsonl del 11/09 (BQ gsc_queries: 9994 righe, 40 siti)
; Prossimo passo :
* (1) Marco deve rigenerare token-gsc-admin.json (account proprietario delle sc-domain marcoparet, neurolinguistic, polyvagal*): finche non lo fa i siti polyvagal restano fermi al 11/09. (2) verificare domani dopo le 07:10 UTC il riepilogo (monitors/watch_riepilogo_ultimo.txt) e che il primo alert reale porti avvisi=1 in watch_state.json. (3) restano i punti 1-4 del 12/09 notte


=== chat-s20260910-claudesi1ref-1kurya6 ===
=== allievi_360_pipeline ===
''Aggiornato 2026-09-11 23:40 UTC'' &mdash; dominio: chat_riprese
''Aggiornato 2026-09-12 13:25 UTC'' &mdash; dominio: finanza


; Obiettivo : Chiudere verificato il cantiere SI-1 Reflect (chat S20260910-claudesi1ref-1kurya6): eseguire le verifiche rimaste su si1.cron.log, definire la consegna verificabile D1, aggiornare wiki/handoff, e gestire il messaggio umano non letto sull'errore gcloud.
; Obiettivo : Tabella ALLIEVI canonica + riconciliazione totale (Marco 12/09). La ricerca allievi deve girare in background per ore
; Vincoli in vigore :
* gate=auto
* non chiedere a Marco
* verifica prima di dichiarare fatto
; Fatto (con prova) :
; Fatto (con prova) :
* chat S20260910-claudesi1ref-1kurya6 chiusa senza prova
* 12/09: (a) riconcilia_cassa.py a 4 strati + pagatori_alias (cron 07:35)
* contesto ricostruito da riprendi_chat
* (b) allievo_360.py: motore di ricerca deterministico su una persona o su un PLACEHOLDER (dal piano rate risale al pagatore: chi ha versato quelle cifre in quelle date, +checkin per costo, +contratti, +Salsina, +Gmail isicnv)
* fonti gia' in BigQuery: isicnv_contacts.zoom_participants, streak_boxes_daily, contatti_master (con note_crm), emails_master, staff_inbox_raw
* isicnv_finance.allievi_master (person_id, tot_versato, saldo), allievi_checkins, allievi_contratti, allievi_pagamenti, transactions_multianno, contabilita_salsina, anagrafica_unificata (29.125 righe). Job in corso: allievo360_ignoti_0912 (5 placeholder + DCS Grandi Eventi), report in /home/claudeuser/reports/allievo360/
* allievo_360.py operativo. IDENTIFICATI: placeholder 64B0DBC00A2A = MONICA CARBE immobilaffari@gmail.com
* placeholder A87F93215573 = FRANCESCO MARCIELLO gurufranc@gmail.com (Wise MARCIELLO FRANCESCO PAOLO)
* D.C.S. GRANDI EVENTI = CLAUDIA PANI pani.claudia@gmail.com. Tutti e tre inseriti in pagatori_alias. REGOLA DI MARCO: marcoparet@gmail.com si interroga via MCP Gmail SOLO quando isicnv@gmail.com non ha dati. SCOPERTA: le notifiche Wise di incasso arrivano a informazionicorsi@gmail.com (terza casella, fonte di riconciliazione non ancora usata). CORREZIONE: ily1975@gmail.com e' Ilaria Polidori (IPCA), NON Cristiana Morroni: anagrafica_unificata ha rumore sui nomi da streak
* allievo_360.py operativo
* identificati e messi in pagatori_alias: 64B0DBC00A2A=MONICA CARBE immobilaffari@gmail.com, A87F93215573=FRANCESCO MARCIELLO gurufranc@gmail.com, D.C.S. GRANDI EVENTI=CLAUDIA PANI pani.claudia@gmail.com. Regola: marcoparet@gmail.com via MCP Gmail solo se isicnv non ha dati. GRUPPI+SITI: creato gruppi_e_siti.py (job gruppi_siti_0912 in corso) che ricostruisce i gruppi Google dai messaggi isicnv verso *@googlegroups.com e legge i permessi dei 100+ Google Sites
* carica isicnv_finance.google_gruppi, google_gruppi_membri, google_sites_accessi. ACCERTATO: i permessi Drive dei Sites contengono SOLO staff (isicnv, marcoparet, informazionicorsi, isicnvstaff, sulzina02, venetomarketinglab, studiointramentis) - gli allievi NON compaiono li': l'accesso allievi passa dai gruppi (es. advanced-level-2019-2020@googlegroups.com, advanced-course@, cours-avanc@) usati per le convocazioni di lezione. Quindi il match corso<->allievo si fa gruppo<->nome del sito, non dai permessi
* GRUPPI: gruppi_membri_scrape.py legge i membri da groups.google.com col profilo admin julesdupotet (/home/claudeuser/.config/chrome-jules, copiato in chrome-jules-scrape a ogni giro
* Playwright NON ha il suo chromium, si usa executable_path=/usr/bin/google-chrome
* DISPLAY=:1 via VNC gia' attivo). Caricati in isicnv_finance.google_gruppi_membri_admin. WORKER: allievi_360_worker.py macina la worklist (1.844 persone da pagamenti+gruppi+Salsina+check-in, dal piu' recente indietro), un contatto alla volta, finestra 6h, stato in /home/claudeuser/monitors/allievi360_state.json, ripristinabile
* cron */20 con flock lo riprende se cade. Log /home/claudeuser/logs/allievi360.log
; Prossimo passo :
; Prossimo passo :
* 1|Leggere e gestire il messaggio umano non letto: errore gcloud (AttributeError: 'Credentials' object has no attribute 'private_key_id')|gcloud info --run-diagnostics
* (1) a scrape finito, incrociare google_gruppi_membri_admin con allievi_pagamenti: chi e' in un gruppo-corso senza pagamenti = moroso vero
* verificare/rigenerare le credenziali (gcloud auth login o activate-service-account) e riportare l'esito in chat
* chi paga e non e' in nessun gruppo = accesso mai dato
* 2|Eseguire la verifica rimasta dal journal 10:32|grep -E "MANUTENZIONE|GATE_REFLECT" /home/claudeuser/self_improvement/si1.cron.log
* (2) mappare gruppo->sito->corso usando i nomi (advanced-course/cours-avanc/advanced-level-2019-2020 = ADVANCED
* 3|Eseguire le verifiche pendenti precedenti|tail -30 /home/claudeuser/self_improvement/si1.cron.log
* mesmerismus-online + course-alicante/new-york/australia = MESMERISMUS
* python3 /home/claudeuser/self_improvement/reflect_gate.py --auto
* formazione-online---master-ipnosi---italia = MASTER IT
* 4|Definire e verificare il deliverable D1 'consegna verificabile' (es. digest gate rc=0 + righe GATE_REFLECT nel log) e documentarlo|confrontare digest a75a1350e174 e rc del gate
* ultimate-path(+franais) = ULTIMATE)
* registrare D1 nel journal
* (3) FASE 2: da allievi_360 costruire la tabella allievi_master estesa
* 5|Aggiornare wiki SI-1_Reflect e Cantieri aperti con l'esito verificato e chiudere il cantiere ripresa_S20260910-claudesi1ref-1kurya6|modifica wiki + entry GIORNALE END verificato
* (4) placeholder AC4B36231C82 a DeepSeek
* 6|SERVE MARCO: sbloccare il gate umano del cantiere ripresa_S20260910-claudesi1ref-1kurya6 (campanello: esame immediato) se la verifica automatica non basta a chiudere
 
=== riconciliazione_cassa ===
''Aggiornato 2026-09-12 10:14 UTC'' &mdash; dominio: finanza
 
; Obiettivo : Marco: ogni entrata deve avere la sua ragione; pipeline a 4 strati + entrate non attribuite
; Fatto (con prova) :
* creato /home/claudeuser/scripts/riconcilia_cassa.py (4 strati: incasso diretto -> movimento bancario con ALIAS pagatore -> foglio contabilita Salsina -> Gmail isicnv con --gmail). Creata tabella isicnv_finance.pagatori_alias, primo alias D AMICO PATRIZIA = GIUSEPPE MORANA. Filtro anti-rumore su giroconti/payout/cashback. Cron 07:35 UTC, report in /home/claudeuser/reports/riconciliazione_AAAAMMGG.txt. Primo giro: 19 rate, 16 spiegate, 3 non pagate (tutte PLACEHOLDER), 11 entrate non attribuite
* riconcilia_cassa.py attivo (cron 07:35 UTC, report in /home/claudeuser/reports/). 12/09 verifica di Marco 'gli italiani regolari sono allievi': CONFERMATA. Aggiunto strato anagrafica_unificata: le entrate orfane sono divise in A) allievo censito senza piano rate e B) sconosciuto. Bug trovato: le query bq erano troncate a 3000 righe e l'anagrafica ne ha 29.125 -> ora 200.000 per quella query. Risultato: 9 entrate su 11 sono allievi noti (Marzocchi 668/mese, Grappi 713/mese, Morroni 212/mese, Rozza 300, Strohmaier 490), 2 sconosciute (Viramontes Molina 500, D.C.S. Grandi Eventi 300)
; Prossimo passo :
* (1) creare il piano rate per Marzocchi Marzio (ghenshiro@gmail.com), Grappi Paola (paolagrappi.anemos121@gmail.com), Morroni Cristiana (ily1975@gmail.com): pagano ogni mese la stessa cifra ma non hanno piano ne' riga nel foglio Salsina
* (2) chiedere a Salsina chi sono GERARDO VIRAMONTES MOLINA (500 del 08/09) e D.C.S. GRANDI EVENTI (300 del 07/09)
* (3) ROZZA EROS in anagrafica ha l'email dell'agenzia VMK Lab (lead.clienti@vmklab.it): anagrafica da correggere
* (4) i 5 PLACEHOLDER (21 righe, 5.258 EUR) restano senza nome


=== chat-s20260911-clauderegist-sskkcz ===
=== chat-s20260911-si1secondary-qqnl4c ===
''Aggiornato 2026-09-11 23:00 UTC'' &mdash; dominio: chat_riprese
''Aggiornato 2026-09-12 00:00 UTC'' &mdash; dominio: chat_riprese


; Obiettivo : Completare e verificare la pipeline Zoom zoom_recordings_daily.py: chiudere i 2 job backfill in corso, assicurare che le 5 registrazioni recuperate (inclusa Lesson 8, presente solo su cloud Zoom) siano su Drive, definire il deliverable D1 mancante, e risolvere il crash gcloud segnalato nei messaggi umani non letti
; Obiettivo : Completare il deploy SI-1: riparare il crash gcloud (credenziali rotte), installare in cron la copia dell'orchestrator su secondary e produrre la consegna verificabile D1
; Vincoli in vigore :
; Vincoli in vigore :
* gate=auto
* gate=auto
Riga 196: Riga 259:
* verifica prima di dichiarare fatto
* verifica prima di dichiarare fatto
; Fatto (con prova) :
; Fatto (con prova) :
* chat S20260911-clauderegist-sskkcz chiusa senza prova
* chat S20260911-si1secondary-qqnl4c chiusa senza prova
* contesto ricostruito da riprendi_chat
* contesto ricostruito da riprendi_chat
; Prossimo passo :
; Prossimo passo :
* 1|Riprendere il contesto completo della sessione|python3 /home/claudeuser/scripts/handoff.py --resume zoom-registrazioni-daily-0911
* 1|Diagnosticare il crash gcloud riportato nel messaggio umano non letto ('Credentials' object has no attribute 'private_key_id')|gcloud info --run-diagnostics
* 2|Verificare se i 2 job backfill avviati alle 18:35 sono terminati con successo|ps aux | grep -iE 'zoom|backfill'
* gcloud auth list
* controllare log/output di zoom_recordings_daily.py e del cron installato
* gcloud config list
* 3|Diagnosticare il crash gcloud non letto ('Credentials' object has no attribute 'private_key_id')|gcloud info --run-diagnostics
* 2|Ripristinare le credenziali gcloud (re-auth interattiva o service account)|SERVE MARCO: gcloud auth login (richiede browser/OTP)
* gcloud components update
* alternativa non interattiva: gcloud auth activate-service-account --key-file=<chiave> se disponibile sul sistema
* ispezionare ~/.config/gcloud/application_default_credentials.json e ~/.config/gcloud/credentials.db
* 3|Installare la copia dell'orchestrator SI-1 nel crontab di secondary, replicando la voce '27 */4' gia' attiva sulla VM|su secondary: crontab -e e aggiungere la riga '27 */4 <comando orchestrator SI-1>' identica a quella della VM
* 4|Riparare le credenziali gcloud (ricreare ADC o riattivare service account con key-file valida)|gcloud auth activate-service-account --key-file=<percorso chiave.json> oppure rm ~/.config/gcloud/application_default_credentials.json e rieseguire gcloud auth application-default login
* 4|Verificare la schedulazione su entrambe le macchine e l'esecuzione dell'orchestrator|crontab -l su VM e su secondary (voce '27 */4' per SI-1 presente)
* 5|Verificare che le 5 registrazioni recuperate dal cestino Zoom siano scaricate e caricate su Drive, inclusa Lesson 8 (attualmente solo su cloud Zoom)|ls -la sulla cartella di destinazione delle registrazioni
* controllare log/ultima esecuzione dell'orchestrator
* verifica presenza di Lesson 8 su Google Drive
* 5|Produrre la consegna verificabile D1 (output crontab -l di VM e secondary + log esecuzione) e chiudere la chat con prova di completamento|aggiornare il GIORNALE con END verificato e D1 consegnato al posto di 'D1 MANCA'
* 6|Definire e produrre il deliverable D1 (consegna verificabile) esplicitamente mancante|precisare la consegna verificabile dalla chat (es. report pipeline + elenco file caricati su Drive) e validarla
* 7|SERVE MARCO: credenziali Zoom S2S (blocco citato nel STEP delle 17:16) e, se la riparazione gcloud richiede login browser/OTP, completare gcloud auth login con Marco|


=== si-1-automiglioramento ===
=== chat-s20260910-claudesi1ref-1kurya6 ===
''Aggiornato 2026-09-11 22:28 UTC'' &mdash; dominio: VM / infrastruttura
''Aggiornato 2026-09-11 23:40 UTC'' &mdash; dominio: chat_riprese


; Obiettivo : SI-1 (/home/claudeuser/self_improvement): cron orchestrator ogni 4h SULLA VM (riportato indietro l 11/09 22:30 UTC: il secondary non ha credenziali GCP e il ciclo falliva a ogni corsa su reviewer.collect/bq). Pipeline reviewer -> researcher -> proposer -> TESTER -> promoter -> Reflect gate.
; Obiettivo : Chiudere verificato il cantiere SI-1 Reflect (chat S20260910-claudesi1ref-1kurya6): eseguire le verifiche rimaste su si1.cron.log, definire la consegna verificabile D1, aggiornare wiki/handoff, e gestire il messaggio umano non letto sull'errore gcloud.
; Vincoli in vigore :
; Vincoli in vigore :
* read-only su cc-rescue e recovery_agent.py
* gate=auto
* auto_code_roots restano self_improvement e hermes
* non chiedere a Marco
* CODE_PATCH fuori dall automatico
* verifica prima di dichiarare fatto
* ogni modifica con backup e marcatore EVOLUZIONE=SI-1
* se si rimigra su secondary servono le credenziali GCP (decisione di sicurezza di Marco)
; Fatto (con prova) :
; Fatto (con prova) :
* 10/09 07:00 UTC: cron SI1_ORCHESTRATOR presente (27 */4, flock). Corse 00:27 e 04:27 morte per timeout bq CLI 120s (VM load 24, 23 bq in coda). Patch si_common.bq: client python google-cloud-bigquery + fallback CLI 300s x2 (test 3.7s vs timeout). pilot.py: guardia --help (prima --help lanciava un ciclo intero: bump config v3->v4 involontario ma idempotente). Job si1_ciclo_forzato_20260910 lanciato e passato oltre la raccolta casi. Safe Mode via HTTP: /safe/status ok, /safe/snapshot -> gs://isicnv-command-center-routes/safe_mode/snapshots/20260910T070934Z.tgz verificato
* chat S20260910-claudesi1ref-1kurya6 chiusa senza prova
* 10/09 08:47 UTC: REFLECT installato (reflect.py + reflect_gate.py). Gate in coda a orchestrator.py (EVOLUZIONE=SI-1-REFLECT-GATE): rc!=0 impedisce la conclusione del ciclo. Prova: due run consecutivi stesso digest a75a1350e174 e stesso sha (stato IDENTICO), gate rc=0, log in logs/reflect.jsonl. Prima passata: 50 esiti, 20 PARZIALE, 30 IGNOTO, 2 findings, 0 blocker. Wiki ops SI-1_Reflect creata, Cantieri aperti aggiornato.
* contesto ricostruito da riprendi_chat
* 10/09: REFLECT v2 attivo. reflect.py scrive proposta + state/reflect_context.md + un learning per finding
* proposer.py inietta il contesto (EVOLUZIONE=SI-1-REFLECT-CONTEXT, riga 15)
* reflect_gate.py verifica digest, sha documento e sha contesto ed e agganciato in coda a orchestrator.py riga 33 (dopo once()). Soglie in config.json chiave reflect (window 50, finding 3, blocker 5). PROVE: run x2 IDENTICO stesso digest a75a1350e174
* --window 40 da digest diverso 1d631c043cf8
* log spostato -> rc=2
* contesto alterato -> rc=2
* ripristinato -> rc=0. Prima passata: 50 esiti, 20 PARZIALE, 30 IGNOTO, 2 findings AVVISO (famiglia mcpchatgpt: many_events, long_interactive), 2 learning. Wiki ops SI-1_Reflect aggiornata.
* 10/09 10:30: diagnosi log (123 esiti, 84 sessioni fantasma, 95 senza causa, 24 proposte con 0 promosse) e quattro correttivi. reviewer.py: _cause_extra (EVOLUZIONE=SI-1-CAUSE-ENRICH) con cause da metriche e da testo eventi. proposer.py: vincolo target = percorso assoluto sotto self_improvement/ o hermes/. Nuovi pending_digest.py (digest + archiviazione oltre 7 giorni) e rotate_logs.py (sopra 1MB, tiene 5), lanciati a fine ciclo da orchestrator.py (EVOLUZIONE=SI-1-MANUTENZIONE) prima del gate e senza bloccarlo. PROVE: _cause_extra su 4 casi corretto
* digest 21 pendenti 0 archiviate
* rotate nessun file sopra soglia
* gate rc=0. Wiki: SI-1_Reflect + SI-1_Qualità_dei_dati_e_manutenzione.
* 11/09: security_gate.py (regole deterministiche + parere modello, fail closed, log logs/security.jsonl) e tester.py (sandbox /tmp/si1_test, replace/patch, py_compile, test_cmd allowlist) agganciati in promoter.process in questo ordine: sicurezza, tester, decisione con pending_reason, apply_file_change per PROMPT_TUNE/CODE_PATCH con snapshot+rollback. proposer vincolato a forma eseguibile (replace/patch/test_cmd). pending_digest mostra il motivo. PROVE: esperto su proposta reale = BASSO
* proposta costruita T0 score 99 che abbassa judge_min_score e allarga i tipi automatici = ALTO, PENDING_HUMAN security_hold, config intatta. Tester sulle 44 pendenti: bocciate per target fuori radice/inesistente/parametri descrittivi. Corse cron 20:27 e 08:27 con MANUTENZIONE e GATE_REFLECT PASSATO
* 00:27 e 04:27 cadute per timeout ledger, gia reso non bloccante (SI-1-LEDGER-NONBLOCCANTE). Wiki ops: SI-1_Tester_e_Gate_di_sicurezza.
* 11/09: tester.py installato e agganciato al promoter (EVOLUZIONE=SI-1-TESTER): test FAIL -> AUTO_REJECTED con motivo
* pending_reason esplicito
* apply_file_change promuove PROMPT_TUNE/CODE_PATCH con snapshot+sha+rollback
* proposer vincolato a forma eseguibile (replace/patch/test_cmd). Prova sulle 47 pendenti: 47 FAIL non applicabili. E2E: proposta sintetica promossa, snapshot 20260911T141342Z_e2e_tester_prova (prima promozione mai avvenuta)
* negativo respinto
* test_cmd con operatori shell rifiutato. pending_digest invia Telegram alle 08:27 (SI-1-DIGEST-TELEGRAM). Keepalive cc-rescue-keepalive ogni 10 min su /health
* learning cc-rescue registrato. Wiki ops: SI-1_Tester.
* 11/09: tester.py agganciato al promoter (EVOLUZIONE=SI-1-TESTER): FAIL -> AUTO_REJECTED con motivo
* pending_reason esplicito
* apply_file_change promuove PROMPT_TUNE/CODE_PATCH con snapshot+sha+rollback
* proposer vincolato a forma eseguibile. 47 pendenti provate: 47 FAIL non applicabili. E2E: proposta sintetica promossa, snapshot 20260911T141342Z_e2e_tester_prova (prima promozione mai avvenuta). Digest Telegram 08:27. Keepalive cc-rescue-keepalive. Wiki ops SI-1_Tester.
* 11/09 22:30: scoperto che dalle 07:47 del 10/09 il cron SI-1 girava su isicnv-secondary senza credenziali GCP (/home/claudeuser/.gcp vuoto): ogni corsa USCITA 1 su bq. Le due copie di self_improvement erano divergenti: allineati sul secondary tester.py, promoter.py, proposer.py, pending_digest.py, security_gate.py (backup in backups/). Cron riportato sulla VM con migra_cron.py --rollback 206 (VM riga 206 attiva, secondary 0). Lanciata corsa manuale di verifica con lo stesso flock.
; Provato ed escluso :
* tool MCP safe_* non testabili da questa chat (connettore non caricato): la via HTTP con X-API-Key e equivalente e verificata
; Prossimo passo :
; Prossimo passo :
* grep -nE "test:|AUTO_PROMOTED|pending_reason|Traceback|GATE_REFLECT" /home/claudeuser/self_improvement/si1.cron.log | tail -15 : verificare la corsa manuale e la 00:27
* 1|Leggere e gestire il messaggio umano non letto: errore gcloud (AttributeError: 'Credentials' object has no attribute 'private_key_id')|gcloud info --run-diagnostics
* poi cantiere proposer-con-contenuto-del-target
* verificare/rigenerare le credenziali (gcloud auth login o activate-service-account) e riportare l'esito in chat
* 2|Eseguire la verifica rimasta dal journal 10:32|grep -E "MANUTENZIONE|GATE_REFLECT" /home/claudeuser/self_improvement/si1.cron.log
* 3|Eseguire le verifiche pendenti precedenti|tail -30 /home/claudeuser/self_improvement/si1.cron.log
* python3 /home/claudeuser/self_improvement/reflect_gate.py --auto
* 4|Definire e verificare il deliverable D1 'consegna verificabile' (es. digest gate rc=0 + righe GATE_REFLECT nel log) e documentarlo|confrontare digest a75a1350e174 e rc del gate
* registrare D1 nel journal
* 5|Aggiornare wiki SI-1_Reflect e Cantieri aperti con l'esito verificato e chiudere il cantiere ripresa_S20260910-claudesi1ref-1kurya6|modifica wiki + entry GIORNALE END verificato
* 6|SERVE MARCO: sbloccare il gate umano del cantiere ripresa_S20260910-claudesi1ref-1kurya6 (campanello: esame immediato) se la verifica automatica non basta a chiudere


=== zoom-registrazioni-daily-0911 ===
=== chat-s20260911-clauderegist-sskkcz ===
''Aggiornato 2026-09-11 20:16 UTC'' &mdash; dominio: trascrizioni
''Aggiornato 2026-09-11 23:00 UTC'' &mdash; dominio: chat_riprese


; Obiettivo : Pipeline ZOOM-1: registrazioni cloud Zoom -> Drive -> trascrizione -> Telegram; storico lezioni/partecipanti/iscritti/registrazioni in BigQuery zoom.*
; Obiettivo : Completare e verificare la pipeline Zoom zoom_recordings_daily.py: chiudere i 2 job backfill in corso, assicurare che le 5 registrazioni recuperate (inclusa Lesson 8, presente solo su cloud Zoom) siano su Drive, definire il deliverable D1 mancante, e risolvere il crash gcloud segnalato nei messaggi umani non letti
; Vincoli in vigore :
; Vincoli in vigore :
* Scope report aggiunti da Marco 11/09 (report:read:user:admin ecc.). LIMITE ZOOM: il report copre SOLO gli ultimi 6 mesi (code 300): lo storico prima di marzo 2026 non e' recuperabile dall'API
* gate=auto
* il cron 06:45 fa scorrere la finestra ogni giorno cosi' da qui in avanti nulla si perde. Cancellazione automatica da Zoom dopo archiviazione NON attiva (serve OK Marco).
* non chiedere a Marco
* verifica prima di dichiarare fatto
; Fatto (con prova) :
; Fatto (con prova) :
* Script /home/claudeuser/scripts/zoom_recordings_daily.py (compila, dry-run ok, esce rc=3 senza credenziali). Cron 06:15 ogni giorno --days 3, log /home/claudeuser/zoom_rec/daily.log, stato /home/claudeuser/zoom_rec/state.json. Scarica MP4 (speaker view) + M4A + VTT transcript Zoom + chat, upload resumable su Drive, poi job.py trascrivi_ids.py --lang auto sull'M4A con Doc nella cartella Drive. Su Drive oggi esiste solo ULTIMATE PATH LESSON 1.mp4 (1RzftibHpVT4g9EZOLt8SvjkafbyiVFwp).
* chat S20260911-clauderegist-sskkcz chiusa senza prova
* SBLOCCATO 11/09: API funziona. Prima corsa --days 10: 11 file su Drive, cartella Registrazioni Zoom 1TZ-GAzZHuTlcEvvzOlEE1qBRLBTTxrn1 / 2026-09 1OmzKz9VSrpgANI9RJlnmB8e2ZabQdPuA. ULTIMATE PATH LESSON 8 (10/09, mp4 215 MB + m4a 46 MB + chat) e Australian Academy 07/09 (mp4 210 MB, m4a, VTT closed caption, chat) caricati. Job trascrizione lanciati: zoomtr_ultimatepathlesson8_2026-09- e zoomtr_marcoparet_australia_2026-09- (Doc TRASCRIZIONE nella cartella 2026-09). Cron 06:15 --days 3 attivo. Nota: Salsina non ha mandato la registrazione
* contesto ricostruito da riprendi_chat
* su Drive c'era solo LESSON 1.
; Prossimo passo :
* SBLOCCATO 11/09: API funziona. Prima corsa --days 10: 11 file su Drive, cartella Registrazioni Zoom 1TZ-GAzZHuTlcEvvzOlEE1qBRLBTTxrn1 / 2026-09 1OmzKz9VSrpgANI9RJlnmB8e2ZabQdPuA. ULTIMATE PATH LESSON 8 (10/09, mp4 215 MB + m4a 46 MB + chat) e Australian Academy 07/09 (mp4 210 MB, m4a, VTT closed caption, chat) caricati. Job trascrizione lanciati: zoomtr_ultimatepathlesson8_2026-09- e zoomtr_marcoparet_australia_2026-09- (Doc TRASCRIZIONE nella cartella 2026-09). Cron 06:15 --days 3 attivo. Nota: Salsina non ha mandato la registrazione
* 1|Riprendere il contesto completo della sessione|python3 /home/claudeuser/scripts/handoff.py --resume zoom-registrazioni-daily-0911
* 2|Verificare se i 2 job backfill avviati alle 18:35 sono terminati con successo|ps aux | grep -iE 'zoom|backfill'
* controllare log/output di zoom_recordings_daily.py e del cron installato
* 3|Diagnosticare il crash gcloud non letto ('Credentials' object has no attribute 'private_key_id')|gcloud info --run-diagnostics
* gcloud components update
* ispezionare ~/.config/gcloud/application_default_credentials.json e ~/.config/gcloud/credentials.db
* 4|Riparare le credenziali gcloud (ricreare ADC o riattivare service account con key-file valida)|gcloud auth activate-service-account --key-file=<percorso chiave.json> oppure rm ~/.config/gcloud/application_default_credentials.json e rieseguire gcloud auth application-default login
* 5|Verificare che le 5 registrazioni recuperate dal cestino Zoom siano scaricate e caricate su Drive, inclusa Lesson 8 (attualmente solo su cloud Zoom)|ls -la sulla cartella di destinazione delle registrazioni
* verifica presenza di Lesson 8 su Google Drive
* 6|Definire e produrre il deliverable D1 (consegna verificabile) esplicitamente mancante|precisare la consegna verificabile dalla chat (es. report pipeline + elenco file caricati su Drive) e validarla
* 7|SERVE MARCO: credenziali Zoom S2S (blocco citato nel STEP delle 17:16) e, se la riparazione gcloud richiede login browser/OTP, completare gcloud auth login con Marco|
 
=== zoom-registrazioni-daily-0911 ===
''Aggiornato 2026-09-11 20:16 UTC'' &mdash; dominio: trascrizioni
 
; Obiettivo : Pipeline ZOOM-1: registrazioni cloud Zoom -> Drive -> trascrizione -> Telegram; storico lezioni/partecipanti/iscritti/registrazioni in BigQuery zoom.*
; Vincoli in vigore :
* Scope report aggiunti da Marco 11/09 (report:read:user:admin ecc.). LIMITE ZOOM: il report copre SOLO gli ultimi 6 mesi (code 300): lo storico prima di marzo 2026 non e' recuperabile dall'API
* il cron 06:45 fa scorrere la finestra ogni giorno cosi' da qui in avanti nulla si perde. Cancellazione automatica da Zoom dopo archiviazione NON attiva (serve OK Marco).
; Fatto (con prova) :
* Script /home/claudeuser/scripts/zoom_recordings_daily.py (compila, dry-run ok, esce rc=3 senza credenziali). Cron 06:15 ogni giorno --days 3, log /home/claudeuser/zoom_rec/daily.log, stato /home/claudeuser/zoom_rec/state.json. Scarica MP4 (speaker view) + M4A + VTT transcript Zoom + chat, upload resumable su Drive, poi job.py trascrivi_ids.py --lang auto sull'M4A con Doc nella cartella Drive. Su Drive oggi esiste solo ULTIMATE PATH LESSON 1.mp4 (1RzftibHpVT4g9EZOLt8SvjkafbyiVFwp).
* SBLOCCATO 11/09: API funziona. Prima corsa --days 10: 11 file su Drive, cartella Registrazioni Zoom 1TZ-GAzZHuTlcEvvzOlEE1qBRLBTTxrn1 / 2026-09 1OmzKz9VSrpgANI9RJlnmB8e2ZabQdPuA. ULTIMATE PATH LESSON 8 (10/09, mp4 215 MB + m4a 46 MB + chat) e Australian Academy 07/09 (mp4 210 MB, m4a, VTT closed caption, chat) caricati. Job trascrizione lanciati: zoomtr_ultimatepathlesson8_2026-09- e zoomtr_marcoparet_australia_2026-09- (Doc TRASCRIZIONE nella cartella 2026-09). Cron 06:15 --days 3 attivo. Nota: Salsina non ha mandato la registrazione
* su Drive c'era solo LESSON 1.
* SBLOCCATO 11/09: API funziona. Prima corsa --days 10: 11 file su Drive, cartella Registrazioni Zoom 1TZ-GAzZHuTlcEvvzOlEE1qBRLBTTxrn1 / 2026-09 1OmzKz9VSrpgANI9RJlnmB8e2ZabQdPuA. ULTIMATE PATH LESSON 8 (10/09, mp4 215 MB + m4a 46 MB + chat) e Australian Academy 07/09 (mp4 210 MB, m4a, VTT closed caption, chat) caricati. Job trascrizione lanciati: zoomtr_ultimatepathlesson8_2026-09- e zoomtr_marcoparet_australia_2026-09- (Doc TRASCRIZIONE nella cartella 2026-09). Cron 06:15 --days 3 attivo. Nota: Salsina non ha mandato la registrazione
* su Drive c'era solo LESSON 1.
* su Drive c'era solo LESSON 1.
* v2 script: --from (backfill a finestre 30 gg), --inline-transcribe (sequenziale), avviso Telegram a fine corsa (bot ISI-CNV Worker). Prima corsa: Lesson 8 + Australian 07/09 su Drive, trascrizioni job zoomtr_*. Job backfill zoom_backfill_0911 (--from 2024-01-01 inline) e zoom_backfill_cestino_0911 (parte dopo, riprende i 5 recuperati dal cestino). Cron 06:15 --days 3 attivo.
* v2 script: --from (backfill a finestre 30 gg), --inline-transcribe (sequenziale), avviso Telegram a fine corsa (bot ISI-CNV Worker). Prima corsa: Lesson 8 + Australian 07/09 su Drive, trascrizioni job zoomtr_*. Job backfill zoom_backfill_0911 (--from 2024-01-01 inline) e zoom_backfill_cestino_0911 (parte dopo, riprende i 5 recuperati dal cestino). Cron 06:15 --days 3 attivo.
Riga 1 615: Riga 1 677:
* /referenze/ con 4 PDF: apca, uibm-1999 redatto con CF e indirizzi coperti verifica visiva OK, oradea-2024 redatto 3 box, sinape-2025. Wayback in coda Hetzner +1h. Canon stati aggiornati a pubblicato
* /referenze/ con 4 PDF: apca, uibm-1999 redatto con CF e indirizzi coperti verifica visiva OK, oradea-2024 redatto 3 box, sinape-2025. Wayback in coda Hetzner +1h. Canon stati aggiornati a pubblicato
; Provato ed escluso :
; Provato ed escluso :
* stampa2=duplicato La Stampa
* stampa2=duplicato La Stampa
* Eminen Stell non finanziata
* Eminen Stell non finanziata
* Marie Claire non trovata
* Marie Claire non trovata
* pirateria Scribd+forum RU segnalata
* pirateria Scribd+forum RU segnalata
* duplicati byte-identici nei TIF marchi
* duplicati byte-identici nei TIF marchi
* deed Ivinghoe NON trovato in Drive ne foglio, stato da_documentare
* deed Ivinghoe NON trovato in Drive ne foglio, stato da_documentare
* llms sugli altri 4 domini non ancora
* llms sugli altri 4 domini non ancora
; Prossimo passo :
; Prossimo passo :
* 1 llms.txt su marcoparet.com .net mesmerismus mesmerismonline da access_howto
* 1 llms.txt su marcoparet.com .net mesmerismus mesmerismonline da access_howto
* 2 blocco head 244 pagine RAIDA
* 2 blocco head 244 pagine RAIDA
* 3 leggere log Hetzner wb_retry e gb
* 3 leggere log Hetzner wb_retry e gb
* 4 TIF marchi estrazione
* 4 TIF marchi estrazione
* 5 rigenerare Sheet dal canon
* 5 rigenerare Sheet dal canon
 
=== cairn-archive ===
''Aggiornato 2026-08-10 15:58 UTC'' &mdash; dominio: Referenze E-E-A-T / neurolinguistic.com
 
; Obiettivo : Sezione archivio storico CAIRN su neurolinguistic.com secondo il Doc AI Website Build Instructions + protocollo backward audit
; Vincoli in vigore :
* ogni claim mappato a un Archive ID di CAIRN_archive e a una riga di CAIRN_backward_audit
* niente riga di cautela su Art.30 in pagina (decisione Marco 10/08)
* planned != held
* mail solo redatte
; Fatto (con prova) :
* aggiunta riga CAIRN-2012-AVALON a CAIRN_archive
* nota interna su AUD-001 col.N
* llms.txt e sitemap-static.xml aggiornati (11 url)
; Provato ed escluso :
* archive.org/wayback/available da 429: usare la CDX API con retry
; Prossimo passo :
* salvare capture fresche su Wayback (Save Page Now) delle 11 nuove pagine
* facsimili redatti delle 3 mail
* cercare flyer/foto per le mostre thangka a Nizza (oggi solo testimonianza orale)
* valutare pagina EN/IT bilingue


=== cairn-archive ===
== Sospesi ==
''Aggiornato 2026-08-10 15:58 UTC'' &mdash; dominio: Referenze E-E-A-T / neurolinguistic.com
=== hpr_pilota ===
''Aggiornato 2026-09-14 23:37 UTC'' &mdash; dominio: ricerca


; Obiettivo : Sezione archivio storico CAIRN su neurolinguistic.com secondo il Doc AI Website Build Instructions + protocollo backward audit
; Obiettivo : Pilota Hyperresearch su catalessi, per valutarlo come verifica-fonti nella catena pillar
; Vincoli in vigore :
; Vincoli in vigore :
* ogni claim mappato a un Archive ID di CAIRN_archive e a una riga di CAIRN_backward_audit
* read-only sul resto
* niente riga di cautela su Art.30 in pagina (decisione Marco 10/08)
* budget run 15
* planned != held
* giudizio col test delle 4 domande sul vault
* mail solo redatte
; Fatto (con prova) :
; Fatto (con prova) :
* aggiunta riga CAIRN-2012-AVALON a CAIRN_archive
* script in /home/claudeuser/hyperresearch_pilot (hpr_install.sh, hpr_run.sh)
* nota interna su AUD-001 col.N
* piano hpr_pilota (4 punti) lanciato come job hpr_pilota_run
* llms.txt e sitemap-static.xml aggiornati (11 url)
* Punto 1 FATTO: hyperresearch 0.11.1 + crawl4ai installati in /home/claudeuser/hyperresearch_pilot (.venv, config.toml, run init --budget 15). Punto 2 BLOCCATO: Claude Code sulla VM non e' autenticato (nessun .credentials.json, .anthropic-key vuoto dal 21/07) e api.anthropic.com e' bloccato da ISICNV_COST_GUARD in /etc/hosts
* il gateway aigw espone solo chat/completions, non /v1/messages
* translator 127.0.0.1:8100 non risponde. Chiave anthropic presente nell'indice credenziali GCS ma NON verificata (rete bloccata).
; Provato ed escluso :
; Provato ed escluso :
* archive.org/wayback/available da 429: usare la CDX API con retry
* nessuna integrazione nella pipeline pillar finche' il pilota non e' giudicato
* Non aggirare il COST_GUARD senza ok di Marco (decisione di costo)
; Prossimo passo :
; Prossimo passo :
* salvare capture fresche su Wayback (Save Page Now) delle 11 nuove pagine
* Dopo ok di Marco: (a) sospendere il cost guard: sudo sed -i '/ISICNV_COST_GUARD_BEGIN anthropic/,/ISICNV_COST_GUARD_END anthropic/s/^/#/' /etc/hosts
* facsimili redatti delle 3 mail
* (b) bash /home/claudeuser/hyperresearch_pilot/hpr_auth.sh (usa .anthropic-key)
* cercare flyer/foto per le mostre thangka a Nizza (oggi solo testimonianza orale)
* (c) python3 /home/claudeuser/scripts/job.py --run 'python3 /home/claudeuser/scripts/piano.py --id hpr_pilota --esegui' --id hpr_pilota_run2
* valutare pagina EN/IT bilingue
* (d) a fine run ripristinare il guard togliendo i #


== Chiusi ==
== Chiusi ==