diff --git a/docs/CONTEXT_LAST_SESSION.md b/docs/CONTEXT_LAST_SESSION.md index 87c4001..1aab8b8 100644 --- a/docs/CONTEXT_LAST_SESSION.md +++ b/docs/CONTEXT_LAST_SESSION.md @@ -11,7 +11,7 @@ NIS2 reso **PWA installabile** su Android (Chrome) e iOS/iPadOS (Safari "Aggiung - **Head**: tag PWA iniettati in **77 HTML** (64 + 6 admin + 7 subdir, escluso `offline.html`); viewport normalizzato a `viewport-fit=cover` **mantenendo lo zoom** (WCAG 1.4.4). - **AGID/WCAG**: Bootstrap Italia (già live), zoom+orientamento liberi, **touch target ≥44px** (`@media (pointer: coarse)` in `style.css`), safe-area in standalone. "Dichiarazione di accessibilità" obbligatoria solo per PA → opzionale, non implementata. - **Rigenerare**: `node scripts/gen-pwa-icons.mjs` (icone) · `node scripts/inject-pwa-head.mjs` (tag head, idempotente). Tutto **statico** → live via bind-mount, nessun USR2. -- Bump `version.json` 1.14.1 → **1.15.0**. **commit/push in attesa di conferma utente** al momento del salvataggio. +- Bump `version.json` 1.14.1 → **1.15.0**. **Committato `36513fa`** (21:09 del 14/6) e **pushato su Gitea** (`b80bf23..36513fa`, 00:38 del 15/6, via host con chiave fresca). **Verificato end-to-end**: manifest JSON valido + campi installabilità, sw.js/pwa.js sintassi OK, **70 pagine** servite con manifest+pwa.js (0 gap), artefatti **live 200** su prod (manifest/sw/offline/icone), AGID OK (0 pagine bloccano lo zoom, touch-target ≥44px, safe-area standalone, icone maskable). ### Supervisore autonomo ticket (lavoro principale di oggi) NIS2 = **primo adopter LIVE** dello standard AgileHub `autonomous-supervisor-agent` (`hub_standards` id=32). Un agente `claude -p --model opus` headless (chiave SSH **effimera per ciclo**) fa da supervisore **end-to-end** ai ticket NIS2 → **NIS2 esce dal `ticket-agent-cron` generico**. @@ -21,9 +21,12 @@ NIS2 = **primo adopter LIVE** dello standard AgileHub `autonomous-supervisor-age - **Doc archivio**: `docs/INCOMING_FROM_AGILEHUB_2026_06_14_supervisor_adoption.md` → commit `489a032` (verificato su Gitea via `ls-remote`). - **Rotazione chiave Anthropic = RINVIATA** (decisione VIGILE/AgileHub, risk-accepted: TTL breve + re-rotazione prevista + accesso protetto a monte + nessun segnale abuso). Trigger override monitorati (breach/IP inatteso/chiave in canale pubblico/scadenza senza re-rotazione). **Verificato NIS2-side**: la chiave esposta NON è in repo/git-history/`.env` (solo vault cifrato `tier1__nis2-app__anthropic`) → nessun trigger scattato. Il cron supervisore usa l'**OAuth della flotta**, non queste API key. Memoria: `project_autonomous_supervisor`. -### In corso al momento del salvataggio (~16:2x CEST) -- **Verifica primo giro cron 16:17** (auto, AgileHub host-side, mi pinga ~16:28) → poi mio check indipendente: HEAD nis2 invariato a `489a032` (coda vuota = 0 commit), nuova entry ciclo audit JSONL, 0 orfani auth devapp3@, heartbeat email. -- (TRPG, **non NIS2**) db-job 20: poller AgileHub attivo (dry-run → approve → execute). +### Cron supervisore — confermato che parte DA SOLO (giri sera 14/6 → notte 15/6) +- **4 cicli `rc=0` no-op** verificati nell'audit JSONL: **16:17 / 20:17 / 00:17** (+ run osservate #366/#367). Ogni giro: pre-check OK (no kill switch, no `agent-working.lock`), chiave effimera installata→`cycle_cleanup_done`, **4 code tenant 7 vuote**, nessuna release, **heartbeat consegnato** a cristiano.benassati@ (HTTP 201). HEAD non cambia ai giri (no-op). +- **Chi-ha-fatto-cosa**: il commit `36513fa` (PWA, 21:09) **NON è del supervisore** — nell'audit non c'è alcun ciclo alle 21:09 (giri solo a `:17`). Era lavoro interattivo mio. Dubbio chiuso. +- **Monitoraggio de-escalato (concordato con utente)**: il supervisore è **indipendente** (cron server + chiave effimera propria per ciclo + heartbeat al referente) → il mio check host-side è un **livello bonus**, non una dipendenza di sicurezza. Check **all'occasione**, niente poll ansioso. +- ⚠️ **Lezione operativa — la chiave SSH host del MIO monitoraggio ruota ~14h**: scaduta tra le 20:27 e le 00:16 (push + check host bloccati in quella finestra), AgileHub ne ha droppata una fresca in `/projects/nis2-agile/.ssh-temp/agilehub-host-temp` (00:38) → ripristinato. NB: è cosa diversa dalla chiave effimera che il *supervisore* si genera da sé per ciclo (quella non dipende da me). +- (TRPG, **non NIS2**) db-job 20: poller AgileHub — fuori scope NIS2. ### Lavoro 13/6 (avatar/formazione + feedback) — dettaglio in memoria, qui sintesi - **Avatar di prodotto FORMAZIONE-first**: 5 endpoint `/api/demo/*`, dataset demo 996001 (RO) + 996002 (sandbox), guard `applyDemoGuard` (read 200/write 403), manifest tour `nis2-tour-2026.json` (10 step), frontend demo-mode (`?demo=`), tassonomia 10mod/28lez + banca esercizi. Collaudo E2E PASS sul subdomain. Memoria: `project_demo_avatar`. Handoff: `docs/OUTGOING_TO_AGILEHUB_2026_06_13`. @@ -33,7 +36,7 @@ NIS2 = **primo adopter LIVE** dello standard AgileHub `autonomous-supervisor-age ### Aperti / prossimi - **Osservazione supervisore 3 giorni** → `hub_standards_adoption`[id=32, nis2] = **implemented** ~21/6 (passiva, kill switch a portata). - Backlog/debito: cache headers server-side (evita i bump manuali `?v=`) · token widget a basso privilegio (AgileHub-side). -- Residuo precedente ancora valido: commit/push `docs/sql/039_integrity_keys.sql` (vedi sotto, 12/6). +- ✅ `docs/sql/039_integrity_keys.sql` ora **committato+pushato** (in `b80bf23`, su Gitea). ---