Progetto di revisione unificato (docs/PROGETTO_REVISIONE_NIS2.md) che fonde: - docs/PRINCIPI_AI_E_CONFORMITA_NORMATIVA.md (cyber + AI Act/GDPR/L.132 + principi AI) - docs/VERIFICA_GAP_UI_AGID_BOOTSTRAP_ITALIA.md (gap UI vs AGID/Bootstrap Italia) Agenti esperti: .claude/agents/nis2-expert.md + iso-27001-expert.md (read-only/advisory). Audit R1 (NIS2) + R2 (ISO SGSI) = conformi, riserve minori. Correzioni R3 applicate (lint + login reale OK, app su container TLS): - IncidentController: final_report_due +30gg fissi -> +1 mese calendario, ancorato alla notifica reale in sendNotification (Art.23.4 lett.d). - AIService prompt "report 30d" -> "1 mese dalla notifica 72h". - help.js: GV.SC Allegato 2 -> Allegati 1 e 2 (Art.21.2(d)). - nis2_sources.php: esplicitato Allegato 3=importanti / 4=essenziali. - IsmsModelController export: nota PII.* = codifica interna (non numeri ufficiali 27018). A4 (label whistleblowing "Art.32") DEFERITO: cita Art.32 D.Lgs.138/2024, da verificare sul testo. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
11 KiB
Progetto di Revisione NIS2 Agile — Conformità (normativa + AI) & UI (AGID/Bootstrap Italia)
Cosa unifica: questo è il documento master che fonde in un unico progetto di revisione i due lavori precedenti:
- Asse A — Conformità normativa & principi AI → dettaglio in
docs/PRINCIPI_AI_E_CONFORMITA_NORMATIVA.md- Asse B — UI / Design system AGID-Bootstrap Italia → dettaglio in
docs/VERIFICA_GAP_UI_AGID_BOOTSTRAP_ITALIA.mdA supporto: due agenti esperti dedicati (
.claude/agents/):nis2-experteiso-27001-expert, che validano i contenuti rispetto alle fonti. Regola del progetto (vincola anche l'AI): fonti certe — ogni affermazione cita la fonte; ciò che non è verificato è[da verificare]; nessun riferimento inventato. Vedi Asse A. Stato: v1 · 2026-06-11 · Tipo: progetto di revisione (audit → correzioni → verifica).
0. Obiettivo e perimetro
Portare NIS2 Agile a un livello di revisione verificabile su due assi che oggi hanno gap:
- A. Conformità: che ogni contenuto normativo/AI rispetti il quadro vincolante (NIS2/D.Lgs.138/Determine ACN + AI Act/GDPR) e i principi etici AI, senza invenzioni.
- B. UI: che l'interfaccia si allinei allo standard AGID/Bootstrap Italia (scelto dall'utente, come la Console V2 di AgileHub).
Due agenti esperti fanno da revisori specializzati e ripetibili (ogni volta che si tocca un contenuto, li si interpella).
1. Gli agenti di supporto (creati in .claude/agents/)
| Agente | Dominio | Quando invocarlo |
|---|---|---|
nis2-expert |
Direttiva (UE) 2022/2555, D.Lgs. 138/2024, Determine ACN 164179/2025 + 333017/2025, Allegati, tassonomia incidenti IS-1..4, Art.20/21/23 | Validare prompt AI, help, classificazioni, scadenze, mapping NIS2; controllo fonti certe; gap di conformità. |
iso-27001-expert |
ISO/IEC 27001:2022, 27002:2022, 27017:2015, 27018:2019 | Validare il modulo SGSI (111 controlli, SoA, mig. 037/038), mapping NIS2↔ISO, e che ISO sia presentata come best practice, non obbligo. |
Come si usano (Agent tool / Task):
Agent(subagent_type="nis2-expert", prompt="Valida che la tassonomia Allegati 3/4 in nis2_sources.php e AIService non sia invertita; riporta file:riga + fonte.")
Agent(subagent_type="iso-27001-expert", prompt="Verifica i 111 controlli del modulo SGSI: codifica Annex A 2022 (A.5-8) + CLD.* 27017 + extra 27018; segnala codici inventati o residui 27001:2013.")
Entrambi sono read-only/advisory (Read/Grep/Glob/Bash/WebFetch): producono rilievi affermazione → verdetto → fonte → correzione, non applicano modifiche. Le correzioni le decide/applica l'umano o l'assistente principale.
2. Asse A — Conformità normativa & principi AI (sintesi)
Quadro vincolante (dettaglio + tabelle in PRINCIPI_AI_E_CONFORMITA_NORMATIVA.md):
- Cyber: NIS2 (Dir. 2022/2555), CER (2022/2557), D.Lgs. 138/2024, Determine ACN 164179/2025 + 333017/2025. Best practice: ISO 27001/02/17/18, NIST CSF 2.0.
- AI: AI Act (Reg. UE 2024/1689) — Art. 50 trasparenza (enforce 2 ago 2026), Art. 12 logging; L. 132/2025 (Art. 14 tracciabilità
[da verificare]); GDPR (2016/679). - Standard Agile:
ai-usage-auditv1.0,persona-conversational-rulesv2.0 (Codice Etico AI, 9 principi),STANDARD_AI_PRODOTTO, principio fonti certe.
Gap aperti (da chiudere nella revisione):
- AI Act / GDPR / L.132/2025 NON sono in
nis2_sources.php→ l'AI li cita "a memoria". Aggiungerli al registro + ingest KB. ai-usage-auditnon ancora adottato (log AI tamper-resistant, AI Act Art.12).- Disclosure AI Act Art. 50 esplicita nel widget ARIA ("stai parlando con un'AI") + etichettatura output AI. Deadline 2 ago 2026.
- GDPR Art. 17 (oblio) su conversazioni/KB ORG.
- ⚠️ Possibile inversione Allegati 3/4 in
nis2_sources.php(essenziali/importanti) —nis2-expertdeve verificarla (la mappa certa è All.3=importanti, All.4=essenziali).
3. Asse B — UI / AGID-Bootstrap Italia (sintesi)
Decisione utente: NIS2 → standard AGID/Bootstrap Italia (Blu Italia #0066CC, Titillium Web, WCAG 2.1 AA, radius 4px), come AgileHub Console V2. NON lo standard "AGI dark" del piano MIGRATION_UI_V2.md (in conflitto → da archiviare).
Gap (dettaglio in VERIFICA_GAP_UI...): palette Material #1a73e8 → Blu Italia #0066CC; system font → Titillium; ombre morbide → flat 4px; WCAG AA non verificata; ~20 pagine con <style> inline + colori hardcoded.
Strategia: Opzione A (allineamento a livello di token in style.css, riusando i token AgileHub V2) → poi eventuale Opzione B (libreria bootstrap-italia) sulle pagine pubbliche.
4. Piano di revisione unificato
| Fase | Asse | Attività | Strumento |
|---|---|---|---|
| R0 | — | Costituire i 2 agenti (FATTO) + questo master | — |
| R1 | A | nis2-expert: audit contenuti normativi (prompt AI, help, nis2_sources.php, classificazioni) → lista rilievi con fonte |
Agent nis2-expert |
| R2 | A | iso-27001-expert: audit modulo SGSI (111 controlli, SoA, mapping) → rilievi |
Agent iso-27001-expert |
| R3 | A | Applicare correzioni normative (inversioni, citazioni mancanti) + aggiungere AI Act/GDPR/L.132 al registro fonti + ingest KB | assistente + utente |
| R4 | A | Disclosure AI Act Art.50 (widget ARIA) + adozione ai-usage-audit |
assistente |
| R5 | B | Adeguamento UI AGID (token → font → palette → forme → bonifica inline → WCAG) in worktree isolato | assistente |
| R6 | A+B | Verifica finale: rilievi chiusi (ri-pass agenti), WCAG AA misurata, login/dashboard reali OK, commit+push | assistente + agenti |
Disciplina trasversale (lezioni del progetto): verificare sul path reale (login fpm, non CLI/api-status/"a memoria"); zero modifiche backend per la UI; commit incrementali + push (host helper vault); fonti certe sempre citate.
5. Decisioni aperte (consolidate)
- UI: Opzione A o B? Da quali pagine partire (pubbliche + 1 dashboard)? Archiviare
MIGRATION_UI_V2.md? - Token AGID: prenderli dall'implementazione AgileHub V2 (
globals.css) per identità di suite? Serve path/repo. - Conformità: confermi di aggiungere AI Act/GDPR/L.132 a
nis2_sources.php+ ingerirli? Hai i PDF ufficiali perdocs/nis2/? - Esecuzione agenti: vuoi che lanci subito R1+R2 (i due audit, read-only) così partiamo dai rilievi reali?
5bis. Esiti audit R1 + R2 (eseguiti 2026-06-11, read-only)
R1 — nis2-expert (conformità normativa) → CONFORME con riserve minori, 0 errori critici
Mappe storicamente a rischio inversione corrette ovunque (Allegati 1/2 importanti/essenziali; Allegati 3/4 importanti/essenziali; IS-4 escluso per importanti; 24/72h corrette; nessuna fonte inventata).
| Sev | File:riga | Rilievo | Correzione |
|---|---|---|---|
| 🟠 | IncidentController.php:~97,225 |
final_report_due = detected+72h+**30 giorni fissi** invece di +1 mese dalla notifica reale (Art.23.4.d) → fino a 1 gg di anticipo + base ancorata al detected |
strtotime('+1 month', notification_sent_at ?? detected+72h) |
| 🟠 | AIService.php:~301 |
System prompt "report 30d" può indurre 30gg dall'incidente (contraddice riga 257 corretta) | "relazione finale entro 1 mese dalla notifica 72h" |
| 🟠 | nis2_sources.php:52 |
Allegati 3/4 non esplicitati nel registro (mappa solo nel codice consumer) | esplicitare "All.3 importanti / All.4 essenziali" |
| 🟠 | help.js:432 |
Misure GV.SC attribuite al solo Allegato 2; esistono in entrambi | "Allegati 1 e 2, Art.21.2(d)" |
| 🟠 | nis2_sources.php:60 |
Determina 333017 data "settembre 2025" senza giorno | confermare giorno o [da verificare] |
| 🟠 | CLAUDE.md/naming |
Whistleblowing etichettato "Art.32 NIS2" (legacy errato; Art.32=vigilanza). help.js già corretto (D.Lgs.24/2023) |
allineare la dicitura |
R2 — iso-27001-expert (modulo SGSI) → CONFORME e ben strutturato
Conteggio verificato: 93 (27001:2022 Annex A: A.5=37/A.6=8/A.7=14/A.8=34) + 7 (CLD. 27017) + 11 (PII. indice interno 27018) = 111 ✓**. Nessun codice inventato, nessun residuo 27001:2013. Mapping NIS2↔Annex A (42 codici) validi e pertinenti. SoA derivata in modo prudente (INSERT IGNORE, derived_from_nis2, "da confermare"). ISO = best practice/NIS2 = obbligo dichiarato in modo esemplare in config/AI/UI/export.
| Sev | File:riga | Rilievo | Correzione |
|---|---|---|---|
| 🟢-bassa | 038…sql:152-163 + UI export |
PII.1..11 è codifica indice interna (dichiarata nel SQL), non i numeri ufficiali ISO 27018 |
aggiungere la nota anche in UI SoA/export |
| INFO | 038…sql:142-148 |
Numerazione puntuale CLD.* | marcare [da verificare sul testo ufficiale 27017] (aree corrette/complete) |
Verdetto sintetico
Nessun errore normativo bloccante. Il rilievo più sostanziale è il calcolo final_report_due (30 giorni fissi → 1 mese dalla notifica reale). Il resto sono ambiguità/citazioni da blindare e una nota UI sui codici PII interni.
R3 — Correzioni applicate (2026-06-11, verificate: lint + login reale)
- ✅ B
IncidentController:final_report_due→+1 mesedi calendario, provvisorio alla creazione (notifica_due+1 mese) e ricalcolato sulla notifica reale insendNotification(Art.23.4 lett.d). Test: notifica 02-03 → finale 03-03. - ✅ A1
AIServiceprompt: "report 30d" → "relazione finale entro 1 mese dalla notifica 72h". - ✅ A2
help.js: GV.SC "Allegato 2" → "Allegati 1 e 2 (Art.21.2(d))". - ✅ A3
nis2_sources.php: esplicitato Allegato 3 = importanti / Allegato 4 = essenziali. - ✅ A5
IsmsModelControllerexport: nota chePII.*è codifica interna (≠ numeri ufficiali ISO 27018). - ⛔ A4 DEFERITO (fonti certe): la label "Art.32" del modulo whistleblowing cita Art.32 del D.Lgs. 138/2024 (il decreto), non la Direttiva — la numerazione del decreto è diversa e non ho il testo per confermare. Da verificare con
nis2-expert+ PDF D.Lgs. 138/2024 prima di toccarla. (Possibile incoerenza interna: il controller cita 138/2024 Art.32, l'help cita D.Lgs. 24/2023.)
6. Riferimenti
- Asse A (dettaglio):
docs/PRINCIPI_AI_E_CONFORMITA_NORMATIVA.md - Asse B (dettaglio):
docs/VERIFICA_GAP_UI_AGID_BOOTSTRAP_ITALIA.md - Agenti:
.claude/agents/nis2-expert.md,.claude/agents/iso-27001-expert.md - Fonti certe:
application/config/nis2_sources.php· Modulo SGSI: memoriaproject_isms_module(mig. 037/038) - Standard suite:
agile-services/docs/(STANDARD_AI_USAGE_AUDIT,persona-conversational-rules, AGID V2)