[DOCS] Contesto: PWA v1.15.0 pushata+verificata + cron supervisore conferma autonoma (4 cicli rc=0)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
DevEnv nis2-agile
2026-06-15 00:56:39 +02:00
co-authored by Claude Opus 4.8
parent 36513fa722
commit eeeb014c49
+8 -5
View File
@@ -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).
---